Skip to content

Commit df4be96

Browse files
committed
Add period of report to filing homepage
1 parent dbd5758 commit df4be96

File tree

4 files changed

+59
-6
lines changed

4 files changed

+59
-6
lines changed

edgar/attachments.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -628,15 +628,23 @@ def get_filers(self):
628628
return filer_infos
629629

630630
@lru_cache(maxsize=None)
631-
def get_filing_dates(self)-> Optional[Tuple[str,str]]:
632-
# Find the div with the formGrouping class
633-
form_grouping = self._soup.find("div", class_="formGrouping")
634-
if form_grouping is None:
631+
def get_filing_dates(self)-> Optional[Tuple[str,str, Optional[str]]]:
632+
# Find the form grouping divs
633+
grouping_divs = self._soup.find_all("div", class_="formGrouping")
634+
if len(grouping_divs) == 0:
635635
return None
636-
info_divs = form_grouping.find_all("div", class_="info")
636+
date_grouping_div = grouping_divs[0]
637+
info_divs = date_grouping_div.find_all("div", class_="info")
637638
filing_date = info_divs[0].text.strip()
638639
accepted_date = info_divs[1].text.strip()
639-
return filing_date, accepted_date
640+
641+
if len(grouping_divs) > 1:
642+
period_grouping_div = grouping_divs[1]
643+
first_info_div = period_grouping_div.find("div", class_="info")
644+
if first_info_div:
645+
period = first_info_div.text.strip()
646+
return filing_date, accepted_date, period
647+
return filing_date, accepted_date, None
640648

641649
@classmethod
642650
def load(cls, url: str):
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from edgar import *
2+
from edgar.reference.tickers import popular_us_stocks
3+
from tqdm.auto import tqdm
4+
import re
5+
6+
7+
def check_company_filings():
8+
tickers = popular_us_stocks().sample(20).Ticker.tolist()
9+
for ticker in tqdm(tickers):
10+
company = Company(ticker)
11+
for filing in tqdm(company.filings):
12+
print(filing.acceptance_datetime)
13+
14+
15+
16+
if __name__ == '__main__':
17+
check_company_filings()

tests/batch/batch_filing_dates.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from edgar import *
2+
from tqdm.auto import tqdm
3+
import re
4+
5+
6+
def check_filing_dates():
7+
filings = get_filings(year=[2012,2020,2024]).sample(40)
8+
for filing in tqdm(filings):
9+
homepage = filing.homepage
10+
filing_date, acceptance_datetime, period_of_report = homepage.get_filing_dates()
11+
print(period_of_report)
12+
assert period_of_report is None or re.match('\d{4}-\d{2}-\d{2}', filing_date),\
13+
f"Invalid period of report {period_of_report} for {filing}"
14+
15+
16+
17+
if __name__ == '__main__':
18+
check_filing_dates()
19+
20+
21+

tests/test_filing_metadata.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from edgar import Filing, FilingHomepage
2+
3+
def test_get_filing_period_from_homepage():
4+
f = Filing(company='VISA INC.', cik=1403161, form='4', filing_date='2025-01-03', accession_no='0001127602-25-000445')
5+
home = f.homepage
6+
filing_date, acceptance, period = home.get_filing_dates()
7+
assert (filing_date, acceptance, period) == ('2025-01-03', '2025-01-03 16:28:38', '2025-01-02')

0 commit comments

Comments
 (0)