Commit Graph

896 Commits

Author SHA1 Message Date
Danglewood
35c94df80d update uv.lock (#7703)
Co-authored-by: deeleeramone <>
2026-09-27 21:25:00 -07:00
Danglewood
ec66768bf9 [Release] openbb-econometrics-v2.0.0 (#7701)
* update uv.lock

* update pyproject.toml

---------

Co-authored-by: deeleeramone <>
2026-09-27 21:07:26 -07:00
Danglewood
c8e67abce2 update uv.lock (#7700)
Co-authored-by: deeleeramone <>
2026-09-27 20:50:43 -07:00
Danglewood
f5621c0b52 update uv.lock (#7699)
Co-authored-by: deeleeramone <>
2026-09-27 20:41:36 -07:00
Danglewood
e4a6c684b3 update uv.lock (#7698)
Co-authored-by: deeleeramone <>
2026-09-27 20:34:40 -07:00
Danglewood
0afdc7fdf7 release openbb-commodity-v2.0.0 (#7697)
Co-authored-by: deeleeramone <>
2026-09-27 20:25:44 -07:00
Danglewood
4ccbb18ea2 update uv.lock (#7696)
Co-authored-by: deeleeramone <>
2026-09-27 19:55:19 -07:00
deeleeramone
1c7daddbfc fix hanging mcp server test 2026-09-27 18:02:21 -07:00
Danglewood
916a52ce41 remove scikit-learn from dependencies, update tests, and format markdown files (#7687)
Co-authored-by: deeleeramone <>
2026-09-26 18:27:14 -07:00
Danglewood
348491846e [Release] openbb-charting-v4.0.0 (#7686)
* up openbb-charting to 4.0.0 and fill missing test coverage in chart_style

* test coverage and format markdown files

---------

Co-authored-by: deeleeramone <>
2026-09-26 16:44:48 -07:00
Danglewood
4a60a9513e remove poetry.lock, update pyproject.tml and uv.lock for openbb-platform-api-v2.0.0 (#7684)
Co-authored-by: deeleeramone <>
2026-09-26 12:39:41 -07:00
deeleeramone
19a50f5fcb remove oecd cache asset that wasn't supposed to be commuitted 2026-09-26 12:02:23 -07:00
Danglewood
02dae5e885 remove uv.sources from pyproject.toml files and point to openbb-core-2.0.0 on PyPI 2026-09-26 10:56:42 -07:00
Danglewood
035982860c bump core version (#7682) 2026-09-26 00:36:07 -07:00
Danglewood
79622143c5 deincrement openbb-core version to allow release pattern 2026-09-26 00:21:14 -07:00
Danglewood
45feafe11a actually fix python 3.10 test failure in core 2026-09-25 22:42:08 -07:00
Danglewood
4d5017ad4d fix python 3.10 test failure in core 2026-09-25 22:34:57 -07:00
Danglewood
f0258c9336 fix publish workflows with missing tag job, some tests and bump fastapi 2026-09-25 22:25:53 -07:00
Danglewood
d377ba941e test publish pipeline with openbb-core-v2.0.0rc0 (#7681) 2026-09-25 19:51:50 -07:00
Danglewood
32b6d4a280 fix warnings raised by federal_reserve on some xlsx workbook parsing 2026-09-25 14:32:30 -07:00
Danglewood
7a70de9b72 fix sec test by adding fixture 2026-09-25 13:00:56 -07:00
Danglewood
932a895a06 fix cli renderer helper with figure object JSON 2026-09-25 10:58:33 -07:00
Danglewood
1fa72f80d7 test coverage 2026-09-25 09:44:33 -07:00
Danglewood
aba09afb1c fixes for docstring generation 2026-09-24 22:21:39 -07:00
Danglewood
5b1bc33e57 update pre-commit, noxfile, and uv locks 2026-09-24 20:53:56 -07:00
Danglewood
b48accbdd4 [V5] openbb-mcp-server: Refactor for v5 - Spec, Config, Packaging, Test Coverage (#7495)
* 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 mcp server for v5

* test action

* fix tests

* tests

* test fixture name

* revert: drop unrelated provider/README changes from mcp-server refactor

Strip the changes to ``README.md`` and ``openbb_platform/providers/{imf,
tradingeconomics,yfinance}`` that snuck into 4ac3602 (refactor mcp server
for v5). Those files are out of scope for the mcp-server work and were
modified inadvertently — restore them to their pre-4ac3602 state.

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

* tests and workflows

* fix workflow

* tests and workflows

* tests and workflows

* tests and workflows

* tests and workflows

* beartype shim for 3.15

* muck around with beartype for 3.15

* muck around with beartype for 3.15

* no 3.15 runners for mcp-server

* update skill files

* cap test matrix at python 3.14

* merge branch v5

* no useless comments

* platform controller command description split

* merge URL overloads from path params

* exclude none and unset from model dump

* refactor for fastmcp4

* wrap markdown lines that are too long

---------

Co-authored-by: deeleeramone <>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-09-24 20:04:13 -07:00
Danglewood
478235ca19 fix oecd lint error 2026-09-24 19:41:32 -07:00
deeleeramone
dc71797e06 fix lint errors 2026-09-24 19:16:58 -07:00
Dex Hunter
b0c092ece5 perf(core): vectorize the date conversion in basemodel_to_df (#7622)
* perf(core): vectorize the date conversion in basemodel_to_df

basemodel_to_df ran three per-element Python passes over the date column of
every payload it converted. Series.apply(to_datetime) calls pandas.to_datetime
once per row, and because each call receives a lone scalar with no format hint,
pandas also re-runs its datetime format guesser on every row.

Parse the column in one call instead, and use vectorized comparisons for the
all-midnight test and the reduction to datetime.date.

The element-wise parse is kept as a fallback for one case that the vectorized
path cannot represent: a column mixing UTC offsets, such as a series crossing a
daylight-savings boundary. Parsing per element lets each value keep its own
offset and yields an object column of tz-aware Timestamps, whereas a single
to_datetime call over that column raises "Mixed timezones detected". That
behaviour is covered by test_to_df_daylight_savings and is preserved exactly.

Measured on a payload built through EquityHistoricalData, median of 9 under an
exclusive CPU lock:

  250 daily bars     8.92 ms -> 1.46 ms
  1,000 daily bars  32.93 ms -> 3.13 ms
  5,000 daily bars 162.25 ms -> 12.23 ms

* fix a broken test - unrelated to this PR...

---------

Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
Co-authored-by: deeleeramone <>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 19:12:59 -07:00
Boris Li
915bfa48f1 Enterprise Flask Migration Toolkit (#7264)
* feat: Add Flask-to-OpenBB enterprise migration toolkit

- Implement Router.from_flask() for zero-touch legacy API conversion
- Enable 4-hour migration vs 6-month traditional rewrite (80% cost reduction)
- Generate FastAPI endpoints from Flask routes with automatic type validation
- Support enterprise consulting services and custom integration workflows

Demonstrates OpenBB's competitive advantage for institutional client migrations.
Complements existing Workspace applications like Open Portfolio suite.

* chore: Resolve .gitignore conflict and add common ignores

* refactor: implement Phase 1 Flask integration architecture- Move Flask conversion logic to openbb_core.app.utils.flask- Add Flask detection to extension_loader - Integrate with OpenBB's core extension system- Add Flask dependency validation with sys.modules checkingAddresses @deeleeramone's architectural feedback for native OpenBB integration.

* docs: add Flask direct entry point demos- demo_direct_flask_entry_point.py: shows direct Flask instance reference- example_pyproject_flask_entry.toml: demonstrates pyproject.toml configurationSupports new architecture eliminating wrapper extensions.

* Implement Phase 1 Flask adapter per code review feedback

- Minimal working implementation with Flask detection and router creation
- Removes complex code generation logic for focused Phase 1 delivery
- Establishes foundation for Phase 2 route conversion features

* Fix Flask integration: Replace missing FlaskToOpenBBAdapter with WSGIMiddleware

- Remove FlaskToOpenBBAdapter which was not implemented
- Use FastAPI's WSGIMiddleware to mount Flask apps directly
- Update extension_loader to use returned Router object
- Convert utils.py to utils/__init__.py to support flask submodule
- Addresses PR review comment about unhandled AttributeError

* Address PR review feedback: fix Flask imports and remove unused files

- Revert .gitignore to upstream/develop
- Remove AI-generated demo/example files and flask_adapter extension
- Move Flask/werkzeug imports inside conditional blocks to avoid ImportError
- Use lazy imports via __getattr__ in utils/flask/__init__.py
- Add Flask tests with @pytest.mark.skipif markers

* Force APIRouter.include_router to propagate Mount paths instead of dropping them. (#1)

This change ensures that mounted ASGI applications (such as Flask apps wrapped in WSGIMiddleware) are not dropped when `APIRouter.include_router` is called.

Previously, while the initial load in `ExtensionLoader` worked as expected, the `Mount` objects were ignored by FastAPI's default inclusion logic. This caused the mounted elements to be lost during the final application assembly, resulting in 404 errors for the Flask routes.

This fix overrides the inclusion logic to manually propagate `Mount` objects downstream.

* feat(flask): Add metadata layer for OpenAPI documentation

Enhance Flask-to-OpenBB converter with structured docstring parsing:
- Parse Google-style docstrings (summary, description, params)
- Extract parameter descriptions from Args section
- Pass metadata to Router.command() for rich OpenAPI docs

This addresses PR feedback to provide tangible benefit by generating
comprehensive API documentation for migrated Flask routes.

* feat(flask): Implement manual OpenAPI spec generation and attachment

- Add FlaskParam and FlaskRouteInfo TypedDict for type-safe metadata
- Implement OpenAPISpecGenerator for Flask→OpenAPI conversion
- Extract route metadata via FlaskIntrospector
- Attach generated spec to router.openbb_openapi_spec_ext
- Add unit tests (3/3 passing)

Addresses WSGI/mount boundary issue where Router.command metadata
cannot propagate through WSGIMiddleware. Spec attached to router
instance for downstream OpenAPI assembly.

Resolves maintainer feedback on PR #7264

* feat(flask): Implement FlaskMountRegistry for multiple mount support

- Add FlaskMountRegistry class for centralized OpenAPI spec management
- Replace router.openbb_openapi_spec_ext with registry pattern
- Support multiple Flask apps at different mount prefixes
- Automatic path rewriting in aggregated OpenAPI specs
- Add registry test case (4/4 tests passing)

Addresses @deeleeramone's feedback on PR #7264 regarding router
attribute fragility and multiple mount support. Registry provides
lifecycle-independent state management and enables enterprise
scenarios with multiple Flask apps.

Resolves: OpenBB-finance/OpenBB#7264 (partial)

* feat(core): load Flask apps as openbb_core_extension WSGI sub-apps

A Flask app referenced directly by an openbb_core_extension entry point is
mounted via WSGIMiddleware and its routes are introspected into openapi.json
(operationId/widgetId/mcp_tool, parameters, request bodies, security, widget_config
and HTML widgets) so the widget factory and MCP server can discover them.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(core): 100% coverage for flask utils + flask dev dependency

Add branch-coverage tests for the Flask integration package (introspection,
AST analysis, docstrings, OpenAPI generation, registry, loader, detection) and
declare flask as a dev dependency so the suite runs in CI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(flask): treat f-string returns as HTML responses

* fix(flask): mount via a2wsgi instead of deprecated starlette WSGIMiddleware

- add openbb-core[flask] extra (flask, a2wsgi); a2wsgi resolved through require_optional
- run the WSGI serve test through mount_flask_extensions; drop httpx importorskip
- core CI installs [pandas,flask] and httpx2

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(flask): cover failed entry point loads; narrow optional types for ty

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
Co-authored-by: deeleeramone <>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-24 18:19:50 -07:00
Danglewood
1cbb24d8b7 bump devtools and repoint pyproject.toml 2026-09-24 15:07:09 -07:00
Danglewood
8a1b5fd93e [V5] Update Repository License to Apache 2.0 (#7677)
* change license to Apache 2.0 for V5

* codespell
2026-09-24 13:32:17 -07:00
Danglewood
d0090d60dc fix lint errors 2026-09-24 12:40:08 -07:00
Danglewood
337cef5db8 [V5] openbb-finra: Refactor for V5 (#7676)
* refactor finra provider for v5

* add workflows

* fix tests
2026-09-24 09:13:30 -07:00
Danglewood
dc4b26030f [V5] openbb-sec: Refactor for V5 (#7525)
* refactor openbb-sec for v5

* linting

* ty

* normalize compare_company_facts

* add workflows

* python 3.10 fix

* add more thorough url validation and tests

* ty check

* ty for python 3.10

* reconfigure with apps

* temp pyproject overrride

* pyproject

* pyproject

* pyproject

* codespell

* pyproject

* fix uk schema file links in schema_files

* test coverage

* test_cli

* port #7547 into this pr

* no hard coded prefix

* improve filing rendering capabilities

* fix xml text detection

* make codeql happy

* missed a file in the commit

* test coverage

* codespell

* fix flakey test

* some updates

* management_ownership --> management_profiles

* proxy statement markdown

* ruff

* fix test coverage

* more tests

* test coverage

* fix lint errors

* Add SEC adviser search, profile, and universe routes (#7559)

* Add SEC institutional data fetchers

* Add SEC filing index and Form D routes

* Add SEC investment adviser people data

* Expose SEC adviser and institutional routes

* fix(sec): address adviser review feedback

* refactor(sec): narrow adviser support to IAPD search

* feat(sec): add adviser firm and individual searches

* feat(sec): add adviser profile drill-down

* fix: repair pre-commit configuration

* feat(sec): add adviser universe route

* feat(sec): expose complete Form ADV data

---------

Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>

* fix test coverage

---------

Co-authored-by: deeleeramone <>
Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
2026-09-24 08:47:49 -07:00
Danglewood
22c92554a0 remove openbb-econdb provider (#7675) 2026-09-23 13:49:40 -07:00
deeleeramone
2c81a8cbb1 fix markdown lint errors 2026-09-23 13:31:40 -07:00
Danglewood
d6fd646402 [V5] openbb-deribit: Refactor provider for V5 (#7674)
* refactor openbb-deribit for v5

* restructure the optimizer around the published combos data and add integration test suites
2026-09-23 13:02:49 -07:00
Danglewood
d1f71e670c [V5] openbb-cboe: Refactor for V5 + Add Payoff Diagrams (#7617)
* refactor cboe for v5

* use zoneinfo instead

* fix test

* some fixes related to the cache access

* fix a couple of tests

* fix the test coverage
2026-09-23 13:00:39 -07:00
Danglewood
124a420f79 [V5] openbb-fred: Refactor as V5 extension. (#7669)
* refactor fred extension for v5

* fix markdown MD037 lint error in README

* codespell
2026-09-23 12:54:02 -07:00
Danglewood
56d6d58fb7 [V5] openbb-nasdaq: Refactor provider for V5. (#7670)
* refactor nasdaq provider for v5

* add workflows

* ty fix
2026-09-23 12:53:41 -07:00
Danglewood
d820270467 [V5] openbb-tmx: Refactor extension for V5 (#7668)
* refactor tmx provider for v5

* fix tests..

* fix tests stack trace exposure

* fix workflow setup
2026-09-23 12:53:23 -07:00
Danglewood
a2a1456dbc fix for plotly 7 breaking change to schemas 2026-09-23 12:33:44 -07:00
Danglewood
c66935d51e [V5] openbb-cftc: Refactor for V5 + Add OIS, Forward Curve, and FX Trade Analysis (#7615)
* refactor openbb-cftc for v5

* add SHIBOR to fixings

---------

Co-authored-by: deeleeramone <>
2026-09-23 12:08:51 -07:00
Danglewood
b215350687 [V5] Feature: Add JODI World Oil & Gas Database (#7593)
* add the JODI oil and gas database as a provider/router extension

* lint fixes

* add grouping to apps.json

---------

Co-authored-by: deeleeramone <>
2026-09-23 12:05:12 -07:00
Danglewood
1bace8672c [V5] openbb-government-us: Refactor for V5 + Move uscongress (#7604)
* v5 government_us provider

* workflow files

* ty and add xlrd to pyproject

* shrink test cassettes

* dev dependencies

* wheel packaging and more tests

* python 3.10 thing..?

* fix test

* default state for multiselect dropdowns

* replace congress html widgets with iframes

* fallback to congress api for congress before 108

* ensure member passage voting count populates
2026-09-23 12:04:29 -07:00
Danglewood
a2f3a5f16f [V5] openbb-eia: Refactor for V5 + Add Full API Implementation (#7584)
* eia refactor for v5

* add test and publish workflows

* data browser state

* fix workflows

* more workflow test items

* temp files in tests

* more fixes

* more browsers

* fix codeql issues

* fix mer state and ensure multi-user capability

* uv lock

* table bridge

* fix electricity browser state

* convert HTML widgets to iFrame

* fix recursion error in workspace mcp
2026-09-23 12:00:10 -07:00
Danglewood
46981c6f93 [V5] openbb-federal-reserve: Refactor for V5 + FFIEC & Regional Fed Routers (#7561)
* refactor for v5

* add workflows

* fix bhcpr schema

* fix pyproject.toml

* fix test

* codespell

* ty

* fix pyproject

* fix ci environment

* fix ci environment

* convert documents endpoints to use fedinprint service

* codeql fix

* fix ny publications and add ny nowcast
2026-09-23 11:59:25 -07:00
Danglewood
840658d01f [V5] openbb-ecb: Refactor for V5 and Expand Coverage (#7560)
* refactor openbb-ecb for v5 and expand coverage

* some updates

* tests

* workflow

* remove 3.15 from test matrix

* some more table schema updates

* remove some html chrome on embedded articles

---------

Co-authored-by: deeleeramone <>
2026-09-23 11:57:59 -07:00
Danglewood
4fe1bbcb94 fix tag grouping in swagger docs 2026-09-18 19:37:09 -07:00