John Seong e6a3879e98 feat(platform): add membership groups to Country type (#7352)
* feat(platform): add membership groups to Country type

Add membership groups (G7, G20, EU, NATO, OECD, OPEC, BRICS) to the Country
type, as suggested by maintainer in PR #7333.

Changes:
- Updated country_data.json with 'groups' field for each country
- Added Country.groups property returning list of group memberships
- Added Country.is_member_of(group) method for membership checks
- Added comprehensive tests for group functionality

This enables filtering and analysis by economic/political groupings:
  c = Country('Germany')
  c.groups        # ['G7', 'G20', 'EU', 'NATO', 'OECD']
  c.is_member_of('EU')  # True

Follow-up to #7333

* fix(platform): add Indonesia to BRICS (joined Jan 2025)

* refactor(platform): use TypedDict for country data typing

- Replace dict[str, Any] with CountryData TypedDict for proper type inference
- Add official data sources to module docstring
- Add _sources metadata section to country_data.json with references

Sources:
- G7: g7italy.it
- G20: g20.org
- EU: european-union.europa.eu
- NATO: nato.int
- OECD: oecd.org
- OPEC: opec.org
- BRICS: brics-russia2024.ru

* fix(platform): update group membership reference URLs

Replace broken/inaccessible URLs with stable Wikipedia references:
- G7, G20, OECD, OPEC, BRICS → Wikipedia (stable, well-maintained)
- EU, NATO → Updated to current official URLs

* feat: add developer script to regenerate country_data.json from sources

* fix: resolve codespell lint errors in update_country_data.py

* fix: resolve black/ruff lint issues in update_country_data.py

* feat(core): normalize unicode country names for ASCII input matching

* fix(core): remove Angola from OPEC and Bangladesh from NATO

Angola withdrew from OPEC effective Jan 2024. The OPEC scraper falls
back to a hardcoded list which still included AO — removed it.

Bangladesh was incorrectly scraped as a NATO member due to the scraper
iterating all wikitables on the page. Now filters tables by their
nearest h2 section header to only process member state tables.

* fix(core): normalize country names to ASCII in update script

Strip diacritical marks at generation time so country_data.json
uses ASCII-only names (e.g., Turkiye, Curacao, Cote d'Ivoire).

* Update openbb_platform/core/openbb_core/provider/utils/update_country_data.py

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

* fix imports

* fix: resolve mypy type narrowing for expected counts

* restore reference.json

---------

Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
2026-02-25 19:16:36 +00:00
2025-10-22 13:44:50 +00:00
2022-01-07 16:22:24 +00:00
2024-07-01 13:05:59 +00:00
2025-10-06 16:16:47 +00:00
2025-02-10 17:16:34 +00:00
2023-11-13 15:03:31 +00:00


Open Data Platform by OpenBB logo Open Data Platform by OpenBB logo

Twitter Discord Shield Open in Dev Containers Open In Colab PyPI

Open Data Platform by OpenBB (ODP) is the open-source toolset that helps data engineers integrate proprietary, licensed, and public data sources into downstream applications like AI copilots and research dashboards.

ODP operates as the "connect once, consume everywhere" infrastructure layer that consolidates and exposes data to multiple surfaces at once: Python environments for quants, OpenBB Workspace and Excel for analysts, MCP servers for AI agents, and REST APIs for other applications.

Logo

Get started with: pip install openbb

from openbb import obb
output = obb.equity.price.historical("AAPL")
df = output.to_dataframe()

Data integrations available can be found here: https://docs.openbb.co/python/reference


OpenBB Workspace

While the Open Data Platform provides the open-source data integration foundation, OpenBB Workspace offers the enterprise UI for analysts to visualize datasets and leverage AI agents. The platform's "connect once, consume everywhere" architecture enables seamless integration between the two.

You can find OpenBB Workspace at https://pro.openbb.co.

Logo

Data integration:

AI Agents integration:

Integrating Open Data Platform to the OpenBB Workspace

Connect this library to the OpenBB Workspace with a few simple commands, in a Python (3.9.21 - 3.12) environment.

Run an ODP backend

  • Install the packages.
pip install "openbb[all]"
  • Start the API server over localhost.
openbb-api

This will launch a FastAPI server, via Uvicorn, at 127.0.0.1:6900.

You can check that it works by going to http://127.0.0.1:6900.

Integrate the ODP Backend to OpenBB Workspace

Sign-in to the OpenBB Workspace, and follow the following steps:

CleanShot 2025-05-17 at 09 51 56@2x

  1. Go to the "Apps" tab
  2. Click on "Connect backend"
  3. Fill in the form with: Name: Open Data Platform URL: http://127.0.0.1:6900
  4. Click on "Test". You should get a "Test successful" with the number of apps found.
  5. Click on "Add".

That's it.


Table of Contents

  1. Installation
  2. Contributing
  3. License
  4. Disclaimer
  5. Contacts
  6. Star History
  7. Contributors

1. Installation

The ODP Python Package can be installed from PyPI package by running pip install openbb

or by cloning the repository directly with git clone https://github.com/OpenBB-finance/OpenBB.git.

Please find more about the installation process, in the OpenBB Documentation.

ODP CLI installation

The ODP CLI is a command-line interface that allows you to access the ODP directly from your command line.

It can be installed by running pip install openbb-cli

or by cloning the repository directly with git clone https://github.com/OpenBB-finance/OpenBB.git.

Please find more about the installation process in the OpenBB Documentation.

2. Contributing

There are three main ways of contributing to this project. (Hopefully you have starred the project by now ⭐️)

Become a Contributor

Create a GitHub ticket

Before creating a ticket make sure the one you are creating doesn't exist already among the existing issues

Provide feedback

We are most active on our Discord, but feel free to reach out to us in any of our social media for feedback.

3. License

Distributed under the AGPLv3 License. See LICENSE for more information.

4. Disclaimer

Trading in financial instruments involves high risks including the risk of losing some, or all, of your investment amount, and may not be suitable for all investors.

Before deciding to trade in a financial instrument you should be fully informed of the risks and costs associated with trading the financial markets, carefully consider your investment objectives, level of experience, and risk appetite, and seek professional advice where needed.

The data contained in the Open Data Platform is not necessarily accurate.

OpenBB and any provider of the data contained in this website will not accept liability for any loss or damage as a result of your trading, or your reliance on the information displayed.

All names, logos, and brands of third parties that may be referenced in our sites, products or documentation are trademarks of their respective owners. Unless otherwise specified, OpenBB and its products and services are not endorsed by, sponsored by, or affiliated with these third parties.

Our use of these names, logos, and brands is for identification purposes only, and does not imply any such endorsement, sponsorship, or affiliation.

5. Contacts

If you have any questions about the platform or anything OpenBB, feel free to email us at support@openbb.co

If you want to say hi, or are interested in partnering with us, feel free to reach us at hello@openbb.co

Any of our social media platforms: openbb.co/links

6. Star History

This is a proxy of our growth and that we are just getting started.

But for more metrics important to us check openbb.co/open.

Star History Chart

7. Contributors

OpenBB wouldn't be OpenBB without you. If we are going to disrupt financial industry, every contribution counts. Thank you for being part of this journey.

Description
Mirror of OpenBB-finance/OpenBB (OpenBB Platform + CLI), pulled every 8h
Readme Apache-2.0 3.2 GiB
Languages
Python 100%