v5.23.3
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),
FinancialFactuses 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.factscached — Changed to@cached_propertyto prevent redundant API calls.