Skip to content

v5.23.3

Choose a tag to compare

@dgunning dgunning released this 15 Mar 17:49
· 912 commits to main since this release

Bug Fixes

  • Fix duplicate rows from XBRL concept renames — When companies switch XBRL concepts between years (e.g. AAPL switching from company extension to us-gaap concepts), Comprehensive Income showed duplicate rows with complementary NaN values. Now automatically merged into single rows.

  • Fix EntityFacts duplicate labels — Balance sheet from get_facts() showed duplicate rows (Accounts Receivable, Inventory, Accounts Payable) from orphan concept renames. (GH-701)

  • Fix EarningsRelease scale detection — Scale was incorrectly detected as "billions" for GOOG because Scale.detect() matched bare words in narrative text. Now uses parenthetical patterns (in millions). (GH-693)

  • Fix EarningsRelease cash flow misclassification — GOOG EPS showed $0.00 because a cash flow table was misclassified as income statement. (GH-700)

  • Fix IdentityNotSetException swallowed by SGML fallback — Missing EDGAR identity now raises a clear error instead of silently falling back. (GH-707)

  • Fix comprehensive_income() returning None for historical filings — Older filings (pre-2015) that embed OCI in the equity statement now resolve correctly. (GH-706)

  • Fix 14 Jupyter notebooks broken by recent API changes. (GH-708)

New Features

  • Foreign filer support in get_financials() — Falls back to 20-F and 40-F when no 10-K exists. get_quarterly_financials() falls back to 6-K. Companies like AZN, TM, TD now return financials.

  • clear_company_facts_cache() — New public function to free memory in long-running processes.

Improvements

  • Reduced memory footprint — Company facts cache capped at 1 entry (~25MB), FinancialFact uses slots, SIC/ticker resolution deferred to avoid unnecessary downloads. (GH-705)

  • Smarter EarningsRelease exhibit selection — Tries multiple EX-99.* exhibits when the first lacks an income statement.

  • Company.facts cached — Changed to @cached_property to prevent redundant API calls.