Issue Type
Environment
EdgarTools Version: 5.23.3
Python Version: 3.13.12
Operating System: Ubuntu 24.04
Bug Description
What you expected to happen:
I expected to extract Item 1 from the 10-K of VNOM.
What actually happened:
The issue: when a 10-K uses a combined heading like "Items 1 and 2. Business and Properties" (instead of separate Item 1 and Item 2 sections), TenK.business returns None. The new parser correctly identifies the section as part_i_items_1_and_2._business_and_properties, but the business property (which maps to self['Item 1']) doesn't resolve it. The legacy fallback also fails.
Concrete example: VNOM (Viper Energy), accession 0002074176-26-000010. The 10-K has "ITEMS 1 and 2. BUSINESS AND PROPERTIES" at the Part I level. filing.obj().sections shows part_i_items_1_and_2._business_and_properties with content, but filing.obj().business returns None.
Error message (if any):
2026-03-16 06:50:34,824 INFO httpxthrottlecache.ratelimiter: Making HTTP Request <Request('GET', 'https://www.sec.gov/Archives/edgar/data/2074176/000207417626000010/vnom-20251231.htm')>
2026-03-16 06:50:34,841 INFO httpx: HTTP Request: GET https://www.sec.gov/Archives/edgar/data/2074176/000207417626000010/vnom-20251231.htm "HTTP/1.1 200 OK"
2026-03-16 06:50:36,469 INFO edgar.documents.extractors.toc_section_detector: TOC detection found 28 sections
2026-03-16 06:50:36,470 INFO edgar.documents.extractors.hybrid_section_detector: TOC detection successful: 28 sections found
2026-03-16 06:50:36,470 WARNING edgar.core: TenK falling back to legacy parser for 'Item 1' (filing: 0002074176-26-000010). New parser sections available: ['part_ii_item_9', 'part_ii_item_9a', 'part_iii_item_10', 'part_iii_item_11', 'part_iii_item_12', 'part_iii_item_13', 'part_ii_item_9b', 'part_ii_item_9c', 'part_iv_item_15', 'part_iv_item_16', 'part_i_items_1_and_2._business_and_properties', 'part_iv_items_1_and_2._business_and_properties', 'part_i_item_1a', 'part_ii_item_1a', 'part_iv_item_1a', 'part_i_item_1b', 'part_i_item_1c', 'part_iv_item_1c', 'part_i_item_3', 'part_ii_item_5', 'part_iv_item_5', 'part_ii_item_6', 'part_ii_item_7', 'part_iv_item_7', 'part_ii_item_7a', 'part_iv_item_7a', 'part_ii_item_8', 'part_iv_item_8']. This fallback will be removed in v6.0.
Reproduction
Company/Ticker: VNOM
Time Period: most recent
Relevant Forms: 10-K
Minimal code to reproduce:
from edgar import Company, set_identity
set_identity("Your Name your.email@example.com")
company = Company("VNOM")
filing = company.latest("10-K")
tenk = filing.obj()
print(tenk.business) # None
print([s for s in str(tenk.sections) if 'items_1' in str(s)]) # part_i_items_1_and_2._business_and_properties exists
Additional Context
Add any other context about the problem here. Screenshots, related issues, etc.
This issue will be handled using EdgarTools' systematic issue resolution workflow. A reproduction test will be created to verify the fix.
Issue Type
Environment
EdgarTools Version: 5.23.3
Python Version: 3.13.12
Operating System: Ubuntu 24.04
Bug Description
What you expected to happen:
I expected to extract Item 1 from the 10-K of VNOM.
What actually happened:
The issue: when a 10-K uses a combined heading like "Items 1 and 2. Business and Properties" (instead of separate Item 1 and Item 2 sections), TenK.business returns None. The new parser correctly identifies the section as part_i_items_1_and_2._business_and_properties, but the business property (which maps to self['Item 1']) doesn't resolve it. The legacy fallback also fails.
Concrete example: VNOM (Viper Energy), accession 0002074176-26-000010. The 10-K has "ITEMS 1 and 2. BUSINESS AND PROPERTIES" at the Part I level. filing.obj().sections shows part_i_items_1_and_2._business_and_properties with content, but filing.obj().business returns None.
Error message (if any):
Reproduction
Company/Ticker: VNOM
Time Period: most recent
Relevant Forms: 10-K
Minimal code to reproduce:
Additional Context
Add any other context about the problem here. Screenshots, related issues, etc.
This issue will be handled using EdgarTools' systematic issue resolution workflow. A reproduction test will be created to verify the fix.