Skip to content

TenK: combined-item headings ("Items 1 and 2", "Items 7. and 7A.") lose items; #710 filings regressed in 5.29.0 / 5.34.0 #1382

Description

@kelpplease

Issue Type

  • Data Quality Issue (incorrect financial values, missing data)
  • XBRL Parsing Issue (statement rendering, concept mapping)
  • Filing Access Issue (download failures, attachment problems)
  • Performance Issue (slow operations, memory problems)
  • Compatibility Issue (platform/dependency conflicts)
  • Documentation Issue (unclear instructions, missing examples)

Environment

EdgarTools Version: 5.59.1 (bisected across 5.23.4 – 5.59.1)
Python Version: 3.12
Operating System: Linux Mint 22.1

Bug Description

What you expected to happen:
When a 10-K files two items under one heading, the section map holds one section covering both, and a lookup for either item returns it. #710 set this up in 5.23.4 for "Items 1 and 2. Business and Properties": tenk.business and tenk["Item 2"] both returned the combined section, verified on Viper Energy and Devon Energy.

What actually happened:
On 5.59.1 there are three failure shapes.

1. The #710 filings have regressed. Part I now starts at Item 1A. There is no Item 1, no Item 2 and no combined key, and the Business and Properties text (~360K characters) is in no section at all.

Filing Last release that worked First release that fails
Viper Energy 0002074176-26-000010 5.28.5 5.29.0
Devon Energy 0001193125-26-056485 5.33.0 5.34.0

"Worked" means sections contained part_i_items_1_and_2._business_and_properties and tenk.business returned ~359,700 characters. Both still fail on 5.59.1. I haven't traced the cause; for reference, 5.29.0 added agent-aware TOC parsing and 5.34.0 added the per-form section schema.

2. Headings with a period after each item number have never resolved. Freeport-McMoRan and Cheniere Energy write Items 1. and 2.:

  • Freeport 0000831259-25-000006: Items 1. and 2. Business and Properties.
  • Cheniere 0000003570-26-000005: TOC row Items 1. and 2. Business and Properties (non-breaking space after "Items"); body heading ITEMS 1. AND 2.    BUSINESS AND PROPERTIES

On 5.23.4 – 5.28.5, detection built keys that kept the punctuation: part_i_items_1._and_2._business_and_properties (Freeport) and part_i_items\xa01._and_2._business_and_properties (Cheniere). The #710 lookup regex part_[iv]+_items_(?:{inum}_and_\d+|\d+_and_{inum}) needs an unbroken _1_and_2, so the period after 1 defeats it: tenk["Item 2"] returned None on both, and tenk.business returned None on Freeport. On every release from 5.45.1 to 5.59.1 no combined key is built at all, and both filings look like shape 1.

3. The second item of a combined heading is unreachable. Freeport's filing also combines Items 7. and 7A. Management's Discussion and Analysis of Financial Condition and Results of Operations and Quantitative and Qualitative Disclosures About Market Risk. On 5.59.1 that content comes back only as part_ii_item_7 (which opens on the combined heading). There is no 7A key, and tenk["Item 7A"] returns None.

Error message (if any):
None. tenk["Item 2"] emits the FutureWarning "found no such item in this filing".

Reproduction

Company/Ticker: VNOM, DVN, FCX, LNG
Time Period: FY2024 (FCX) and FY2025 10-Ks
Relevant Forms: 10-K

Minimal code to reproduce:

import warnings
from edgar import find, set_identity

warnings.simplefilter("ignore", FutureWarning)
set_identity("Your Name your@email.com")

def size(text):
    return None if text is None else f"{len(text):,} chars"

FILINGS = {
    "Viper Energy":     "0002074176-26-000010",  # from #710
    "Devon Energy":     "0001193125-26-056485",  # from #710
    "Freeport-McMoRan": "0000831259-25-000006",
    "Cheniere Energy":  "0000003570-26-000005",
}
for name, acc in FILINGS.items():
    tenk = find(acc).obj()
    print(name, acc)
    print("  Part I keys:  ", [k for k in tenk.sections.keys() if k.startswith("part_i_")])
    print("  business:     ", size(tenk.business))
    print("  Item 2:       ", size(tenk["Item 2"]))
    print("  Item 7A:      ", size(tenk["Item 7A"]))

Output on 5.59.1:

Viper Energy 0002074176-26-000010
  Part I keys:   ['part_i_item_1a', 'part_i_item_1b', 'part_i_item_1c', 'part_i_item_3', 'part_i_item_4']
  business:      None
  Item 2:        None
  Item 7A:       5,815 chars
Devon Energy 0001193125-26-056485
  Part I keys:   ['part_i_item_1a', 'part_i_item_1b', 'part_i_item_1c', 'part_i_item_3', 'part_i_item_4']
  business:      None
  Item 2:        None
  Item 7A:       2,119 chars
Freeport-McMoRan 0000831259-25-000006
  Part I keys:   ['part_i_item_1a', 'part_i_item_1b', 'part_i_item_1c', 'part_i_item_3', 'part_i_item_4']
  business:      None
  Item 2:        None
  Item 7A:       None
Cheniere Energy 0000003570-26-000005
  Part I keys:   ['part_i_item_1a', 'part_i_item_1b', 'part_i_item_1c', 'part_i_item_3', 'part_i_item_4']
  business:      None
  Item 2:        None
  Item 7A:       1,344 chars

Additional Context

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions