Commit Graph

783 Commits

Author SHA1 Message Date
Danglewood
cd7d602b8f [V5] openbb-quantitative: Refactor for V5 (#7506)
* refactor quantitative for v5

* add factors endpoint and add a few charts

---------

Co-authored-by: deeleeramone <>
2026-05-29 10:46:25 +03:00
Danglewood
43b14e1746 [V5] openbb-news: Refactor News for V5 and Add Configurable RSS Endpoint (#7507)
* refactor news for v5 and add rss endpoint

* remove poetry.lock

---------

Co-authored-by: deeleeramone <>
2026-05-29 10:45:36 +03:00
Danglewood
8ea35b0bd0 [V5] openbb-imf: Refactor for V5 (#7508)
* refactor imf extension for V5

* codespell

* fix some python 3.10 items

* return self on copy of metadata object
2026-05-29 10:44:12 +03:00
Danglewood
49cd447674 merge branch develop 2026-05-25 22:43:18 -07:00
Danglewood
caf49e818c FieldInfo import 2026-05-25 22:35:39 -07:00
Danglewood
3735afca3f backport OptionsChainsData serialize schema fix from v5 branch (#7511) 2026-05-26 05:33:14 +00:00
Danglewood
38d636a7a6 linter 2026-05-25 22:31:55 -07:00
Danglewood
976a4fd098 fix test drift 2026-05-25 22:26:21 -07:00
Danglewood
074842ed4f merge branch develop 2026-05-25 22:18:01 -07:00
Danglewood
89023948ee [BugFix] Remove Bad Validator & Make Fields Optional in FuturesHistoricalData (#7510)
* remove bad validator from futures_historical data model

* ohlv should be optional fields

* black
2026-05-26 05:11:24 +00:00
Danglewood
fa9729f4a0 [BugFix] openbb-yfinance: Fix Multi-Index Shape Change for Single Ticker Download (#7512)
* fix multi-index shape change for single ticker download

* lint

* black
2026-05-26 05:07:44 +00:00
Danglewood
c15edafaa4 Merge branch 'v5' of https://github.com/OpenBB-finance/OpenBB into v5 2026-05-25 21:56:28 -07:00
Danglewood
f56a44ec0c bump dependencies 2026-05-25 21:56:17 -07:00
Danglewood
1b58a139aa [V5] openbb-oecd: Rename oecd_utils as oecd (#7509)
* rename oecd_utils to oecd and populate all models there when openbb-economy is not installed

* linting
2026-05-25 21:45:28 -07:00
deeleeramone
e79623ceef remove comment chatter 2026-05-16 18:31:21 -07:00
deeleeramone
3a2bfbcbaf unpack POST parameters from params: Model 2026-05-16 17:59:00 -07:00
Danglewood
b455cf240a fix docstring generator and body param unwrapping 2026-05-15 21:57:59 -07:00
Danglewood
68b347b6f3 [V5] Refactor openbb-oecd for full SDMX 2 API Exposure and V5 Packaging (#7413)
* stash some changes

* add more robust testing

* mypy

* point PR at V5

* introduce spec file

* codespell

* test fix

* fix workflow environment setup

* fix workflow environment setup

* fix workflow environment setup

* add pyyaml to dependencies

* split lint jobs

* fix workflow environment setup

* fix workflow environment setup

* workflow env setup

* workflow env setup

* clean up code comments

* add auth hook entrypoints

* codespell

* add codegen feature

* codespell

* move _unpack into dispatchers for consistency with codegen packages

* surface nested models in the response

* fix missing coverage in CI

* socrata updates

* test fix

* detect plotly output

* add --include and --exclude flags from generate-extension command

* refactor openbb-platform-api for V5 operations and spec file handling

* delete poetry.lock

* add test workflow

* add temp branch id for test workflow

* add httpx to dev dependencies

* add a conftest.py

* tweak conftest

* tweak conftest

* python 3.10 issues

* more python 3.10

* more python 3.10

* more python 3.10

* more python 3.10

* fix url template resolution

* multi-spec support

* fix a windows path issue

* merge branch develop

* table builder, integration tests, and more

* linting

* merge branch develop

* bit of cleanup

* some more updates, cleanup, and apps.json

* codespell

* black

* integration test params and linting

* mypy

* pylint

* black

* more pylint

* recapture teest cassettes

* black again

* more linting

* table presentation choices

* black

* fix merge conflict

* split up metadata module and reformat cache to use msgpack

* mypy

* regenerate lock file

* use json and include dependencies to make openbb-oecd a standalone install

* pylint

* more linting

* serve metadata as dependency instead of assign and initialize

* fix integration_tests_testers to not count dependency injections as paramters

* add assets to git ignore

* ruff

* v5 refactor and publish workflow

* test coverage and ty fixes

* codespell

* update lock file

* workflow setup

* ty check

* workflow setup

* Scope PR to OECD changes only

Restore non-OECD files in the diff against v5 to their v5 state. The
branch was originally created off feature/cli-2 and inherited 186 files
of unrelated changes (cli, agent_server, mcp_server, platform_api,
core/, .github/workflows/* not oecd). Those have nothing to do with the
openbb-oecd v5 refactor and were polluting the PR diff.

* scope cleanup: include leaked v5-resident files (general-linting workflow, platform_api test fixtures)

---------

Co-authored-by: deeleeramone <>
Co-authored-by: Copilot <copilot@github.com>
2026-05-15 17:01:43 -07:00
Danglewood
4fe1a41ed7 merge branch develop 2026-05-11 15:56:27 -07:00
Danglewood
186cbb068c [Security] Bump python-multipart Version (#7493)
* bump python-multipart

* cookiecutter lock file
2026-05-11 22:40:28 +00:00
Danglewood
70bbf37caa test_system_settings 2026-05-11 15:36:13 -07:00
Danglewood
a18a292131 ruff UP007 2026-05-11 15:25:41 -07:00
Danglewood
3a978b654c update for deprecated pydantic syntax 2026-05-11 15:22:03 -07:00
Danglewood
ac39b23c9b [V5] openbb-core: Add Backwards-Compatible Layered Config System (openbb.toml) (#7492)
* add backwards-compatible layered config system

* fix path reference in windows test

* need python version-aware handling in docstring generator
2026-05-07 12:37:05 -07:00
Danglewood
f18493c293 missing coverage 2026-05-05 23:55:35 -07:00
Danglewood
86e0787e59 Merge develop into v5 (resolve conflicts in favor of v5) 2026-05-05 21:56:31 -07:00
Danglewood
6a23408dd9 [Feature] Standardized Financial Statements From SEC Company Facts API (#7416)
* add standardized financial statements to sec provider

* codespell

* add type annotation to json_schema_extra dict

* test params

* mypy

* pylint

* if no actual quarterly data is reported by 20/40-F, raise an error when requesting it

* Fix D&A parent double count rollups

* some updates

* codespell

* breakout statement_schema into smaller files

* balance sheet ordering

* reorganize the results metadata output to OBBject

* unused import

* restore sec_filing.py file - not in scope

* organize imports

* AdjustmentsNoncashItemsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesOther

* fix docstring

* linter

---------

Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
2026-05-06 01:21:55 +00:00
Jitendra Chamoli
08c63e4901 fix(core): invoke linters via python -m so PATH state can't silently skip them (#7488)
* fix(core): invoke linters via `python -m` so PATH state can't silently skip them

`Linters.run()` used `shutil.which(linter)` which resolves the binary against
the process `PATH`. When users run `.venv/bin/python` directly — as
`dev_install.py` itself does, and as common IDE configurations do — the venv's
`bin/` directory is not on `PATH`, so `which("ruff")` returned `None` and the
linter step silently no-op'd.

That mattered because `ImportDefinition.build` emits speculative type imports
(e.g. `OBBject_EquityInfo`) by design and relies on `ruff --fix` to strip the
unused ones. Without the cleanup, those imports remained in generated files
and produced `ImportError` on first import — the symptom many users have hit.

This change resolves the linter through `sys.executable -m <linter>` so it
always resolves against the running Python's environment, independent of
`PATH`. A pre-check via `importlib.util.find_spec` preserves the
"linter not found" path for environments where the package genuinely isn't
installed. A second guard skips invocation when the target directory has no
`*.py` files, which prevents the linter from falling back to its default
working-directory scan.

Adds two regression tests:
- `test_ruff_strips_unused_imports_via_module_invocation` simulates the
  failing scenario by clearing `PATH` and asserts ruff still removes an
  unused import.
- `test_run_logs_not_found_when_module_missing` exercises the missing-module
  branch with a known-bogus linter name.

* style(linters): collapse subprocess.run call to satisfy black

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(linters): keep command list[str] to satisfy mypy

Glob produces Path objects; concatenating with the str command list
tripped mypy's "list[str] + list[Path]" check. Stringify the file
paths up-front so the assembled command is uniformly list[str].

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 16:39:12 +00:00
Danglewood
f899588da9 fix docstring generator for nested models 2026-05-03 13:55:01 -07:00
Danglewood
30f84a3e81 charting pyproject version 2026-05-02 22:30:21 -07:00
Danglewood
73b0516366 package builder fixes 2026-05-02 22:22:42 -07:00
Danglewood
172131ea5e [V5] openbb-core: 100% Test Coverage (#7484)
* increase test coverage to exercise 100% of the testable code path in openbb-core

* model_fields syntax cleanup

* set the environment variable for CI runs

* run codeql on v5 branch

* more CI env setup

* cleanup redundant files

* ruff

* dedupe workflow trigger

* some windows coverage missing

* ubuntu integration test job

* more windows coverage

* test_reference_generator

* test_docstring_generator

* remove line no references from test function docstrings

* clean useless comments from test files

* fix polars type check

* fix test_obbject

* fix test_obbject
2026-04-30 11:49:41 -07:00
Danglewood
7041362aa1 [Feature] OpenBB V5: Initial openbb-core Refactor (#7482)
* initial refactor

* ruff does not dictate style

* unresolved imports in test action

* fix general linting

* resolve pandas imports for actions run

* httpx in test workflow

* pytest-asyncio in test workflow

* pandas.Index(...)

* max version for windows CI is 3.14

* remove temp refactor files that shouldn't have been committed:

* use ruff format instead of black

* formatting and typing

* tab space helper

* test fixtures..

* ty check
2026-04-28 17:11:43 -07:00
Danglewood
ef0b9cfc80 [Feature] Delete frontend-components (#7436)
* delete frontend-components

* lint

* lint

* lint

* black

* black

* lint

* fix a test

* some touchups

* readme updates

* codespell

* linters

* classVar

* cli pyproject and lock
2026-04-23 00:53:44 +00:00
Danglewood
9eca7b9f23 [Enhancement] openbb-cftc: Improve CFTC Endpoints and Make a Standalone Workspace App For COT Data (#7449)
* improve cftc endpoints and make a standalone workspace app

* mypy

* forgot  couple of files to commit

* test params

* integration test param name

* fix sec-sic-search

* fill some contracts missing category and subcategory, add a workspace workchoices endpoint

* linter

* integration test for cot_choices
2026-04-20 22:36:41 +00:00
Danglewood
207c24a466 [BugFix] Bump python-multipart and Fix yfinance Property (#7476)
* bump python-multipart and fix yfinance property

* remove file that wasn't supposed to be added to commit
2026-04-18 07:30:28 +00:00
Shreyansh
319657a74c fix(core): purge partially generated assets on build failure (#7462)
* fix(core): purge partially generated assets on build failure

* feat(core): enhance build error reporting with traceback and user instructions

* feat(core): handle interruptions and SIGTERM during build to ensure asset purge

* fix mypy

* temp pylint disable

---------

Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
2026-04-17 23:29:58 +00:00
Danglewood
8cc70fa1c8 bump pytest version in devtools (#7471) 2026-04-14 15:37:49 +00:00
Danglewood
af11bfa5d3 fix for change in response type for date column (#7470) 2026-04-14 00:12:50 +00:00
Danglewood
1b30777806 [Security] Update Repository Lock Files (#7464)
* update repository lock files

* sync tauri plugin versions

* npm update from windows machine

---------

Co-authored-by: deeleeramone <>
2026-04-13 17:20:04 +00:00
Shreyansh
7b7f012aa9 fix(finra): use persistent session to prevent TooManyRedirects (#7443)
* fix(finra): use persistent session to prevent TooManyRedirects

Resolves #6972.

The FINRA OTC data fetching functions (get_finra_weeks, get_finra_data,
get_full_data) previously created new HTTP sessions for each request.
When making dozens of sequential API calls to aggregate weekly data,
this caused Cloudflare's bot protection on api.finra.org to trigger
redirect loops, resulting in a TooManyRedirects error.

Changes:
- Refactored get_finra_weeks and get_finra_data to accept an optional
  session parameter via kwargs.
- Updated get_full_data to create a single requests.Session and perform
  a pre-flight GET to finra.org to establish Cloudflare cookies before
  making API calls.
- The session is reused across all requests within a single data fetch
  operation, preventing the redirect loop.
- Removed hardcoded User-Agent from get_finra_data in favor of the
  platform's standard user agent set by get_requests_session.
- Increased timeout for weeklyDownloadDetails from 3s to 20s for
  consistency and reliability.

* Apply Black Formatting

* perf(finra): use async requests for concurrent weekly data fetching

Addresses reviewer feedback on PR #7443.

The get_full_data function previously made up to 52 sequential POST
requests to fetch weekly OTC data, resulting in poor performance.

This commit adds async equivalents (aget_finra_weeks, aget_finra_data,
aget_full_data) that use the platform's amake_request utility and
asyncio.gather to fetch all weeks concurrently through a shared
aiohttp session.

The FinraOTCAggregateFetcher now uses aextract_data, which is natively
supported by the platform's Fetcher base class.

The pre-flight GET to finra.org for Cloudflare cookie establishment
is preserved in the async path.

* fix(finra): return all rows from data fetching instead of just the first one

* run black, add symbol field to data model, and recapture test cassette

* mypy

---------

Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
2026-04-07 19:50:43 +00:00
Danglewood
b99f9dc6f3 [Feature] openbb-congress-gov: Add Amendments and Committee Documents Endpoints (#7428)
* add amendments and committees endpoints to congress_gov and migrate all items into the parent congress_gov folder

* codespell

* fix tests

* no-redef

* linting
2026-04-07 10:21:41 +00:00
Danglewood
1f6dc22061 [BugFix] openbb-imf: Fix Base URL for obb.economy.shipping.port_volume (#7456)
* fix base URL for IMF Port Volume

* bump version
2026-04-06 04:33:53 +00:00
Theodore Aptekarev
18d1696243 Flip default tool discovery setting to disabled (#7452) 2026-04-03 05:39:20 +00:00
Danglewood
b6e05bab02 [BugFix] openbb-mcp-server: Fix Test Fixtures for Compatibility With FastMCP >=3.2.0 (#7448)
* fix mcp_server test fixtures for fastmcp>=3.2.0

* formatting

* bump minimum version for cve
2026-04-02 17:07:22 +00:00
Jason
4a594d0258 fix(sec): handle unexpected SEC API responses in cik_map (#7441)
* fix(sec): handle unexpected SEC API responses in cik_map and get_all_companies

Fixes #7097

The cik_map command throws 'ValueError: If using all scalar values,
you must pass an index' when the SEC API returns an unexpected response
format (e.g., flat dict instead of nested dict of dicts).

Changes:
- get_all_companies: validate response before DataFrame creation,
  use from_dict(orient='index') instead of DataFrame().transpose(),
  check column count matches expected fields
- cik_map fetcher: raise proper OpenBBError when symbol not found
  instead of returning empty dict that passes truthiness checks

* run black

---------

Co-authored-by: JasonOA888 <JasonOA888@users.noreply.github.com>
Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
2026-04-01 05:11:25 +00:00
Danglewood
5d0898b189 [Security] Bump Requests Version and Update Repository Lock Files (#7447)
* bump requests version and update repository lock files

* desktop locks are not in scope

* desktop packages are not in scope
2026-03-31 20:46:08 +00:00
Danglewood
8f6cde60ce fix broken fomc image link in apps.json (#7431) 2026-03-30 08:55:12 +00:00
Danglewood
5b2d300d8b resolve widget definition warning in Workspace for imf_utils.presentation_table (#7430) 2026-03-30 08:54:44 +00:00
Danglewood
4a36d90f4b [BugFix] openbb-core: Fix Package Builder In no_validate Path & Handle Lazy Annotations (#7423)
* fix unresolved string annotations in no_validate path

* add regression test

* bump and regenerate locks

---------

Co-authored-by: deeleeramone <>
2026-03-24 17:50:13 +00:00