Files
dlee-bq 7f04334398 - example.py: mark the base Example.scope field frozen so the (#7798)
Literal[api]/Literal[python] subclass overrides are covariant
  read-only narrowings. Subclass fields stay writable at runtime.
- method_definition.py, options_chains.py: pydantic 2.14 types
  FieldInfo.annotation as TypeForm[Any] | None, which ty rejects in
  Union[]/Annotated[] and where  is expected; bind it as Any.
  Use FieldInfo.get_default(call_default_factory=True) instead of
  calling the default_factory union directly.
- economy_views.py: read data/obbject_item without None defaults in the
  IMF shipping views. charting always sets obbject_item, and data is
  only popped when present and not None.- finra, jodi, eia: annotate @asynccontextmanager/@contextmanager
  functions with AsyncGenerator/Generator instead of the deprecated
  AsyncIterator/Iterator return types.
- charting: cast the darts forecast dataset to TimeSeries before
  indexing so .all_values resolves instead of hitting ndarray.
- fred, imf, nasdaq, sec, tmx: turn off invalid-attribute-override and
  invalid-mutable-override for models/** only, following the cboe
  precedent. Provider models extend the standard models by narrowing
  query params to Literals or widening fields to Optional, which these
  rules flag by design.

Co-authored-by: dlee-bq <325002271+dlee-bq@users.noreply.github.com>
2026-10-17 20:50:39 +00:00
..
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00
2026-09-29 14:45:53 +00:00

OpenBB JODI Provider

This extension integrates the Joint Organisations Data Initiative (JODI) data provider into the OpenBB Platform.

JODI publishes free monthly petroleum and natural gas supply, demand, and stock statistics, self-reported by over 100 countries, through the JODI-Oil and JODI-Gas World Databases.

Installation

To install the extension:

pip install openbb-jodi

Endpoints

Each endpoint returns one presentation-ready view of the raw data, as a date-indexed table, with the series assessments and units in the results metadata.

obb.jodi.oil — JODI-Oil World Database (monthly, from January 2002)

  • balance — one country and product; one column per flow of the JODI questionnaire (production, trade, stocks, refinery activity).
  • production — one primary product; one column per reporting country.
  • demand — one refined product; one column per reporting country.
  • demand_by_product — one country; one column per refined product (the demand barrel).
  • imports / exports — one product; one column per reporting country.
  • stocks — closing stock levels of one product; one column per reporting country.

Units: kb/d, kbbl, kl, kmt, and the barrels/kmt conversion factor.

obb.jodi.gas — JODI-Gas World Database (monthly, from January 2009)

  • balance — one country; one column per flow of the JODI questionnaire.
  • production — one column per reporting country.
  • demand — gross inland deliveries (observed or calculated); one column per reporting country.
  • imports / exports — total, pipeline, or LNG; one column per reporting country.
  • stocks — closing stock levels; one column per reporting country.

Units: million m3, TJ, and kmt of LNG.

OpenBB Workspace

The package bundles a "JODI Oil & Gas" app template (openbb_jodi/assets/apps.json), served at /api/v1/jodi/apps.json and folded into the Workspace app catalogue automatically when running openbb-api. It has three dashboards - Country Balances (oil balance, demand barrel, and gas balance, synchronized on one country), Oil Markets, and Gas Markets.

No API key is required. Source tables are cached under the OpenBB user cache directory, partitioned by product and flow; a table is downloaded again only when JODI publishes an update.

Documentation available here.