[Feature] Remove Static Assets For Distribution (#7212)

* remove static assets for distribution

* don't need that conftest file

* comment cleanup

* fix yaml
This commit is contained in:
Danglewood
2025-09-09 10:05:33 -07:00
committed by GitHub
parent a6e9128128
commit 327d9f222b
54 changed files with 6098 additions and 85839 deletions

View File

@@ -15,7 +15,7 @@ repos:
hooks:
- id: black
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: "v0.11.2"
rev: "v0.12.12"
hooks:
- id: ruff
- repo: https://github.com/pycqa/pydocstyle
@@ -67,6 +67,19 @@ repos:
entry: pylint
language: system
types: [python]
- id: check-generated-files
name: Check for generated files
entry: bash
args:
- -c
- |
if git ls-files | grep "^openbb_platform/core/openbb/package/" | grep -v "^openbb_platform/core/openbb/package/__init__\.py$"; then
echo "Error: Attempting to commit generated files in package directory. Only __init__.py should exist."
exit 1
fi
language: system
pass_filenames: false
always_run: true
- repo: https://github.com/Yelp/detect-secrets
rev: v1.5.0
hooks:

2630
cli/poetry.lock generated vendored

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,98 @@
"""Root configuration for pytest."""
# flake8: noqa: S101
# pylint: disable=unused-argument
import os
import shutil
from pathlib import Path
import pytest
ROOT_DIR = Path(__file__).parent
@pytest.fixture(scope="session", autouse=True)
def cleanup_generated_files():
"""Clean up generated files and restore original state before and after test session."""
reference_file = ROOT_DIR / "core" / "openbb" / "assets" / "reference.json"
reference_backup = ROOT_DIR / "core" / "openbb" / "reference.json.original"
def clean_and_restore():
# 1. Remove all files in core/openbb/package except __init__.py
package_dir = ROOT_DIR / "core" / "openbb" / "package"
if package_dir.exists():
for item in package_dir.iterdir():
if item.name != "__init__.py":
if item.is_file():
item.unlink()
elif item.is_dir():
shutil.rmtree(item)
# 2. Create backup before first cleanup if it doesn't exist
if reference_file.exists() and not reference_backup.exists():
shutil.copy2(reference_file, reference_backup)
# 3. Restore from backup if it exists
elif reference_backup.exists() and reference_file.exists():
shutil.copy2(reference_backup, reference_file)
reference_backup.unlink()
# Clean before tests
clean_and_restore()
yield
# Clean after tests
clean_and_restore()
@pytest.mark.order(1)
def test_repository_state():
"""Ensure repository is in clean state before other tests."""
# Check that core/openbb/package only contains __init__.py
package_dir = ROOT_DIR / "core" / "openbb" / "package"
if package_dir.exists():
files = [f for f in package_dir.iterdir() if f.is_file()]
assert (
len(files) <= 1
), f"Package directory should only contain __init__.py, found: {[f.name for f in files]}"
if files:
assert (
files[0].name == "__init__.py"
), f"Only __init__.py should exist, found: {files[0].name}"
def pytest_configure():
"""Set environment variables for testing."""
os.environ["OPENBB_AUTO_BUILD"] = "true"
def pytest_collection_modifyitems(config, items):
"""Modify test collection to ensure cleanup-dependent tests run first."""
# Find tests that should run early (checking clean state)
early_tests: list = []
other_tests: list = []
for item in items:
# Tests that check repository state should run first
if (
"repository_state" in item.name.lower()
or "extension_map" in item.name.lower()
or item.get_closest_marker("order")
):
early_tests.append(item)
else:
other_tests.append(item)
# Sort early tests by their order marker if present
early_tests.sort(
key=lambda x: (
getattr(x.get_closest_marker("order"), "args", [999])[0]
if x.get_closest_marker("order")
else 999
)
)
# Reorder: early tests first, then others
items[:] = early_tests + other_tests

File diff suppressed because one or more lines are too long

View File

@@ -1,142 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
from openbb_core.app.static.container import Container
class Extensions(Container):
# fmt: off
"""
Routers:
/commodity
/crypto
/currency
/derivatives
/economy
/equity
/etf
/fixedincome
/index
/news
/regulators
/uscongress
Extensions:
- commodity@1.3.2
- crypto@1.4.2
- currency@1.4.2
- derivatives@1.4.2
- economy@1.4.3
- equity@1.4.2
- etf@1.4.2
- fixedincome@1.4.4
- index@1.4.2
- news@1.4.2
- regulators@1.4.3
- uscongress@1.0.0
- benzinga@1.4.2
- bls@1.1.3
- cftc@1.1.2
- congress_gov@1.0.0
- econdb@1.3.2
- federal_reserve@1.4.4
- fmp@1.4.3
- fred@1.4.5
- imf@1.1.2
- intrinio@1.4.2
- oecd@1.4.2
- polygon@1.4.2
- sec@1.4.5
- tiingo@1.4.2
- tradingeconomics@1.4.2
- us_eia@1.1.2
- yfinance@1.4.7 """
# fmt: on
def __repr__(self) -> str:
return self.__doc__ or ""
@property
def commodity(self):
# pylint: disable=import-outside-toplevel
from . import commodity
return commodity.ROUTER_commodity(command_runner=self._command_runner)
@property
def crypto(self):
# pylint: disable=import-outside-toplevel
from . import crypto
return crypto.ROUTER_crypto(command_runner=self._command_runner)
@property
def currency(self):
# pylint: disable=import-outside-toplevel
from . import currency
return currency.ROUTER_currency(command_runner=self._command_runner)
@property
def derivatives(self):
# pylint: disable=import-outside-toplevel
from . import derivatives
return derivatives.ROUTER_derivatives(command_runner=self._command_runner)
@property
def economy(self):
# pylint: disable=import-outside-toplevel
from . import economy
return economy.ROUTER_economy(command_runner=self._command_runner)
@property
def equity(self):
# pylint: disable=import-outside-toplevel
from . import equity
return equity.ROUTER_equity(command_runner=self._command_runner)
@property
def etf(self):
# pylint: disable=import-outside-toplevel
from . import etf
return etf.ROUTER_etf(command_runner=self._command_runner)
@property
def fixedincome(self):
# pylint: disable=import-outside-toplevel
from . import fixedincome
return fixedincome.ROUTER_fixedincome(command_runner=self._command_runner)
@property
def index(self):
# pylint: disable=import-outside-toplevel
from . import index
return index.ROUTER_index(command_runner=self._command_runner)
@property
def news(self):
# pylint: disable=import-outside-toplevel
from . import news
return news.ROUTER_news(command_runner=self._command_runner)
@property
def regulators(self):
# pylint: disable=import-outside-toplevel
from . import regulators
return regulators.ROUTER_regulators(command_runner=self._command_runner)
@property
def uscongress(self):
# pylint: disable=import-outside-toplevel
from . import uscongress
return uscongress.ROUTER_uscongress(command_runner=self._command_runner)

View File

@@ -1,405 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_commodity(Container):
"""/commodity
petroleum_status_report
/price
short_term_energy_outlook
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def petroleum_status_report(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["eia"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: eia."
),
] = None,
**kwargs
) -> OBBject:
"""EIA Weekly Petroleum Status Report.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: eia.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
category : Literal['balance_sheet', 'inputs_and_production', 'refiner_blender_net_production', 'crude_petroleum_stocks', 'gasoline_fuel_stocks', 'total_gasoline_by_sub_padd', 'distillate_fuel_oil_stocks', 'imports', 'imports_by_country', 'weekly_estimates', 'spot_prices_crude_gas_heating', 'spot_prices_diesel_jet_fuel_propane', 'retail_prices']
The group of data to be returned. The default is the balance sheet. (provider: eia)
table : Optional[str]
The specific table element within the category to be returned, default is 'stocks', if the category is 'weekly_estimates', else 'all'.
Note: Choices represent all available tables from the entire collection and are not all available for every category.
Invalid choices will raise a ValidationError with a message indicating the valid choices for the selected category.
Choices are:
all
conventional_gas
crude
crude_production
crude_production_avg
diesel
ethanol_plant_production
ethanol_plant_production_avg
exports
exports_avg
heating_oil
imports
imports_avg
imports_by_country
imports_by_country_avg
inputs_and_utilization
inputs_and_utilization_avg
jet_fuel
monthly
net_imports_inc_spr_avg
net_imports_incl_spr
net_production
net_production_avg
net_production_by_product
net_production_by_production_avg
product_by_region
product_by_region_avg
product_supplied
product_supplied_avg
propane
rbob
refiner_blender_net_production
refiner_blender_net_production_avg
stocks
supply
supply_avg
ulta_low_sulfur_distillate_reclassification
ulta_low_sulfur_distillate_reclassification_avg
weekly
Multiple comma separated items allowed. (provider: eia)
use_cache : bool
Subsequent requests for the same source data are cached for the session using ALRU cache. (provider: eia)
Returns
-------
OBBject
results : list[PetroleumStatusReport]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
PetroleumStatusReport
---------------------
date : date
The date of the data.
table : Optional[str]
Table name for the data.
symbol : str
Symbol representing the entity requested in the data.
order : Optional[int]
Presented order of the data, relative to the table.
title : Optional[str]
Title of the data.
value : Union[int, float]
Value of the data.
unit : Optional[str]
Unit or scale of the data.
Examples
--------
>>> from openbb import obb
>>> # Get the EIA's Weekly Petroleum Status Report.
>>> obb.commodity.petroleum_status_report(provider='eia')
>>> # Select the category of data, and filter for a specific table within the report.
>>> obb.commodity.petroleum_status_report(category='weekly_estimates', table='imports', provider='eia')
""" # noqa: E501
return self._run(
"/commodity/petroleum_status_report",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"commodity.petroleum_status_report",
("eia",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"category": {
"eia": {
"multiple_items_allowed": False,
"choices": [
"balance_sheet",
"inputs_and_production",
"refiner_blender_net_production",
"crude_petroleum_stocks",
"gasoline_fuel_stocks",
"total_gasoline_by_sub_padd",
"distillate_fuel_oil_stocks",
"imports",
"imports_by_country",
"weekly_estimates",
"spot_prices_crude_gas_heating",
"spot_prices_diesel_jet_fuel_propane",
"retail_prices",
],
}
},
"table": {
"eia": {
"multiple_items_allowed": True,
"choices": [
"all",
"conventional_gas",
"crude",
"crude_production",
"crude_production_avg",
"diesel",
"ethanol_plant_production",
"ethanol_plant_production_avg",
"exports",
"exports_avg",
"heating_oil",
"imports",
"imports_avg",
"imports_by_country",
"imports_by_country_avg",
"inputs_and_utilization",
"inputs_and_utilization_avg",
"jet_fuel",
"monthly",
"net_imports_inc_spr_avg",
"net_imports_incl_spr",
"net_production",
"net_production_avg",
"net_production_by_product",
"net_production_by_production_avg",
"product_by_region",
"product_by_region_avg",
"product_supplied",
"product_supplied_avg",
"propane",
"rbob",
"refiner_blender_net_production",
"refiner_blender_net_production_avg",
"stocks",
"supply",
"supply_avg",
"ulta_low_sulfur_distillate_reclassification",
"ulta_low_sulfur_distillate_reclassification_avg",
"weekly",
],
}
},
},
)
)
@property
def price(self):
# pylint: disable=import-outside-toplevel
from . import commodity_price
return commodity_price.ROUTER_commodity_price(
command_runner=self._command_runner
)
@exception_handler
@validate
def short_term_energy_outlook(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["eia"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: eia."
),
] = None,
**kwargs
) -> OBBject:
"""Monthly short term (18 month) projections using EIA's STEO model.
Source: www.eia.gov/steo/
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: eia.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
symbol : Optional[str]
Symbol to get data for. If provided, overrides the 'table' parameter to return only the specified symbol from the STEO API. Multiple comma separated items allowed. (provider: eia)
table : Literal['01', '02', '03a', '03b', '03c', '03d', '03e', '04a', '04b', '04c', '04d', '05a', '05b', '06', '07a', '07b', '07c', '07d1', '07d2', '07e', '08', '09a', '09b', '09c', '10a', '10b']
The specific table within the STEO dataset. Default is '01'. When 'symbol' is provided, this parameter is ignored.
01: US Energy Markets Summary
02: Nominal Energy Prices
03a: World Petroleum and Other Liquid Fuels Production, Consumption, and Inventories
03b: Non-OPEC Petroleum and Other Liquid Fuels Production
03c: World Petroleum and Other Liquid Fuels Production
03d: World Crude Oil Production
03e: World Petroleum and Other Liquid Fuels Consumption
04a: US Petroleum and Other Liquid Fuels Supply, Consumption, and Inventories
04b: US Hydrocarbon Gas Liquids (HGL) and Petroleum Refinery Balances
04c: US Regional Motor Gasoline Prices and Inventories
04d: US Biofuel Supply, Consumption, and Inventories
05a: US Natural Gas Supply, Consumption, and Inventories
05b: US Regional Natural Gas Prices
06: US Coal Supply, Consumption, and Inventories
07a: US Electricity Industry Overview
07b: US Regional Electricity Retail Sales
07c: US Regional Electricity Prices
07d1: US Regional Electricity Generation, Electric Power Sector
07d2: US Regional Electricity Generation, Electric Power Sector, continued
07e: US Electricity Generating Capacity
08: US Renewable Energy Consumption
09a: US Macroeconomic Indicators and CO2 Emissions
09b: US Regional Macroeconomic Data
09c: US Regional Weather Data
10a: Drilling Productivity Metrics
10b: Crude Oil and Natural Gas Production from Shale and Tight Formations (provider: eia)
frequency : Literal['month', 'quarter', 'annual']
The frequency of the data. Default is 'month'. (provider: eia)
Returns
-------
OBBject
results : list[ShortTermEnergyOutlook]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
ShortTermEnergyOutlook
----------------------
date : date
The date of the data.
table : Optional[str]
Table name for the data.
symbol : str
Symbol representing the entity requested in the data.
order : Optional[int]
Presented order of the data, relative to the table.
title : Optional[str]
Title of the data.
value : Union[int, float]
Value of the data.
unit : Optional[str]
Unit or scale of the data.
Examples
--------
>>> from openbb import obb
>>> # Get the EIA's Short Term Energy Outlook.
>>> obb.commodity.short_term_energy_outlook(provider='eia')
>>> # Select the specific table of data from the STEO. Table 03d is World Crude Oil Production.
>>> obb.commodity.short_term_energy_outlook(table='03d', provider='eia')
""" # noqa: E501
return self._run(
"/commodity/short_term_energy_outlook",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"commodity.short_term_energy_outlook",
("eia",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"symbol": {
"eia": {"multiple_items_allowed": True, "choices": None}
},
"table": {
"eia": {
"multiple_items_allowed": False,
"choices": [
"01",
"02",
"03a",
"03b",
"03c",
"03d",
"03e",
"04a",
"04b",
"04c",
"04d",
"05a",
"05b",
"06",
"07a",
"07b",
"07c",
"07d1",
"07d2",
"07e",
"08",
"09a",
"09b",
"09c",
"10a",
"10b",
],
}
},
"frequency": {
"eia": {
"multiple_items_allowed": False,
"choices": ["month", "quarter", "annual"],
}
},
},
)
)

View File

@@ -1,206 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_commodity_price(Container):
"""/commodity/price
spot
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def spot(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Commodity Spot Prices.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
commodity : Literal['wti', 'brent', 'natural_gas', 'jet_fuel', 'propane', 'heating_oil', 'diesel_gulf_coast', 'diesel_ny_harbor', 'diesel_la', 'gasoline_ny_harbor', 'gasoline_gulf_coast', 'rbob', 'all']
Commodity name associated with the EIA spot price commodity data, default is 'all'. (provider: fred)
frequency : Optional[Literal['a', 'q', 'm', 'w', 'd', 'wef', 'weth', 'wew', 'wetu', 'wem', 'wesu', 'wesa', 'bwew', 'bwem']]
Frequency aggregation to convert high frequency data to lower frequency.
None = No change
a = Annual
q = Quarterly
m = Monthly
w = Weekly
d = Daily
wef = Weekly, Ending Friday
weth = Weekly, Ending Thursday
wew = Weekly, Ending Wednesday
wetu = Weekly, Ending Tuesday
wem = Weekly, Ending Monday
wesu = Weekly, Ending Sunday
wesa = Weekly, Ending Saturday
bwew = Biweekly, Ending Wednesday
bwem = Biweekly, Ending Monday
(provider: fred)
aggregation_method : Literal['avg', 'sum', 'eop']
A key that indicates the aggregation method used for frequency aggregation.
This parameter has no affect if the frequency parameter is not set.
avg = Average
sum = Sum
eop = End of Period
(provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
log = Natural Log
(provider: fred)
Returns
-------
OBBject
results : list[CommoditySpotPrices]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CommoditySpotPrices
-------------------
date : date
The date of the data.
symbol : Optional[str]
Symbol representing the entity requested in the data.
commodity : Optional[str]
Commodity name.
price : float
Price of the commodity.
unit : Optional[str]
Unit of the commodity price.
Examples
--------
>>> from openbb import obb
>>> obb.commodity.price.spot(provider='fred')
>>> obb.commodity.price.spot(provider='fred', commodity='wti')
""" # noqa: E501
return self._run(
"/commodity/price/spot",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"commodity.price.spot",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"commodity": {
"fred": {
"multiple_items_allowed": False,
"choices": [
"wti",
"brent",
"natural_gas",
"jet_fuel",
"propane",
"heating_oil",
"diesel_gulf_coast",
"diesel_ny_harbor",
"diesel_la",
"gasoline_ny_harbor",
"gasoline_gulf_coast",
"rbob",
"all",
],
}
},
"frequency": {
"fred": {
"multiple_items_allowed": False,
"choices": [
"a",
"q",
"m",
"w",
"d",
"wef",
"weth",
"wew",
"wetu",
"wem",
"wesu",
"wesa",
"bwew",
"bwem",
],
}
},
"aggregation_method": {
"fred": {
"multiple_items_allowed": False,
"choices": ["avg", "sum", "eop"],
}
},
"transform": {
"fred": {
"multiple_items_allowed": False,
"choices": [
"chg",
"ch1",
"pch",
"pc1",
"pca",
"cch",
"cca",
"log",
],
}
},
},
)
)

View File

@@ -1,102 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
from typing import Literal, Optional
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_crypto(Container):
"""/crypto
/price
search
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@property
def price(self):
# pylint: disable=import-outside-toplevel
from . import crypto_price
return crypto_price.ROUTER_crypto_price(command_runner=self._command_runner)
@exception_handler
@validate
def search(
self,
query: Annotated[
Optional[str], OpenBBField(description="Search query.")
] = None,
provider: Annotated[
Optional[Literal["fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Search available cryptocurrency pairs within a provider.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp.
query : Optional[str]
Search query.
Returns
-------
OBBject
results : list[CryptoSearch]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CryptoSearch
------------
symbol : str
Symbol representing the entity requested in the data. (Crypto)
name : Optional[str]
Name of the crypto.
currency : Optional[str]
The currency the crypto trades for. (provider: fmp)
exchange : Optional[str]
The exchange code the crypto trades on. (provider: fmp)
exchange_name : Optional[str]
The short name of the exchange the crypto trades on. (provider: fmp)
Examples
--------
>>> from openbb import obb
>>> obb.crypto.search(provider='fmp')
>>> obb.crypto.search(query='BTCUSD', provider='fmp')
""" # noqa: E501
return self._run(
"/crypto/search",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"crypto.search",
("fmp",),
)
},
standard_params={
"query": query,
},
extra_params=kwargs,
)
)

View File

@@ -1,190 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_crypto_price(Container):
"""/crypto/price
historical
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def historical(
self,
symbol: Annotated[
Union[str, list[str]],
OpenBBField(
description="Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple comma separated items allowed for provider(s): fmp, polygon, tiingo, yfinance."
),
],
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fmp", "polygon", "tiingo", "yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, polygon, tiingo, yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Get historical price data for cryptocurrency pair(s) within a provider.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, polygon, tiingo, yfinance.
symbol : Union[str, list[str]]
Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple comma separated items allowed for provider(s): fmp, polygon, tiingo, yfinance.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
interval : str
Time interval of the data to return. (provider: fmp, polygon, tiingo, yfinance)
Choices for fmp: '1m', '5m', '15m', '30m', '1h', '4h', '1d'
Choices for yfinance: '1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1W', '1M', '1Q'
sort : Literal['asc', 'desc']
Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date. (provider: polygon)
limit : int
The number of data entries to return. (provider: polygon)
exchanges : Union[list[str], str, None]
To limit the query to a subset of exchanges e.g. ['POLONIEX', 'GDAX'] Multiple comma separated items allowed. (provider: tiingo)
Returns
-------
OBBject
results : list[CryptoHistorical]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CryptoHistorical
----------------
date : Union[date, datetime]
The date of the data.
open : float
The open price.
high : float
The high price.
low : float
The low price.
close : float
The close price.
volume : Optional[float]
The trading volume.
vwap : Optional[float]
Volume Weighted Average Price over the period.
adj_close : Optional[float]
The adjusted close price. (provider: fmp)
change : Optional[float]
Change in the price from the previous close. (provider: fmp)
change_percent : Optional[float]
Change in the price from the previous close, as a normalized percent. (provider: fmp)
transactions : Optional[Union[Annotated[int, Gt(gt=0)], int]]
Number of transactions for the symbol in the time period. (provider: polygon, tiingo)
volume_notional : Optional[float]
The last size done for the asset on the specific date in the quote currency. The volume of the asset on the specific date in the quote currency. (provider: tiingo)
Examples
--------
>>> from openbb import obb
>>> obb.crypto.price.historical(symbol='BTCUSD', provider='fmp')
>>> obb.crypto.price.historical(symbol='BTCUSD', start_date='2024-01-01', end_date='2024-01-31', provider='fmp')
>>> obb.crypto.price.historical(symbol='BTCUSD,ETHUSD', start_date='2024-01-01', end_date='2024-01-31', provider='polygon')
>>> # Get monthly historical prices from Yahoo Finance for Ethereum.
>>> obb.crypto.price.historical(symbol='ETH-USD', interval='1m', start_date='2024-01-01', end_date='2024-12-31', provider='yfinance')
""" # noqa: E501
return self._run(
"/crypto/price/historical",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"crypto.price.historical",
("fmp", "polygon", "tiingo", "yfinance"),
)
},
standard_params={
"symbol": symbol,
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"symbol": {
"fmp": {"multiple_items_allowed": True, "choices": None},
"polygon": {"multiple_items_allowed": True, "choices": None},
"tiingo": {"multiple_items_allowed": True, "choices": None},
"yfinance": {"multiple_items_allowed": True, "choices": None},
},
"interval": {
"fmp": {
"multiple_items_allowed": False,
"choices": ["1m", "5m", "15m", "30m", "1h", "4h", "1d"],
},
"tiingo": {
"multiple_items_allowed": False,
"choices": [
"1m",
"5m",
"15m",
"30m",
"90m",
"1h",
"2h",
"4h",
"1d",
"7d",
"30d",
],
},
"yfinance": {
"multiple_items_allowed": False,
"choices": [
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
],
},
},
"exchanges": {
"tiingo": {"multiple_items_allowed": True, "choices": None}
},
},
)
)

View File

@@ -1,296 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_currency(Container):
"""/currency
/price
search
snapshots
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@property
def price(self):
# pylint: disable=import-outside-toplevel
from . import currency_price
return currency_price.ROUTER_currency_price(command_runner=self._command_runner)
@exception_handler
@validate
def search(
self,
query: Annotated[
Optional[str],
OpenBBField(description="Query to search for currency pairs."),
] = None,
provider: Annotated[
Optional[Literal["fmp", "intrinio", "polygon"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, polygon."
),
] = None,
**kwargs
) -> OBBject:
"""Currency Search.
Search available currency pairs.
Currency pairs are the national currencies from two countries coupled for trading on
the foreign exchange (FX) marketplace.
Both currencies will have exchange rates on which the trade will have its position basis.
All trading within the forex market, whether selling, buying, or trading, will take place through currency pairs.
(ref: Investopedia)
Major currency pairs include pairs such as EUR/USD, USD/JPY, GBP/USD, etc.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, polygon.
query : Optional[str]
Query to search for currency pairs.
Returns
-------
OBBject
results : list[CurrencyPairs]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CurrencyPairs
-------------
symbol : str
Symbol representing the entity requested in the data.
name : Optional[str]
Name of the currency pair.
currency : Optional[str]
Base currency of the currency pair. (provider: fmp)
stock_exchange : Optional[str]
Stock exchange of the currency pair. (provider: fmp)
exchange_short_name : Optional[str]
Short name of the stock exchange of the currency pair. (provider: fmp)
base_currency : Optional[str]
ISO 4217 currency code of the base currency. (provider: intrinio)
quote_currency : Optional[str]
ISO 4217 currency code of the quote currency. (provider: intrinio)
currency_symbol : Optional[str]
The symbol of the quote currency. (provider: polygon)
base_currency_symbol : Optional[str]
The symbol of the base currency. (provider: polygon)
base_currency_name : Optional[str]
Name of the base currency. (provider: polygon)
market : Optional[str]
Name of the trading market. Always 'fx'. (provider: polygon)
locale : Optional[str]
Locale of the currency pair. (provider: polygon)
last_updated : Optional[date]
The date the reference data was last updated. (provider: polygon)
delisted : Optional[date]
The date the item was delisted. (provider: polygon)
Examples
--------
>>> from openbb import obb
>>> obb.currency.search(provider='fmp')
>>> # Search for 'EUR' currency pair using 'intrinio' as provider.
>>> obb.currency.search(provider='intrinio', query='EUR')
>>> # Search for terms using 'polygon' as provider.
>>> obb.currency.search(provider='polygon', query='EUR')
""" # noqa: E501
return self._run(
"/currency/search",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"currency.search",
("fmp", "intrinio", "polygon"),
)
},
standard_params={
"query": query,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def snapshots(
self,
base: Annotated[
Union[str, list[str]],
OpenBBField(
description="The base currency symbol. Multiple comma separated items allowed for provider(s): fmp, polygon."
),
] = "usd",
quote_type: Annotated[
Literal["direct", "indirect"],
OpenBBField(
description="Whether the quote is direct or indirect. Selecting 'direct' will return the exchange rate as the amount of domestic currency required to buy one unit of the foreign currency. Selecting 'indirect' (default) will return the exchange rate as the amount of foreign currency required to buy one unit of the domestic currency."
),
] = "indirect",
counter_currencies: Annotated[
Union[str, list[str], None],
OpenBBField(
description="An optional list of counter currency symbols to filter for. None returns all."
),
] = None,
provider: Annotated[
Optional[Literal["fmp", "polygon"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, polygon."
),
] = None,
**kwargs
) -> OBBject:
"""Snapshots of currency exchange rates from an indirect or direct perspective of a base currency.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, polygon.
base : Union[str, list[str]]
The base currency symbol. Multiple comma separated items allowed for provider(s): fmp, polygon.
quote_type : Literal['direct', 'indirect']
Whether the quote is direct or indirect. Selecting 'direct' will return the exchange rate as the amount of domestic currency required to buy one unit of the foreign currency. Selecting 'indirect' (default) will return the exchange rate as the amount of foreign currency required to buy one unit of the domestic currency.
counter_currencies : Union[str, list[str], None]
An optional list of counter currency symbols to filter for. None returns all.
Returns
-------
OBBject
results : list[CurrencySnapshots]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CurrencySnapshots
-----------------
base_currency : str
The base, or domestic, currency.
counter_currency : str
The counter, or foreign, currency.
last_rate : float
The exchange rate, relative to the base currency. Rates are expressed as the amount of foreign currency received from selling one unit of the base currency, or the quantity of foreign currency required to purchase one unit of the domestic currency. To inverse the perspective, set the 'quote_type' parameter as 'direct'.
open : Optional[float]
The open price.
high : Optional[float]
The high price.
low : Optional[float]
The low price.
close : Optional[float]
The close price.
volume : Optional[int]
The trading volume.
prev_close : Optional[float]
The previous close price.
change : Optional[float]
The change in the price from the previous close. (provider: fmp, polygon)
change_percent : Optional[float]
The change in the price from the previous close, as a normalized percent. (provider: fmp);
The percentage change in price from the previous day. (provider: polygon)
ma50 : Optional[float]
The 50-day moving average. (provider: fmp)
ma200 : Optional[float]
The 200-day moving average. (provider: fmp)
year_high : Optional[float]
The 52-week high. (provider: fmp)
year_low : Optional[float]
The 52-week low. (provider: fmp)
last_rate_timestamp : Optional[datetime]
The timestamp of the last rate. (provider: fmp)
vwap : Optional[float]
The volume-weighted average price. (provider: polygon)
prev_open : Optional[float]
The previous day's opening price. (provider: polygon)
prev_high : Optional[float]
The previous day's high price. (provider: polygon)
prev_low : Optional[float]
The previous day's low price. (provider: polygon)
prev_volume : Optional[float]
The previous day's volume. (provider: polygon)
prev_vwap : Optional[float]
The previous day's VWAP. (provider: polygon)
bid : Optional[float]
The current bid price. (provider: polygon)
ask : Optional[float]
The current ask price. (provider: polygon)
minute_open : Optional[float]
The open price from the most recent minute bar. (provider: polygon)
minute_high : Optional[float]
The high price from the most recent minute bar. (provider: polygon)
minute_low : Optional[float]
The low price from the most recent minute bar. (provider: polygon)
minute_close : Optional[float]
The close price from the most recent minute bar. (provider: polygon)
minute_volume : Optional[float]
The volume from the most recent minute bar. (provider: polygon)
minute_vwap : Optional[float]
The VWAP from the most recent minute bar. (provider: polygon)
minute_transactions : Optional[float]
The number of transactions in the most recent minute bar. (provider: polygon)
quote_timestamp : Optional[datetime]
The timestamp of the last quote. (provider: polygon)
minute_timestamp : Optional[datetime]
The timestamp for the start of the most recent minute bar. (provider: polygon)
last_updated : Optional[datetime]
The last time the data was updated. (provider: polygon)
Examples
--------
>>> from openbb import obb
>>> obb.currency.snapshots(provider='fmp')
>>> # Get exchange rates from USD and XAU to EUR, JPY, and GBP using 'fmp' as provider.
>>> obb.currency.snapshots(provider='fmp', base='USD,XAU', counter_currencies='EUR,JPY,GBP', quote_type='indirect')
""" # noqa: E501
return self._run(
"/currency/snapshots",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"currency.snapshots",
("fmp", "polygon"),
)
},
standard_params={
"base": base,
"quote_type": quote_type,
"counter_currencies": counter_currencies,
},
extra_params=kwargs,
info={
"base": {
"fmp": {"multiple_items_allowed": True, "choices": None},
"polygon": {"multiple_items_allowed": True, "choices": None},
}
},
)
)

View File

@@ -1,190 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_currency_price(Container):
"""/currency/price
historical
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def historical(
self,
symbol: Annotated[
Union[str, list[str]],
OpenBBField(
description="Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple comma separated items allowed for provider(s): fmp, polygon, tiingo, yfinance."
),
],
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fmp", "polygon", "tiingo", "yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, polygon, tiingo, yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Currency Historical Price. Currency historical data.
Currency historical prices refer to the past exchange rates of one currency against
another over a specific period.
This data provides insight into the fluctuations and trends in the foreign exchange market,
helping analysts, traders, and economists understand currency performance,
evaluate economic health, and make predictions about future movements.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, polygon, tiingo, yfinance.
symbol : Union[str, list[str]]
Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple comma separated items allowed for provider(s): fmp, polygon, tiingo, yfinance.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
interval : str
Time interval of the data to return. (provider: fmp, polygon, tiingo, yfinance)
Choices for fmp: '1m', '5m', '15m', '30m', '1h', '4h', '1d'
Choices for yfinance: '1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1W', '1M', '1Q'
sort : Literal['asc', 'desc']
Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date. (provider: polygon)
limit : int
The number of data entries to return. (provider: polygon)
Returns
-------
OBBject
results : list[CurrencyHistorical]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CurrencyHistorical
------------------
date : Union[date, datetime]
The date of the data.
open : float
The open price.
high : float
The high price.
low : float
The low price.
close : float
The close price.
volume : Optional[float]
The trading volume.
vwap : Optional[Annotated[float, Gt(gt=0)]]
Volume Weighted Average Price over the period.
adj_close : Optional[float]
The adjusted close price. (provider: fmp)
change : Optional[float]
Change in the price from the previous close. (provider: fmp)
change_percent : Optional[float]
Change in the price from the previous close, as a normalized percent. (provider: fmp)
transactions : Optional[Annotated[int, Gt(gt=0)]]
Number of transactions for the symbol in the time period. (provider: polygon)
Examples
--------
>>> from openbb import obb
>>> obb.currency.price.historical(symbol='EURUSD', provider='fmp')
>>> # Filter historical data with specific start and end date.
>>> obb.currency.price.historical(symbol='EURUSD', start_date='2023-01-01', end_date='2023-12-31', provider='fmp')
>>> # Get data with different granularity.
>>> obb.currency.price.historical(symbol='EURUSD', provider='polygon', interval='15m')
""" # noqa: E501
return self._run(
"/currency/price/historical",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"currency.price.historical",
("fmp", "polygon", "tiingo", "yfinance"),
)
},
standard_params={
"symbol": symbol,
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"symbol": {
"fmp": {"multiple_items_allowed": True, "choices": None},
"polygon": {"multiple_items_allowed": True, "choices": None},
"tiingo": {"multiple_items_allowed": True, "choices": None},
"yfinance": {"multiple_items_allowed": True, "choices": None},
},
"interval": {
"fmp": {
"multiple_items_allowed": False,
"choices": ["1m", "5m", "15m", "30m", "1h", "4h", "1d"],
},
"tiingo": {
"multiple_items_allowed": False,
"choices": [
"1m",
"5m",
"15m",
"30m",
"90m",
"1h",
"2h",
"4h",
"1d",
"5d",
"21d",
],
},
"yfinance": {
"multiple_items_allowed": False,
"choices": [
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
],
},
},
},
)
)

View File

@@ -1,32 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
from openbb_core.app.static.container import Container
class ROUTER_derivatives(Container):
"""/derivatives
/futures
/options
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@property
def futures(self):
# pylint: disable=import-outside-toplevel
from . import derivatives_futures
return derivatives_futures.ROUTER_derivatives_futures(
command_runner=self._command_runner
)
@property
def options(self):
# pylint: disable=import-outside-toplevel
from . import derivatives_options
return derivatives_options.ROUTER_derivatives_options(
command_runner=self._command_runner
)

View File

@@ -1,214 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_derivatives_futures(Container):
"""/derivatives/futures
curve
historical
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def curve(
self,
symbol: Annotated[str, OpenBBField(description="Symbol to get data for.")],
date: Annotated[
Union[str, datetime.date, None, list[Union[str, datetime.date, None]]],
OpenBBField(
description="A specific date to get data for. Multiple comma separated items allowed for provider(s): yfinance."
),
] = None,
provider: Annotated[
Optional[Literal["yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Futures Term Structure, current or historical.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: yfinance.
symbol : str
Symbol to get data for.
date : Union[str, date, None, list[Union[str, date, None]]]
A specific date to get data for. Multiple comma separated items allowed for provider(s): yfinance.
Returns
-------
OBBject
results : list[FuturesCurve]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
FuturesCurve
------------
date : Optional[date]
The date of the data.
expiration : str
Futures expiration month.
price : Optional[float]
The price of the futures contract.
Examples
--------
>>> from openbb import obb
>>> obb.derivatives.futures.curve(symbol='NG', provider='yfinance')
""" # noqa: E501
return self._run(
"/derivatives/futures/curve",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"derivatives.futures.curve",
("yfinance",),
)
},
standard_params={
"symbol": symbol,
"date": date,
},
extra_params=kwargs,
info={
"date": {
"yfinance": {"multiple_items_allowed": True, "choices": None}
}
},
)
)
@exception_handler
@validate
def historical(
self,
symbol: Annotated[
Union[str, list[str]],
OpenBBField(
description="Symbol to get data for. Multiple comma separated items allowed for provider(s): yfinance."
),
],
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
expiration: Annotated[
Optional[str],
OpenBBField(description="Future expiry date with format YYYY-MM"),
] = None,
provider: Annotated[
Optional[Literal["yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Historical futures prices.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: yfinance.
symbol : Union[str, list[str]]
Symbol to get data for. Multiple comma separated items allowed for provider(s): yfinance.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
expiration : Optional[str]
Future expiry date with format YYYY-MM
interval : Literal['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1W', '1M', '1Q']
Time interval of the data to return. (provider: yfinance)
Returns
-------
OBBject
results : list[FuturesHistorical]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
FuturesHistorical
-----------------
date : datetime
The date of the data.
open : float
The open price.
high : float
The high price.
low : float
The low price.
close : float
The close price.
volume : float
The trading volume.
Examples
--------
>>> from openbb import obb
>>> obb.derivatives.futures.historical(symbol='ES', provider='yfinance')
>>> # Enter multiple symbols.
>>> obb.derivatives.futures.historical(symbol='ES,NQ', provider='yfinance')
>>> # Enter expiration dates as "YYYY-MM".
>>> obb.derivatives.futures.historical(symbol='ES', provider='yfinance', expiration='2025-12')
""" # noqa: E501
return self._run(
"/derivatives/futures/historical",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"derivatives.futures.historical",
("yfinance",),
)
},
standard_params={
"symbol": symbol,
"start_date": start_date,
"end_date": end_date,
"expiration": expiration,
},
extra_params=kwargs,
info={
"symbol": {
"yfinance": {"multiple_items_allowed": True, "choices": None}
}
},
)
)

View File

@@ -1,606 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
from typing import Any, Literal, Optional, Union
from numpy import ndarray
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from openbb_core.provider.abstract.data import Data
from pandas import DataFrame, Series
from typing_extensions import Annotated
class ROUTER_derivatives_options(Container):
"""/derivatives/options
chains
snapshots
surface
unusual
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def chains(
self,
symbol: Annotated[str, OpenBBField(description="Symbol to get data for.")],
provider: Annotated[
Optional[Literal["intrinio", "yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: intrinio, yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Get the complete options chain for a ticker.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: intrinio, yfinance.
symbol : str
Symbol to get data for.
delay : Literal['eod', 'realtime', 'delayed']
Whether to return delayed, realtime, or eod data. (provider: intrinio)
date : Optional[date]
The end-of-day date for options chains data. (provider: intrinio)
option_type : Optional[Literal['call', 'put']]
The option type, call or put, 'None' is both (default). (provider: intrinio)
moneyness : Literal['otm', 'itm', 'all']
Return only contracts that are in or out of the money, default is 'all'. Parameter is ignored when a date is supplied. (provider: intrinio)
strike_gt : Optional[int]
Return options with a strike price greater than the given value. Parameter is ignored when a date is supplied. (provider: intrinio)
strike_lt : Optional[int]
Return options with a strike price less than the given value. Parameter is ignored when a date is supplied. (provider: intrinio)
volume_gt : Optional[int]
Return options with a volume greater than the given value. Parameter is ignored when a date is supplied. (provider: intrinio)
volume_lt : Optional[int]
Return options with a volume less than the given value. Parameter is ignored when a date is supplied. (provider: intrinio)
oi_gt : Optional[int]
Return options with an open interest greater than the given value. Parameter is ignored when a date is supplied. (provider: intrinio)
oi_lt : Optional[int]
Return options with an open interest less than the given value. Parameter is ignored when a date is supplied. (provider: intrinio)
model : Literal['black_scholes', 'bjerk']
The pricing model to use for options chains data, default is 'black_scholes'. Parameter is ignored when a date is supplied. (provider: intrinio)
show_extended_price : bool
Whether to include OHLC type fields, default is True. Parameter is ignored when a date is supplied. (provider: intrinio)
include_related_symbols : bool
Include related symbols that end in a 1 or 2 because of a corporate action, default is False. (provider: intrinio)
Returns
-------
OBBject
results : OptionsChains
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
OptionsChains
-------------
underlying_symbol : list[Optional[str]]
Underlying symbol for the option.
underlying_price : list[Optional[float]]
Price of the underlying stock.
contract_symbol : list[str]
Contract symbol for the option.
eod_date : list[Optional[date]]
Date for which the options chains are returned.
expiration : list[date]
Expiration date of the contract.
dte : list[Optional[int]]
Days to expiration of the contract.
strike : list[float]
Strike price of the contract.
option_type : list[str]
Call or Put.
contract_size : list[Union[int, float]]
Number of underlying units per contract.
open_interest : list[Union[int, float]]
Open interest on the contract.
volume : list[Union[int, float]]
The trading volume.
theoretical_price : list[Optional[float]]
Theoretical value of the option.
last_trade_price : list[Optional[float]]
Last trade price of the option.
last_trade_size : list[Union[int, float]]
Last trade size of the option.
last_trade_time : list[Optional[datetime]]
The timestamp of the last trade.
tick : list[Optional[str]]
Whether the last tick was up or down in price.
bid : list[Optional[float]]
Current bid price for the option.
bid_size : list[Union[int, float]]
Bid size for the option.
bid_time : list[Optional[datetime]]
The timestamp of the bid price.
bid_exchange : list[Optional[str]]
The exchange of the bid price.
ask : list[Optional[float]]
Current ask price for the option.
ask_size : list[Union[int, float]]
Ask size for the option.
ask_time : list[Optional[datetime]]
The timestamp of the ask price.
ask_exchange : list[Optional[str]]
The exchange of the ask price.
mark : list[Optional[float]]
The mid-price between the latest bid and ask.
open : list[Optional[float]]
The open price.
open_bid : list[Optional[float]]
The opening bid price for the option that day.
open_ask : list[Optional[float]]
The opening ask price for the option that day.
high : list[Optional[float]]
The high price.
bid_high : list[Optional[float]]
The highest bid price for the option that day.
ask_high : list[Optional[float]]
The highest ask price for the option that day.
low : list[Optional[float]]
The low price.
bid_low : list[Optional[float]]
The lowest bid price for the option that day.
ask_low : list[Optional[float]]
The lowest ask price for the option that day.
close : list[Optional[float]]
The close price.
close_size : list[Union[int, float]]
The closing trade size for the option that day.
close_time : list[Optional[datetime]]
The time of the closing price for the option that day.
close_bid : list[Optional[float]]
The closing bid price for the option that day.
close_bid_size : list[Union[int, float]]
The closing bid size for the option that day.
close_bid_time : list[Optional[datetime]]
The time of the bid closing price for the option that day.
close_ask : list[Optional[float]]
The closing ask price for the option that day.
close_ask_size : list[Union[int, float]]
The closing ask size for the option that day.
close_ask_time : list[Optional[datetime]]
The time of the ask closing price for the option that day.
prev_close : list[Optional[float]]
The previous close price.
change : list[Optional[float]]
The change in the price of the option.
change_percent : list[Optional[float]]
Change, in normalized percentage points, of the option.
implied_volatility : list[Optional[float]]
Implied volatility of the option.
delta : list[Optional[float]]
Delta of the option.
gamma : list[Optional[float]]
Gamma of the option.
theta : list[Optional[float]]
Theta of the option.
vega : list[Optional[float]]
Vega of the option.
rho : list[Optional[float]]
Rho of the option.
in_the_money : list[Optional[bool]]
Whether the option is in the money. (provider: yfinance)
currency : list[Optional[str]]
Currency of the option. (provider: yfinance)
Examples
--------
>>> from openbb import obb
>>> obb.derivatives.options.chains(symbol='AAPL', provider='intrinio')
>>> # Use the "date" parameter to get the end-of-day-data for a specific date, where supported.
>>> obb.derivatives.options.chains(symbol='AAPL', date='2023-01-25', provider='intrinio')
""" # noqa: E501
return self._run(
"/derivatives/options/chains",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"derivatives.options.chains",
("intrinio", "yfinance"),
)
},
standard_params={
"symbol": symbol,
},
extra_params=kwargs,
info={
"delay": {
"intrinio": {
"multiple_items_allowed": False,
"choices": ["eod", "realtime", "delayed"],
}
},
"option_type": {
"intrinio": {
"multiple_items_allowed": False,
"choices": ["call", "put"],
}
},
"moneyness": {
"intrinio": {
"multiple_items_allowed": False,
"choices": ["otm", "itm", "all"],
}
},
"model": {
"intrinio": {
"multiple_items_allowed": False,
"choices": ["black_scholes", "bjerk"],
}
},
},
),
)
@exception_handler
@validate
def snapshots(
self,
provider: Annotated[
Optional[Literal["intrinio"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: intrinio."
),
] = None,
**kwargs
) -> OBBject:
"""Get a snapshot of the options market universe.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: intrinio.
date : Union[date, datetime, str, None]
The date of the data. Can be a datetime or an ISO datetime string. Data appears to go back to around 2022-06-01 Example: '2024-03-08T12:15:00+0400' (provider: intrinio)
only_traded : bool
Only include options that have been traded during the session, default is True. Setting to false will dramatically increase the size of the response - use with caution. (provider: intrinio)
Returns
-------
OBBject
results : list[OptionsSnapshots]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
OptionsSnapshots
----------------
underlying_symbol : list[str]
Ticker symbol of the underlying asset.
contract_symbol : list[str]
Symbol of the options contract.
expiration : list[date]
Expiration date of the options contract.
dte : list[Optional[int]]
Number of days to expiration of the options contract.
strike : list[float]
Strike price of the options contract.
option_type : list[str]
The type of option.
volume : list[Optional[int]]
The trading volume.
open_interest : list[Optional[int]]
Open interest at the time.
last_price : list[Optional[float]]
Last trade price at the time.
last_size : list[Optional[int]]
Lot size of the last trade.
last_timestamp : list[Optional[datetime]]
Timestamp of the last price.
open : list[Optional[float]]
The open price.
high : list[Optional[float]]
The high price.
low : list[Optional[float]]
The low price.
close : list[Optional[float]]
The close price.
bid : list[Optional[float]]
The last bid price at the time. (provider: intrinio)
bid_size : list[Optional[int]]
The size of the last bid price. (provider: intrinio)
bid_timestamp : list[Optional[datetime]]
The timestamp of the last bid price. (provider: intrinio)
ask : list[Optional[float]]
The last ask price at the time. (provider: intrinio)
ask_size : list[Optional[int]]
The size of the last ask price. (provider: intrinio)
ask_timestamp : list[Optional[datetime]]
The timestamp of the last ask price. (provider: intrinio)
total_bid_volume : list[Optional[int]]
Total volume of bids. (provider: intrinio)
bid_high : list[Optional[float]]
The highest bid price. (provider: intrinio)
bid_low : list[Optional[float]]
The lowest bid price. (provider: intrinio)
total_ask_volume : list[Optional[int]]
Total volume of asks. (provider: intrinio)
ask_high : list[Optional[float]]
The highest ask price. (provider: intrinio)
ask_low : list[Optional[float]]
The lowest ask price. (provider: intrinio)
Examples
--------
>>> from openbb import obb
>>> obb.derivatives.options.snapshots(provider='intrinio')
""" # noqa: E501
return self._run(
"/derivatives/options/snapshots",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"derivatives.options.snapshots",
("intrinio",),
)
},
standard_params={},
extra_params=kwargs,
),
)
@exception_handler
@validate(config=dict(arbitrary_types_allowed=True))
def surface(
self,
data: Annotated[
Union[
list,
dict,
DataFrame,
list["DataFrame"],
Series,
list["Series"],
ndarray,
Data,
list[Data],
Data,
],
OpenBBField(description=""),
],
target: Annotated[str, OpenBBField(description="")] = "implied_volatility",
underlying_price: Annotated[
Optional[float], OpenBBField(description="")
] = None,
option_type: Annotated[
Optional[Literal["otm", "itm", "calls", "puts"]],
OpenBBField(description=""),
] = "otm",
dte_min: Annotated[Optional[int], OpenBBField(description="")] = None,
dte_max: Annotated[Optional[int], OpenBBField(description="")] = None,
moneyness: Annotated[Optional[float], OpenBBField(description="")] = None,
strike_min: Annotated[Optional[float], OpenBBField(description="")] = None,
strike_max: Annotated[Optional[float], OpenBBField(description="")] = None,
oi: Annotated[bool, OpenBBField(description="")] = False,
volume: Annotated[bool, OpenBBField(description="")] = False,
theme: Annotated[
Literal["dark", "light"], OpenBBField(description="")
] = "dark",
chart_params: Annotated[Optional[dict], OpenBBField(description="")] = None,
**kwargs: Any
) -> OBBject:
"""Filter and process the options chains data for volatility.
Data posted can be an instance of OptionsChainsData,
a pandas DataFrame, or a list of dictionaries.
Data should contain the fields:
- `expiration`: The expiration date of the option.
- `strike`: The strike price of the option.
- `option_type`: The type of the option (call or put).
- `implied_volatility`: The implied volatility of the option. Or 'target' field.
- `open_interest`: The open interest of the option.
- `volume`: The trading volume of the option.
- `dte` : Optional, days to expiration (DTE) of the option.
- `underlying_price`: Optional, the price of the underlying asset.
Results from the `/derivatives/options/chains` endpoint are the preferred input.
If `underlying_price` is not supplied in the data as a field, it must be provided as a parameter.
Parameters
-----------
data: Union[list[Data], Data]
target: str
The field to use as the z-axis. Default is "implied_volatility".
underlying_price: Optional[float]
The price of the underlying asset.
option_type: Optional[str] = "otm"
The type of df to display. Default is "otm".
Choices are: ["otm", "itm", "puts", "calls"]
dte_min: Optional[int] = None
Minimum days to expiration (DTE) to filter options.
dte_max: Optional[int] = None
Maximum days to expiration (DTE) to filter options.
moneyness: Optional[float] = None
Specify a % moneyness to target for display,
entered as a value between 0 and 100.
strike_min: Optional[float] = None
Minimum strike price to filter options.
strike_max: Optional[float] = None
Maximum strike price to filter options.
oi: bool = False
Filter for only options that have open interest. Default is False.
volume: bool = False
Filter for only options that have trading volume. Default is False.
chart: bool = False
Whether to return a chart or not. Default is False.
Only valid if `openbb-charting` is installed.
theme: Literal["dark", "light"] = "dark"
The theme to use for the chart. Default is "dark".
Only valid if `openbb-charting` is installed.
chart_params: Optional[dict] = None
Additional parameters to pass to the charting library.
Only valid if `openbb-charting` is installed.
Valid keys are:
- `title`: The title of the chart.
- `xtitle`: Title for the x-axis.
- `ytitle`: Title for the y-axis.
- `ztitle`: Title for the z-axis.
- `colorscale`: The colorscale to use for the chart.
- `layout_kwargs`: Additional dictionary to be passed to `fig.update_layout` before output.
Returns
-------
OBBject[list]
An OBBject containing the processed options data.
Results are a list of dictionaries.
Examples
--------
>>> from openbb import obb
>>> # Filter and process options chains data for volatility.
>>> data = obb.derivatives.options.chains('AAPL', provider='cboe')
>>> surface = obb.derivatives.options.surface(data=data.results, moneyness=20, dte_min=10, dte_max=60, chart=True)
>>> surface.show()
""" # noqa: E501
return self._run(
"/derivatives/options/surface",
**filter_inputs(
data=data,
target=target,
underlying_price=underlying_price,
option_type=option_type,
dte_min=dte_min,
dte_max=dte_max,
moneyness=moneyness,
strike_min=strike_min,
strike_max=strike_max,
oi=oi,
volume=volume,
theme=theme,
chart_params=chart_params,
data_processing=True,
**kwargs,
),
)
@exception_handler
@validate
def unusual(
self,
symbol: Annotated[
Optional[str],
OpenBBField(description="Symbol to get data for. (the underlying symbol)"),
] = None,
provider: Annotated[
Optional[Literal["intrinio"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: intrinio."
),
] = None,
**kwargs
) -> OBBject:
"""Get the complete options chain for a ticker.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: intrinio.
symbol : Optional[str]
Symbol to get data for. (the underlying symbol)
start_date : Optional[date]
Start date of the data, in YYYY-MM-DD format. If no symbol is supplied, requests are only allowed for a single date. Use the start_date for the target date. Intrinio appears to have data beginning Feb/2022, but is unclear when it actually began. (provider: intrinio)
end_date : Optional[date]
End date of the data, in YYYY-MM-DD format. If a symbol is not supplied, do not include an end date. (provider: intrinio)
trade_type : Optional[Literal['block', 'sweep', 'large']]
The type of unusual activity to query for. (provider: intrinio)
sentiment : Optional[Literal['bullish', 'bearish', 'neutral']]
The sentiment type to query for. (provider: intrinio)
min_value : Union[int, float, None]
The inclusive minimum total value for the unusual activity. (provider: intrinio)
max_value : Union[int, float, None]
The inclusive maximum total value for the unusual activity. (provider: intrinio)
limit : int
The number of data entries to return. A typical day for all symbols will yield 50-80K records. The API will paginate at 1000 records. The high default limit (100K) is to be able to reliably capture the most days. The high absolute limit (1.25M) is to allow for outlier days. Queries at the absolute limit will take a long time, and might be unreliable. Apply filters to improve performance. (provider: intrinio)
source : Literal['delayed', 'realtime']
The source of the data. Either realtime or delayed. (provider: intrinio)
Returns
-------
OBBject
results : list[OptionsUnusual]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
OptionsUnusual
--------------
underlying_symbol : Optional[str]
Symbol representing the entity requested in the data. (the underlying symbol)
contract_symbol : str
Contract symbol for the option.
trade_timestamp : Optional[datetime]
The datetime of order placement. (provider: intrinio)
trade_type : Optional[Literal['block', 'sweep', 'large']]
The type of unusual trade. (provider: intrinio)
sentiment : Optional[Literal['bullish', 'bearish', 'neutral']]
Bullish, Bearish, or Neutral Sentiment is estimated based on whether the trade was executed at the bid, ask, or mark price. (provider: intrinio)
bid_at_execution : Optional[float]
Bid price at execution. (provider: intrinio)
ask_at_execution : Optional[float]
Ask price at execution. (provider: intrinio)
average_price : Optional[float]
The average premium paid per option contract. (provider: intrinio)
underlying_price_at_execution : Optional[float]
Price of the underlying security at execution of trade. (provider: intrinio)
total_size : Optional[int]
The total number of contracts involved in a single transaction. (provider: intrinio)
total_value : Optional[Union[int, float]]
The aggregated value of all option contract premiums included in the trade. (provider: intrinio)
Examples
--------
>>> from openbb import obb
>>> obb.derivatives.options.unusual(symbol='TSLA', provider='intrinio')
>>> # Use the 'symbol' parameter to get the most recent activity for a specific symbol.
>>> obb.derivatives.options.unusual(symbol='TSLA', provider='intrinio')
""" # noqa: E501
return self._run(
"/derivatives/options/unusual",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"derivatives.options.unusual",
("intrinio",),
)
},
standard_params={
"symbol": symbol,
},
extra_params=kwargs,
),
)

File diff suppressed because it is too large Load Diff

View File

@@ -1,490 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_economy_gdp(Container):
"""/economy/gdp
forecast
nominal
real
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def forecast(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["oecd"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd."
),
] = None,
**kwargs
) -> OBBject:
"""Get Forecasted GDP Data.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
country : str
Country, or countries, to get forward GDP projections for. Default is all. Multiple comma separated items allowed. (provider: oecd)
frequency : Literal['annual', 'quarter']
Frequency of the data, default is annual. (provider: oecd)
units : Literal['current_prices', 'volume', 'capita', 'growth', 'deflator']
Units of the data, default is volume (chain linked volume, 2015).
'current_prices', 'volume', and 'capita' are expressed in USD;
'deflator' as an index. (provider: oecd)
Returns
-------
OBBject
results : list[GdpForecast]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
GdpForecast
-----------
date : date
The date of the data.
country : str
None
value : Union[int, float]
Forecasted GDP value for the country and date.
Examples
--------
>>> from openbb import obb
>>> obb.economy.gdp.forecast(provider='oecd')
>>> obb.economy.gdp.forecast(country='united_states,germany,france', frequency='annual', units='capita', provider='oecd')
""" # noqa: E501
return self._run(
"/economy/gdp/forecast",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.gdp.forecast",
("oecd",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"country": {
"oecd": {
"multiple_items_allowed": True,
"choices": [
"argentina",
"asia",
"australia",
"austria",
"belgium",
"brazil",
"bulgaria",
"canada",
"chile",
"china",
"colombia",
"costa_rica",
"croatia",
"czech_republic",
"denmark",
"estonia",
"finland",
"france",
"germany",
"greece",
"hungary",
"iceland",
"india",
"indonesia",
"ireland",
"israel",
"italy",
"japan",
"korea",
"latvia",
"lithuania",
"luxembourg",
"mexico",
"netherlands",
"new_zealand",
"norway",
"peru",
"poland",
"portugal",
"romania",
"russia",
"slovak_republic",
"slovenia",
"south_africa",
"spain",
"sweden",
"switzerland",
"turkey",
"united_kingdom",
"united_states",
"other_major_oil_producers",
"rest_of_the_world",
"world",
"all",
],
}
}
},
)
)
@exception_handler
@validate
def nominal(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["econdb", "oecd"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb, oecd."
),
] = None,
**kwargs
) -> OBBject:
"""Get Nominal GDP Data.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb, oecd.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
country : str
The country to get data.Use 'all' to get data for all available countries. Multiple comma separated items allowed. (provider: econdb, oecd)
use_cache : bool
If True, the request will be cached for one day. Using cache is recommended to avoid needlessly requesting the same data. (provider: econdb)
frequency : Literal['quarter', 'annual']
Frequency of the data. (provider: oecd)
units : Literal['level', 'index', 'capita']
The unit of measurement for the data.Both 'level' and 'capita' (per) are measured in USD. (provider: oecd)
price_base : Literal['current_prices', 'volume']
Price base for the data, volume is chain linked volume. (provider: oecd)
Returns
-------
OBBject
results : list[GdpNominal]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
GdpNominal
----------
date : date
The date of the data.
country : Optional[str]
The country represented by the GDP value.
value : Union[int, float]
GDP value for the country and date.
nominal_growth_qoq : Optional[float]
Nominal GDP growth rate quarter over quarter. (provider: econdb)
nominal_growth_yoy : Optional[float]
Nominal GDP growth rate year over year. (provider: econdb)
Examples
--------
>>> from openbb import obb
>>> obb.economy.gdp.nominal(provider='oecd')
>>> obb.economy.gdp.nominal(units='capita', country='all', frequency='annual', provider='oecd')
""" # noqa: E501
return self._run(
"/economy/gdp/nominal",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.gdp.nominal",
("econdb", "oecd"),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"country": {
"econdb": {"multiple_items_allowed": True, "choices": None},
"oecd": {
"multiple_items_allowed": True,
"choices": [
"oecd",
"oecd_26",
"oecd_europe",
"g7",
"g20",
"euro_area",
"european_union_27",
"european_union_15",
"nafta",
"argentina",
"australia",
"austria",
"belgium",
"bulgaria",
"brazil",
"canada",
"chile",
"colombia",
"costa_rica",
"croatia",
"czech_republic",
"denmark",
"estonia",
"finland",
"france",
"germany",
"greece",
"hungary",
"iceland",
"india",
"indonesia",
"ireland",
"israel",
"italy",
"japan",
"korea",
"latvia",
"lithuania",
"luxembourg",
"mexico",
"netherlands",
"new_zealand",
"norway",
"poland",
"portugal",
"romania",
"russia",
"saudi_arabia",
"slovak_republic",
"slovenia",
"south_africa",
"spain",
"sweden",
"switzerland",
"turkey",
"united_kingdom",
"united_states",
"all",
],
},
}
},
)
)
@exception_handler
@validate
def real(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["econdb", "oecd"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb, oecd."
),
] = None,
**kwargs
) -> OBBject:
"""Get Real GDP Data.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb, oecd.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
country : str
The country to get data.Use 'all' to get data for all available countries. Multiple comma separated items allowed. (provider: econdb, oecd)
use_cache : bool
If True, the request will be cached for one day. Using cache is recommended to avoid needlessly requesting the same data. (provider: econdb)
frequency : Literal['quarter', 'annual']
Frequency of the data. (provider: oecd)
Returns
-------
OBBject
results : list[GdpReal]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
GdpReal
-------
date : date
The date of the data.
country : Optional[str]
The country represented by the GDP value.
value : Union[int, float]
GDP value for the country and date.
real_growth_qoq : Optional[float]
Real GDP growth rate quarter over quarter. (provider: econdb)
real_growth_yoy : Optional[float]
Real GDP growth rate year over year. (provider: econdb)
Examples
--------
>>> from openbb import obb
>>> obb.economy.gdp.real(provider='oecd')
>>> obb.economy.gdp.real(country='united_states,germany,japan', provider='econdb')
""" # noqa: E501
return self._run(
"/economy/gdp/real",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.gdp.real",
("econdb", "oecd"),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"country": {
"econdb": {"multiple_items_allowed": True, "choices": None},
"oecd": {
"multiple_items_allowed": True,
"choices": [
"oecd",
"oecd_26",
"oecd_europe",
"g7",
"g20",
"euro_area",
"european_union_27",
"european_union_15",
"nafta",
"argentina",
"australia",
"austria",
"belgium",
"bulgaria",
"brazil",
"canada",
"chile",
"colombia",
"costa_rica",
"croatia",
"czech_republic",
"denmark",
"estonia",
"finland",
"france",
"germany",
"greece",
"hungary",
"iceland",
"india",
"indonesia",
"ireland",
"israel",
"italy",
"japan",
"korea",
"latvia",
"lithuania",
"luxembourg",
"mexico",
"netherlands",
"new_zealand",
"norway",
"poland",
"portugal",
"romania",
"russia",
"saudi_arabia",
"slovak_republic",
"slovenia",
"south_africa",
"spain",
"sweden",
"switzerland",
"turkey",
"united_kingdom",
"united_states",
"all",
],
},
}
},
)
)

File diff suppressed because it is too large Load Diff

View File

@@ -1,974 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_economy_survey(Container):
"""/economy/survey
bls_search
bls_series
economic_conditions_chicago
manufacturing_outlook_ny
manufacturing_outlook_texas
nonfarm_payrolls
sloos
university_of_michigan
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def bls_search(
self,
query: Annotated[
str,
OpenBBField(
description="The search word(s). Use semi-colon to separate multiple queries as an & operator."
),
] = "",
provider: Annotated[
Optional[Literal["bls"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: bls."
),
] = None,
**kwargs
) -> OBBject:
"""Search BLS surveys by category and keyword or phrase to identify BLS series IDs.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: bls.
query : str
The search word(s). Use semi-colon to separate multiple queries as an & operator.
category : Optional[Literal['cpi', 'pce', 'ppi', 'ip', 'jolts', 'nfp', 'cps', 'lfs', 'wages', 'ec', 'sla', 'bed', 'tu']]
The category of BLS survey to search within.
An empty search query will return all series within the category. Options are:
cpi - Consumer Price Index
pce - Personal Consumption Expenditure
ppi - Producer Price Index
ip - Industry Productivity
jolts - Job Openings and Labor Turnover Survey
nfp - Nonfarm Payrolls
cps - Current Population Survey
lfs - Labor Force Statistics
wages - Wages
ec - Employer Costs
sla - State and Local Area Employment
bed - Business Employment Dynamics
tu - Time Use
(provider: bls)
Choices for bls: 'cpi', 'pce', 'ppi', 'ip', 'jolts', 'nfp', 'cps', 'lfs', 'wages', 'ec', 'sla', 'bed', 'tu'
include_extras : bool
Include additional information in the search results. Extra fields returned are metadata and vary by survey. Fields are undefined strings that typically have names ending with '_code'. (provider: bls)
include_code_map : bool
When True, includes the complete code map for eaçh survey in the category, returned separately as a nested JSON to the `extras['results_metadata']` property of the response. Example content is the NAICS industry map for PPI surveys. Each code is a value within the 'symbol' of the time series. (provider: bls)
Returns
-------
OBBject
results : list[BlsSearch]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
BlsSearch
---------
symbol : str
Symbol representing the entity requested in the data.
title : Optional[str]
The title of the series.
survey_name : Optional[str]
The name of the survey.
Examples
--------
>>> from openbb import obb
>>> obb.economy.survey.bls_search(provider='bls', category='cpi')
>>> # Use semi-colon to separate multiple queries as an & operator.
>>> obb.economy.survey.bls_search(provider='bls', category='cpi', query='seattle;gasoline')
""" # noqa: E501
return self._run(
"/economy/survey/bls_search",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.survey.bls_search",
("bls",),
)
},
standard_params={
"query": query,
},
extra_params=kwargs,
info={
"category": {
"bls": {
"multiple_items_allowed": False,
"choices": [
"cpi",
"pce",
"ppi",
"ip",
"jolts",
"nfp",
"cps",
"lfs",
"wages",
"ec",
"sla",
"bed",
"tu",
],
}
}
},
)
)
@exception_handler
@validate
def bls_series(
self,
symbol: Annotated[
Union[str, list[str]],
OpenBBField(
description="Symbol to get data for. Multiple comma separated items allowed for provider(s): bls."
),
],
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["bls"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: bls."
),
] = None,
**kwargs
) -> OBBject:
"""Get time series data for one, or more, BLS series IDs.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: bls.
symbol : Union[str, list[str]]
Symbol to get data for. Multiple comma separated items allowed for provider(s): bls.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
calculations : bool
Include calculations in the response, if available. Default is True. (provider: bls)
annual_average : bool
Include annual averages in the response, if available. Default is False. (provider: bls)
aspects : bool
Include all aspects associated with a data point for a given BLS series ID, if available. Returned with the series metadata, under `extras` of the response object. Default is False. (provider: bls)
Returns
-------
OBBject
results : list[BlsSeries]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
BlsSeries
---------
date : date
The date of the data.
symbol : str
Symbol representing the entity requested in the data.
title : Optional[str]
Title of the series.
value : Optional[float]
Observation value for the symbol and date.
change_1_m : Optional[float]
One month change in value. (provider: bls)
change_3_m : Optional[float]
Three month change in value. (provider: bls)
change_6_m : Optional[float]
Six month change in value. (provider: bls)
change_12_m : Optional[float]
One year change in value. (provider: bls)
change_percent_1_m : Optional[float]
One month change in percent. (provider: bls)
change_percent_3_m : Optional[float]
Three month change in percent. (provider: bls)
change_percent_6_m : Optional[float]
Six month change in percent. (provider: bls)
change_percent_12_m : Optional[float]
One year change in percent. (provider: bls)
latest : Optional[bool]
Latest value indicator. (provider: bls)
footnotes : Optional[str]
Footnotes accompanying the value. (provider: bls)
Examples
--------
>>> from openbb import obb
>>> obb.economy.survey.bls_series(provider='bls', symbol='CES0000000001')
""" # noqa: E501
return self._run(
"/economy/survey/bls_series",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.survey.bls_series",
("bls",),
)
},
standard_params={
"symbol": symbol,
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"symbol": {"bls": {"multiple_items_allowed": True, "choices": None}}
},
)
)
@exception_handler
@validate
def economic_conditions_chicago(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Get The Survey Of Economic Conditions For The Chicago Region.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
frequency : Optional[Literal['annual', 'quarter']]
Frequency aggregation to convert monthly data to lower frequency. None is monthly. (provider: fred)
aggregation_method : Optional[Literal['avg', 'sum', 'eop']]
A key that indicates the aggregation method used for frequency aggregation.
avg = Average
sum = Sum
eop = End of Period
(provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
log = Natural Log
(provider: fred)
Returns
-------
OBBject
results : list[SurveyOfEconomicConditionsChicago]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SurveyOfEconomicConditionsChicago
---------------------------------
date : date
The date of the data.
activity_index : Optional[float]
Activity Index.
one_year_outlook : Optional[float]
One Year Outlook Index.
manufacturing_activity : Optional[float]
Manufacturing Activity Index.
non_manufacturing_activity : Optional[float]
Non-Manufacturing Activity Index.
capital_expenditures_expectations : Optional[float]
Capital Expenditures Expectations Index.
hiring_expectations : Optional[float]
Hiring Expectations Index.
current_hiring : Optional[float]
Current Hiring Index.
labor_costs : Optional[float]
Labor Costs Index.
non_labor_costs : Optional[float]
Non-Labor Costs Index.
Examples
--------
>>> from openbb import obb
>>> obb.economy.survey.economic_conditions_chicago(provider='fred')
""" # noqa: E501
return self._run(
"/economy/survey/economic_conditions_chicago",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.survey.economic_conditions_chicago",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def manufacturing_outlook_ny(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Get the Empire State Manufacturing Survey.
It is a monthly survey of manufacturers in New York State conducted by the Federal Reserve Bank of New York.
Participants from across the state in a variety of industries respond to a questionnaire
and report the change in a variety of indicators from the previous month.
Respondents also state the likely direction of these same indicators six months ahead.
April 2002 is the first report, although survey data date back to July 2001.
The survey is sent on the first day of each month to the same pool of about 200
manufacturing executives in New York State, typically the president or CEO.
About 100 responses are received. Most are completed by the tenth, although surveys are accepted until the fifteenth.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
topic : Union[Literal['business_outlook', 'hours_worked', 'employment', 'inventories', 'prices_received', 'prices_paid', 'capex', 'unfilled_orders', 'new_orders', 'shipments', 'delivery_times'], str]
The topic for the survey response. Multiple comma separated items allowed. (provider: fred)
seasonally_adjusted : bool
Whether the data is seasonally adjusted, default is False (provider: fred)
frequency : Optional[Literal['quarter', 'annual']]
Frequency aggregation to convert monthly data to lower frequency. None is monthly. (provider: fred)
aggregation_method : Optional[Literal['avg', 'sum', 'eop']]
A key that indicates the aggregation method used for frequency aggregation.
avg = Average
sum = Sum
eop = End of Period
(provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
log = Natural Log
(provider: fred)
Returns
-------
OBBject
results : list[ManufacturingOutlookNY]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
ManufacturingOutlookNY
----------------------
date : date
The date of the data.
topic : Optional[str]
Topic of the survey response.
diffusion_index : Optional[float]
Diffusion Index.
percent_reporting_increase : Optional[float]
Percent of respondents reporting an increase over the last month.
percent_reporting_decrease : Optional[float]
Percent of respondents reporting a decrease over the last month.
percent_reporting_no_change : Optional[float]
Percent of respondents reporting no change over the last month.
Examples
--------
>>> from openbb import obb
>>> obb.economy.survey.manufacturing_outlook_ny(provider='fred')
>>> obb.economy.survey.manufacturing_outlook_ny(topic='hours_worked,new_orders', transform='pc1', provider='fred', seasonally_adjusted=True)
""" # noqa: E501
return self._run(
"/economy/survey/manufacturing_outlook_ny",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.survey.manufacturing_outlook_ny",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"topic": {
"fred": {
"multiple_items_allowed": True,
"choices": [
"business_outlook",
"hours_worked",
"employment",
"inventories",
"prices_received",
"prices_paid",
"capex",
"unfilled_orders",
"new_orders",
"shipments",
"delivery_times",
],
"x-widget_config": {"value": "new_orders"},
}
}
},
)
)
@exception_handler
@validate
def manufacturing_outlook_texas(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Get The Manufacturing Outlook Survey For The Texas Region.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
topic : Union[Literal['business_activity', 'business_outlook', 'capex', 'prices_paid', 'production', 'inventory', 'new_orders', 'new_orders_growth', 'unfilled_orders', 'shipments', 'delivery_time', 'employment', 'wages', 'hours_worked'], str]
The topic for the survey response. Multiple comma separated items allowed. (provider: fred)
frequency : Optional[Literal['annual', 'quarter']]
Frequency aggregation to convert monthly data to lower frequency. None is monthly.
(provider: fred)
aggregation_method : Optional[Literal['avg', 'sum', 'eop']]
A key that indicates the aggregation method used for frequency aggregation.
avg = Average
sum = Sum
eop = End of Period
(provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
log = Natural Log
(provider: fred)
Returns
-------
OBBject
results : list[ManufacturingOutlookTexas]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
ManufacturingOutlookTexas
-------------------------
date : date
The date of the data.
topic : Optional[str]
Topic of the survey response.
diffusion_index : Optional[float]
Diffusion Index.
percent_reporting_increase : Optional[float]
Percent of respondents reporting an increase over the last month.
percent_reporting_decrease : Optional[float]
Percent of respondents reporting a decrease over the last month.
percent_reporting_no_change : Optional[float]
Percent of respondents reporting no change over the last month.
Examples
--------
>>> from openbb import obb
>>> obb.economy.survey.manufacturing_outlook_texas(provider='fred')
>>> obb.economy.survey.manufacturing_outlook_texas(topic='business_outlook,new_orders', transform='pc1', provider='fred')
""" # noqa: E501
return self._run(
"/economy/survey/manufacturing_outlook_texas",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.survey.manufacturing_outlook_texas",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"topic": {
"fred": {
"multiple_items_allowed": True,
"choices": [
"business_activity",
"business_outlook",
"capex",
"prices_paid",
"production",
"inventory",
"new_orders",
"new_orders_growth",
"unfilled_orders",
"shipments",
"delivery_time",
"employment",
"wages",
"hours_worked",
],
}
}
},
)
)
@exception_handler
@validate
def nonfarm_payrolls(
self,
date: Annotated[
Union[str, datetime.date, None, list[Union[str, datetime.date, None]]],
OpenBBField(
description="A specific date to get data for. Default is the latest report. Multiple comma separated items allowed for provider(s): fred."
),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Get Nonfarm Payrolls Survey.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
date : Union[str, date, None, list[Union[str, date, None]]]
A specific date to get data for. Default is the latest report. Multiple comma separated items allowed for provider(s): fred.
category : Literal['employees_nsa', 'employees_sa', 'employees_production_and_nonsupervisory', 'employees_women', 'employees_women_percent', 'avg_hours', 'avg_hours_production_and_nonsupervisory', 'avg_hours_overtime', 'avg_hours_overtime_production_and_nonsupervisory', 'avg_earnings_hourly', 'avg_earnings_hourly_production_and_nonsupervisory', 'avg_earnings_weekly', 'avg_earnings_weekly_production_and_nonsupervisory', 'index_weekly_hours', 'index_weekly_hours_production_and_nonsupervisory', 'index_weekly_payrolls', 'index_weekly_payrolls_production_and_nonsupervisory']
The category to query. (provider: fred)
Returns
-------
OBBject
results : list[NonFarmPayrolls]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
NonFarmPayrolls
---------------
date : date
The date of the data.
symbol : str
Symbol representing the entity requested in the data.
value : float
name : Optional[str]
The name of the series. (provider: fred)
element_id : Optional[str]
The element id in the parent/child relationship. (provider: fred)
parent_id : Optional[str]
The parent id in the parent/child relationship. (provider: fred)
children : Optional[str]
The element_id of each child, as a comma-separated string. (provider: fred)
level : Optional[int]
The indentation level of the element. (provider: fred)
Examples
--------
>>> from openbb import obb
>>> obb.economy.survey.nonfarm_payrolls(provider='fred')
>>> obb.economy.survey.nonfarm_payrolls(category='avg_hours', provider='fred')
""" # noqa: E501
return self._run(
"/economy/survey/nonfarm_payrolls",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.survey.nonfarm_payrolls",
("fred",),
)
},
standard_params={
"date": date,
},
extra_params=kwargs,
info={
"date": {"fred": {"multiple_items_allowed": True, "choices": None}}
},
)
)
@exception_handler
@validate
def sloos(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Get Senior Loan Officers Opinion Survey.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
category : Literal['spreads', 'consumer', 'auto', 'credit_card', 'firms', 'mortgage', 'commercial_real_estate', 'standards', 'demand', 'foreign_banks']
Category of survey response. (provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
log = Natural Log
(provider: fred)
Returns
-------
OBBject
results : list[SeniorLoanOfficerSurvey]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SeniorLoanOfficerSurvey
-----------------------
date : date
The date of the data.
symbol : Optional[str]
Symbol representing the entity requested in the data.
value : float
Survey value.
title : Optional[str]
Survey title.
Examples
--------
>>> from openbb import obb
>>> obb.economy.survey.sloos(provider='fred')
>>> obb.economy.survey.sloos(category='credit_card', provider='fred')
""" # noqa: E501
return self._run(
"/economy/survey/sloos",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.survey.sloos",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def university_of_michigan(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Get University of Michigan Consumer Sentiment and Inflation Expectations Surveys.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
frequency : Optional[Literal['quarter', 'annual']]
Frequency aggregation to convert monthly data to lower frequency. None is monthly. (provider: fred)
aggregation_method : Optional[Literal['avg', 'sum', 'eop']]
A key that indicates the aggregation method used for frequency aggregation.
avg = Average
sum = Sum
eop = End of Period
(provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
log = Natural Log
(provider: fred)
Returns
-------
OBBject
results : list[UniversityOfMichigan]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
UniversityOfMichigan
--------------------
date : date
The date of the data.
consumer_sentiment : Optional[float]
Index of the results of the University of Michigan's monthly Survey of Consumers, which is used to estimate future spending and saving. (1966:Q1=100).
inflation_expectation : Optional[float]
Median expected price change next 12 months, Surveys of Consumers.
Examples
--------
>>> from openbb import obb
>>> obb.economy.survey.university_of_michigan(provider='fred')
""" # noqa: E501
return self._run(
"/economy/survey/university_of_michigan",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"economy.survey.university_of_michigan",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
)
)

File diff suppressed because it is too large Load Diff

View File

@@ -1,521 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_equity_calendar(Container):
"""/equity/calendar
dividend
earnings
events
ipo
splits
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def dividend(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Get historical and upcoming dividend payments. Includes dividend amount, ex-dividend and payment dates.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
Returns
-------
OBBject
results : list[CalendarDividend]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CalendarDividend
----------------
ex_dividend_date : date
The ex-dividend date - the date on which the stock begins trading without rights to the dividend.
symbol : str
Symbol representing the entity requested in the data.
amount : Optional[float]
The dividend amount per share.
name : Optional[str]
Name of the entity.
record_date : Optional[date]
The record date of ownership for eligibility.
payment_date : Optional[date]
The payment date of the dividend.
declaration_date : Optional[date]
Declaration date of the dividend.
adjusted_amount : Optional[float]
The adjusted-dividend amount. (provider: fmp)
label : Optional[str]
Ex-dividend date formatted for display. (provider: fmp)
Examples
--------
>>> from openbb import obb
>>> obb.equity.calendar.dividend(provider='fmp')
""" # noqa: E501
return self._run(
"/equity/calendar/dividend",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.calendar.dividend",
("fmp",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def earnings(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Get historical and upcoming company earnings releases. Includes earnings per share (EPS) and revenue data.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
Returns
-------
OBBject
results : list[CalendarEarnings]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CalendarEarnings
----------------
report_date : date
The date of the earnings report.
symbol : str
Symbol representing the entity requested in the data.
name : Optional[str]
Name of the entity.
eps_previous : Optional[float]
The earnings-per-share from the same previously reported period.
eps_consensus : Optional[float]
The analyst conesus earnings-per-share estimate.
eps_actual : Optional[float]
The actual earnings per share announced. (provider: fmp)
revenue_actual : Optional[float]
The actual reported revenue. (provider: fmp)
revenue_consensus : Optional[float]
The revenue forecast consensus. (provider: fmp)
period_ending : Optional[date]
The fiscal period end date. (provider: fmp)
reporting_time : Optional[str]
The reporting time - e.g. after market close. (provider: fmp)
updated_date : Optional[date]
The date the data was updated last. (provider: fmp)
Examples
--------
>>> from openbb import obb
>>> obb.equity.calendar.earnings(provider='fmp')
>>> # Get earnings calendar for specific dates.
>>> obb.equity.calendar.earnings(start_date='2024-02-01', end_date='2024-02-07', provider='fmp')
""" # noqa: E501
return self._run(
"/equity/calendar/earnings",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.calendar.earnings",
("fmp",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def events(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Get historical and upcoming company events, such as Investor Day, Conference Call, Earnings Release.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
Returns
-------
OBBject
results : list[CalendarEvents]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CalendarEvents
--------------
date : date
The date of the data. The date of the event.
symbol : str
Symbol representing the entity requested in the data.
exchange : Optional[str]
Exchange where the symbol is listed. (provider: fmp)
time : Optional[str]
The estimated time of the event, local to the exchange. (provider: fmp)
timing : Optional[str]
The timing of the event - e.g. before, during, or after market hours. (provider: fmp)
description : Optional[str]
The title of the event. (provider: fmp)
url : Optional[str]
The URL to the press release for the announcement. (provider: fmp)
announcement_date : Optional[date]
The date when the event was announced. (provider: fmp)
Examples
--------
>>> from openbb import obb
>>> obb.equity.calendar.events(provider='fmp')
>>> # Get company events calendar for specific dates.
>>> obb.equity.calendar.events(start_date='2024-02-01', end_date='2024-02-07', provider='fmp')
""" # noqa: E501
return self._run(
"/equity/calendar/events",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.calendar.events",
("fmp",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def ipo(
self,
symbol: Annotated[
Optional[str], OpenBBField(description="Symbol to get data for.")
] = None,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
limit: Annotated[
Optional[int],
OpenBBField(description="The number of data entries to return."),
] = 100,
provider: Annotated[
Optional[Literal["intrinio"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: intrinio."
),
] = None,
**kwargs
) -> OBBject:
"""Get historical and upcoming initial public offerings (IPOs).
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: intrinio.
symbol : Optional[str]
Symbol to get data for.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
limit : Optional[int]
The number of data entries to return.
status : Optional[Literal['upcoming', 'priced', 'withdrawn']]
Status of the IPO. [upcoming, priced, or withdrawn] (provider: intrinio)
min_value : Optional[int]
Return IPOs with an offer dollar amount greater than the given amount. (provider: intrinio)
max_value : Optional[int]
Return IPOs with an offer dollar amount less than the given amount. (provider: intrinio)
Returns
-------
OBBject
results : list[CalendarIpo]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CalendarIpo
-----------
symbol : Optional[str]
Symbol representing the entity requested in the data.
ipo_date : Optional[date]
The date of the IPO, when the stock first trades on a major exchange.
status : Optional[Literal['upcoming', 'priced', 'withdrawn']]
The status of the IPO. Upcoming IPOs have not taken place yet but are expected to. Priced IPOs have taken place. Withdrawn IPOs were expected to take place, but were subsequently withdrawn. (provider: intrinio)
exchange : Optional[str]
The acronym of the stock exchange that the company is going to trade publicly on. Typically NYSE or NASDAQ. (provider: intrinio)
offer_amount : Optional[float]
The total dollar amount of shares offered in the IPO. Typically this is share price * share count (provider: intrinio)
share_price : Optional[float]
The price per share at which the IPO was offered. (provider: intrinio)
share_price_lowest : Optional[float]
The expected lowest price per share at which the IPO will be offered. Before an IPO is priced, companies typically provide a range of prices per share at which they expect to offer the IPO (typically available for upcoming IPOs). (provider: intrinio)
share_price_highest : Optional[float]
The expected highest price per share at which the IPO will be offered. Before an IPO is priced, companies typically provide a range of prices per share at which they expect to offer the IPO (typically available for upcoming IPOs). (provider: intrinio)
share_count : Optional[int]
The number of shares offered in the IPO. (provider: intrinio)
share_count_lowest : Optional[int]
The expected lowest number of shares that will be offered in the IPO. Before an IPO is priced, companies typically provide a range of shares that they expect to offer in the IPO (typically available for upcoming IPOs). (provider: intrinio)
share_count_highest : Optional[int]
The expected highest number of shares that will be offered in the IPO. Before an IPO is priced, companies typically provide a range of shares that they expect to offer in the IPO (typically available for upcoming IPOs). (provider: intrinio)
announcement_url : Optional[str]
The URL to the company's announcement of the IPO (provider: intrinio)
sec_report_url : Optional[str]
The URL to the company's S-1, S-1/A, F-1, or F-1/A SEC filing, which is required to be filed before an IPO takes place. (provider: intrinio)
open_price : Optional[float]
The opening price at the beginning of the first trading day (only available for priced IPOs). (provider: intrinio)
close_price : Optional[float]
The closing price at the end of the first trading day (only available for priced IPOs). (provider: intrinio)
volume : Optional[int]
The volume at the end of the first trading day (only available for priced IPOs). (provider: intrinio)
day_change : Optional[float]
The percentage change between the open price and the close price on the first trading day (only available for priced IPOs). (provider: intrinio)
week_change : Optional[float]
The percentage change between the open price on the first trading day and the close price approximately a week after the first trading day (only available for priced IPOs). (provider: intrinio)
month_change : Optional[float]
The percentage change between the open price on the first trading day and the close price approximately a month after the first trading day (only available for priced IPOs). (provider: intrinio)
id : Optional[str]
The Intrinio ID of the IPO. (provider: intrinio)
company : Optional[IntrinioCompany]
The company that is going public via the IPO. (provider: intrinio)
security : Optional[IntrinioSecurity]
The primary Security for the Company that is going public via the IPO (provider: intrinio)
Examples
--------
>>> from openbb import obb
>>> obb.equity.calendar.ipo(provider='intrinio')
>>> # Get all IPOs available.
>>> obb.equity.calendar.ipo(provider='intrinio')
""" # noqa: E501
return self._run(
"/equity/calendar/ipo",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.calendar.ipo",
("intrinio",),
)
},
standard_params={
"symbol": symbol,
"start_date": start_date,
"end_date": end_date,
"limit": limit,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def splits(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Get historical and upcoming stock split operations.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
Returns
-------
OBBject
results : list[CalendarSplits]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CalendarSplits
--------------
date : date
The date of the data.
label : str
Label of the stock splits.
symbol : str
Symbol representing the entity requested in the data.
numerator : float
Numerator of the stock splits.
denominator : float
Denominator of the stock splits.
Examples
--------
>>> from openbb import obb
>>> obb.equity.calendar.splits(provider='fmp')
>>> # Get stock splits calendar for specific dates.
>>> obb.equity.calendar.splits(start_date='2024-02-01', end_date='2024-02-07', provider='fmp')
""" # noqa: E501
return self._run(
"/equity/calendar/splits",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.calendar.splits",
("fmp",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
)
)

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,854 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from annotated_types import Ge
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_equity_ownership(Container):
"""/equity/ownership
form_13f
government_trades
insider_trading
institutional
major_holders
share_statistics
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def form_13f(
self,
symbol: Annotated[
str,
OpenBBField(
description="Symbol to get data for. A CIK or Symbol can be used."
),
],
date: Annotated[
Union[datetime.date, None, str],
OpenBBField(
description="A specific date to get data for. The date represents the end of the reporting period. All form 13F-HR filings are based on the calendar year and are reported quarterly. If a date is not supplied, the most recent filing is returned. Submissions beginning 2013-06-30 are supported."
),
] = None,
limit: Annotated[
Optional[int],
OpenBBField(
description="The number of data entries to return. The number of previous filings to return. The date parameter takes priority over this parameter."
),
] = 1,
provider: Annotated[
Optional[Literal["sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec."
),
] = None,
**kwargs
) -> OBBject:
"""Get the form 13F.
The Securities and Exchange Commission's (SEC) Form 13F is a quarterly report
that is required to be filed by all institutional investment managers with at least
$100 million in assets under management.
Managers are required to file Form 13F within 45 days after the last day of the calendar quarter.
Most funds wait until the end of this period in order to conceal
their investment strategy from competitors and the public.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec.
symbol : str
Symbol to get data for. A CIK or Symbol can be used.
date : Union[date, None, str]
A specific date to get data for. The date represents the end of the reporting period. All form 13F-HR filings are based on the calendar year and are reported quarterly. If a date is not supplied, the most recent filing is returned. Submissions beginning 2013-06-30 are supported.
limit : Optional[int]
The number of data entries to return. The number of previous filings to return. The date parameter takes priority over this parameter.
Returns
-------
OBBject
results : list[Form13FHR]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
Form13FHR
---------
period_ending : date
The end-of-quarter date of the filing.
issuer : str
The name of the issuer.
cusip : str
The CUSIP of the security.
asset_class : str
The title of the asset class for the security.
security_type : Optional[Literal['SH', 'PRN']]
Whether the principal amount represents the number of shares or the principal amount of such class. 'SH' for shares. 'PRN' for principal amount. Convertible debt securities are reported as 'PRN'.
option_type : Optional[Literal['call', 'put']]
Defined when the holdings being reported are put or call options. Only long positions are reported.
investment_discretion : Optional[str]
The investment discretion held by the Manager. Sole, shared-defined (DFN), or shared-other (OTR).
voting_authority_sole : Optional[int]
The number of shares for which the Manager exercises sole voting authority.
voting_authority_shared : Optional[int]
The number of shares for which the Manager exercises a defined shared voting authority.
voting_authority_none : Optional[int]
The number of shares for which the Manager exercises no voting authority.
principal_amount : int
The total number of shares of the class of security or the principal amount of such class. Defined by the 'security_type'. Only long positions are reported
value : int
The fair market value of the holding of the particular class of security. The value reported for options is the fair market value of the underlying security with respect to the number of shares controlled. Values are rounded to the nearest US dollar and use the closing price of the last trading day of the calendar year or quarter.
weight : Optional[float]
The weight of the security relative to the market value of all securities in the filing , as a normalized percent. (provider: sec)
Examples
--------
>>> from openbb import obb
>>> obb.equity.ownership.form_13f(symbol='NVDA', provider='sec')
>>> # Enter a date (calendar quarter ending) for a specific report.
>>> obb.equity.ownership.form_13f(symbol='BRK-A', date='2016-09-30', provider='sec')
>>> # Example finding Michael Burry's filings.
>>> cik = obb.regulators.sec.institutions_search("Scion Asset Management").results[0].cik
>>> # Use the `limit` parameter to return N number of reports from the most recent.
>>> obb.equity.ownership.form_13f(cik, limit=2).to_df()
""" # noqa: E501
return self._run(
"/equity/ownership/form_13f",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.ownership.form_13f",
("sec",),
)
},
standard_params={
"symbol": symbol,
"date": date,
"limit": limit,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def government_trades(
self,
symbol: Annotated[
Union[str, None, list[Optional[str]]],
OpenBBField(
description="Symbol to get data for. Multiple comma separated items allowed for provider(s): fmp."
),
] = None,
chamber: Annotated[
Literal["house", "senate", "all"],
OpenBBField(description="Government Chamber."),
] = "all",
limit: Annotated[
Optional[Annotated[int, Ge(ge=0)]],
OpenBBField(description="The number of data entries to return."),
] = 100,
provider: Annotated[
Optional[Literal["fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Obtain government transaction data, including data from the Senate
and the House of Representatives.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp.
symbol : Union[str, None, list[Optional[str]]]
Symbol to get data for. Multiple comma separated items allowed for provider(s): fmp.
chamber : Literal['house', 'senate', 'all']
Government Chamber.
limit : Optional[Annotated[int, Ge(ge=0)]]
The number of data entries to return.
Returns
-------
OBBject
results : list[GovernmentTrades]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
GovernmentTrades
----------------
symbol : Optional[str]
Symbol representing the entity requested in the data.
date : date
The date of the data.
transaction_date : Optional[date]
Date of Transaction.
representative : Optional[str]
Name of Representative.
chamber : Optional[Literal['house', 'senate']]
Government Chamber - House or Senate. (provider: fmp)
owner : Optional[str]
Ownership status (e.g., Spouse, Joint). (provider: fmp)
asset_type : Optional[str]
Type of asset involved in the transaction. (provider: fmp)
asset_description : Optional[str]
Description of the asset. (provider: fmp)
transaction_type : Optional[str]
Type of transaction (e.g., Sale, Purchase). (provider: fmp)
amount : Optional[str]
Transaction amount range. (provider: fmp)
comment : Optional[str]
Additional comments on the transaction. (provider: fmp)
url : Optional[str]
Link to the transaction document. (provider: fmp)
Examples
--------
>>> from openbb import obb
>>> obb.equity.ownership.government_trades(symbol='AAPL', chamber='all', provider='fmp')
>>> obb.equity.ownership.government_trades(limit=500, chamber='all', provider='fmp')
""" # noqa: E501
return self._run(
"/equity/ownership/government_trades",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.ownership.government_trades",
("fmp",),
)
},
standard_params={
"symbol": symbol,
"chamber": chamber,
"limit": limit,
},
extra_params=kwargs,
info={
"symbol": {"fmp": {"multiple_items_allowed": True, "choices": None}}
},
)
)
@exception_handler
@validate
def insider_trading(
self,
symbol: Annotated[str, OpenBBField(description="Symbol to get data for.")],
limit: Annotated[
int, OpenBBField(description="The number of data entries to return.")
] = 500,
provider: Annotated[
Optional[Literal["fmp", "intrinio", "sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, sec."
),
] = None,
**kwargs
) -> OBBject:
"""Get data about trading by a company's management team and board of directors.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, sec.
symbol : str
Symbol to get data for.
limit : int
The number of data entries to return.
transaction_type : Optional[Literal['award', 'conversion', 'return', 'expire_short', 'in_kind', 'gift', 'expire_long', 'discretionary', 'other', 'small', 'exempt', 'otm', 'purchase', 'sale', 'tender', 'will', 'itm', 'trust']]
Type of the transaction. (provider: fmp)
start_date : Optional[date]
Start date of the data, in YYYY-MM-DD format. (provider: intrinio)
end_date : Optional[date]
End date of the data, in YYYY-MM-DD format. (provider: intrinio, sec)
ownership_type : Optional[Literal['D', 'I']]
Type of ownership. (provider: intrinio)
sort_by : Optional[Literal['filing_date', 'updated_on']]
Field to sort by. (provider: intrinio)
use_cache : bool
Persist the data locally for future use. Default is True. Each form submission is an individual download and the SEC limits the number of concurrent downloads. This prevents the same file from being downloaded multiple times. (provider: sec)
Returns
-------
OBBject
results : list[InsiderTrading]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
InsiderTrading
--------------
symbol : Optional[str]
Symbol representing the entity requested in the data.
company_cik : Optional[Union[int, str]]
CIK number of the company.
filing_date : Optional[Union[date, datetime]]
Filing date of the trade.
transaction_date : Optional[date]
Date of the transaction.
owner_cik : Optional[Union[int, str]]
Reporting individual's CIK.
owner_name : Optional[str]
Name of the reporting individual.
owner_title : Optional[str]
The title held by the reporting individual.
transaction_type : Optional[str]
Type of transaction being reported.
acquisition_or_disposition : Optional[str]
Acquisition or disposition of the shares.
security_type : Optional[str]
The type of security transacted.
securities_owned : Optional[float]
Number of securities owned by the reporting individual.
securities_transacted : Optional[float]
Number of securities transacted by the reporting individual.
transaction_price : Optional[float]
The price of the transaction.
filing_url : Optional[str]
Link to the filing.
form_type : Optional[str]
Form type of the insider trading. (provider: fmp)
company_name : Optional[str]
Name of the company. (provider: intrinio, sec)
conversion_exercise_price : Optional[float]
Conversion/Exercise price of the shares. (provider: intrinio);
Price of conversion or exercise of the securities. (provider: sec)
deemed_execution_date : Optional[date]
Deemed execution date of the trade. (provider: intrinio);
Deemed execution date. (provider: sec)
exercise_date : Optional[date]
Exercise date of the trade. (provider: intrinio);
Date of exercise. (provider: sec)
expiration_date : Optional[date]
Expiration date of the derivative. (provider: intrinio);
Date of expiration for the derivative. (provider: sec)
underlying_security_title : Optional[str]
Name of the underlying non-derivative security related to this derivative transaction. (provider: intrinio);
Title of the underlying security. (provider: sec)
underlying_shares : Optional[Union[int, float]]
Number of underlying shares related to this derivative transaction. (provider: intrinio)
nature_of_ownership : Optional[str]
Nature of ownership of the insider trading. (provider: intrinio);
Nature of the ownership. (provider: sec)
director : Optional[bool]
Whether the owner is a director. (provider: intrinio, sec)
officer : Optional[bool]
Whether the owner is an officer. (provider: intrinio, sec)
ten_percent_owner : Optional[bool]
Whether the owner is a 10% owner. (provider: intrinio, sec)
other_relation : Optional[bool]
Whether the owner is having another relation. (provider: intrinio)
derivative_transaction : Optional[bool]
Whether the owner is having a derivative transaction. (provider: intrinio)
report_line_number : Optional[int]
Report line number of the insider trading. (provider: intrinio)
form : Optional[Union[str, int]]
Form type. (provider: sec)
other : Optional[bool]
Whether the owner is classified as other. (provider: sec)
other_text : Optional[str]
Text for other classification. (provider: sec)
transaction_timeliness : Optional[str]
Timeliness of the transaction. (provider: sec)
ownership_type : Optional[str]
Type of ownership, direct or indirect. (provider: sec)
underlying_security_shares : Optional[float]
Number of underlying shares associated with the derivative. (provider: sec)
underlying_security_value : Optional[float]
Value of the underlying security. (provider: sec)
transaction_value : Optional[float]
Total value of the transaction. (provider: sec)
value_owned : Optional[float]
Value of the securities owned after the transaction. (provider: sec)
footnote : Optional[str]
Footnote for the transaction. (provider: sec)
Examples
--------
>>> from openbb import obb
>>> obb.equity.ownership.insider_trading(symbol='AAPL', provider='fmp')
>>> obb.equity.ownership.insider_trading(symbol='AAPL', limit=500, provider='intrinio')
""" # noqa: E501
return self._run(
"/equity/ownership/insider_trading",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.ownership.insider_trading",
("fmp", "intrinio", "sec"),
)
},
standard_params={
"symbol": symbol,
"limit": limit,
},
extra_params=kwargs,
info={
"transaction_type": {
"fmp": {
"multiple_items_allowed": False,
"choices": [
"award",
"conversion",
"return",
"expire_short",
"in_kind",
"gift",
"expire_long",
"discretionary",
"other",
"small",
"exempt",
"otm",
"purchase",
"sale",
"tender",
"will",
"itm",
"trust",
],
}
}
},
)
)
@exception_handler
@validate
def institutional(
self,
symbol: Annotated[str, OpenBBField(description="Symbol to get data for.")],
provider: Annotated[
Optional[Literal["fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Get data about institutional ownership for a given company over time.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp.
symbol : str
Symbol to get data for.
include_current_quarter : Optional[bool]
Include current quarter data. (provider: fmp)
date : Optional[date]
A specific date to get data for. (provider: fmp)
Returns
-------
OBBject
results : list[InstitutionalOwnership]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
InstitutionalOwnership
----------------------
symbol : str
Symbol representing the entity requested in the data.
cik : Optional[str]
Central Index Key (CIK) for the requested entity.
date : date
The date of the data.
investors_holding : Optional[int]
Number of investors holding the stock. (provider: fmp)
last_investors_holding : Optional[int]
Number of investors holding the stock in the last quarter. (provider: fmp)
investors_holding_change : Optional[int]
Change in the number of investors holding the stock. (provider: fmp)
number_of_13f_shares : Optional[int]
Number of 13F shares. (provider: fmp)
last_number_of_13f_shares : Optional[int]
Number of 13F shares in the last quarter. (provider: fmp)
number_of_13f_shares_change : Optional[int]
Change in the number of 13F shares. (provider: fmp)
total_invested : Optional[float]
Total amount invested. (provider: fmp)
last_total_invested : Optional[float]
Total amount invested in the last quarter. (provider: fmp)
total_invested_change : Optional[float]
Change in the total amount invested. (provider: fmp)
ownership_percent : Optional[float]
Ownership percent. (provider: fmp)
last_ownership_percent : Optional[float]
Ownership percent in the last quarter. (provider: fmp)
ownership_percent_change : Optional[float]
Change in the ownership percent. (provider: fmp)
new_positions : Optional[int]
Number of new positions. (provider: fmp)
last_new_positions : Optional[int]
Number of new positions in the last quarter. (provider: fmp)
new_positions_change : Optional[int]
Change in the number of new positions. (provider: fmp)
increased_positions : Optional[int]
Number of increased positions. (provider: fmp)
last_increased_positions : Optional[int]
Number of increased positions in the last quarter. (provider: fmp)
increased_positions_change : Optional[int]
Change in the number of increased positions. (provider: fmp)
closed_positions : Optional[int]
Number of closed positions. (provider: fmp)
last_closed_positions : Optional[int]
Number of closed positions in the last quarter. (provider: fmp)
closed_positions_change : Optional[int]
Change in the number of closed positions. (provider: fmp)
reduced_positions : Optional[int]
Number of reduced positions. (provider: fmp)
last_reduced_positions : Optional[int]
Number of reduced positions in the last quarter. (provider: fmp)
reduced_positions_change : Optional[int]
Change in the number of reduced positions. (provider: fmp)
total_calls : Optional[int]
Total number of call options contracts traded for Apple Inc. on the specified date. (provider: fmp)
last_total_calls : Optional[int]
Total number of call options contracts traded for Apple Inc. on the previous reporting date. (provider: fmp)
total_calls_change : Optional[int]
Change in the total number of call options contracts traded between the current and previous reporting dates. (provider: fmp)
total_puts : Optional[int]
Total number of put options contracts traded for Apple Inc. on the specified date. (provider: fmp)
last_total_puts : Optional[int]
Total number of put options contracts traded for Apple Inc. on the previous reporting date. (provider: fmp)
total_puts_change : Optional[int]
Change in the total number of put options contracts traded between the current and previous reporting dates. (provider: fmp)
put_call_ratio : Optional[float]
Put-call ratio, which is the ratio of the total number of put options to call options traded on the specified date. (provider: fmp)
last_put_call_ratio : Optional[float]
Put-call ratio on the previous reporting date. (provider: fmp)
put_call_ratio_change : Optional[float]
Change in the put-call ratio between the current and previous reporting dates. (provider: fmp)
Examples
--------
>>> from openbb import obb
>>> obb.equity.ownership.institutional(symbol='AAPL', provider='fmp')
""" # noqa: E501
return self._run(
"/equity/ownership/institutional",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.ownership.institutional",
("fmp",),
)
},
standard_params={
"symbol": symbol,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def major_holders(
self,
symbol: Annotated[str, OpenBBField(description="Symbol to get data for.")],
date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="A specific date to get data for."),
] = None,
page: Annotated[
Optional[int], OpenBBField(description="Page number of the data to fetch.")
] = 0,
provider: Annotated[
Optional[Literal["fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Get data about major holders for a given company over time.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp.
symbol : str
Symbol to get data for.
date : Union[date, None, str]
A specific date to get data for.
page : Optional[int]
Page number of the data to fetch.
Returns
-------
OBBject
results : list[EquityOwnership]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
EquityOwnership
---------------
date : date
The date of the data.
cik : int
Central Index Key (CIK) for the requested entity.
filing_date : date
Filing date of the stock ownership.
investor_name : str
Investor name of the stock ownership.
symbol : str
Symbol representing the entity requested in the data.
security_name : str
Security name of the stock ownership.
type_of_security : str
Type of security of the stock ownership.
security_cusip : str
Security cusip of the stock ownership.
shares_type : str
Shares type of the stock ownership.
put_call_share : str
Put call share of the stock ownership.
investment_discretion : str
Investment discretion of the stock ownership.
industry_title : str
Industry title of the stock ownership.
weight : float
Weight of the stock ownership.
last_weight : float
Last weight of the stock ownership.
change_in_weight : float
Change in weight of the stock ownership.
change_in_weight_percentage : float
Change in weight percentage of the stock ownership.
market_value : int
Market value of the stock ownership.
last_market_value : int
Last market value of the stock ownership.
change_in_market_value : int
Change in market value of the stock ownership.
change_in_market_value_percentage : float
Change in market value percentage of the stock ownership.
shares_number : int
Shares number of the stock ownership.
last_shares_number : int
Last shares number of the stock ownership.
change_in_shares_number : float
Change in shares number of the stock ownership.
change_in_shares_number_percentage : float
Change in shares number percentage of the stock ownership.
quarter_end_price : float
Quarter end price of the stock ownership.
avg_price_paid : float
Average price paid of the stock ownership.
is_new : bool
Is the stock ownership new.
is_sold_out : bool
Is the stock ownership sold out.
ownership : float
How much is the ownership.
last_ownership : float
Last ownership amount.
change_in_ownership : float
Change in ownership amount.
change_in_ownership_percentage : float
Change in ownership percentage.
holding_period : int
Holding period of the stock ownership.
first_added : date
First added date of the stock ownership.
performance : float
Performance of the stock ownership.
performance_percentage : float
Performance percentage of the stock ownership.
last_performance : float
Last performance of the stock ownership.
change_in_performance : float
Change in performance of the stock ownership.
is_counted_for_performance : bool
Is the stock ownership counted for performance.
Examples
--------
>>> from openbb import obb
>>> obb.equity.ownership.major_holders(symbol='AAPL', provider='fmp')
>>> obb.equity.ownership.major_holders(symbol='AAPL', page=0, provider='fmp')
""" # noqa: E501
return self._run(
"/equity/ownership/major_holders",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.ownership.major_holders",
("fmp",),
)
},
standard_params={
"symbol": symbol,
"date": date,
"page": page,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def share_statistics(
self,
symbol: Annotated[
Union[str, list[str]],
OpenBBField(
description="Symbol to get data for. Multiple comma separated items allowed for provider(s): yfinance."
),
],
provider: Annotated[
Optional[Literal["fmp", "intrinio", "yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Get data about share float for a given company.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, yfinance.
symbol : Union[str, list[str]]
Symbol to get data for. Multiple comma separated items allowed for provider(s): yfinance.
Returns
-------
OBBject
results : list[ShareStatistics]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
ShareStatistics
---------------
symbol : str
Symbol representing the entity requested in the data.
date : Optional[date]
The date of the data.
free_float : Optional[float]
Percentage of unrestricted shares of a publicly-traded company.
float_shares : Optional[float]
Number of shares available for trading by the general public.
outstanding_shares : Optional[float]
Total number of shares of a publicly-traded company.
source : Optional[str]
Source of the received data.
adjusted_outstanding_shares : Optional[float]
Total number of shares of a publicly-traded company, adjusted for splits. (provider: intrinio)
public_float : Optional[float]
Aggregate market value of the shares of a publicly-traded company. (provider: intrinio)
implied_shares_outstanding : Optional[int]
Implied Shares Outstanding of common equity, assuming the conversion of all convertible subsidiary equity into common. (provider: yfinance)
short_interest : Optional[int]
Number of shares that are reported short. (provider: yfinance)
short_percent_of_float : Optional[float]
Percentage of shares that are reported short, as a normalized percent. (provider: yfinance)
days_to_cover : Optional[float]
Number of days to repurchase the shares as a ratio of average daily volume (provider: yfinance)
short_interest_prev_month : Optional[int]
Number of shares that were reported short in the previous month. (provider: yfinance)
short_interest_prev_date : Optional[date]
Date of the previous month's report. (provider: yfinance)
insider_ownership : Optional[float]
Percentage of shares held by insiders, as a normalized percent. (provider: yfinance)
institution_ownership : Optional[float]
Percentage of shares held by institutions, as a normalized percent. (provider: yfinance)
institution_float_ownership : Optional[float]
Percentage of float held by institutions, as a normalized percent. (provider: yfinance)
institutions_count : Optional[int]
Number of institutions holding shares. (provider: yfinance)
Examples
--------
>>> from openbb import obb
>>> obb.equity.ownership.share_statistics(symbol='AAPL', provider='fmp')
""" # noqa: E501
return self._run(
"/equity/ownership/share_statistics",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.ownership.share_statistics",
("fmp", "intrinio", "yfinance"),
)
},
standard_params={
"symbol": symbol,
},
extra_params=kwargs,
info={
"symbol": {
"yfinance": {"multiple_items_allowed": True, "choices": None}
}
},
)
)

View File

@@ -1,630 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_equity_price(Container):
"""/equity/price
historical
nbbo
performance
quote
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def historical(
self,
symbol: Annotated[
Union[str, list[str]],
OpenBBField(
description="Symbol to get data for. Multiple comma separated items allowed for provider(s): fmp, polygon, tiingo, yfinance."
),
],
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fmp", "intrinio", "polygon", "tiingo", "yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, polygon, tiingo, yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Get historical price data for a given stock. This includes open, high, low, close, and volume.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, polygon, tiingo, yfinance.
symbol : Union[str, list[str]]
Symbol to get data for. Multiple comma separated items allowed for provider(s): fmp, polygon, tiingo, yfinance.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
interval : str
Time interval of the data to return. (provider: fmp, intrinio, polygon, tiingo, yfinance)
Choices for fmp: '1m', '5m', '15m', '30m', '1h', '4h', '1d'
Choices for intrinio: '1m', '5m', '10m', '15m', '30m', '60m', '1h', '1d', '1W', '1M', '1Q', '1Y'
Choices for yfinance: '1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1W', '1M', '1Q'
start_time : Optional[datetime.time]
Return intervals starting at the specified time on the `start_date` formatted as 'HH:MM:SS'. (provider: intrinio)
end_time : Optional[datetime.time]
Return intervals stopping at the specified time on the `end_date` formatted as 'HH:MM:SS'. (provider: intrinio)
timezone : Optional[str]
Timezone of the data, in the IANA format (Continent/City). (provider: intrinio)
source : Literal['realtime', 'delayed', 'nasdaq_basic']
The source of the data. (provider: intrinio)
adjustment : str
The adjustment factor to apply. Default is splits only. (provider: polygon, yfinance)
Choices for polygon: 'splits_only', 'unadjusted'
Choices for yfinance: 'splits_only', 'splits_and_dividends'
extended_hours : bool
Include Pre and Post market data. (provider: polygon, yfinance)
sort : Literal['asc', 'desc']
Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date. (provider: polygon)
limit : int
The number of data entries to return. (provider: polygon)
include_actions : bool
Include dividends and stock splits in results. (provider: yfinance)
Returns
-------
OBBject
results : list[EquityHistorical]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
EquityHistorical
----------------
date : Union[date, datetime]
The date of the data.
open : float
The open price.
high : float
The high price.
low : float
The low price.
close : float
The close price.
volume : Optional[Union[int, float]]
The trading volume.
vwap : Optional[float]
Volume Weighted Average Price over the period.
adj_close : Optional[float]
The adjusted close price. (provider: fmp, intrinio, tiingo)
unadjusted_volume : Optional[float]
Unadjusted volume of the symbol. (provider: fmp)
change : Optional[float]
Change in the price from the previous close. (provider: fmp);
Change in the price of the symbol from the previous day. (provider: intrinio)
change_percent : Optional[float]
Change in the price from the previous close, as a normalized percent. (provider: fmp);
Percent change in the price of the symbol from the previous day. (provider: intrinio)
average : Optional[float]
Average trade price of an individual equity during the interval. (provider: intrinio)
adj_open : Optional[float]
The adjusted open price. (provider: intrinio, tiingo)
adj_high : Optional[float]
The adjusted high price. (provider: intrinio, tiingo)
adj_low : Optional[float]
The adjusted low price. (provider: intrinio, tiingo)
adj_volume : Optional[float]
The adjusted volume. (provider: intrinio, tiingo)
fifty_two_week_high : Optional[float]
52 week high price for the symbol. (provider: intrinio)
fifty_two_week_low : Optional[float]
52 week low price for the symbol. (provider: intrinio)
factor : Optional[float]
factor by which to multiply equity prices before this date, in order to calculate historically-adjusted equity prices. (provider: intrinio)
split_ratio : Optional[float]
Ratio of the equity split, if a split occurred. (provider: intrinio, tiingo, yfinance)
dividend : Optional[float]
Dividend amount, if a dividend was paid. (provider: intrinio, tiingo, yfinance)
close_time : Optional[datetime]
The timestamp that represents the end of the interval span. (provider: intrinio)
interval : Optional[str]
The data time frequency. (provider: intrinio)
intra_period : Optional[bool]
If true, the equity price represents an unfinished period (be it day, week, quarter, month, or year), meaning that the close price is the latest price available, not the official close price for the period (provider: intrinio)
transactions : Optional[Annotated[int, Gt(gt=0)]]
Number of transactions for the symbol in the time period. (provider: polygon)
Examples
--------
>>> from openbb import obb
>>> obb.equity.price.historical(symbol='AAPL', provider='fmp')
>>> obb.equity.price.historical(symbol='AAPL', interval='1d', provider='intrinio')
""" # noqa: E501
return self._run(
"/equity/price/historical",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.price.historical",
("fmp", "intrinio", "polygon", "tiingo", "yfinance"),
)
},
standard_params={
"symbol": symbol,
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"symbol": {
"fmp": {"multiple_items_allowed": True, "choices": None},
"polygon": {"multiple_items_allowed": True, "choices": None},
"tiingo": {"multiple_items_allowed": True, "choices": None},
"yfinance": {"multiple_items_allowed": True, "choices": None},
},
"interval": {
"fmp": {
"multiple_items_allowed": False,
"choices": ["1m", "5m", "15m", "30m", "1h", "4h", "1d"],
},
"intrinio": {
"multiple_items_allowed": False,
"choices": [
"1m",
"5m",
"10m",
"15m",
"30m",
"60m",
"1h",
"1d",
"1W",
"1M",
"1Q",
"1Y",
],
},
"tiingo": {
"multiple_items_allowed": False,
"choices": [
"1m",
"5m",
"15m",
"30m",
"90m",
"1h",
"2h",
"4h",
"1d",
"1W",
"1M",
"1Y",
],
},
"yfinance": {
"multiple_items_allowed": False,
"choices": [
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
],
},
},
},
)
)
@exception_handler
@validate
def nbbo(
self,
symbol: Annotated[str, OpenBBField(description="Symbol to get data for.")],
provider: Annotated[
Optional[Literal["polygon"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: polygon."
),
] = None,
**kwargs
) -> OBBject:
"""Get the National Best Bid and Offer for a given stock.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: polygon.
symbol : str
Symbol to get data for.
limit : int
The number of data entries to return. Up to ten million records will be returned. Pagination occurs in groups of 50,000. Remaining limit values will always return 50,000 more records unless it is the last page. High volume tickers will require multiple max requests for a single day's NBBO records. Expect stocks, like SPY, to approach 1GB in size, per day, as a raw CSV. Splitting large requests into chunks is recommended for full-day requests of high-volume symbols. (provider: polygon)
date : Optional[date]
A specific date to get data for. Use bracketed the timestamp parameters to specify exact time ranges. (provider: polygon)
timestamp_lt : Union[datetime, str, None]
Query by datetime, less than. Either a date with the format 'YYYY-MM-DD' or a TZ-aware timestamp string, 'YYYY-MM-DDTH:M:S.000000000-04:00'. Include all nanoseconds and the 'T' between the day and hour. (provider: polygon)
timestamp_gt : Union[datetime, str, None]
Query by datetime, greater than. Either a date with the format 'YYYY-MM-DD' or a TZ-aware timestamp string, 'YYYY-MM-DDTH:M:S.000000000-04:00'. Include all nanoseconds and the 'T' between the day and hour. (provider: polygon)
timestamp_lte : Union[datetime, str, None]
Query by datetime, less than or equal to. Either a date with the format 'YYYY-MM-DD' or a TZ-aware timestamp string, 'YYYY-MM-DDTH:M:S.000000000-04:00'. Include all nanoseconds and the 'T' between the day and hour. (provider: polygon)
timestamp_gte : Union[datetime, str, None]
Query by datetime, greater than or equal to. Either a date with the format 'YYYY-MM-DD' or a TZ-aware timestamp string, 'YYYY-MM-DDTH:M:S.000000000-04:00'. Include all nanoseconds and the 'T' between the day and hour. (provider: polygon)
Returns
-------
OBBject
results : list[EquityNBBO]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
EquityNBBO
----------
ask_exchange : str
The exchange ID for the ask.
ask : float
The last ask price.
ask_size : int
The ask size. This represents the number of round lot orders at the given ask price.
The normal round lot size is 100 shares.
An ask size of 2 means there are 200 shares available to purchase at the given ask price.
bid_size : int
The bid size in round lots.
bid : float
The last bid price.
bid_exchange : str
The exchange ID for the bid.
tape : Optional[str]
The exchange tape. (provider: polygon)
conditions : Optional[Union[str, list[int], list[str]]]
A list of condition codes. (provider: polygon)
indicators : Optional[list[int]]
A list of indicator codes. (provider: polygon)
sequence_num : Optional[int]
The sequence number represents the sequence in which message events happened. These are increasing and unique per ticker symbol, but will not always be sequential (e.g., 1, 2, 6, 9, 10, 11) (provider: polygon)
participant_timestamp : Optional[datetime]
The nanosecond accuracy Participant/Exchange Unix Timestamp. This is the timestamp of when the quote was actually generated at the exchange. (provider: polygon)
sip_timestamp : Optional[datetime]
The nanosecond accuracy SIP Unix Timestamp. This is the timestamp of when the SIP received this quote from the exchange which produced it. (provider: polygon)
trf_timestamp : Optional[datetime]
The nanosecond accuracy TRF (Trade Reporting Facility) Unix Timestamp. This is the timestamp of when the trade reporting facility received this quote. (provider: polygon)
Examples
--------
>>> from openbb import obb
>>> obb.equity.price.nbbo(symbol='AAPL', provider='polygon')
""" # noqa: E501
return self._run(
"/equity/price/nbbo",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.price.nbbo",
("polygon",),
)
},
standard_params={
"symbol": symbol,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def performance(
self,
symbol: Annotated[
Union[str, list[str]],
OpenBBField(
description="Symbol to get data for. Multiple comma separated items allowed for provider(s): fmp."
),
],
provider: Annotated[
Optional[Literal["fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Get price performance data for a given stock. This includes price changes for different time periods.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp.
symbol : Union[str, list[str]]
Symbol to get data for. Multiple comma separated items allowed for provider(s): fmp.
Returns
-------
OBBject
results : list[PricePerformance]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
PricePerformance
----------------
symbol : Optional[str]
Symbol representing the entity requested in the data.
one_day : Optional[float]
One-day return.
wtd : Optional[float]
Week to date return.
one_week : Optional[float]
One-week return.
mtd : Optional[float]
Month to date return.
one_month : Optional[float]
One-month return.
qtd : Optional[float]
Quarter to date return.
three_month : Optional[float]
Three-month return.
six_month : Optional[float]
Six-month return.
ytd : Optional[float]
Year to date return.
one_year : Optional[float]
One-year return.
two_year : Optional[float]
Two-year return.
three_year : Optional[float]
Three-year return.
four_year : Optional[float]
Four-year
five_year : Optional[float]
Five-year return.
ten_year : Optional[float]
Ten-year return.
max : Optional[float]
Return from the beginning of the time series.
Examples
--------
>>> from openbb import obb
>>> obb.equity.price.performance(symbol='AAPL', provider='fmp')
""" # noqa: E501
return self._run(
"/equity/price/performance",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.price.performance",
("fmp",),
)
},
standard_params={
"symbol": symbol,
},
extra_params=kwargs,
info={
"symbol": {"fmp": {"multiple_items_allowed": True, "choices": None}}
},
)
)
@exception_handler
@validate
def quote(
self,
symbol: Annotated[
Union[str, list[str]],
OpenBBField(
description="Symbol to get data for. Multiple comma separated items allowed for provider(s): fmp, intrinio, yfinance."
),
],
provider: Annotated[
Optional[Literal["fmp", "intrinio", "yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Get the latest quote for a given stock. Quote includes price, volume, and other data.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, yfinance.
symbol : Union[str, list[str]]
Symbol to get data for. Multiple comma separated items allowed for provider(s): fmp, intrinio, yfinance.
source : Literal['iex', 'bats', 'bats_delayed', 'utp_delayed', 'cta_a_delayed', 'cta_b_delayed', 'intrinio_mx', 'intrinio_mx_plus', 'delayed_sip']
Source of the data. (provider: intrinio)
Returns
-------
OBBject
results : list[EquityQuote]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
EquityQuote
-----------
symbol : str
Symbol representing the entity requested in the data.
asset_type : Optional[str]
Type of asset - i.e, stock, ETF, etc.
name : Optional[str]
Name of the company or asset.
exchange : Optional[str]
The name or symbol of the venue where the data is from.
bid : Optional[float]
Price of the top bid order.
bid_size : Optional[int]
This represents the number of round lot orders at the given price. The normal round lot size is 100 shares. A size of 2 means there are 200 shares available at the given price.
bid_exchange : Optional[str]
The specific trading venue where the purchase order was placed.
ask : Optional[float]
Price of the top ask order.
ask_size : Optional[int]
This represents the number of round lot orders at the given price. The normal round lot size is 100 shares. A size of 2 means there are 200 shares available at the given price.
ask_exchange : Optional[str]
The specific trading venue where the sale order was placed.
quote_conditions : Optional[Union[str, int, list[str], list[int]]]
Conditions or condition codes applicable to the quote.
quote_indicators : Optional[Union[str, int, list[str], list[int]]]
Indicators or indicator codes applicable to the participant quote related to the price bands for the issue, or the affect the quote has on the NBBO.
sales_conditions : Optional[Union[str, int, list[str], list[int]]]
Conditions or condition codes applicable to the sale.
sequence_number : Optional[int]
The sequence number represents the sequence in which message events happened. These are increasing and unique per ticker symbol, but will not always be sequential (e.g., 1, 2, 6, 9, 10, 11).
market_center : Optional[str]
The ID of the UTP participant that originated the message.
participant_timestamp : Optional[datetime]
Timestamp for when the quote was generated by the exchange.
trf_timestamp : Optional[datetime]
Timestamp for when the TRF (Trade Reporting Facility) received the message.
sip_timestamp : Optional[datetime]
Timestamp for when the SIP (Security Information Processor) received the message from the exchange.
last_price : Optional[float]
Price of the last trade.
last_tick : Optional[str]
Whether the last sale was an up or down tick.
last_size : Optional[int]
Size of the last trade.
last_timestamp : Optional[datetime]
Date and Time when the last price was recorded.
open : Optional[float]
The open price.
high : Optional[float]
The high price.
low : Optional[float]
The low price.
close : Optional[float]
The close price.
volume : Optional[Union[int, float]]
The trading volume.
exchange_volume : Optional[Union[int, float]]
Volume of shares exchanged during the trading day on the specific exchange.
prev_close : Optional[float]
The previous close price.
change : Optional[float]
Change in price from previous close.
change_percent : Optional[float]
Change in price as a normalized percentage.
year_high : Optional[float]
The one year high (52W High).
year_low : Optional[float]
The one year low (52W Low).
price_avg50 : Optional[float]
50 day moving average price. (provider: fmp)
price_avg200 : Optional[float]
200 day moving average price. (provider: fmp)
avg_volume : Optional[int]
Average volume over the last 10 trading days. (provider: fmp)
market_cap : Optional[float]
Market cap of the company. (provider: fmp)
shares_outstanding : Optional[int]
Number of shares outstanding. (provider: fmp)
eps : Optional[float]
Earnings per share. (provider: fmp)
pe : Optional[float]
Price earnings ratio. (provider: fmp)
earnings_announcement : Optional[datetime]
Upcoming earnings announcement date. (provider: fmp)
is_darkpool : Optional[bool]
Whether or not the current trade is from a darkpool. (provider: intrinio)
source : Optional[str]
Source of the Intrinio data. (provider: intrinio)
updated_on : Optional[datetime]
Date and Time when the data was last updated. (provider: intrinio)
security : Optional[IntrinioSecurity]
Security details related to the quote. (provider: intrinio)
ma_50d : Optional[float]
50-day moving average price. (provider: yfinance)
ma_200d : Optional[float]
200-day moving average price. (provider: yfinance)
volume_average : Optional[float]
Average daily trading volume. (provider: yfinance)
volume_average_10d : Optional[float]
Average daily trading volume in the last 10 days. (provider: yfinance)
currency : Optional[str]
Currency of the price. (provider: yfinance)
Examples
--------
>>> from openbb import obb
>>> obb.equity.price.quote(symbol='AAPL', provider='fmp')
""" # noqa: E501
return self._run(
"/equity/price/quote",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.price.quote",
("fmp", "intrinio", "yfinance"),
)
},
standard_params={
"symbol": symbol,
},
extra_params=kwargs,
info={
"symbol": {
"fmp": {"multiple_items_allowed": True, "choices": None},
"intrinio": {"multiple_items_allowed": True, "choices": None},
"yfinance": {"multiple_items_allowed": True, "choices": None},
}
},
)
)

View File

@@ -1,104 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
from typing import Literal, Optional
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_equity_shorts(Container):
"""/equity/shorts
fails_to_deliver
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def fails_to_deliver(
self,
symbol: Annotated[str, OpenBBField(description="Symbol to get data for.")],
provider: Annotated[
Optional[Literal["sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec."
),
] = None,
**kwargs
) -> OBBject:
"""Get reported Fail-to-deliver (FTD) data.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec.
symbol : str
Symbol to get data for.
limit : Optional[int]
Limit the number of reports to parse, from most recent.
Approximately 24 reports per year, going back to 2009.
(provider: sec)
skip_reports : Optional[int]
Skip N number of reports from current. A value of 1 will skip the most recent report.
(provider: sec)
use_cache : Optional[bool]
Whether or not to use cache for the request, default is True. Each reporting period is a separate URL, new reports will be added to the cache. (provider: sec)
Returns
-------
OBBject
results : list[EquityFTD]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
EquityFTD
---------
settlement_date : Optional[date]
The settlement date of the fail.
symbol : Optional[str]
Symbol representing the entity requested in the data.
cusip : Optional[str]
CUSIP of the Security.
quantity : Optional[int]
The number of fails on that settlement date.
price : Optional[float]
The price at the previous closing price from the settlement date.
description : Optional[str]
The description of the Security.
Examples
--------
>>> from openbb import obb
>>> obb.equity.shorts.fails_to_deliver(symbol='AAPL', provider='sec')
""" # noqa: E501
return self._run(
"/equity/shorts/fails_to_deliver",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"equity.shorts.fails_to_deliver",
("sec",),
)
},
standard_params={
"symbol": symbol,
},
extra_params=kwargs,
)
)

File diff suppressed because it is too large Load Diff

View File

@@ -1,566 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from warnings import simplefilter, warn
from openbb_core.app.deprecation import OpenBBDeprecationWarning
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated, deprecated
class ROUTER_fixedincome(Container):
"""/fixedincome
bond_indices
/corporate
/government
mortgage_indices
/rate
sofr
/spreads
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def bond_indices(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
index_type: Annotated[
Literal["yield", "yield_to_worst", "total_return", "oas"],
OpenBBField(
description="The type of series. OAS is the option-adjusted spread. Default is yield."
),
] = "yield",
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Bond Indices.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
index_type : Literal['yield', 'yield_to_worst', 'total_return', 'oas']
The type of series. OAS is the option-adjusted spread. Default is yield.
category : Literal['high_yield', 'us', 'emerging_markets']
The type of index category. Used in conjunction with 'index', default is 'us'. (provider: fred)
index : str
The specific index to query. Used in conjunction with 'category' and 'index_type', default is 'yield_curve'.
Possible values are:
corporate
seasoned_corporate
liquid_corporate
yield_curve
crossover
public_sector
private_sector
non_financial
high_grade
high_yield
liquid_emea
emea
liquid_asia
asia
liquid_latam
latam
liquid_aaa
liquid_bbb
aaa
aa
a
bbb
bb
b
ccc
Multiple comma separated items allowed. (provider: fred)
frequency : Optional[Literal['a', 'q', 'm', 'w', 'd', 'wef', 'weth', 'wew', 'wetu', 'wem', 'wesu', 'wesa', 'bwew', 'bwem']]
Frequency aggregation to convert daily data to lower frequency.
None = No change
a = Annual
q = Quarterly
m = Monthly
w = Weekly
d = Daily
wef = Weekly, Ending Friday
weth = Weekly, Ending Thursday
wew = Weekly, Ending Wednesday
wetu = Weekly, Ending Tuesday
wem = Weekly, Ending Monday
wesu = Weekly, Ending Sunday
wesa = Weekly, Ending Saturday
bwew = Biweekly, Ending Wednesday
bwem = Biweekly, Ending Monday
(provider: fred)
aggregation_method : Literal['avg', 'sum', 'eop']
A key that indicates the aggregation method used for frequency aggregation.
This parameter has no affect if the frequency parameter is not set, default is 'avg'.
avg = Average
sum = Sum
eop = End of Period
(provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
log = Natural Log
(provider: fred)
Returns
-------
OBBject
results : list[BondIndices]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
BondIndices
-----------
date : date
The date of the data.
symbol : Optional[str]
Symbol representing the entity requested in the data.
value : float
Index values.
maturity : Optional[str]
The maturity range of the bond index. Only applicable when 'index' is 'yield_curve'. (provider: fred)
title : Optional[str]
The title of the index. (provider: fred)
Examples
--------
>>> from openbb import obb
>>> # The default state for FRED are series for constructing the US Corporate Bond Yield Curve.
>>> obb.fixedincome.bond_indices(provider='fred')
>>> # Multiple indices, from within the same 'category', can be requested.
>>> obb.fixedincome.bond_indices(category='high_yield', index='us,europe,emerging', index_type='total_return', provider='fred')
>>> # From FRED, there are three main categories, 'high_yield', 'us', and 'emerging_markets'. Emerging markets is a broad category.
>>> obb.fixedincome.bond_indices(category='emerging_markets', index='corporate,private_sector,public_sector', provider='fred')
""" # noqa: E501
return self._run(
"/fixedincome/bond_indices",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.bond_indices",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
"index_type": index_type,
},
extra_params=kwargs,
info={
"index": {
"fred": {
"multiple_items_allowed": True,
"choices": [
"a",
"aa",
"aaa",
"asia",
"b",
"bb",
"bbb",
"ccc",
"corporate",
"crossover",
"emea",
"high_grade",
"high_yield",
"latam",
"liquid_aaa",
"liquid_asia",
"liquid_bbb",
"liquid_corporate",
"liquid_emea",
"liquid_latam",
"non_financial",
"private_sector",
"public_sector",
"seasoned_corporate",
"yield_curve",
],
}
}
},
)
)
@property
def corporate(self):
# pylint: disable=import-outside-toplevel
from . import fixedincome_corporate
return fixedincome_corporate.ROUTER_fixedincome_corporate(
command_runner=self._command_runner
)
@property
def government(self):
# pylint: disable=import-outside-toplevel
from . import fixedincome_government
return fixedincome_government.ROUTER_fixedincome_government(
command_runner=self._command_runner
)
@exception_handler
@validate
def mortgage_indices(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Mortgage Indices.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
index : Union[Literal['primary', 'ltv_lte_80', 'ltv_gt_80', 'conforming_30y', 'conforming_30y_na', 'jumbo_30y', 'fha_30y', 'va_30y', 'usda_30y', 'conforming_15y', 'ltv_lte80_fico_ge740', 'ltv_lte80_fico_a720b739', 'ltv_lte80_fico_a700b719', 'ltv_lte80_fico_a680b699', 'ltv_lte80_fico_lt680', 'ltv_gt80_fico_ge740', 'ltv_gt80_fico_a720b739', 'ltv_gt80_fico_a700b719', 'ltv_gt80_fico_a680b699', 'ltv_gt80_fico_lt680'], str]
The specific index, or index group, to query. Default is the 'primary' group. Multiple comma separated items allowed. (provider: fred)
frequency : Optional[Literal['a', 'q', 'm', 'w', 'd', 'wef', 'weth', 'wew', 'wetu', 'wem', 'wesu', 'wesa', 'bwew', 'bwem']]
Frequency aggregation to convert daily data to lower frequency.
None = No change
a = Annual
q = Quarterly
m = Monthly
w = Weekly
d = Daily
wef = Weekly, Ending Friday
weth = Weekly, Ending Thursday
wew = Weekly, Ending Wednesday
wetu = Weekly, Ending Tuesday
wem = Weekly, Ending Monday
wesu = Weekly, Ending Sunday
wesa = Weekly, Ending Saturday
bwew = Biweekly, Ending Wednesday
bwem = Biweekly, Ending Monday
(provider: fred)
aggregation_method : Literal['avg', 'sum', 'eop']
A key that indicates the aggregation method used for frequency aggregation.
This parameter has no affect if the frequency parameter is not set, default is 'avg'.
avg = Average
sum = Sum
eop = End of Period
(provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
log = Natural Log
(provider: fred)
Returns
-------
OBBject
results : list[MortgageIndices]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
MortgageIndices
---------------
date : date
The date of the data.
symbol : Optional[str]
Symbol representing the entity requested in the data.
name : Optional[str]
Name of the index.
rate : float
Mortgage rate.
Examples
--------
>>> from openbb import obb
>>> # The default state for FRED are the primary mortgage indices from Optimal Blue.
>>> obb.fixedincome.mortgage_indices(provider='fred')
>>> # Multiple indices can be requested.
>>> obb.fixedincome.mortgage_indices(index='jumbo_30y,conforming_30y,conforming_15y', provider='fred')
""" # noqa: E501
return self._run(
"/fixedincome/mortgage_indices",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.mortgage_indices",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"index": {
"fred": {
"multiple_items_allowed": True,
"choices": [
"primary",
"ltv_lte_80",
"ltv_gt_80",
"conforming_30y",
"conforming_30y_na",
"jumbo_30y",
"fha_30y",
"va_30y",
"usda_30y",
"conforming_15y",
"ltv_lte80_fico_ge740",
"ltv_lte80_fico_a720b739",
"ltv_lte80_fico_a700b719",
"ltv_lte80_fico_a680b699",
"ltv_lte80_fico_lt680",
"ltv_gt80_fico_ge740",
"ltv_gt80_fico_a720b739",
"ltv_gt80_fico_a700b719",
"ltv_gt80_fico_a680b699",
"ltv_gt80_fico_lt680",
],
}
}
},
)
)
@property
def rate(self):
# pylint: disable=import-outside-toplevel
from . import fixedincome_rate
return fixedincome_rate.ROUTER_fixedincome_rate(
command_runner=self._command_runner
)
@exception_handler
@validate
@deprecated(
"This endpoint is deprecated; use `/fixedincome/rate/sofr` instead. Deprecated in OpenBB Platform V4.2 to be removed in V4.5.",
category=OpenBBDeprecationWarning,
)
def sofr(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["federal_reserve", "fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve, fred."
),
] = None,
**kwargs
) -> OBBject:
"""Secured Overnight Financing Rate.
The Secured Overnight Financing Rate (SOFR) is a broad measure of the cost of
borrowing cash overnight collateralizing by Treasury securities.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve, fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
frequency : Optional[Literal['a', 'q', 'm', 'w', 'wef', 'weth', 'wew', 'wetu', 'wem', 'wesu', 'wesa', 'bwew', 'bwem']]
Frequency aggregation to convert daily data to lower frequency.
a = Annual
q = Quarterly
m = Monthly
w = Weekly
wef = Weekly, Ending Friday
weth = Weekly, Ending Thursday
wew = Weekly, Ending Wednesday
wetu = Weekly, Ending Tuesday
wem = Weekly, Ending Monday
wesu = Weekly, Ending Sunday
wesa = Weekly, Ending Saturday
bwew = Biweekly, Ending Wednesday
bwem = Biweekly, Ending Monday
(provider: fred)
aggregation_method : Optional[Literal['avg', 'sum', 'eop']]
A key that indicates the aggregation method used for frequency aggregation.
avg = Average
sum = Sum
eop = End of Period
(provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
log = Natural Log
(provider: fred)
Returns
-------
OBBject
results : list[SOFR]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SOFR
----
date : date
The date of the data.
rate : float
Effective federal funds rate.
percentile_1 : Optional[float]
1st percentile of the distribution.
percentile_25 : Optional[float]
25th percentile of the distribution.
percentile_75 : Optional[float]
75th percentile of the distribution.
percentile_99 : Optional[float]
99th percentile of the distribution.
volume : Optional[float]
The trading volume.The notional volume of transactions (Billions of $).
average_30d : Optional[float]
30-Day Average SOFR (provider: fred)
average_90d : Optional[float]
90-Day Average SOFR (provider: fred)
average_180d : Optional[float]
180-Day Average SOFR (provider: fred)
index : Optional[float]
SOFR index as 2018-04-02 = 1 (provider: fred)
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.sofr(provider='fred')
""" # noqa: E501
simplefilter("always", DeprecationWarning)
warn(
"This endpoint is deprecated; use `/fixedincome/rate/sofr` instead. Deprecated in OpenBB Platform V4.2 to be removed in V4.5.",
category=DeprecationWarning,
stacklevel=2,
)
return self._run(
"/fixedincome/sofr",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.sofr",
("federal_reserve", "fred"),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
)
)
@property
def spreads(self):
# pylint: disable=import-outside-toplevel
from . import fixedincome_spreads
return fixedincome_spreads.ROUTER_fixedincome_spreads(
command_runner=self._command_runner
)

View File

@@ -1,596 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from warnings import simplefilter, warn
from openbb_core.app.deprecation import OpenBBDeprecationWarning
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated, deprecated
class ROUTER_fixedincome_corporate(Container):
"""/fixedincome/corporate
commercial_paper
hqm
ice_bofa
moody
spot_rates
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def commercial_paper(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Commercial Paper.
Commercial paper (CP) consists of short-term, promissory notes issued primarily by corporations.
Maturities range up to 270 days but average about 30 days.
Many companies use CP to raise cash needed for current transactions,
and many find it to be a lower-cost alternative to bank loans.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
maturity : Union[str, Literal['all', 'overnight', '7d', '15d', '30d', '60d', '90d']]
A target maturity. Multiple comma separated items allowed. (provider: fred)
category : Union[str, Literal['all', 'asset_backed', 'financial', 'nonfinancial', 'a2p2']]
The category of asset. Multiple comma separated items allowed. (provider: fred)
frequency : Optional[Literal['a', 'q', 'm', 'w', 'wef', 'weth', 'wew', 'wetu', 'wem', 'wesu', 'wesa', 'bwew', 'bwem']]
Frequency aggregation to convert daily data to lower frequency.
a = Annual
q = Quarterly
m = Monthly
w = Weekly
wef = Weekly, Ending Friday
weth = Weekly, Ending Thursday
wew = Weekly, Ending Wednesday
wetu = Weekly, Ending Tuesday
wem = Weekly, Ending Monday
wesu = Weekly, Ending Sunday
wesa = Weekly, Ending Saturday
bwew = Biweekly, Ending Wednesday
bwem = Biweekly, Ending Monday
(provider: fred)
aggregation_method : Optional[Literal['avg', 'sum', 'eop']]
A key that indicates the aggregation method used for frequency aggregation.
avg = Average
sum = Sum
eop = End of Period
(provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
log = Natural Log
(provider: fred)
Returns
-------
OBBject
results : list[CommercialPaper]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CommercialPaper
---------------
date : date
The date of the data.
symbol : Optional[str]
Symbol representing the entity requested in the data.
maturity : str
Maturity length of the item.
rate : float
Interest rate.
title : Optional[str]
Title of the series.
asset_type : Optional[Literal['asset_backed', 'financial', 'nonfinancial', 'a2p2']]
The category of asset. (provider: fred)
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.corporate.commercial_paper(provider='fred')
>>> obb.fixedincome.corporate.commercial_paper(category='all', maturity='15d', provider='fred')
""" # noqa: E501
return self._run(
"/fixedincome/corporate/commercial_paper",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.corporate.commercial_paper",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"maturity": {
"fred": {
"multiple_items_allowed": True,
"choices": [
"all",
"overnight",
"7d",
"15d",
"30d",
"60d",
"90d",
],
}
},
"category": {
"fred": {
"multiple_items_allowed": True,
"choices": [
"all",
"asset_backed",
"financial",
"nonfinancial",
"a2p2",
],
}
},
},
)
)
@exception_handler
@validate
def hqm(
self,
date: Annotated[
Union[str, datetime.date, None, list[Union[str, datetime.date, None]]],
OpenBBField(
description="A specific date to get data for. Multiple comma separated items allowed for provider(s): fred."
),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""High Quality Market Corporate Bond.
The HQM yield curve represents the high quality corporate bond market, i.e.,
corporate bonds rated AAA, AA, or A. The HQM curve contains two regression terms.
These terms are adjustment factors that blend AAA, AA, and A bonds into a single HQM yield curve
that is the market-weighted average (MWA) quality of high quality bonds.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
date : Union[str, date, None, list[Union[str, date, None]]]
A specific date to get data for. Multiple comma separated items allowed for provider(s): fred.
yield_curve : Literal['spot', 'par']
The yield curve type. (provider: fred)
Returns
-------
OBBject
results : list[HighQualityMarketCorporateBond]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
HighQualityMarketCorporateBond
------------------------------
date : date
The date of the data.
rate : float
Interest rate.
maturity : str
Maturity.
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.corporate.hqm(provider='fred')
>>> obb.fixedincome.corporate.hqm(yield_curve='par', provider='fred')
""" # noqa: E501
return self._run(
"/fixedincome/corporate/hqm",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.corporate.hqm",
("fred",),
)
},
standard_params={
"date": date,
},
extra_params=kwargs,
info={
"date": {"fred": {"multiple_items_allowed": True, "choices": None}}
},
)
)
@exception_handler
@validate
@deprecated(
"This endpoint is deprecated; use `/fixedincome/bond_indices` instead. Deprecated in OpenBB Platform V4.2 to be removed in V4.5.",
category=OpenBBDeprecationWarning,
)
def ice_bofa(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
index_type: Annotated[
Literal["yield", "yield_to_worst", "total_return", "spread"],
OpenBBField(description="The type of series."),
] = "yield",
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""ICE BofA US Corporate Bond Indices.
The ICE BofA US Corporate Index tracks the performance of US dollar denominated investment grade corporate debt
publicly issued in the US domestic market. Qualifying securities must have an investment grade rating (based on an
average of Moody’s, S&P and Fitch), at least 18 months to final maturity at the time of issuance, at least one year
remaining term to final maturity as of the rebalance date, a fixed coupon schedule and a minimum amount
outstanding of $250 million. The ICE BofA US Corporate Index is a component of the US Corporate Master Index.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
index_type : Literal['yield', 'yield_to_worst', 'total_return', 'spread']
The type of series.
category : Literal['all', 'duration', 'eur', 'usd']
The type of category. (provider: fred)
area : Literal['asia', 'emea', 'eu', 'ex_g10', 'latin_america', 'us']
The type of area. (provider: fred)
grade : Literal['a', 'aa', 'aaa', 'b', 'bb', 'bbb', 'ccc', 'crossover', 'high_grade', 'high_yield', 'non_financial', 'non_sovereign', 'private_sector', 'public_sector']
The type of grade. (provider: fred)
options : bool
Whether to include options in the results. (provider: fred)
Returns
-------
OBBject
results : list[ICEBofA]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
ICEBofA
-------
date : date
The date of the data.
rate : Optional[float]
ICE BofA US Corporate Bond Indices Rate.
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.corporate.ice_bofa(provider='fred')
>>> obb.fixedincome.corporate.ice_bofa(index_type='yield_to_worst', provider='fred')
""" # noqa: E501
simplefilter("always", DeprecationWarning)
warn(
"This endpoint is deprecated; use `/fixedincome/bond_indices` instead. Deprecated in OpenBB Platform V4.2 to be removed in V4.5.",
category=DeprecationWarning,
stacklevel=2,
)
return self._run(
"/fixedincome/corporate/ice_bofa",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.corporate.ice_bofa",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
"index_type": index_type,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
@deprecated(
"This endpoint is deprecated; use `/fixedincome/bond_indices` instead. Set `category` to `us` and `index` to `seasoned_corporate`. Deprecated in OpenBB Platform V4.2 to be removed in V4.5.",
category=OpenBBDeprecationWarning,
)
def moody(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
index_type: Annotated[
Literal["aaa", "baa"], OpenBBField(description="The type of series.")
] = "aaa",
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Moody Corporate Bond Index.
Moody's Aaa and Baa are investment bonds that acts as an index of
the performance of all bonds given an Aaa or Baa rating by Moody's Investors Service respectively.
These corporate bonds often are used in macroeconomics as an alternative to the federal ten-year
Treasury Bill as an indicator of the interest rate.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
index_type : Literal['aaa', 'baa']
The type of series.
spread : Optional[Literal['treasury', 'fed_funds']]
The type of spread. (provider: fred)
Returns
-------
OBBject
results : list[MoodyCorporateBondIndex]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
MoodyCorporateBondIndex
-----------------------
date : date
The date of the data.
rate : Optional[float]
Moody Corporate Bond Index Rate.
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.corporate.moody(provider='fred')
>>> obb.fixedincome.corporate.moody(index_type='baa', provider='fred')
""" # noqa: E501
simplefilter("always", DeprecationWarning)
warn(
"This endpoint is deprecated; use `/fixedincome/bond_indices` instead. Set `category` to `us` and `index` to `seasoned_corporate`. Deprecated in OpenBB Platform V4.2 to be removed in V4.5.",
category=DeprecationWarning,
stacklevel=2,
)
return self._run(
"/fixedincome/corporate/moody",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.corporate.moody",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
"index_type": index_type,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def spot_rates(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
maturity: Annotated[
Union[float, str, list[Union[float, str]]],
OpenBBField(
description="Maturities in years. Multiple comma separated items allowed for provider(s): fred."
),
] = 10.0,
category: Annotated[
Union[str, list[str]],
OpenBBField(
description="Rate category. Options: spot_rate, par_yield. Multiple comma separated items allowed for provider(s): fred.\nChoices for fred: 'par_yield', 'spot_rate'"
),
] = "spot_rate",
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Spot Rates.
The spot rates for any maturity is the yield on a bond that provides a single payment at that maturity.
This is a zero coupon bond.
Because each spot rate pertains to a single cashflow, it is the relevant interest rate
concept for discounting a pension liability at the same maturity.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
maturity : Union[float, str, list[Union[float, str]]]
Maturities in years. Multiple comma separated items allowed for provider(s): fred.
category : Union[str, list[str]]
Rate category. Options: spot_rate, par_yield. Multiple comma separated items allowed for provider(s): fred.
Choices for fred: 'par_yield', 'spot_rate'
Returns
-------
OBBject
results : list[SpotRate]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SpotRate
--------
date : date
The date of the data.
rate : Optional[float]
Spot Rate.
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.corporate.spot_rates(provider='fred')
>>> obb.fixedincome.corporate.spot_rates(maturity='10,20,30,50', provider='fred')
""" # noqa: E501
return self._run(
"/fixedincome/corporate/spot_rates",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.corporate.spot_rates",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
"maturity": maturity,
"category": category,
},
extra_params=kwargs,
info={
"maturity": {
"fred": {"multiple_items_allowed": True, "choices": None}
},
"category": {
"fred": {
"multiple_items_allowed": True,
"choices": ["par_yield", "spot_rate"],
}
},
},
)
)

View File

@@ -1,360 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_fixedincome_government(Container):
"""/fixedincome/government
tips_yields
treasury_rates
yield_curve
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def tips_yields(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Get current Treasury inflation-protected securities yields.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
maturity : Optional[Literal['5', '10', '20', '30']]
The maturity of the security in years - 5, 10, 20, 30 - defaults to all. Note that the maturity is the tenor of the security, not the time to maturity. (provider: fred)
frequency : Optional[Literal['a', 'q', 'm', 'w', 'd', 'wef', 'weth', 'wew', 'wetu', 'wem', 'wesu', 'wesa', 'bwew', 'bwem']]
Frequency aggregation to convert high frequency data to lower frequency.
None = No change
a = Annual
q = Quarterly
m = Monthly
w = Weekly
d = Daily
wef = Weekly, Ending Friday
weth = Weekly, Ending Thursday
wew = Weekly, Ending Wednesday
wetu = Weekly, Ending Tuesday
wem = Weekly, Ending Monday
wesu = Weekly, Ending Sunday
wesa = Weekly, Ending Saturday
bwew = Biweekly, Ending Wednesday
bwem = Biweekly, Ending Monday
(provider: fred)
aggregation_method : Optional[Literal['avg', 'sum', 'eop']]
A key that indicates the aggregation method used for frequency aggregation.
avg = Average
sum = Sum
eop = End of Period
(provider: fred)
transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca']]
Transformation type
None = No transformation
chg = Change
ch1 = Change from Year Ago
pch = Percent Change
pc1 = Percent Change from Year Ago
pca = Compounded Annual Rate of Change
cch = Continuously Compounded Rate of Change
cca = Continuously Compounded Annual Rate of Change
(provider: fred)
Returns
-------
OBBject
results : list[TipsYields]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
TipsYields
----------
date : date
The date of the data.
symbol : Optional[str]
Symbol representing the entity requested in the data.
due : Optional[date]
The due date (maturation date) of the security.
name : Optional[str]
The name of the security.
value : Optional[float]
The yield value.
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.government.tips_yields(provider='fred')
>>> obb.fixedincome.government.tips_yields(maturity='10', provider='fred')
""" # noqa: E501
return self._run(
"/fixedincome/government/tips_yields",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.government.tips_yields",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def treasury_rates(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["federal_reserve", "fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve, fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Government Treasury Rates.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve, fmp.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
Returns
-------
OBBject
results : list[TreasuryRates]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
TreasuryRates
-------------
date : date
The date of the data.
week_4 : Optional[float]
4 week Treasury bills rate (secondary market).
month_1 : Optional[float]
1 month Treasury rate.
month_2 : Optional[float]
2 month Treasury rate.
month_3 : Optional[float]
3 month Treasury rate.
month_6 : Optional[float]
6 month Treasury rate.
year_1 : Optional[float]
1 year Treasury rate.
year_2 : Optional[float]
2 year Treasury rate.
year_3 : Optional[float]
3 year Treasury rate.
year_5 : Optional[float]
5 year Treasury rate.
year_7 : Optional[float]
7 year Treasury rate.
year_10 : Optional[float]
10 year Treasury rate.
year_20 : Optional[float]
20 year Treasury rate.
year_30 : Optional[float]
30 year Treasury rate.
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.government.treasury_rates(provider='fmp')
""" # noqa: E501
return self._run(
"/fixedincome/government/treasury_rates",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.government.treasury_rates",
("federal_reserve", "fmp"),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def yield_curve(
self,
date: Annotated[
Union[str, datetime.date, None, list[Union[str, datetime.date, None]]],
OpenBBField(
description="A specific date to get data for. By default is the current data. Multiple comma separated items allowed for provider(s): econdb, federal_reserve, fmp, fred."
),
] = None,
provider: Annotated[
Optional[Literal["econdb", "federal_reserve", "fmp", "fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb, federal_reserve, fmp, fred."
),
] = None,
**kwargs
) -> OBBject:
"""Get yield curve data by country and date.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb, federal_reserve, fmp, fred.
date : Union[str, date, None, list[Union[str, date, None]]]
A specific date to get data for. By default is the current data. Multiple comma separated items allowed for provider(s): econdb, federal_reserve, fmp, fred.
country : str
The country to get data. New Zealand, Mexico, Singapore, and Thailand have only monthly data. The nearest date to the requested one will be used. Multiple comma separated items allowed. (provider: econdb)
use_cache : bool
If true, cache the request for four hours. (provider: econdb)
yield_curve_type : Literal['nominal', 'real', 'breakeven', 'treasury_minus_fed_funds', 'corporate_spot', 'corporate_par']
Yield curve type. Nominal and Real Rates are available daily, others are monthly. The closest date to the requested date will be returned. (provider: fred)
Returns
-------
OBBject
results : list[YieldCurve]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
YieldCurve
----------
date : Optional[date]
The date of the data.
maturity : str
Maturity length of the security.
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.government.yield_curve(provider='federal_reserve')
>>> obb.fixedincome.government.yield_curve(date='2023-05-01,2024-05-01', provider='fmp')
>>> obb.fixedincome.government.yield_curve(date='2023-05-01', country='united_kingdom', provider='econdb')
>>> obb.fixedincome.government.yield_curve(provider='fred', yield_curve_type='real', date='2023-05-01,2024-05-01')
""" # noqa: E501
return self._run(
"/fixedincome/government/yield_curve",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.government.yield_curve",
("econdb", "federal_reserve", "fmp", "fred"),
)
},
standard_params={
"date": date,
},
extra_params=kwargs,
info={
"date": {
"econdb": {"multiple_items_allowed": True, "choices": None},
"federal_reserve": {
"multiple_items_allowed": True,
"choices": None,
},
"fmp": {"multiple_items_allowed": True, "choices": None},
"fred": {"multiple_items_allowed": True, "choices": None},
},
"country": {
"econdb": {
"multiple_items_allowed": True,
"choices": [
"australia",
"canada",
"china",
"ecb_instantaneous_forward",
"ecb_par_yield",
"ecb_spot_rate",
"hong_kong",
"india",
"japan",
"mexico",
"new_zealand",
"russia",
"saudi_arabia",
"singapore",
"south_africa",
"south_korea",
"taiwan",
"thailand",
"united_kingdom",
"united_states",
],
}
},
},
)
)

File diff suppressed because it is too large Load Diff

View File

@@ -1,291 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_fixedincome_spreads(Container):
"""/fixedincome/spreads
tcm
tcm_effr
treasury_effr
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def tcm(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
maturity: Annotated[
Optional[Literal["3m", "2y"]], OpenBBField(description="The maturity")
] = "3m",
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Treasury Constant Maturity.
Get data for 10-Year Treasury Constant Maturity Minus Selected Treasury Constant Maturity.
Constant maturity is the theoretical value of a U.S. Treasury that is based on recent values of auctioned U.S.
Treasuries. The value is obtained by the U.S. Treasury on a daily basis through interpolation of the Treasury
yield curve which, in turn, is based on closing bid-yields of actively-traded Treasury securities.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
maturity : Optional[Literal['3m', '2y']]
The maturity
Returns
-------
OBBject
results : list[TreasuryConstantMaturity]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
TreasuryConstantMaturity
------------------------
date : date
The date of the data.
rate : Optional[float]
TreasuryConstantMaturity Rate.
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.spreads.tcm(provider='fred')
>>> obb.fixedincome.spreads.tcm(maturity='2y', provider='fred')
""" # noqa: E501
return self._run(
"/fixedincome/spreads/tcm",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.spreads.tcm",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
"maturity": maturity,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def tcm_effr(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
maturity: Annotated[
Optional[Literal["10y", "5y", "1y", "6m", "3m"]],
OpenBBField(description="The maturity"),
] = "10y",
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Select Treasury Constant Maturity.
Get data for Selected Treasury Constant Maturity Minus Federal Funds Rate
Constant maturity is the theoretical value of a U.S. Treasury that is based on recent values of auctioned U.S.
Treasuries. The value is obtained by the U.S. Treasury on a daily basis through interpolation of the Treasury
yield curve which, in turn, is based on closing bid-yields of actively-traded Treasury securities.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
maturity : Optional[Literal['10y', '5y', '1y', '6m', '3m']]
The maturity
Returns
-------
OBBject
results : list[SelectedTreasuryConstantMaturity]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SelectedTreasuryConstantMaturity
--------------------------------
date : date
The date of the data.
rate : Optional[float]
Selected Treasury Constant Maturity Rate.
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.spreads.tcm_effr(provider='fred')
>>> obb.fixedincome.spreads.tcm_effr(maturity='10y', provider='fred')
""" # noqa: E501
return self._run(
"/fixedincome/spreads/tcm_effr",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.spreads.tcm_effr",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
"maturity": maturity,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def treasury_effr(
self,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
maturity: Annotated[
Optional[Literal["3m", "6m"]], OpenBBField(description="The maturity")
] = "3m",
provider: Annotated[
Optional[Literal["fred"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred."
),
] = None,
**kwargs
) -> OBBject:
"""Select Treasury Bill.
Get Selected Treasury Bill Minus Federal Funds Rate.
Constant maturity is the theoretical value of a U.S. Treasury that is based on recent values of
auctioned U.S. Treasuries.
The value is obtained by the U.S. Treasury on a daily basis through interpolation of the Treasury
yield curve which, in turn, is based on closing bid-yields of actively-traded Treasury securities.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
maturity : Optional[Literal['3m', '6m']]
The maturity
Returns
-------
OBBject
results : list[SelectedTreasuryBill]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SelectedTreasuryBill
--------------------
date : date
The date of the data.
rate : Optional[float]
SelectedTreasuryBill Rate.
Examples
--------
>>> from openbb import obb
>>> obb.fixedincome.spreads.treasury_effr(provider='fred')
>>> obb.fixedincome.spreads.treasury_effr(maturity='6m', provider='fred')
""" # noqa: E501
return self._run(
"/fixedincome/spreads/treasury_effr",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"fixedincome.spreads.treasury_effr",
("fred",),
)
},
standard_params={
"start_date": start_date,
"end_date": end_date,
"maturity": maturity,
},
extra_params=kwargs,
)
)

View File

@@ -1,176 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
from typing import Literal, Optional
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_index(Container):
"""/index
available
constituents
/price
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def available(
self,
provider: Annotated[
Optional[Literal["fmp", "yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""All indices available from a given provider.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, yfinance.
Returns
-------
OBBject
results : list[AvailableIndices]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
AvailableIndices
----------------
name : Optional[str]
Name of the index.
currency : Optional[str]
Currency the index is traded in.
stock_exchange : Optional[str]
Stock exchange where the index is listed. (provider: fmp)
exchange_short_name : Optional[str]
Short name of the stock exchange where the index is listed. (provider: fmp)
code : Optional[str]
ID code for keying the index in the OpenBB Terminal. (provider: yfinance)
symbol : Optional[str]
Symbol for the index. (provider: yfinance)
Examples
--------
>>> from openbb import obb
>>> obb.index.available(provider='fmp')
>>> obb.index.available(provider='yfinance')
""" # noqa: E501
return self._run(
"/index/available",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"index.available",
("fmp", "yfinance"),
)
},
standard_params={},
extra_params=kwargs,
)
)
@exception_handler
@validate
def constituents(
self,
symbol: Annotated[str, OpenBBField(description="Symbol to get data for.")],
provider: Annotated[
Optional[Literal["fmp"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp."
),
] = None,
**kwargs
) -> OBBject:
"""Get Index Constituents.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp.
symbol : str
Symbol to get data for.
Returns
-------
OBBject
results : list[IndexConstituents]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
IndexConstituents
-----------------
symbol : str
Symbol representing the entity requested in the data.
name : Optional[str]
Name of the constituent company in the index.
sector : Optional[str]
Sector the constituent company in the index belongs to. (provider: fmp)
sub_sector : Optional[str]
Sub-sector the constituent company in the index belongs to. (provider: fmp)
headquarter : Optional[str]
Location of the headquarter of the constituent company in the index. (provider: fmp)
date_first_added : Optional[Union[date, str]]
Date the constituent company was added to the index. (provider: fmp)
cik : Optional[int]
Central Index Key (CIK) for the requested entity. (provider: fmp)
founded : Optional[Union[date, str]]
Founding year of the constituent company in the index. (provider: fmp)
Examples
--------
>>> from openbb import obb
>>> obb.index.constituents(symbol='dowjones', provider='fmp')
""" # noqa: E501
return self._run(
"/index/constituents",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"index.constituents",
("fmp",),
)
},
standard_params={
"symbol": symbol,
},
extra_params=kwargs,
)
)
@property
def price(self):
# pylint: disable=import-outside-toplevel
from . import index_price
return index_price.ROUTER_index_price(command_runner=self._command_runner)

View File

@@ -1,163 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_index_price(Container):
"""/index/price
historical
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def historical(
self,
symbol: Annotated[
Union[str, list[str]],
OpenBBField(
description="Symbol to get data for. Multiple comma separated items allowed for provider(s): fmp, intrinio, polygon, yfinance."
),
],
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fmp", "intrinio", "polygon", "yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, polygon, yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Historical Index Levels.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, polygon, yfinance.
symbol : Union[str, list[str]]
Symbol to get data for. Multiple comma separated items allowed for provider(s): fmp, intrinio, polygon, yfinance.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
interval : str
Time interval of the data to return. (provider: fmp, polygon, yfinance)
Choices for fmp: '1m', '5m', '15m', '30m', '1h', '4h', '1d'
Choices for yfinance: '1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1W', '1M', '1Q'
limit : Optional[int]
The number of data entries to return. (provider: intrinio, polygon)
sort : Literal['asc', 'desc']
Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date. (provider: polygon)
Returns
-------
OBBject
results : list[IndexHistorical]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
IndexHistorical
---------------
date : Union[date, datetime]
The date of the data.
open : Optional[Annotated[float, Strict(strict=True)]]
The open price.
high : Optional[Annotated[float, Strict(strict=True)]]
The high price.
low : Optional[Annotated[float, Strict(strict=True)]]
The low price.
close : Optional[Annotated[float, Strict(strict=True)]]
The close price.
volume : Optional[int]
The trading volume.
vwap : Optional[float]
Volume Weighted Average Price over the period. (provider: fmp)
change : Optional[float]
Change in the price from the previous close. (provider: fmp)
change_percent : Optional[float]
Change in the price from the previous close, as a normalized percent. (provider: fmp)
transactions : Optional[Annotated[int, Gt(gt=0)]]
Number of transactions for the symbol in the time period. (provider: polygon)
Examples
--------
>>> from openbb import obb
>>> obb.index.price.historical(symbol='^GSPC', provider='fmp')
>>> # Not all providers have the same symbols.
>>> obb.index.price.historical(symbol='SPX', provider='intrinio')
""" # noqa: E501
return self._run(
"/index/price/historical",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"index.price.historical",
("fmp", "intrinio", "polygon", "yfinance"),
)
},
standard_params={
"symbol": symbol,
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"symbol": {
"fmp": {"multiple_items_allowed": True, "choices": None},
"intrinio": {"multiple_items_allowed": True, "choices": None},
"polygon": {"multiple_items_allowed": True, "choices": None},
"yfinance": {"multiple_items_allowed": True, "choices": None},
},
"interval": {
"fmp": {
"multiple_items_allowed": False,
"choices": ["1m", "5m", "15m", "30m", "1h", "4h", "1d"],
},
"yfinance": {
"multiple_items_allowed": False,
"choices": [
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
],
},
},
},
)
)

View File

@@ -1,463 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from annotated_types import Ge
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_news(Container):
"""/news
company
world
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def company(
self,
symbol: Annotated[
Union[str, None, list[Optional[str]]],
OpenBBField(
description="Symbol to get data for. Multiple comma separated items allowed for provider(s): benzinga, fmp, intrinio, polygon, tiingo, yfinance."
),
] = None,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
limit: Annotated[
Optional[Annotated[int, Ge(ge=0)]],
OpenBBField(description="The number of data entries to return."),
] = 2500,
provider: Annotated[
Optional[
Literal["benzinga", "fmp", "intrinio", "polygon", "tiingo", "yfinance"]
],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: benzinga, fmp, intrinio, polygon, tiingo, yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Company News. Get news for one or more companies.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: benzinga, fmp, intrinio, polygon, tiingo, yfinance.
symbol : Union[str, None, list[Optional[str]]]
Symbol to get data for. Multiple comma separated items allowed for provider(s): benzinga, fmp, intrinio, polygon, tiingo, yfinance.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
limit : Optional[Annotated[int, Ge(ge=0)]]
The number of data entries to return.
date : Optional[date]
A specific date to get data for. (provider: benzinga)
display : Literal['headline', 'abstract', 'full']
Specify headline only (headline), headline + teaser (abstract), or headline + full body (full). (provider: benzinga)
updated_since : Optional[int]
Number of seconds since the news was updated. (provider: benzinga)
published_since : Optional[int]
Number of seconds since the news was published. (provider: benzinga)
sort : Literal['id', 'created', 'updated']
Key to sort the news by. (provider: benzinga)
order : Literal['asc', 'desc']
Order to sort the news by. (provider: benzinga)
isin : Optional[str]
The company's ISIN. (provider: benzinga)
cusip : Optional[str]
The company's CUSIP. (provider: benzinga)
channels : Optional[str]
Channels of the news to retrieve. (provider: benzinga)
topics : Optional[str]
Topics of the news to retrieve. (provider: benzinga)
authors : Optional[str]
Authors of the news to retrieve. (provider: benzinga)
content_types : Optional[str]
Content types of the news to retrieve. (provider: benzinga)
page : Optional[int]
Page number of the results. Use in combination with limit. (provider: fmp)
source : Union[Literal['yahoo', 'moody', 'moody_us_news', 'moody_us_press_releases'], None, str]
The source of the news article. (provider: intrinio)
sentiment : Optional[Literal['positive', 'neutral', 'negative']]
Return news only from this source. (provider: intrinio)
language : Optional[str]
Filter by language. Unsupported for yahoo source. (provider: intrinio)
topic : Optional[str]
Filter by topic. Unsupported for yahoo source. (provider: intrinio)
word_count_greater_than : Optional[int]
News stories will have a word count greater than this value. Unsupported for yahoo source. (provider: intrinio)
word_count_less_than : Optional[int]
News stories will have a word count less than this value. Unsupported for yahoo source. (provider: intrinio)
is_spam : Optional[bool]
Filter whether it is marked as spam or not. Unsupported for yahoo source. (provider: intrinio)
business_relevance_greater_than : Optional[float]
News stories will have a business relevance score more than this value. Unsupported for yahoo source. Value is a decimal between 0 and 1. (provider: intrinio)
business_relevance_less_than : Optional[float]
News stories will have a business relevance score less than this value. Unsupported for yahoo source. Value is a decimal between 0 and 1. (provider: intrinio)
offset : Optional[int]
Page offset, used in conjunction with limit. (provider: tiingo)
Returns
-------
OBBject
results : list[CompanyNews]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CompanyNews
-----------
date : datetime
The date of the data. Here it is the published date of the article.
title : str
Title of the article.
text : Optional[str]
Text/body of the article.
images : Optional[list[Dict[str, str]]]
Images associated with the article.
url : str
URL to the article.
symbols : Optional[str]
Symbols associated with the article.
id : Optional[str]
Article ID. (provider: benzinga, intrinio, polygon)
author : Optional[str]
Author of the article. (provider: benzinga)
teaser : Optional[str]
Teaser of the news. (provider: benzinga)
channels : Optional[str]
Channels associated with the news. (provider: benzinga)
stocks : Optional[str]
Stocks associated with the news. (provider: benzinga)
tags : Optional[str]
Tags associated with the news. (provider: benzinga, polygon, tiingo)
updated : Optional[datetime]
Updated date of the news. (provider: benzinga)
source : Optional[str]
Name of the news source. (provider: fmp);
The source of the news article. (provider: intrinio);
Source of the article. (provider: polygon);
News source. (provider: tiingo);
Source of the news article (provider: yfinance)
summary : Optional[str]
The summary of the news article. (provider: intrinio)
topics : Optional[str]
The topics related to the news article. (provider: intrinio)
word_count : Optional[int]
The word count of the news article. (provider: intrinio)
business_relevance : Optional[float]
How strongly correlated the news article is to the business (provider: intrinio)
sentiment : Optional[str]
The sentiment of the news article - i.e, negative, positive. (provider: intrinio)
sentiment_confidence : Optional[float]
The confidence score of the sentiment rating. (provider: intrinio)
language : Optional[str]
The language of the news article. (provider: intrinio)
spam : Optional[bool]
Whether the news article is spam. (provider: intrinio)
copyright : Optional[str]
The copyright notice of the news article. (provider: intrinio)
security : Optional[IntrinioSecurity]
The Intrinio Security object. Contains the security details related to the news article. (provider: intrinio)
amp_url : Optional[str]
AMP URL. (provider: polygon)
publisher : Optional[PolygonPublisher]
Publisher of the article. (provider: polygon)
article_id : Optional[int]
Unique ID of the news article. (provider: tiingo)
crawl_date : Optional[datetime]
Date the news article was crawled. (provider: tiingo)
Examples
--------
>>> from openbb import obb
>>> obb.news.company(provider='benzinga')
>>> obb.news.company(limit=100, provider='benzinga')
>>> # Get news on the specified dates.
>>> obb.news.company(symbol='AAPL', start_date='2024-02-01', end_date='2024-02-07', provider='intrinio')
>>> # Display the headlines of the news.
>>> obb.news.company(symbol='AAPL', display='headline', provider='benzinga')
>>> # Get news for multiple symbols.
>>> obb.news.company(symbol='aapl,tsla', provider='fmp')
>>> # Get news company's ISIN.
>>> obb.news.company(symbol='NVDA', isin='US0378331005', provider='benzinga')
""" # noqa: E501
return self._run(
"/news/company",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"news.company",
(
"benzinga",
"fmp",
"intrinio",
"polygon",
"tiingo",
"yfinance",
),
)
},
standard_params={
"symbol": symbol,
"start_date": start_date,
"end_date": end_date,
"limit": limit,
},
extra_params=kwargs,
info={
"symbol": {
"benzinga": {"multiple_items_allowed": True, "choices": None},
"fmp": {"multiple_items_allowed": True, "choices": None},
"intrinio": {"multiple_items_allowed": True, "choices": None},
"polygon": {"multiple_items_allowed": True, "choices": None},
"tiingo": {"multiple_items_allowed": True, "choices": None},
"yfinance": {"multiple_items_allowed": True, "choices": None},
},
"order": {
"polygon": {
"multiple_items_allowed": False,
"choices": ["asc", "desc"],
}
},
"source": {
"intrinio": {
"multiple_items_allowed": False,
"choices": [
"yahoo",
"moody",
"moody_us_news",
"moody_us_press_releases",
],
},
"tiingo": {"multiple_items_allowed": True, "choices": None},
},
"sentiment": {
"intrinio": {
"multiple_items_allowed": False,
"choices": ["positive", "neutral", "negative"],
}
},
},
)
)
@exception_handler
@validate
def world(
self,
limit: Annotated[
int,
OpenBBField(
description="The number of data entries to return. The number of articles to return."
),
] = 2500,
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["benzinga", "fmp", "intrinio", "tiingo"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: benzinga, fmp, intrinio, tiingo."
),
] = None,
**kwargs
) -> OBBject:
"""World News. Global news data.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: benzinga, fmp, intrinio, tiingo.
limit : int
The number of data entries to return. The number of articles to return.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
date : Optional[date]
A specific date to get data for. (provider: benzinga)
display : Literal['headline', 'abstract', 'full']
Specify headline only (headline), headline + teaser (abstract), or headline + full body (full). (provider: benzinga)
updated_since : Optional[int]
Number of seconds since the news was updated. (provider: benzinga)
published_since : Optional[int]
Number of seconds since the news was published. (provider: benzinga)
sort : Literal['id', 'created', 'updated']
Key to sort the news by. (provider: benzinga)
order : Literal['asc', 'desc']
Order to sort the news by. (provider: benzinga)
isin : Optional[str]
The ISIN of the news to retrieve. (provider: benzinga)
cusip : Optional[str]
The CUSIP of the news to retrieve. (provider: benzinga)
channels : Optional[str]
Channels of the news to retrieve. (provider: benzinga)
topics : Optional[str]
Topics of the news to retrieve. (provider: benzinga)
authors : Optional[str]
Authors of the news to retrieve. (provider: benzinga)
content_types : Optional[str]
Content types of the news to retrieve. (provider: benzinga)
source : Union[Literal['yahoo', 'moody', 'moody_us_news', 'moody_us_press_releases'], None, str]
The source of the news article. (provider: intrinio)
sentiment : Optional[Literal['positive', 'neutral', 'negative']]
Return news only from this source. (provider: intrinio)
language : Optional[str]
Filter by language. Unsupported for yahoo source. (provider: intrinio)
topic : Optional[str]
Filter by topic. Unsupported for yahoo source. (provider: intrinio)
word_count_greater_than : Optional[int]
News stories will have a word count greater than this value. Unsupported for yahoo source. (provider: intrinio)
word_count_less_than : Optional[int]
News stories will have a word count less than this value. Unsupported for yahoo source. (provider: intrinio)
is_spam : Optional[bool]
Filter whether it is marked as spam or not. Unsupported for yahoo source. (provider: intrinio)
business_relevance_greater_than : Optional[float]
News stories will have a business relevance score more than this value. Unsupported for yahoo source. Value is a decimal between 0 and 1. (provider: intrinio)
business_relevance_less_than : Optional[float]
News stories will have a business relevance score less than this value. Unsupported for yahoo source. Value is a decimal between 0 and 1. (provider: intrinio)
offset : Optional[int]
Page offset, used in conjunction with limit. (provider: tiingo)
Returns
-------
OBBject
results : list[WorldNews]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
WorldNews
---------
date : datetime
The date of the data. The published date of the article.
title : str
Title of the article.
images : Optional[list[Dict[str, str]]]
Images associated with the article.
text : Optional[str]
Text/body of the article.
url : Optional[str]
URL to the article.
id : Optional[str]
Article ID. (provider: benzinga, intrinio)
author : Optional[str]
Author of the news. (provider: benzinga)
teaser : Optional[str]
Teaser of the news. (provider: benzinga)
channels : Optional[str]
Channels associated with the news. (provider: benzinga)
stocks : Optional[str]
Stocks associated with the news. (provider: benzinga)
tags : Optional[str]
Tags associated with the news. (provider: benzinga, tiingo)
updated : Optional[datetime]
Updated date of the news. (provider: benzinga)
site : Optional[str]
News source. (provider: fmp, tiingo)
source : Optional[str]
The source of the news article. (provider: intrinio)
summary : Optional[str]
The summary of the news article. (provider: intrinio)
topics : Optional[str]
The topics related to the news article. (provider: intrinio)
word_count : Optional[int]
The word count of the news article. (provider: intrinio)
business_relevance : Optional[float]
How strongly correlated the news article is to the business (provider: intrinio)
sentiment : Optional[str]
The sentiment of the news article - i.e, negative, positive. (provider: intrinio)
sentiment_confidence : Optional[float]
The confidence score of the sentiment rating. (provider: intrinio)
language : Optional[str]
The language of the news article. (provider: intrinio)
spam : Optional[bool]
Whether the news article is spam. (provider: intrinio)
copyright : Optional[str]
The copyright notice of the news article. (provider: intrinio)
company : Optional[IntrinioCompany]
The Intrinio Company object. Contains details company reference data. (provider: intrinio)
security : Optional[IntrinioSecurity]
The Intrinio Security object. Contains the security details related to the news article. (provider: intrinio)
symbols : Optional[str]
Ticker tagged in the fetched news. (provider: tiingo)
article_id : Optional[int]
Unique ID of the news article. (provider: tiingo)
crawl_date : Optional[datetime]
Date the news article was crawled. (provider: tiingo)
Examples
--------
>>> from openbb import obb
>>> obb.news.world(provider='fmp')
>>> obb.news.world(limit=100, provider='intrinio')
>>> # Get news on the specified dates.
>>> obb.news.world(start_date='2024-02-01', end_date='2024-02-07', provider='intrinio')
>>> # Display the headlines of the news.
>>> obb.news.world(display='headline', provider='benzinga')
>>> # Get news by topics.
>>> obb.news.world(topics='finance', provider='benzinga')
>>> # Get news by source using 'tingo' as provider.
>>> obb.news.world(provider='tiingo', source='bloomberg')
""" # noqa: E501
return self._run(
"/news/world",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"news.world",
("benzinga", "fmp", "intrinio", "tiingo"),
)
},
standard_params={
"limit": limit,
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"source": {
"tiingo": {"multiple_items_allowed": True, "choices": None}
}
},
)
)

View File

@@ -1,30 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
from openbb_core.app.static.container import Container
class ROUTER_regulators(Container):
"""/regulators
/cftc
/sec
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@property
def cftc(self):
# pylint: disable=import-outside-toplevel
from . import regulators_cftc
return regulators_cftc.ROUTER_regulators_cftc(
command_runner=self._command_runner
)
@property
def sec(self):
# pylint: disable=import-outside-toplevel
from . import regulators_sec
return regulators_sec.ROUTER_regulators_sec(command_runner=self._command_runner)

View File

@@ -1,248 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_regulators_cftc(Container):
"""/regulators/cftc
cot
cot_search
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def cot(
self,
id: Annotated[
str,
OpenBBField(
description="A string with the CFTC market code or other identifying string, such as the contract market name, commodity name, or commodity group - i.e, 'gold' or 'japanese yen'.Default report is Fed Funds Futures. Use the 'cftc_market_code' for an exact match."
),
] = "045601",
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(
description="Start date of the data, in YYYY-MM-DD format. Default is the most recent report."
),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["cftc"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: cftc."
),
] = None,
**kwargs
) -> OBBject:
"""Get Commitment of Traders Reports.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: cftc.
id : str
A string with the CFTC market code or other identifying string, such as the contract market name, commodity name, or commodity group - i.e, 'gold' or 'japanese yen'.Default report is Fed Funds Futures. Use the 'cftc_market_code' for an exact match.
start_date : Union[date, None, str]
Start date of the data, in YYYY-MM-DD format. Default is the most recent report.
end_date : Union[date, None, str]
End date of the data, in YYYY-MM-DD format.
report_type : Literal['legacy', 'disaggregated', 'financial', 'supplemental']
The type of report to retrieve. Set `id` as 'all' to return all items in the report
type (default date range returns the latest report). The Legacy report is broken down by exchange
with reported open interest further broken down into three trader classifications: commercial,
non-commercial and non-reportable. The Disaggregated reports are broken down by Agriculture and
Natural Resource contracts. The Disaggregated reports break down reportable open interest positions
into four classifications: Producer/Merchant, Swap Dealers, Managed Money and Other Reportables.
The Traders in Financial Futures (TFF) report includes financial contracts. The TFF report breaks
down the reported open interest into five classifications: Dealer, Asset Manager, Leveraged Money,
Other Reportables and Non-Reportables. (provider: cftc)
futures_only : bool
Returns the futures-only report. Default is False, for the combined report. (provider: cftc)
Returns
-------
OBBject
results : list[COT]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
COT
---
date : date
The date of the data.
report_week : Optional[str]
Report week for the year.
market_and_exchange_names : Optional[str]
Market and exchange names.
cftc_contract_market_code : Optional[str]
CFTC contract market code.
cftc_market_code : Optional[str]
CFTC market code.
cftc_region_code : Optional[str]
CFTC region code.
cftc_commodity_code : Optional[str]
CFTC commodity code.
cftc_contract_market_code_quotes : Optional[str]
CFTC contract market code quotes.
cftc_market_code_quotes : Optional[str]
CFTC market code quotes.
cftc_commodity_code_quotes : Optional[str]
CFTC commodity code quotes.
cftc_subgroup_code : Optional[str]
CFTC subgroup code.
commodity : Optional[str]
Commodity.
commodity_group : Optional[str]
Commodity group name.
commodity_subgroup : Optional[str]
Commodity subgroup name.
futonly_or_combined : Optional[str]
If the report is futures-only or combined.
contract_units : Optional[str]
Contract units.
Examples
--------
>>> from openbb import obb
>>> # Get the latest report for all items classified as, GOLD.
>>> obb.regulators.cftc.cot(id='gold', provider='cftc')
>>> # Enter the entire history for a single CFTC Market Contract Code.
>>> obb.regulators.cftc.cot(id='088691', provider='cftc')
>>> # Get the report for futures only.
>>> obb.regulators.cftc.cot(id='088691', futures_only=True, provider='cftc')
>>> # Get the most recent Commodity Index Traders Supplemental Report.
>>> obb.regulators.cftc.cot(id='all', report_type='supplemental', provider='cftc')
""" # noqa: E501
return self._run(
"/regulators/cftc/cot",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"regulators.cftc.cot",
("cftc",),
)
},
standard_params={
"id": id,
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"report_type": {
"cftc": {
"multiple_items_allowed": False,
"choices": [
"legacy",
"disaggregated",
"financial",
"supplemental",
],
}
}
},
)
)
@exception_handler
@validate
def cot_search(
self,
query: Annotated[str, OpenBBField(description="Search query.")] = "",
provider: Annotated[
Optional[Literal["cftc"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: cftc."
),
] = None,
**kwargs
) -> OBBject:
"""Get the current Commitment of Traders Reports.
Search a list of the current Commitment of Traders Reports series information.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: cftc.
query : str
Search query.
Returns
-------
OBBject
results : list[COTSearch]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
COTSearch
---------
code : str
CFTC market contract code of the report.
name : str
Name of the underlying asset.
category : Optional[str]
Category of the underlying asset.
subcategory : Optional[str]
Subcategory of the underlying asset.
units : Optional[str]
The units for one contract.
symbol : Optional[str]
Symbol representing the entity requested in the data.
commodity : Optional[str]
Name of the commodity. (provider: cftc)
Examples
--------
>>> from openbb import obb
>>> obb.regulators.cftc.cot_search(provider='cftc')
>>> obb.regulators.cftc.cot_search(query='gold', provider='cftc')
""" # noqa: E501
return self._run(
"/regulators/cftc/cot_search",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"regulators.cftc.cot_search",
("cftc",),
)
},
standard_params={
"query": query,
},
extra_params=kwargs,
)
)

View File

@@ -1,613 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
from typing import Literal, Optional
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_regulators_sec(Container):
"""/regulators/sec
cik_map
filing_headers
htm_file
institutions_search
rss_litigation
schema_files
sic_search
symbol_map
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def cik_map(
self,
symbol: Annotated[str, OpenBBField(description="Symbol to get data for.")],
provider: Annotated[
Optional[Literal["sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec."
),
] = None,
**kwargs
) -> OBBject:
"""Map a ticker symbol to a CIK number.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec.
symbol : str
Symbol to get data for.
use_cache : Optional[bool]
Whether or not to use cache for the request, default is True. (provider: sec)
Returns
-------
OBBject
results : CikMap
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CikMap
------
cik : Optional[Union[str, int]]
Central Index Key (CIK) for the requested entity.
Examples
--------
>>> from openbb import obb
>>> obb.regulators.sec.cik_map(symbol='MSFT', provider='sec')
""" # noqa: E501
return self._run(
"/regulators/sec/cik_map",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"regulators.sec.cik_map",
("sec",),
)
},
standard_params={
"symbol": symbol,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def filing_headers(
self,
provider: Annotated[
Optional[Literal["sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec."
),
] = None,
**kwargs
) -> OBBject:
"""Download the index headers, and cover page if available, for any SEC filing.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec.
url : str
URL for the SEC filing. The specific URL is not directly used or downloaded, but is used to generate the base URL for the filing. e.g. https://www.sec.gov/Archives/edgar/data/317540/000031754024000045/coke-20240731.htm and https://www.sec.gov/Archives/edgar/data/317540/000031754024000045/ are both valid URLs for the same filing. (provider: sec)
use_cache : bool
Use cache for the index headers and cover page. Default is True. (provider: sec)
Returns
-------
OBBject
results : SecFiling
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SecFiling
---------
base_url : Optional[str]
Base URL of the filing. (provider: sec)
name : Optional[str]
Name of the entity filing. (provider: sec)
cik : Optional[str]
Central Index Key. (provider: sec)
trading_symbols : Optional[list]
Trading symbols, if available. (provider: sec)
sic : Optional[str]
Standard Industrial Classification. (provider: sec)
sic_organization_name : Optional[str]
SIC Organization Name. (provider: sec)
filing_date : Optional[date]
Filing date. (provider: sec)
period_ending : Optional[date]
Date of the ending period for the filing, if available. (provider: sec)
fiscal_year_end : Optional[str]
Fiscal year end of the entity, if available. Format: MM-DD (provider: sec)
document_type : Optional[str]
Specific SEC filing type. (provider: sec)
has_cover_page : Optional[bool]
True if the filing has a cover page. (provider: sec)
description : Optional[str]
Description of attached content, mostly applicable to 8-K filings. (provider: sec)
cover_page : Optional[dict]
Cover page information, if available. (provider: sec)
document_urls : Optional[list]
list of files associated with the filing. (provider: sec)
Examples
--------
>>> from openbb import obb
>>> obb.regulators.sec.filing_headers(url='https://www.sec.gov/Archives/edgar/data/317540/000119312524076556/d645509ddef14a.htm', provider='sec')
""" # noqa: E501
return self._run(
"/regulators/sec/filing_headers",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"regulators.sec.filing_headers",
("sec",),
)
},
standard_params={},
extra_params=kwargs,
info={"url": {"sec": {"x-widget_config": {"label": "Filing URL"}}}},
)
)
@exception_handler
@validate
def htm_file(
self,
provider: Annotated[
Optional[Literal["sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec."
),
] = None,
**kwargs
) -> OBBject:
"""Download a raw HTML object from the SEC website.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec.
url : str
URL for the SEC filing. (provider: sec)
use_cache : bool
Cache the file for use later. Default is True. (provider: sec)
Returns
-------
OBBject
results : SecHtmFile
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SecHtmFile
----------
url : Optional[str]
URL of the downloaded file. (provider: sec)
content : Optional[str]
Raw content of the HTM/HTML file. (provider: sec)
Examples
--------
>>> from openbb import obb
>>> obb.regulators.sec.htm_file(url='https://www.sec.gov/Archives/edgar/data/1723690/000119312525030074/d866336dex991.htm', provider='sec')
""" # noqa: E501
return self._run(
"/regulators/sec/htm_file",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"regulators.sec.htm_file",
("sec",),
)
},
standard_params={},
extra_params=kwargs,
)
)
@exception_handler
@validate
def institutions_search(
self,
query: Annotated[str, OpenBBField(description="Search query.")] = "",
provider: Annotated[
Optional[Literal["sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec."
),
] = None,
**kwargs
) -> OBBject:
"""Search SEC-regulated institutions by name and return a list of results with CIK numbers.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec.
query : str
Search query.
use_cache : Optional[bool]
Whether or not to use cache. (provider: sec)
Returns
-------
OBBject
results : list[InstitutionsSearch]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
InstitutionsSearch
------------------
name : Optional[str]
The name of the institution. (provider: sec)
cik : Optional[Union[str, int]]
Central Index Key (CIK) (provider: sec)
Examples
--------
>>> from openbb import obb
>>> obb.regulators.sec.institutions_search(provider='sec')
>>> obb.regulators.sec.institutions_search(query='blackstone real estate', provider='sec')
""" # noqa: E501
return self._run(
"/regulators/sec/institutions_search",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"regulators.sec.institutions_search",
("sec",),
)
},
standard_params={
"query": query,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def rss_litigation(
self,
provider: Annotated[
Optional[Literal["sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec."
),
] = None,
**kwargs
) -> OBBject:
"""Get the RSS feed that provides links to litigation releases concerning civil lawsuits brought by the Commission in federal court.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec.
Returns
-------
OBBject
results : list[RssLitigation]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
RssLitigation
-------------
published : Optional[datetime]
The date of publication. (provider: sec)
title : Optional[str]
The title of the release. (provider: sec)
summary : Optional[str]
Short summary of the release. (provider: sec)
id : Optional[str]
The identifier associated with the release. (provider: sec)
link : Optional[str]
URL to the release. (provider: sec)
Examples
--------
>>> from openbb import obb
>>> obb.regulators.sec.rss_litigation(provider='sec')
""" # noqa: E501
return self._run(
"/regulators/sec/rss_litigation",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"regulators.sec.rss_litigation",
("sec",),
)
},
standard_params={},
extra_params=kwargs,
)
)
@exception_handler
@validate
def schema_files(
self,
query: Annotated[str, OpenBBField(description="Search query.")] = "",
provider: Annotated[
Optional[Literal["sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec."
),
] = None,
**kwargs
) -> OBBject:
"""Use tool for navigating the directory of SEC XML schema files by year.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec.
query : str
Search query.
url : Optional[str]
Enter an optional URL path to fetch the next level. (provider: sec)
use_cache : Optional[bool]
Whether or not to use cache. (provider: sec)
Returns
-------
OBBject
results : SchemaFiles
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SchemaFiles
-----------
files : Optional[list[str]]
Dictionary of URLs to SEC Schema Files (provider: sec)
Examples
--------
>>> from openbb import obb
>>> obb.regulators.sec.schema_files(provider='sec')
>>> # Get a list of schema files.
>>> data = obb.regulators.sec.schema_files().results
>>> data.files[0]
>>> 'https://xbrl.fasb.org/us-gaap/'
>>> # The directory structure can be navigated by constructing a URL from the 'results' list.
>>> url = data.files[0]+data.files[-1]
>>> # The URL base will always be the 0 position in the list, feed the URL back in as a parameter.
>>> obb.regulators.sec.schema_files(url=url).results.files
>>> ['https://xbrl.fasb.org/us-gaap/2024/'
>>> 'USGAAP2024Filelist.xml'
>>> 'dis/'
>>> 'dqcrules/'
>>> 'ebp/'
>>> 'elts/'
>>> 'entire/'
>>> 'meta/'
>>> 'stm/'
>>> 'us-gaap-2024.zip']
""" # noqa: E501
return self._run(
"/regulators/sec/schema_files",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"regulators.sec.schema_files",
("sec",),
)
},
standard_params={
"query": query,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def sic_search(
self,
query: Annotated[str, OpenBBField(description="Search query.")] = "",
provider: Annotated[
Optional[Literal["sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec."
),
] = None,
**kwargs
) -> OBBject:
"""Search for Industry Titles, Reporting Office, and SIC Codes. An empty query string returns all results.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec.
query : str
Search query.
use_cache : Optional[bool]
Whether or not to use cache. (provider: sec)
Returns
-------
OBBject
results : list[SicSearch]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SicSearch
---------
sic : Optional[int]
Sector Industrial Code (SIC) (provider: sec)
industry : Optional[str]
Industry title. (provider: sec)
office : Optional[str]
Reporting office within the Corporate Finance Office (provider: sec)
Examples
--------
>>> from openbb import obb
>>> obb.regulators.sec.sic_search(provider='sec')
>>> obb.regulators.sec.sic_search(query='real estate investment trusts', provider='sec')
""" # noqa: E501
return self._run(
"/regulators/sec/sic_search",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"regulators.sec.sic_search",
("sec",),
)
},
standard_params={
"query": query,
},
extra_params=kwargs,
)
)
@exception_handler
@validate
def symbol_map(
self,
query: Annotated[str, OpenBBField(description="Search query.")],
use_cache: Annotated[
Optional[bool],
OpenBBField(
description="Whether or not to use cache. If True, cache will store for seven days."
),
] = True,
provider: Annotated[
Optional[Literal["sec"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec."
),
] = None,
**kwargs
) -> OBBject:
"""Map a CIK number to a ticker symbol, leading 0s can be omitted or included.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: sec.
query : str
Search query.
use_cache : Optional[bool]
Whether or not to use cache. If True, cache will store for seven days.
Returns
-------
OBBject
results : SymbolMap
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
SymbolMap
---------
symbol : Optional[str]
Symbol representing the entity requested in the data. (provider: sec)
Examples
--------
>>> from openbb import obb
>>> obb.regulators.sec.symbol_map(query='0000789019', provider='sec')
""" # noqa: E501
return self._run(
"/regulators/sec/symbol_map",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"regulators.sec.symbol_map",
("sec",),
)
},
standard_params={
"query": query,
"use_cache": use_cache,
},
extra_params=kwargs,
)
)

View File

@@ -1,439 +0,0 @@
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
from typing import Any, Literal, Optional
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_uscongress(Container):
"""/uscongress
bill_info
bill_text
bill_text_urls
bills
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def bill_info(
self,
provider: Annotated[
Optional[Literal["congress_gov"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: congress_gov."
),
] = None,
**kwargs
) -> OBBject:
"""Get summary, status, and other metadata for a specific bill.
Enter the URL of the bill as: https://api.congress.gov/v3/bill/119/hr/131?
URLs for bills can be found from the `uscongress.bills` endpoint.
The raw JSON response from the API will be returned along with a formatted
text version of the key information from the raw response.
In OpenBB Workspace, this command returns as a Markdown widget.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: congress_gov.
bill_url : Optional[str]
Enter a base URL of a bill (e.g., 'https://api.congress.gov/v3/bill/119/s/1947?format=json'). Alternatively, you can enter a bill number (e.g., '119/s/1947'). (provider: congress_gov)
Returns
-------
OBBject
results : CongressBillInfo
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CongressBillInfo
----------------
markdown_content : Optional[str]
Aggregated metadata for the bill in Markdown format. (provider: congress_gov)
raw_data : Optional[dict[str, Any]]
Raw JSON data from the collected bill information. (provider: congress_gov)
Examples
--------
>>> from openbb import obb
>>> obb.uscongress.bill_info(provider='congress_gov', bill_url='https://api.congress.gov/v3/bill/119/s/1947?')
>>> # The bill URL can be shortened to just the bill number (e.g., '119/s/1947').
>>> obb.uscongress.bill_info(bill_url='119/s/1947', provider='congress_gov')
""" # noqa: E501
return self._run(
"/uscongress/bill_info",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"uscongress.bill_info",
("congress_gov",),
)
},
standard_params={},
extra_params=kwargs,
info={
"bill_url": {
"congress_gov": {
"x-widget_config": {
"label": "Bill URL",
"description": "Enter a base URL of a bill (e.g., 'https://api.congress.gov/v3/bill/119/s/1947?'). Alternatively, you can enter a bill number (e.g., '119/s/1947'). Create a group on the 'Bill URL' field of the 'Congressional Bills' widget and click on the cell to view summary and metadata.",
"value": "119/hr/1",
}
}
}
},
),
)
@exception_handler
@validate
def bill_text(
self,
provider: Annotated[
Optional[Literal["congress_gov"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: congress_gov."
),
] = None,
**kwargs
) -> OBBject:
"""Download the text of a specific bill in PDF format.
This endpoint accepts a list of URLs to download and returns the base64-encoded
PDF content along with the filename.
In OpenBB Workspace, this command returns as a multi-file viewer widget.
This command outputs only the results array of the OBBject.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: congress_gov.
urls : Union[str, list[str], dict[str, list[str]], None]
list of direct bill URLs to download. Multiple comma separated items allowed. (provider: congress_gov)
Returns
-------
OBBject
results : list[CongressBillText]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CongressBillText
----------------
error_type : Optional[str]
Error type if any error occurs during the download. (provider: congress_gov)
content : Optional[str]
Base64-encoded PDF document. (provider: congress_gov)
filename : Optional[str]
The filename of the downloaded PDF. (provider: congress_gov)
data_format : Optional[dict[str, str]]
Data format information, including data type and filename. (provider: congress_gov)
Examples
--------
>>> from openbb import obb
>>> obb.uscongress.bill_text(provider='congress_gov', urls='['https://www.congress.gov/119/bills/hr1/BILLS-119hr1eh.pdf']')
""" # noqa: E501
return self._run(
"/uscongress/bill_text",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"uscongress.bill_text",
("congress_gov",),
)
},
standard_params={},
extra_params=kwargs,
info={
"urls": {
"congress_gov": {
"multiple_items_allowed": True,
"choices": None,
}
}
},
data_processing=True,
),
)
@exception_handler
@validate
def bill_text_urls(
self,
bill_url: Annotated[str, OpenBBField(description="")],
is_workspace: Annotated[bool, OpenBBField(description="")] = False,
provider: Annotated[
Optional[str], OpenBBField(description="")
] = "congress_gov",
**kwargs: Any
) -> list:
"""Helper function to populate document choices for a specific bill.
This function is used by the Congressional Bills Viewer widget, in OpenBB Workspace,
to populate PDF document choices for the selected bill.
When 'is_workspace' is False (default), it returns a list of the available text versions
of the specified bill and their download links for the different formats.
Parameters
----------
bill_url : str
The base URL of the bill (e.g., "https://api.congress.gov/v3/bill/119/s/1947?format=json").
This can also be a shortened version like "119/s/1947".
provider : str
The provider name, always "congress_gov". This is a dummy parameter.
is_workspace : bool
Whether the request is coming from the OpenBB Workspace.
This alters the output format to conform to the Workspace's expectations.
Returns
-------
list[dict]
Returns a list of dictionaries with 'label' and 'value' keys, when `is_workspace` is True.
Otherwise, returns the 'text' object from the Congress.gov API response.
Examples
--------
>>> from openbb import obb
>>> obb.uscongress.bill_text_urls(provider='congress_gov', bill_url='https://api.congress.gov/v3/bill/119/s/1947?')
>>> obb.uscongress.bill_text_urls(provider='congress_gov', bill_url='119/s/1947')
""" # noqa: E501
return self._run(
"/uscongress/bill_text_urls",
**filter_inputs(
bill_url=bill_url,
provider=provider,
is_workspace=is_workspace,
**kwargs,
),
)
@exception_handler
@validate
def bills(
self,
provider: Annotated[
Optional[Literal["congress_gov"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: congress_gov."
),
] = None,
**kwargs
) -> OBBject:
"""Get and filter lists of Congressional Bills.
Parameters
----------
provider : str
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: congress_gov.
congress : Optional[int]
Congress number (e.g., 118 for the 118th Congress). The 103rd Congress started in 1993, which is the earliest date supporting full text versions. Each Congress spans two years, starting in odd-numbered years. (provider: congress_gov)
bill_type : Optional[str]
Bill type (e.g., "hr" for House bills).
Must be one of: hr, s, hjres, sjres, hconres, sconres, hres, sres.
Bills
-----
A bill is the form used for most legislation, whether permanent or temporary, general or special, public or private.
A bill originating in the House of Representatives is designated by the letters “H.R.”,
signifying “House of Representatives”, followed by a number that it retains throughout all its parliamentary stages.
Bills are presented to the President for action when approved in identical form
by both the House of Representatives and the Senate.
Joint Resolutions
-----------------
Joint resolutions may originate either in the House of Representatives or in the Senate.
There is little practical difference between a bill and a joint resolution. Both are subject to the same procedure,
except for a joint resolution proposing an amendment to the Constitution.
On approval of such a resolution by two-thirds of both the House and Senate,
it is sent directly to the Administrator of General Services for submission to the individual states for ratification.
It is not presented to the President for approval.
A joint resolution originating in the House of Representatives is designated “H.J.Res.” followed by its individual number.
Joint resolutions become law in the same manner as bills.
Concurrent Resolutions
----------------------
Matters affecting the operations of both the House of Representatives and Senate
are usually initiated by means of concurrent resolutions.
A concurrent resolution originating in the House of Representatives is designated “H.Con.Res.”
followed by its individual number.
On approval by both the House of Representatives and Senate,
they are signed by the Clerk of the House and the Secretary of the Senate.
They are not presented to the President for action.
Simple Resolutions
------------------
A matter concerning the operation of either the House of Representatives or Senate
alone is initiated by a simple resolution.
A resolution affecting the House of Representatives is designated “H.Res.” followed by its number.
They are not presented to the President for action.
(provider: congress_gov)
start_date : Optional[date]
Start date of the data, in YYYY-MM-DD format. Filters bills by the last updated date. (provider: congress_gov)
end_date : Optional[date]
End date of the data, in YYYY-MM-DD format. Filters bills by the last updated date. (provider: congress_gov)
limit : Optional[int]
The number of data entries to return. When None, default sets to 100 (max 250). Set to 0 for no limit (must be used with 'bill_type' and 'congress'). (provider: congress_gov)
offset : Optional[int]
The starting record returned. 0 is the first record. (provider: congress_gov)
sort_by : Literal['asc', 'desc']
Sort by update date. Default is latest first. (provider: congress_gov)
Returns
-------
OBBject
results : list[CongressBills]
Serializable results.
provider : Optional[str]
Provider name.
warnings : Optional[list[Warning_]]
list of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CongressBills
-------------
update_date : Optional[date]
The date the bill was last updated. (provider: congress_gov)
latest_action_date : Optional[date]
The date of the latest action on the bill. (provider: congress_gov)
bill_url : Optional[str]
Base URL to the bill for the congress.gov API. (provider: congress_gov)
congress : Optional[int]
The congress session number. (provider: congress_gov)
bill_number : Optional[int]
The bill number. (provider: congress_gov)
origin_chamber : Optional[str]
The chamber where the bill originated. (provider: congress_gov)
origin_chamber_code : Optional[str]
The chamber code where the bill originated. (provider: congress_gov)
bill_type : Optional[str]
The type of bill (e.g., HR, S). (provider: congress_gov)
title : Optional[str]
The title of the bill. (provider: congress_gov)
latest_action : Optional[str]
Latest action information for the bill. (provider: congress_gov)
update_date_including_text : Optional[datetime]
The date and time the bill text was last updated. (provider: congress_gov)
Examples
--------
>>> from openbb import obb
>>> obb.uscongress.bills(provider='congress_gov')
>>> obb.uscongress.bills(start_date='2025-01-01', end_date='2025-01-31', provider='congress_gov')
>>> # Get all bills of type 's' (Senate) for the 118th Congress.
>>> obb.uscongress.bills(bill_type='s', congress=118, limit=0, provider='congress_gov')
""" # noqa: E501
return self._run(
"/uscongress/bills",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"uscongress.bills",
("congress_gov",),
)
},
standard_params={},
extra_params=kwargs,
info={
"congress": {
"congress_gov": {"x-widget_config": {"type": "number"}}
},
"bill_type": {
"congress_gov": {
"x-widget_config": {
"options": [
{"label": "House Bill", "value": "hr"},
{"label": "Senate Bill", "value": "s"},
{
"label": "House Joint Resolution",
"value": "hjres",
},
{
"label": "Senate Joint Resolution",
"value": "sjres",
},
{
"label": "House Concurrent Resolution",
"value": "hconres",
},
{
"label": "Senate Concurrent Resolution",
"value": "sconres",
},
{
"label": "House Simple Resolution",
"value": "hres",
},
{
"label": "Senate Simple Resolution",
"value": "sres",
},
],
"value": None,
"style": {"popupWidth": 300},
"paramName": "bill_type",
"label": "Bill Type",
}
}
},
"offset": {"congress_gov": {"x-widget_config": {"type": "number"}}},
},
),
)

558
openbb_platform/core/poetry.lock generated vendored
View File

@@ -1,4 +1,4 @@
# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand.
# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand.
[[package]]
name = "aiohappyeyeballs"
@@ -151,14 +151,14 @@ files = [
[[package]]
name = "anyio"
version = "4.9.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
version = "4.10.0"
description = "High-level concurrency and networking framework on top of asyncio or Trio"
optional = false
python-versions = ">=3.9"
groups = ["main"]
files = [
{file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"},
{file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"},
{file = "anyio-4.10.0-py3-none-any.whl", hash = "sha256:60e474ac86736bbfd6f210f7a61218939c318f43f9972497381f1c5e930ed3d1"},
{file = "anyio-4.10.0.tar.gz", hash = "sha256:3f3fae35c96039744587aa5b8371e7e8e603c0702999535961dd336026973ba6"},
]
[package.dependencies]
@@ -168,8 +168,6 @@ sniffio = ">=1.1"
typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
[package.extras]
doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"]
test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""]
trio = ["trio (>=0.26.1)"]
[[package]]
@@ -207,116 +205,103 @@ tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" a
[[package]]
name = "certifi"
version = "2025.7.14"
version = "2025.8.3"
description = "Python package for providing Mozilla's CA Bundle."
optional = false
python-versions = ">=3.7"
groups = ["main"]
files = [
{file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2"},
{file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995"},
{file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"},
{file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"},
]
[[package]]
name = "charset-normalizer"
version = "3.4.2"
version = "3.4.3"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
optional = false
python-versions = ">=3.7"
groups = ["main"]
files = [
{file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941"},
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd"},
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6"},
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d"},
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86"},
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c"},
{file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0"},
{file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef"},
{file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6"},
{file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366"},
{file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db"},
{file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a"},
{file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509"},
{file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2"},
{file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645"},
{file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd"},
{file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8"},
{file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f"},
{file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7"},
{file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9"},
{file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544"},
{file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82"},
{file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0"},
{file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5"},
{file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a"},
{file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28"},
{file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7"},
{file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3"},
{file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a"},
{file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214"},
{file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a"},
{file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd"},
{file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981"},
{file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c"},
{file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b"},
{file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d"},
{file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f"},
{file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c"},
{file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e"},
{file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0"},
{file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf"},
{file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e"},
{file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1"},
{file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c"},
{file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691"},
{file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0"},
{file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b"},
{file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff"},
{file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b"},
{file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148"},
{file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7"},
{file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2"},
{file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb"},
{file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a"},
{file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45"},
{file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5"},
{file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1"},
{file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027"},
{file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b"},
{file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455"},
{file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01"},
{file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58"},
{file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681"},
{file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7"},
{file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a"},
{file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4"},
{file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7"},
{file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836"},
{file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597"},
{file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7"},
{file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f"},
{file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba"},
{file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12"},
{file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518"},
{file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5"},
{file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3"},
{file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471"},
{file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e"},
{file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0"},
{file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63"},
{file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"},
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"},
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"},
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"},
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"},
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"},
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"},
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"},
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"},
{file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"},
{file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"},
{file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"},
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"},
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"},
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"},
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"},
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"},
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"},
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"},
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"},
{file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"},
{file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"},
{file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"},
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"},
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"},
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"},
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"},
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"},
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"},
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"},
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"},
{file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"},
{file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"},
{file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"},
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"},
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"},
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"},
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"},
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"},
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"},
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"},
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"},
{file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"},
{file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"},
{file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"},
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"},
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"},
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"},
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"},
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"},
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"},
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"},
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"},
{file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"},
{file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"},
{file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"},
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"},
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"},
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"},
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"},
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"},
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"},
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"},
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"},
{file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"},
{file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"},
{file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"},
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"},
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"},
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"},
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"},
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"},
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"},
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"},
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"},
{file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"},
{file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"},
{file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"},
{file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"},
]
[[package]]
@@ -594,122 +579,122 @@ type = ["pytest-mypy"]
[[package]]
name = "multidict"
version = "6.6.3"
version = "6.6.4"
description = "multidict implementation"
optional = false
python-versions = ">=3.9"
groups = ["main"]
files = [
{file = "multidict-6.6.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a2be5b7b35271f7fff1397204ba6708365e3d773579fe2a30625e16c4b4ce817"},
{file = "multidict-6.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12f4581d2930840295c461764b9a65732ec01250b46c6b2c510d7ee68872b140"},
{file = "multidict-6.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dd7793bab517e706c9ed9d7310b06c8672fd0aeee5781bfad612f56b8e0f7d14"},
{file = "multidict-6.6.3-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:72d8815f2cd3cf3df0f83cac3f3ef801d908b2d90409ae28102e0553af85545a"},
{file = "multidict-6.6.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:531e331a2ee53543ab32b16334e2deb26f4e6b9b28e41f8e0c87e99a6c8e2d69"},
{file = "multidict-6.6.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:42ca5aa9329a63be8dc49040f63817d1ac980e02eeddba763a9ae5b4027b9c9c"},
{file = "multidict-6.6.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:208b9b9757060b9faa6f11ab4bc52846e4f3c2fb8b14d5680c8aac80af3dc751"},
{file = "multidict-6.6.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:acf6b97bd0884891af6a8b43d0f586ab2fcf8e717cbd47ab4bdddc09e20652d8"},
{file = "multidict-6.6.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:68e9e12ed00e2089725669bdc88602b0b6f8d23c0c95e52b95f0bc69f7fe9b55"},
{file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:05db2f66c9addb10cfa226e1acb363450fab2ff8a6df73c622fefe2f5af6d4e7"},
{file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:0db58da8eafb514db832a1b44f8fa7906fdd102f7d982025f816a93ba45e3dcb"},
{file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:14117a41c8fdb3ee19c743b1c027da0736fdb79584d61a766da53d399b71176c"},
{file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:877443eaaabcd0b74ff32ebeed6f6176c71850feb7d6a1d2db65945256ea535c"},
{file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:70b72e749a4f6e7ed8fb334fa8d8496384840319512746a5f42fa0aec79f4d61"},
{file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:43571f785b86afd02b3855c5ac8e86ec921b760298d6f82ff2a61daf5a35330b"},
{file = "multidict-6.6.3-cp310-cp310-win32.whl", hash = "sha256:20c5a0c3c13a15fd5ea86c42311859f970070e4e24de5a550e99d7c271d76318"},
{file = "multidict-6.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab0a34a007704c625e25a9116c6770b4d3617a071c8a7c30cd338dfbadfe6485"},
{file = "multidict-6.6.3-cp310-cp310-win_arm64.whl", hash = "sha256:769841d70ca8bdd140a715746199fc6473414bd02efd678d75681d2d6a8986c5"},
{file = "multidict-6.6.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18f4eba0cbac3546b8ae31e0bbc55b02c801ae3cbaf80c247fcdd89b456ff58c"},
{file = "multidict-6.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef43b5dd842382329e4797c46f10748d8c2b6e0614f46b4afe4aee9ac33159df"},
{file = "multidict-6.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf9bd1fd5eec01494e0f2e8e446a74a85d5e49afb63d75a9934e4a5423dba21d"},
{file = "multidict-6.6.3-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:5bd8d6f793a787153956cd35e24f60485bf0651c238e207b9a54f7458b16d539"},
{file = "multidict-6.6.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bf99b4daf908c73856bd87ee0a2499c3c9a3d19bb04b9c6025e66af3fd07462"},
{file = "multidict-6.6.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b9e59946b49dafaf990fd9c17ceafa62976e8471a14952163d10a7a630413a9"},
{file = "multidict-6.6.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e2db616467070d0533832d204c54eea6836a5e628f2cb1e6dfd8cd6ba7277cb7"},
{file = "multidict-6.6.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7394888236621f61dcdd25189b2768ae5cc280f041029a5bcf1122ac63df79f9"},
{file = "multidict-6.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f114d8478733ca7388e7c7e0ab34b72547476b97009d643644ac33d4d3fe1821"},
{file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cdf22e4db76d323bcdc733514bf732e9fb349707c98d341d40ebcc6e9318ef3d"},
{file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e995a34c3d44ab511bfc11aa26869b9d66c2d8c799fa0e74b28a473a692532d6"},
{file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:766a4a5996f54361d8d5a9050140aa5362fe48ce51c755a50c0bc3706460c430"},
{file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3893a0d7d28a7fe6ca7a1f760593bc13038d1d35daf52199d431b61d2660602b"},
{file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:934796c81ea996e61914ba58064920d6cad5d99140ac3167901eb932150e2e56"},
{file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9ed948328aec2072bc00f05d961ceadfd3e9bfc2966c1319aeaf7b7c21219183"},
{file = "multidict-6.6.3-cp311-cp311-win32.whl", hash = "sha256:9f5b28c074c76afc3e4c610c488e3493976fe0e596dd3db6c8ddfbb0134dcac5"},
{file = "multidict-6.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc7f6fbc61b1c16050a389c630da0b32fc6d4a3d191394ab78972bf5edc568c2"},
{file = "multidict-6.6.3-cp311-cp311-win_arm64.whl", hash = "sha256:d4e47d8faffaae822fb5cba20937c048d4f734f43572e7079298a6c39fb172cb"},
{file = "multidict-6.6.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:056bebbeda16b2e38642d75e9e5310c484b7c24e3841dc0fb943206a72ec89d6"},
{file = "multidict-6.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e5f481cccb3c5c5e5de5d00b5141dc589c1047e60d07e85bbd7dea3d4580d63f"},
{file = "multidict-6.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10bea2ee839a759ee368b5a6e47787f399b41e70cf0c20d90dfaf4158dfb4e55"},
{file = "multidict-6.6.3-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:2334cfb0fa9549d6ce2c21af2bfbcd3ac4ec3646b1b1581c88e3e2b1779ec92b"},
{file = "multidict-6.6.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8fee016722550a2276ca2cb5bb624480e0ed2bd49125b2b73b7010b9090e888"},
{file = "multidict-6.6.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5511cb35f5c50a2db21047c875eb42f308c5583edf96bd8ebf7d770a9d68f6d"},
{file = "multidict-6.6.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:712b348f7f449948e0a6c4564a21c7db965af900973a67db432d724619b3c680"},
{file = "multidict-6.6.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e4e15d2138ee2694e038e33b7c3da70e6b0ad8868b9f8094a72e1414aeda9c1a"},
{file = "multidict-6.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8df25594989aebff8a130f7899fa03cbfcc5d2b5f4a461cf2518236fe6f15961"},
{file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:159ca68bfd284a8860f8d8112cf0521113bffd9c17568579e4d13d1f1dc76b65"},
{file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e098c17856a8c9ade81b4810888c5ad1914099657226283cab3062c0540b0643"},
{file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:67c92ed673049dec52d7ed39f8cf9ebbadf5032c774058b4406d18c8f8fe7063"},
{file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:bd0578596e3a835ef451784053cfd327d607fc39ea1a14812139339a18a0dbc3"},
{file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:346055630a2df2115cd23ae271910b4cae40f4e336773550dca4889b12916e75"},
{file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:555ff55a359302b79de97e0468e9ee80637b0de1fce77721639f7cd9440b3a10"},
{file = "multidict-6.6.3-cp312-cp312-win32.whl", hash = "sha256:73ab034fb8d58ff85c2bcbadc470efc3fafeea8affcf8722855fb94557f14cc5"},
{file = "multidict-6.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:04cbcce84f63b9af41bad04a54d4cc4e60e90c35b9e6ccb130be2d75b71f8c17"},
{file = "multidict-6.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:0f1130b896ecb52d2a1e615260f3ea2af55fa7dc3d7c3003ba0c3121a759b18b"},
{file = "multidict-6.6.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:540d3c06d48507357a7d57721e5094b4f7093399a0106c211f33540fdc374d55"},
{file = "multidict-6.6.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9c19cea2a690f04247d43f366d03e4eb110a0dc4cd1bbeee4d445435428ed35b"},
{file = "multidict-6.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7af039820cfd00effec86bda5d8debef711a3e86a1d3772e85bea0f243a4bd65"},
{file = "multidict-6.6.3-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:500b84f51654fdc3944e936f2922114349bf8fdcac77c3092b03449f0e5bc2b3"},
{file = "multidict-6.6.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3fc723ab8a5c5ed6c50418e9bfcd8e6dceba6c271cee6728a10a4ed8561520c"},
{file = "multidict-6.6.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:94c47ea3ade005b5976789baaed66d4de4480d0a0bf31cef6edaa41c1e7b56a6"},
{file = "multidict-6.6.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dbc7cf464cc6d67e83e136c9f55726da3a30176f020a36ead246eceed87f1cd8"},
{file = "multidict-6.6.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:900eb9f9da25ada070f8ee4a23f884e0ee66fe4e1a38c3af644256a508ad81ca"},
{file = "multidict-6.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c6df517cf177da5d47ab15407143a89cd1a23f8b335f3a28d57e8b0a3dbb884"},
{file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ef421045f13879e21c994b36e728d8e7d126c91a64b9185810ab51d474f27e7"},
{file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:6c1e61bb4f80895c081790b6b09fa49e13566df8fbff817da3f85b3a8192e36b"},
{file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e5e8523bb12d7623cd8300dbd91b9e439a46a028cd078ca695eb66ba31adee3c"},
{file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ef58340cc896219e4e653dade08fea5c55c6df41bcc68122e3be3e9d873d9a7b"},
{file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc9dc435ec8699e7b602b94fe0cd4703e69273a01cbc34409af29e7820f777f1"},
{file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9e864486ef4ab07db5e9cb997bad2b681514158d6954dd1958dfb163b83d53e6"},
{file = "multidict-6.6.3-cp313-cp313-win32.whl", hash = "sha256:5633a82fba8e841bc5c5c06b16e21529573cd654f67fd833650a215520a6210e"},
{file = "multidict-6.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:e93089c1570a4ad54c3714a12c2cef549dc9d58e97bcded193d928649cab78e9"},
{file = "multidict-6.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:c60b401f192e79caec61f166da9c924e9f8bc65548d4246842df91651e83d600"},
{file = "multidict-6.6.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:02fd8f32d403a6ff13864b0851f1f523d4c988051eea0471d4f1fd8010f11134"},
{file = "multidict-6.6.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f3aa090106b1543f3f87b2041eef3c156c8da2aed90c63a2fbed62d875c49c37"},
{file = "multidict-6.6.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e924fb978615a5e33ff644cc42e6aa241effcf4f3322c09d4f8cebde95aff5f8"},
{file = "multidict-6.6.3-cp313-cp313t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:b9fe5a0e57c6dbd0e2ce81ca66272282c32cd11d31658ee9553849d91289e1c1"},
{file = "multidict-6.6.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b24576f208793ebae00280c59927c3b7c2a3b1655e443a25f753c4611bc1c373"},
{file = "multidict-6.6.3-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:135631cb6c58eac37d7ac0df380294fecdc026b28837fa07c02e459c7fb9c54e"},
{file = "multidict-6.6.3-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:274d416b0df887aef98f19f21578653982cfb8a05b4e187d4a17103322eeaf8f"},
{file = "multidict-6.6.3-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e252017a817fad7ce05cafbe5711ed40faeb580e63b16755a3a24e66fa1d87c0"},
{file = "multidict-6.6.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4cc8d848cd4fe1cdee28c13ea79ab0ed37fc2e89dd77bac86a2e7959a8c3bc"},
{file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9e236a7094b9c4c1b7585f6b9cca34b9d833cf079f7e4c49e6a4a6ec9bfdc68f"},
{file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e0cb0ab69915c55627c933f0b555a943d98ba71b4d1c57bc0d0a66e2567c7471"},
{file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:81ef2f64593aba09c5212a3d0f8c906a0d38d710a011f2f42759704d4557d3f2"},
{file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:b9cbc60010de3562545fa198bfc6d3825df430ea96d2cc509c39bd71e2e7d648"},
{file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:70d974eaaa37211390cd02ef93b7e938de564bbffa866f0b08d07e5e65da783d"},
{file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3713303e4a6663c6d01d648a68f2848701001f3390a030edaaf3fc949c90bf7c"},
{file = "multidict-6.6.3-cp313-cp313t-win32.whl", hash = "sha256:639ecc9fe7cd73f2495f62c213e964843826f44505a3e5d82805aa85cac6f89e"},
{file = "multidict-6.6.3-cp313-cp313t-win_amd64.whl", hash = "sha256:9f97e181f344a0ef3881b573d31de8542cc0dbc559ec68c8f8b5ce2c2e91646d"},
{file = "multidict-6.6.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ce8b7693da41a3c4fde5871c738a81490cea5496c671d74374c8ab889e1834fb"},
{file = "multidict-6.6.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c8161b5a7778d3137ea2ee7ae8a08cce0010de3b00ac671c5ebddeaa17cefd22"},
{file = "multidict-6.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1328201ee930f069961ae707d59c6627ac92e351ed5b92397cf534d1336ce557"},
{file = "multidict-6.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b1db4d2093d6b235de76932febf9d50766cf49a5692277b2c28a501c9637f616"},
{file = "multidict-6.6.3-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53becb01dd8ebd19d1724bebe369cfa87e4e7f29abbbe5c14c98ce4c383e16cd"},
{file = "multidict-6.6.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41bb9d1d4c303886e2d85bade86e59885112a7f4277af5ad47ab919a2251f306"},
{file = "multidict-6.6.3-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:775b464d31dac90f23192af9c291dc9f423101857e33e9ebf0020a10bfcf4144"},
{file = "multidict-6.6.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d04d01f0a913202205a598246cf77826fe3baa5a63e9f6ccf1ab0601cf56eca0"},
{file = "multidict-6.6.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d25594d3b38a2e6cabfdcafef339f754ca6e81fbbdb6650ad773ea9775af35ab"},
{file = "multidict-6.6.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:35712f1748d409e0707b165bf49f9f17f9e28ae85470c41615778f8d4f7d9609"},
{file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1c8082e5814b662de8589d6a06c17e77940d5539080cbab9fe6794b5241b76d9"},
{file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:61af8a4b771f1d4d000b3168c12c3120ccf7284502a94aa58c68a81f5afac090"},
{file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:448e4a9afccbf297577f2eaa586f07067441e7b63c8362a3540ba5a38dc0f14a"},
{file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:233ad16999afc2bbd3e534ad8dbe685ef8ee49a37dbc2cdc9514e57b6d589ced"},
{file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:bb933c891cd4da6bdcc9733d048e994e22e1883287ff7540c2a0f3b117605092"},
{file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:37b09ca60998e87734699e88c2363abfd457ed18cfbf88e4009a4e83788e63ed"},
{file = "multidict-6.6.3-cp39-cp39-win32.whl", hash = "sha256:f54cb79d26d0cd420637d184af38f0668558f3c4bbe22ab7ad830e67249f2e0b"},
{file = "multidict-6.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:295adc9c0551e5d5214b45cf29ca23dbc28c2d197a9c30d51aed9e037cb7c578"},
{file = "multidict-6.6.3-cp39-cp39-win_arm64.whl", hash = "sha256:15332783596f227db50fb261c2c251a58ac3873c457f3a550a95d5c0aa3c770d"},
{file = "multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a"},
{file = "multidict-6.6.3.tar.gz", hash = "sha256:798a9eb12dab0a6c2e29c1de6f3468af5cb2da6053a20dfa3344907eed0937cc"},
{file = "multidict-6.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b8aa6f0bd8125ddd04a6593437bad6a7e70f300ff4180a531654aa2ab3f6d58f"},
{file = "multidict-6.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b9e5853bbd7264baca42ffc53391b490d65fe62849bf2c690fa3f6273dbcd0cb"},
{file = "multidict-6.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0af5f9dee472371e36d6ae38bde009bd8ce65ac7335f55dcc240379d7bed1495"},
{file = "multidict-6.6.4-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:d24f351e4d759f5054b641c81e8291e5d122af0fca5c72454ff77f7cbe492de8"},
{file = "multidict-6.6.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:db6a3810eec08280a172a6cd541ff4a5f6a97b161d93ec94e6c4018917deb6b7"},
{file = "multidict-6.6.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a1b20a9d56b2d81e2ff52ecc0670d583eaabaa55f402e8d16dd062373dbbe796"},
{file = "multidict-6.6.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8c9854df0eaa610a23494c32a6f44a3a550fb398b6b51a56e8c6b9b3689578db"},
{file = "multidict-6.6.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4bb7627fd7a968f41905a4d6343b0d63244a0623f006e9ed989fa2b78f4438a0"},
{file = "multidict-6.6.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:caebafea30ed049c57c673d0b36238b1748683be2593965614d7b0e99125c877"},
{file = "multidict-6.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ad887a8250eb47d3ab083d2f98db7f48098d13d42eb7a3b67d8a5c795f224ace"},
{file = "multidict-6.6.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:ed8358ae7d94ffb7c397cecb62cbac9578a83ecefc1eba27b9090ee910e2efb6"},
{file = "multidict-6.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:ecab51ad2462197a4c000b6d5701fc8585b80eecb90583635d7e327b7b6923eb"},
{file = "multidict-6.6.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c5c97aa666cf70e667dfa5af945424ba1329af5dd988a437efeb3a09430389fb"},
{file = "multidict-6.6.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:9a950b7cf54099c1209f455ac5970b1ea81410f2af60ed9eb3c3f14f0bfcf987"},
{file = "multidict-6.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:163c7ea522ea9365a8a57832dea7618e6cbdc3cd75f8c627663587459a4e328f"},
{file = "multidict-6.6.4-cp310-cp310-win32.whl", hash = "sha256:17d2cbbfa6ff20821396b25890f155f40c986f9cfbce5667759696d83504954f"},
{file = "multidict-6.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:ce9a40fbe52e57e7edf20113a4eaddfacac0561a0879734e636aa6d4bb5e3fb0"},
{file = "multidict-6.6.4-cp310-cp310-win_arm64.whl", hash = "sha256:01d0959807a451fe9fdd4da3e139cb5b77f7328baf2140feeaf233e1d777b729"},
{file = "multidict-6.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c7a0e9b561e6460484318a7612e725df1145d46b0ef57c6b9866441bf6e27e0c"},
{file = "multidict-6.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6bf2f10f70acc7a2446965ffbc726e5fc0b272c97a90b485857e5c70022213eb"},
{file = "multidict-6.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66247d72ed62d5dd29752ffc1d3b88f135c6a8de8b5f63b7c14e973ef5bda19e"},
{file = "multidict-6.6.4-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:105245cc6b76f51e408451a844a54e6823bbd5a490ebfe5bdfc79798511ceded"},
{file = "multidict-6.6.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cbbc54e58b34c3bae389ef00046be0961f30fef7cb0dd9c7756aee376a4f7683"},
{file = "multidict-6.6.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:56c6b3652f945c9bc3ac6c8178cd93132b8d82dd581fcbc3a00676c51302bc1a"},
{file = "multidict-6.6.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b95494daf857602eccf4c18ca33337dd2be705bccdb6dddbfc9d513e6addb9d9"},
{file = "multidict-6.6.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e5b1413361cef15340ab9dc61523e653d25723e82d488ef7d60a12878227ed50"},
{file = "multidict-6.6.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e167bf899c3d724f9662ef00b4f7fef87a19c22b2fead198a6f68b263618df52"},
{file = "multidict-6.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:aaea28ba20a9026dfa77f4b80369e51cb767c61e33a2d4043399c67bd95fb7c6"},
{file = "multidict-6.6.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:8c91cdb30809a96d9ecf442ec9bc45e8cfaa0f7f8bdf534e082c2443a196727e"},
{file = "multidict-6.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1a0ccbfe93ca114c5d65a2471d52d8829e56d467c97b0e341cf5ee45410033b3"},
{file = "multidict-6.6.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:55624b3f321d84c403cb7d8e6e982f41ae233d85f85db54ba6286f7295dc8a9c"},
{file = "multidict-6.6.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4a1fb393a2c9d202cb766c76208bd7945bc194eba8ac920ce98c6e458f0b524b"},
{file = "multidict-6.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:43868297a5759a845fa3a483fb4392973a95fb1de891605a3728130c52b8f40f"},
{file = "multidict-6.6.4-cp311-cp311-win32.whl", hash = "sha256:ed3b94c5e362a8a84d69642dbeac615452e8af9b8eb825b7bc9f31a53a1051e2"},
{file = "multidict-6.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:d8c112f7a90d8ca5d20213aa41eac690bb50a76da153e3afb3886418e61cb22e"},
{file = "multidict-6.6.4-cp311-cp311-win_arm64.whl", hash = "sha256:3bb0eae408fa1996d87247ca0d6a57b7fc1dcf83e8a5c47ab82c558c250d4adf"},
{file = "multidict-6.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0ffb87be160942d56d7b87b0fdf098e81ed565add09eaa1294268c7f3caac4c8"},
{file = "multidict-6.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d191de6cbab2aff5de6c5723101705fd044b3e4c7cfd587a1929b5028b9714b3"},
{file = "multidict-6.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:38a0956dd92d918ad5feff3db8fcb4a5eb7dba114da917e1a88475619781b57b"},
{file = "multidict-6.6.4-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:6865f6d3b7900ae020b495d599fcf3765653bc927951c1abb959017f81ae8287"},
{file = "multidict-6.6.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a2088c126b6f72db6c9212ad827d0ba088c01d951cee25e758c450da732c138"},
{file = "multidict-6.6.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0f37bed7319b848097085d7d48116f545985db988e2256b2e6f00563a3416ee6"},
{file = "multidict-6.6.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:01368e3c94032ba6ca0b78e7ccb099643466cf24f8dc8eefcfdc0571d56e58f9"},
{file = "multidict-6.6.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8fe323540c255db0bffee79ad7f048c909f2ab0edb87a597e1c17da6a54e493c"},
{file = "multidict-6.6.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8eb3025f17b0a4c3cd08cda49acf312a19ad6e8a4edd9dbd591e6506d999402"},
{file = "multidict-6.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bbc14f0365534d35a06970d6a83478b249752e922d662dc24d489af1aa0d1be7"},
{file = "multidict-6.6.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:75aa52fba2d96bf972e85451b99d8e19cc37ce26fd016f6d4aa60da9ab2b005f"},
{file = "multidict-6.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4fefd4a815e362d4f011919d97d7b4a1e566f1dde83dc4ad8cfb5b41de1df68d"},
{file = "multidict-6.6.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:db9801fe021f59a5b375ab778973127ca0ac52429a26e2fd86aa9508f4d26eb7"},
{file = "multidict-6.6.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a650629970fa21ac1fb06ba25dabfc5b8a2054fcbf6ae97c758aa956b8dba802"},
{file = "multidict-6.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:452ff5da78d4720d7516a3a2abd804957532dd69296cb77319c193e3ffb87e24"},
{file = "multidict-6.6.4-cp312-cp312-win32.whl", hash = "sha256:8c2fcb12136530ed19572bbba61b407f655e3953ba669b96a35036a11a485793"},
{file = "multidict-6.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:047d9425860a8c9544fed1b9584f0c8bcd31bcde9568b047c5e567a1025ecd6e"},
{file = "multidict-6.6.4-cp312-cp312-win_arm64.whl", hash = "sha256:14754eb72feaa1e8ae528468f24250dd997b8e2188c3d2f593f9eba259e4b364"},
{file = "multidict-6.6.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f46a6e8597f9bd71b31cc708195d42b634c8527fecbcf93febf1052cacc1f16e"},
{file = "multidict-6.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:22e38b2bc176c5eb9c0a0e379f9d188ae4cd8b28c0f53b52bce7ab0a9e534657"},
{file = "multidict-6.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5df8afd26f162da59e218ac0eefaa01b01b2e6cd606cffa46608f699539246da"},
{file = "multidict-6.6.4-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:49517449b58d043023720aa58e62b2f74ce9b28f740a0b5d33971149553d72aa"},
{file = "multidict-6.6.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ae9408439537c5afdca05edd128a63f56a62680f4b3c234301055d7a2000220f"},
{file = "multidict-6.6.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:87a32d20759dc52a9e850fe1061b6e41ab28e2998d44168a8a341b99ded1dba0"},
{file = "multidict-6.6.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:52e3c8d43cdfff587ceedce9deb25e6ae77daba560b626e97a56ddcad3756879"},
{file = "multidict-6.6.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ad8850921d3a8d8ff6fbef790e773cecfc260bbfa0566998980d3fa8f520bc4a"},
{file = "multidict-6.6.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:497a2954adc25c08daff36f795077f63ad33e13f19bfff7736e72c785391534f"},
{file = "multidict-6.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:024ce601f92d780ca1617ad4be5ac15b501cc2414970ffa2bb2bbc2bd5a68fa5"},
{file = "multidict-6.6.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:a693fc5ed9bdd1c9e898013e0da4dcc640de7963a371c0bd458e50e046bf6438"},
{file = "multidict-6.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:190766dac95aab54cae5b152a56520fd99298f32a1266d66d27fdd1b5ac00f4e"},
{file = "multidict-6.6.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:34d8f2a5ffdceab9dcd97c7a016deb2308531d5f0fced2bb0c9e1df45b3363d7"},
{file = "multidict-6.6.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:59e8d40ab1f5a8597abcef00d04845155a5693b5da00d2c93dbe88f2050f2812"},
{file = "multidict-6.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:467fe64138cfac771f0e949b938c2e1ada2b5af22f39692aa9258715e9ea613a"},
{file = "multidict-6.6.4-cp313-cp313-win32.whl", hash = "sha256:14616a30fe6d0a48d0a48d1a633ab3b8bec4cf293aac65f32ed116f620adfd69"},
{file = "multidict-6.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:40cd05eaeb39e2bc8939451f033e57feaa2ac99e07dbca8afe2be450a4a3b6cf"},
{file = "multidict-6.6.4-cp313-cp313-win_arm64.whl", hash = "sha256:f6eb37d511bfae9e13e82cb4d1af36b91150466f24d9b2b8a9785816deb16605"},
{file = "multidict-6.6.4-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:6c84378acd4f37d1b507dfa0d459b449e2321b3ba5f2338f9b085cf7a7ba95eb"},
{file = "multidict-6.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0e0558693063c75f3d952abf645c78f3c5dfdd825a41d8c4d8156fc0b0da6e7e"},
{file = "multidict-6.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3f8e2384cb83ebd23fd07e9eada8ba64afc4c759cd94817433ab8c81ee4b403f"},
{file = "multidict-6.6.4-cp313-cp313t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:f996b87b420995a9174b2a7c1a8daf7db4750be6848b03eb5e639674f7963773"},
{file = "multidict-6.6.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc356250cffd6e78416cf5b40dc6a74f1edf3be8e834cf8862d9ed5265cf9b0e"},
{file = "multidict-6.6.4-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:dadf95aa862714ea468a49ad1e09fe00fcc9ec67d122f6596a8d40caf6cec7d0"},
{file = "multidict-6.6.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7dd57515bebffd8ebd714d101d4c434063322e4fe24042e90ced41f18b6d3395"},
{file = "multidict-6.6.4-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:967af5f238ebc2eb1da4e77af5492219fbd9b4b812347da39a7b5f5c72c0fa45"},
{file = "multidict-6.6.4-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a4c6875c37aae9794308ec43e3530e4aa0d36579ce38d89979bbf89582002bb"},
{file = "multidict-6.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:7f683a551e92bdb7fac545b9c6f9fa2aebdeefa61d607510b3533286fcab67f5"},
{file = "multidict-6.6.4-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:3ba5aaf600edaf2a868a391779f7a85d93bed147854925f34edd24cc70a3e141"},
{file = "multidict-6.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:580b643b7fd2c295d83cad90d78419081f53fd532d1f1eb67ceb7060f61cff0d"},
{file = "multidict-6.6.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:37b7187197da6af3ee0b044dbc9625afd0c885f2800815b228a0e70f9a7f473d"},
{file = "multidict-6.6.4-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e1b93790ed0bc26feb72e2f08299691ceb6da5e9e14a0d13cc74f1869af327a0"},
{file = "multidict-6.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a506a77ddee1efcca81ecbeae27ade3e09cdf21a8ae854d766c2bb4f14053f92"},
{file = "multidict-6.6.4-cp313-cp313t-win32.whl", hash = "sha256:f93b2b2279883d1d0a9e1bd01f312d6fc315c5e4c1f09e112e4736e2f650bc4e"},
{file = "multidict-6.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:6d46a180acdf6e87cc41dc15d8f5c2986e1e8739dc25dbb7dac826731ef381a4"},
{file = "multidict-6.6.4-cp313-cp313t-win_arm64.whl", hash = "sha256:756989334015e3335d087a27331659820d53ba432befdef6a718398b0a8493ad"},
{file = "multidict-6.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:af7618b591bae552b40dbb6f93f5518328a949dac626ee75927bba1ecdeea9f4"},
{file = "multidict-6.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b6819f83aef06f560cb15482d619d0e623ce9bf155115150a85ab11b8342a665"},
{file = "multidict-6.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4d09384e75788861e046330308e7af54dd306aaf20eb760eb1d0de26b2bea2cb"},
{file = "multidict-6.6.4-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:a59c63061f1a07b861c004e53869eb1211ffd1a4acbca330e3322efa6dd02978"},
{file = "multidict-6.6.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:350f6b0fe1ced61e778037fdc7613f4051c8baf64b1ee19371b42a3acdb016a0"},
{file = "multidict-6.6.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0c5cbac6b55ad69cb6aa17ee9343dfbba903118fd530348c330211dc7aa756d1"},
{file = "multidict-6.6.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:630f70c32b8066ddfd920350bc236225814ad94dfa493fe1910ee17fe4365cbb"},
{file = "multidict-6.6.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f8d4916a81697faec6cb724a273bd5457e4c6c43d82b29f9dc02c5542fd21fc9"},
{file = "multidict-6.6.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e42332cf8276bb7645d310cdecca93a16920256a5b01bebf747365f86a1675b"},
{file = "multidict-6.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f3be27440f7644ab9a13a6fc86f09cdd90b347c3c5e30c6d6d860de822d7cb53"},
{file = "multidict-6.6.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:21f216669109e02ef3e2415ede07f4f8987f00de8cdfa0cc0b3440d42534f9f0"},
{file = "multidict-6.6.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d9890d68c45d1aeac5178ded1d1cccf3bc8d7accf1f976f79bf63099fb16e4bd"},
{file = "multidict-6.6.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:edfdcae97cdc5d1a89477c436b61f472c4d40971774ac4729c613b4b133163cb"},
{file = "multidict-6.6.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:0b2e886624be5773e69cf32bcb8534aecdeb38943520b240fed3d5596a430f2f"},
{file = "multidict-6.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:be5bf4b3224948032a845d12ab0f69f208293742df96dc14c4ff9b09e508fc17"},
{file = "multidict-6.6.4-cp39-cp39-win32.whl", hash = "sha256:10a68a9191f284fe9d501fef4efe93226e74df92ce7a24e301371293bd4918ae"},
{file = "multidict-6.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:ee25f82f53262f9ac93bd7e58e47ea1bdcc3393cef815847e397cba17e284210"},
{file = "multidict-6.6.4-cp39-cp39-win_arm64.whl", hash = "sha256:f9867e55590e0855bcec60d4f9a092b69476db64573c9fe17e92b0c50614c16a"},
{file = "multidict-6.6.4-py3-none-any.whl", hash = "sha256:27d8f8e125c07cb954e54d75d04905a9bba8a439c1d84aca94949d4d03d8601c"},
{file = "multidict-6.6.4.tar.gz", hash = "sha256:d2d4e4787672911b48350df02ed3fa3fffdc2f2e8ca06dd6afdf34189b76a9dd"},
]
[package.dependencies]
@@ -858,54 +843,54 @@ files = [
[[package]]
name = "pandas"
version = "2.3.1"
version = "2.3.2"
description = "Powerful data structures for data analysis, time series, and statistics"
optional = false
python-versions = ">=3.9"
groups = ["main"]
files = [
{file = "pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9"},
{file = "pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1"},
{file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f951fbb702dacd390561e0ea45cdd8ecfa7fb56935eb3dd78e306c19104b9b0"},
{file = "pandas-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd05b72ec02ebfb993569b4931b2e16fbb4d6ad6ce80224a3ee838387d83a191"},
{file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1b916a627919a247d865aed068eb65eb91a344b13f5b57ab9f610b7716c92de1"},
{file = "pandas-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fe67dc676818c186d5a3d5425250e40f179c2a89145df477dd82945eaea89e97"},
{file = "pandas-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:2eb789ae0274672acbd3c575b0598d213345660120a257b47b5dafdc618aec83"},
{file = "pandas-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b0540963d83431f5ce8870ea02a7430adca100cec8a050f0811f8e31035541b"},
{file = "pandas-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe7317f578c6a153912bd2292f02e40c1d8f253e93c599e82620c7f69755c74f"},
{file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6723a27ad7b244c0c79d8e7007092d7c8f0f11305770e2f4cd778b3ad5f9f85"},
{file = "pandas-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3462c3735fe19f2638f2c3a40bd94ec2dc5ba13abbb032dd2fa1f540a075509d"},
{file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:98bcc8b5bf7afed22cc753a28bc4d9e26e078e777066bc53fac7904ddef9a678"},
{file = "pandas-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d544806b485ddf29e52d75b1f559142514e60ef58a832f74fb38e48d757b299"},
{file = "pandas-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3cd4273d3cb3707b6fffd217204c52ed92859533e31dc03b7c5008aa933aaab"},
{file = "pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3"},
{file = "pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232"},
{file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e"},
{file = "pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4"},
{file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8"},
{file = "pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679"},
{file = "pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8"},
{file = "pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22"},
{file = "pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a"},
{file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928"},
{file = "pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9"},
{file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12"},
{file = "pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb"},
{file = "pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956"},
{file = "pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a"},
{file = "pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9"},
{file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275"},
{file = "pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab"},
{file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96"},
{file = "pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444"},
{file = "pandas-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4645f770f98d656f11c69e81aeb21c6fca076a44bed3dcbb9396a4311bc7f6d8"},
{file = "pandas-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:342e59589cc454aaff7484d75b816a433350b3d7964d7847327edda4d532a2e3"},
{file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d12f618d80379fde6af007f65f0c25bd3e40251dbd1636480dfffce2cf1e6da"},
{file = "pandas-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd71c47a911da120d72ef173aeac0bf5241423f9bfea57320110a978457e069e"},
{file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09e3b1587f0f3b0913e21e8b32c3119174551deb4a4eba4a89bc7377947977e7"},
{file = "pandas-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2323294c73ed50f612f67e2bf3ae45aea04dce5690778e08a09391897f35ff88"},
{file = "pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d"},
{file = "pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2"},
{file = "pandas-2.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52bc29a946304c360561974c6542d1dd628ddafa69134a7131fdfd6a5d7a1a35"},
{file = "pandas-2.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:220cc5c35ffaa764dd5bb17cf42df283b5cb7fdf49e10a7b053a06c9cb48ee2b"},
{file = "pandas-2.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c05e15111221384019897df20c6fe893b2f697d03c811ee67ec9e0bb5a3424"},
{file = "pandas-2.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc03acc273c5515ab69f898df99d9d4f12c4d70dbfc24c3acc6203751d0804cf"},
{file = "pandas-2.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d25c20a03e8870f6339bcf67281b946bd20b86f1a544ebbebb87e66a8d642cba"},
{file = "pandas-2.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21bb612d148bb5860b7eb2c10faacf1a810799245afd342cf297d7551513fbb6"},
{file = "pandas-2.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:b62d586eb25cb8cb70a5746a378fc3194cb7f11ea77170d59f889f5dfe3cec7a"},
{file = "pandas-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1333e9c299adcbb68ee89a9bb568fc3f20f9cbb419f1dd5225071e6cddb2a743"},
{file = "pandas-2.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:76972bcbd7de8e91ad5f0ca884a9f2c477a2125354af624e022c49e5bd0dfff4"},
{file = "pandas-2.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b98bdd7c456a05eef7cd21fd6b29e3ca243591fe531c62be94a2cc987efb5ac2"},
{file = "pandas-2.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d81573b3f7db40d020983f78721e9bfc425f411e616ef019a10ebf597aedb2e"},
{file = "pandas-2.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e190b738675a73b581736cc8ec71ae113d6c3768d0bd18bffa5b9a0927b0b6ea"},
{file = "pandas-2.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c253828cb08f47488d60f43c5fc95114c771bbfff085da54bfc79cb4f9e3a372"},
{file = "pandas-2.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:9467697b8083f9667b212633ad6aa4ab32436dcbaf4cd57325debb0ddef2012f"},
{file = "pandas-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fbb977f802156e7a3f829e9d1d5398f6192375a3e2d1a9ee0803e35fe70a2b9"},
{file = "pandas-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b9b52693123dd234b7c985c68b709b0b009f4521000d0525f2b95c22f15944b"},
{file = "pandas-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bd281310d4f412733f319a5bc552f86d62cddc5f51d2e392c8787335c994175"},
{file = "pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96d31a6b4354e3b9b8a2c848af75d31da390657e3ac6f30c05c82068b9ed79b9"},
{file = "pandas-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df4df0b9d02bb873a106971bb85d448378ef14b86ba96f035f50bbd3688456b4"},
{file = "pandas-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:213a5adf93d020b74327cb2c1b842884dbdd37f895f42dcc2f09d451d949f811"},
{file = "pandas-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c13b81a9347eb8c7548f53fd9a4f08d4dfe996836543f805c987bafa03317ae"},
{file = "pandas-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0c6ecbac99a354a051ef21c5307601093cb9e0f4b1855984a084bfec9302699e"},
{file = "pandas-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6f048aa0fd080d6a06cc7e7537c09b53be6642d330ac6f54a600c3ace857ee9"},
{file = "pandas-2.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0064187b80a5be6f2f9c9d6bdde29372468751dfa89f4211a3c5871854cfbf7a"},
{file = "pandas-2.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac8c320bded4718b298281339c1a50fb00a6ba78cb2a63521c39bec95b0209b"},
{file = "pandas-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:114c2fe4f4328cf98ce5716d1532f3ab79c5919f95a9cfee81d9140064a2e4d6"},
{file = "pandas-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:48fa91c4dfb3b2b9bfdb5c24cd3567575f4e13f9636810462ffed8925352be5a"},
{file = "pandas-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:12d039facec710f7ba305786837d0225a3444af7bbd9c15c32ca2d40d157ed8b"},
{file = "pandas-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c624b615ce97864eb588779ed4046186f967374185c047070545253a52ab2d57"},
{file = "pandas-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0cee69d583b9b128823d9514171cabb6861e09409af805b54459bd0c821a35c2"},
{file = "pandas-2.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2319656ed81124982900b4c37f0e0c58c015af9a7bbc62342ba5ad07ace82ba9"},
{file = "pandas-2.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b37205ad6f00d52f16b6d09f406434ba928c1a1966e2771006a9033c736d30d2"},
{file = "pandas-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:837248b4fc3a9b83b9c6214699a13f069dc13510a6a6d7f9ba33145d2841a012"},
{file = "pandas-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370"},
{file = "pandas-2.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:88080a0ff8a55eac9c84e3ff3c7665b3b5476c6fbc484775ca1910ce1c3e0b87"},
{file = "pandas-2.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d4a558c7620340a0931828d8065688b3cc5b4c8eb674bcaf33d18ff4a6870b4a"},
{file = "pandas-2.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45178cf09d1858a1509dc73ec261bf5b25a625a389b65be2e47b559905f0ab6a"},
{file = "pandas-2.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77cefe00e1b210f9c76c697fedd8fdb8d3dd86563e9c8adc9fa72b90f5e9e4c2"},
{file = "pandas-2.3.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:13bd629c653856f00c53dc495191baa59bcafbbf54860a46ecc50d3a88421a96"},
{file = "pandas-2.3.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:36d627906fd44b5fd63c943264e11e96e923f8de77d6016dc2f667b9ad193438"},
{file = "pandas-2.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:a9d7ec92d71a420185dec44909c32e9a362248c4ae2238234b76d5be37f208cc"},
{file = "pandas-2.3.2.tar.gz", hash = "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb"},
]
[package.dependencies]
@@ -1259,14 +1244,14 @@ files = [
[[package]]
name = "requests"
version = "2.32.4"
version = "2.32.5"
description = "Python HTTP for Humans."
optional = false
python-versions = ">=3.8"
python-versions = ">=3.9"
groups = ["main"]
files = [
{file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"},
{file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"},
{file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"},
{file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"},
]
[package.dependencies]
@@ -1281,30 +1266,31 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "ruff"
version = "0.12.5"
version = "0.12.12"
description = "An extremely fast Python linter and code formatter, written in Rust."
optional = false
python-versions = ">=3.7"
groups = ["main"]
files = [
{file = "ruff-0.12.5-py3-none-linux_armv6l.whl", hash = "sha256:1de2c887e9dec6cb31fcb9948299de5b2db38144e66403b9660c9548a67abd92"},
{file = "ruff-0.12.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d1ab65e7d8152f519e7dea4de892317c9da7a108da1c56b6a3c1d5e7cf4c5e9a"},
{file = "ruff-0.12.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:962775ed5b27c7aa3fdc0d8f4d4433deae7659ef99ea20f783d666e77338b8cf"},
{file = "ruff-0.12.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73b4cae449597e7195a49eb1cdca89fd9fbb16140c7579899e87f4c85bf82f73"},
{file = "ruff-0.12.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b13489c3dc50de5e2d40110c0cce371e00186b880842e245186ca862bf9a1ac"},
{file = "ruff-0.12.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1504fea81461cf4841778b3ef0a078757602a3b3ea4b008feb1308cb3f23e08"},
{file = "ruff-0.12.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c7da4129016ae26c32dfcbd5b671fe652b5ab7fc40095d80dcff78175e7eddd4"},
{file = "ruff-0.12.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ca972c80f7ebcfd8af75a0f18b17c42d9f1ef203d163669150453f50ca98ab7b"},
{file = "ruff-0.12.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dbbf9f25dfb501f4237ae7501d6364b76a01341c6f1b2cd6764fe449124bb2a"},
{file = "ruff-0.12.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c47dea6ae39421851685141ba9734767f960113d51e83fd7bb9958d5be8763a"},
{file = "ruff-0.12.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:c5076aa0e61e30f848846f0265c873c249d4b558105b221be1828f9f79903dc5"},
{file = "ruff-0.12.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a5a4c7830dadd3d8c39b1cc85386e2c1e62344f20766be6f173c22fb5f72f293"},
{file = "ruff-0.12.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:46699f73c2b5b137b9dc0fc1a190b43e35b008b398c6066ea1350cce6326adcb"},
{file = "ruff-0.12.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5a655a0a0d396f0f072faafc18ebd59adde8ca85fb848dc1b0d9f024b9c4d3bb"},
{file = "ruff-0.12.5-py3-none-win32.whl", hash = "sha256:dfeb2627c459b0b78ca2bbdc38dd11cc9a0a88bf91db982058b26ce41714ffa9"},
{file = "ruff-0.12.5-py3-none-win_amd64.whl", hash = "sha256:ae0d90cf5f49466c954991b9d8b953bd093c32c27608e409ae3564c63c5306a5"},
{file = "ruff-0.12.5-py3-none-win_arm64.whl", hash = "sha256:48cdbfc633de2c5c37d9f090ba3b352d1576b0015bfc3bc98eaf230275b7e805"},
{file = "ruff-0.12.5.tar.gz", hash = "sha256:b209db6102b66f13625940b7f8c7d0f18e20039bb7f6101fbdac935c9612057e"},
{file = "ruff-0.12.12-py3-none-linux_armv6l.whl", hash = "sha256:de1c4b916d98ab289818e55ce481e2cacfaad7710b01d1f990c497edf217dafc"},
{file = "ruff-0.12.12-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7acd6045e87fac75a0b0cdedacf9ab3e1ad9d929d149785903cff9bb69ad9727"},
{file = "ruff-0.12.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:abf4073688d7d6da16611f2f126be86523a8ec4343d15d276c614bda8ec44edb"},
{file = "ruff-0.12.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:968e77094b1d7a576992ac078557d1439df678a34c6fe02fd979f973af167577"},
{file = "ruff-0.12.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42a67d16e5b1ffc6d21c5f67851e0e769517fb57a8ebad1d0781b30888aa704e"},
{file = "ruff-0.12.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b216ec0a0674e4b1214dcc998a5088e54eaf39417327b19ffefba1c4a1e4971e"},
{file = "ruff-0.12.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:59f909c0fdd8f1dcdbfed0b9569b8bf428cf144bec87d9de298dcd4723f5bee8"},
{file = "ruff-0.12.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ac93d87047e765336f0c18eacad51dad0c1c33c9df7484c40f98e1d773876f5"},
{file = "ruff-0.12.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:01543c137fd3650d322922e8b14cc133b8ea734617c4891c5a9fccf4bfc9aa92"},
{file = "ruff-0.12.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afc2fa864197634e549d87fb1e7b6feb01df0a80fd510d6489e1ce8c0b1cc45"},
{file = "ruff-0.12.12-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:0c0945246f5ad776cb8925e36af2438e66188d2b57d9cf2eed2c382c58b371e5"},
{file = "ruff-0.12.12-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a0fbafe8c58e37aae28b84a80ba1817f2ea552e9450156018a478bf1fa80f4e4"},
{file = "ruff-0.12.12-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b9c456fb2fc8e1282affa932c9e40f5ec31ec9cbb66751a316bd131273b57c23"},
{file = "ruff-0.12.12-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5f12856123b0ad0147d90b3961f5c90e7427f9acd4b40050705499c98983f489"},
{file = "ruff-0.12.12-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:26a1b5a2bf7dd2c47e3b46d077cd9c0fc3b93e6c6cc9ed750bd312ae9dc302ee"},
{file = "ruff-0.12.12-py3-none-win32.whl", hash = "sha256:173be2bfc142af07a01e3a759aba6f7791aa47acf3604f610b1c36db888df7b1"},
{file = "ruff-0.12.12-py3-none-win_amd64.whl", hash = "sha256:e99620bf01884e5f38611934c09dd194eb665b0109104acae3ba6102b600fd0d"},
{file = "ruff-0.12.12-py3-none-win_arm64.whl", hash = "sha256:2a8199cab4ce4d72d158319b63370abf60991495fb733db96cd923a34c52d093"},
{file = "ruff-0.12.12.tar.gz", hash = "sha256:b86cd3415dbe31b3b46a71c598f4c4b2f550346d1ccf6326b347cc0c8fd063d6"},
]
[[package]]
@@ -1333,14 +1319,14 @@ files = [
[[package]]
name = "starlette"
version = "0.47.2"
version = "0.47.3"
description = "The little ASGI library that shines."
optional = false
python-versions = ">=3.9"
groups = ["main"]
files = [
{file = "starlette-0.47.2-py3-none-any.whl", hash = "sha256:c5847e96134e5c5371ee9fac6fdf1a67336d5815e09eb2a01fdb57a351ef915b"},
{file = "starlette-0.47.2.tar.gz", hash = "sha256:6ae9aa5db235e4846decc1e7b79c4f346adf41e9777aebeb49dfd09bbd7023d8"},
{file = "starlette-0.47.3-py3-none-any.whl", hash = "sha256:89c0778ca62a76b826101e7c709e70680a1699ca7da6b44d38eb0a7e61fe4b51"},
{file = "starlette-0.47.3.tar.gz", hash = "sha256:6bc94f839cc176c4858894f1f8908f0ab79dfec1a6b8402f6da9be26ebea52e9"},
]
[package.dependencies]
@@ -1352,14 +1338,14 @@ full = ["httpx (>=0.27.0,<0.29.0)", "itsdangerous", "jinja2", "python-multipart
[[package]]
name = "typing-extensions"
version = "4.14.1"
version = "4.15.0"
description = "Backported and Experimental Type Hints for Python 3.9+"
optional = false
python-versions = ">=3.9"
groups = ["main"]
files = [
{file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"},
{file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"},
{file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"},
{file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"},
]
[[package]]

File diff suppressed because it is too large Load Diff

View File

@@ -22,8 +22,9 @@ pytest = ">=8.4.1"
pytest-subtests = "^0.11.0"
pytest-recorder = ">=0.5.0"
pytest-asyncio = "^0.23.2"
pytest-order = "^1.3.0"
pytest-cov = "^4.1.0"
ipykernel = "^6.30.0"
ipykernel = "^6.30.1"
types-python-dateutil = "^2.8.19.14"
types-toml = "^0.10.8.7"
poetry = ">=2.1.3"

File diff suppressed because it is too large Load Diff

View File

@@ -16,7 +16,7 @@ openbb-api = "openbb_platform_api.main:main"
[tool.poetry.dependencies]
python = ">=3.9.21,<3.14"
openbb-core = "^1.4.8"
deepdiff = "*"
deepdiff = ">=8.6.1"
[build-system]
requires = ["poetry-core>=1.0.0"]

2417
openbb_platform/poetry.lock generated vendored

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
"""Fama French module."""

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,7 @@ packages = [{ include = "openbb_nasdaq" }]
[tool.poetry.dependencies]
python = ">=3.9.21,<3.14"
openbb-core = "^1.4.8"
openbb-platform-api = "^1.1.10"
openbb-platform-api = "^1.1.13"
async-lru = "^2.0.5"
random-user-agent = "^1.0.1"
nasdaq-data-link = "^1.0.4"

View File

@@ -7,6 +7,7 @@ from typing import Dict
from openbb_core.provider.abstract.provider import Provider
from openbb_core.provider.registry import RegistryLoader
from providers.tests.utils.unit_tests_generator import (
check_pattern_in_file,
get_provider_fetchers,
@@ -18,7 +19,7 @@ def get_provider_test_files(provider: Provider):
fetchers_dict = provider.fetcher_dict
fetcher_module_name = fetchers_dict[list(fetchers_dict.keys())[0]].__module__
parent_module = import_module(fetcher_module_name.split(".")[0])
parent_module_path = os.path.dirname(parent_module.__file__)
parent_module_path = os.path.dirname(parent_module.__file__) # type: ignore
root_provider_path = os.path.dirname(parent_module_path)
provider_name = provider.name.lower()
@@ -53,5 +54,5 @@ class ProviderFetcherTest(unittest.TestCase):
# check that fetcher_cls is being instantiated in path
with self.subTest(i=fetcher_cls):
self.assertTrue(
check_pattern_in_file(path, f"{fetcher_cls.__name__}()")
check_pattern_in_file(path, f"{fetcher_cls.__name__}()") # type: ignore
)

View File

@@ -11,7 +11,7 @@ packages = [{ include = "openbb", from = "core" }]
[tool.poetry.dependencies]
python = ">=3.9.21,<3.14"
openbb-core = "^1.4.8"
openbb-platform-api = "^1.1.11"
openbb-platform-api = "^1.1.13"
openbb-benzinga = "^1.4.2"
openbb-bls = "^1.1.3"

View File

@@ -1,12 +0,0 @@
"""Configuration for pytest."""
# TODO: See if we can dynamically import the test modules under the openbb_platform
# TODO: Add global fixture for headers here
import os
def pytest_configure():
"""Set environment variables for testing."""
os.environ["OPENBB_AUTO_BUILD"] = "false"

View File

@@ -4,6 +4,7 @@ import json
from pathlib import Path
from typing import Dict
import pytest
from poetry.core.constraints.version import Version, VersionConstraint, parse_constraint
from poetry.core.pyproject.toml import PyProjectTOML
@@ -33,31 +34,41 @@ def load_req_ext(file: Path) -> Dict[str, VersionConstraint]:
return req_ext
@pytest.mark.order(1)
def test_extension_map():
"""Ensure only required extensions are built and versions respect pyproject.toml"""
"""Ensure package folder exists, __init__.py is present, no static assets, and reference.json core version matches."""
this_dir = Path(__file__).parent
with open(
Path(this_dir, "..", "core", "openbb", "assets", "reference.json"),
encoding="utf-8",
) as f:
package_dir = Path(this_dir, "..", "core", "openbb", "package").resolve()
assert (
package_dir.exists() and package_dir.is_dir()
), f"Package directory '{package_dir}' does not exist."
init_file = package_dir / "__init__.py"
assert (
init_file.exists() and init_file.is_file()
), f"'__init__.py' not found in package directory '{package_dir}'."
contents = [
p.name
for p in package_dir.iterdir()
if p.name not in ("__init__.py", "__pycache__")
]
assert (
not contents
), f"Unexpected files or folders found in package directory: {contents}"
# Check reference.json core version matches pyproject.toml openbb-core version
ref_path = Path(this_dir, "..", "core", "openbb", "assets", "reference.json")
with open(ref_path, encoding="utf-8") as f:
reference = json.load(f)
ext_map = create_ext_map(reference.get("info", {}).get("extensions", {}))
req_ext = load_req_ext(Path(this_dir, "..", "pyproject.toml"))
core_version = reference.get("info", {}).get("core")
for ext in req_ext:
if ext != "platform_api":
assert ext in ext_map, (
f"Extension '{ext}' is required in pyproject.toml but is not built, install"
" it and rebuild or remove it from mandatory requirements in pyproject.toml"
)
for name, version in ext_map.items():
_name = "congress_gov" if name == "uscongress" else name
assert _name in req_ext, (
f"'{_name}' is not a required extension in pyproject.toml, uninstall it and"
" rebuild, or add it to pyproject.toml"
)
assert req_ext[_name].allows(version), (
f"Version '{version}' of extension '{_name}' is not compatible with the"
f" version '{req_ext[_name]}' constraint in pyproject.toml"
)
pyproject_path = Path(this_dir, "..", "pyproject.toml")
pyproject = PyProjectTOML(pyproject_path)
openbb_core_version = pyproject.data["tool"]["poetry"]["dependencies"][
"openbb-core"
]
if isinstance(openbb_core_version, dict):
openbb_core_version = openbb_core_version["version"]
assert core_version == openbb_core_version.lstrip("^"), (
f"reference.json core version '{core_version}'"
f" does not match pyproject.toml openbb-core version '{openbb_core_version}'"
)

View File

@@ -1,7 +1,5 @@
"""Test the pyproject.toml file for consistency and its dependencies."""
import glob
import os
from pathlib import Path
from tomlkit import load
@@ -13,56 +11,67 @@ def test_optional_packages():
"""Ensure only required extensions are built and versions respect pyproject.toml"""
with open(ROOT_DIR / "pyproject.toml") as f:
data = load(f)
dependencies = data["tool"]["poetry"]["dependencies"]
extras = data["tool"]["poetry"]["extras"]
all_packages = extras["all"]
dependencies = data["tool"]["poetry"]["dependencies"] # type: ignore
extras = data["tool"]["poetry"]["extras"] # type: ignore
all_packages = extras["all"] # type: ignore
default_packages = []
optional_packages = []
for package, details in dependencies.items():
for package, details in dependencies.items(): # type: ignore
if isinstance(details, dict) and details.get("optional") is True:
optional_packages.append(package)
else:
default_packages.append(package)
# check that optional packages have the same content as all_packages and extras
assert sorted(optional_packages) == sorted(all_packages)
assert sorted(optional_packages) == sorted(extras["all"])
assert sorted(optional_packages) == sorted(all_packages) # type: ignore
assert sorted(optional_packages) == sorted(extras["all"]) # type: ignore
# assert that there is no overlap between default and optional packages
assert set(default_packages).isdisjoint(set(optional_packages))
def test_default_package_files():
"""Ensure only required extensions are built and versions respect pyproject.toml"""
with open(ROOT_DIR / "pyproject.toml") as f:
data = load(f)
dependencies = data["tool"]["poetry"]["dependencies"]
package_files = glob.glob("openbb_platform/core/openbb/package/*.py")
def test_extension_versions_match_main_pyproject():
"""Ensure every openbb- extension version in the main pyproject.toml matches its own pyproject.toml."""
invalid_packages = []
default_packages = []
main_pyproject = ROOT_DIR / "pyproject.toml"
with open(main_pyproject, encoding="utf-8") as f:
main_data = load(f)
main_deps = main_data["tool"]["poetry"]["dependencies"] # type: ignore
for package, details in dependencies.items():
if isinstance(details, dict) is False:
default_packages.append(package)
# Find all pyproject.toml files and build a map of package name -> file path
pyproject_files = list(ROOT_DIR.rglob("pyproject.toml"))
package_map = {}
for file_path in package_files:
package_name = os.path.basename(file_path).replace(".py", "")
if package_name.startswith("_"):
continue
if "_" in package_name:
base_package = package_name.split("_")[0]
if "openbb-" + base_package not in default_packages:
invalid_packages.append(package_name)
elif "openbb-" + package_name not in default_packages:
invalid_packages.append(package_name)
for file_path in pyproject_files:
with open(file_path, encoding="utf-8") as f:
data = load(f)
pkg_name = data.get("tool", {}).get("poetry", {}).get("name", "")
if pkg_name:
package_map[pkg_name] = str(file_path)
assert not invalid_packages, (
f"If not making a PR, ignore this error -> "
f"Found non-required extension static assets: {invalid_packages}. "
f"Only required packages should be committed."
f"Please create a new environment with only required extensions, "
f"rebuild the static assets, and commit the changes."
)
# Now check each openbb- dependency in main pyproject.toml
for pkg, main_version in main_deps.items(): # type: ignore
if pkg.startswith("openbb-"):
assert (
pkg in package_map
), f"{pkg} listed in main pyproject.toml but no pyproject.toml found with that name"
# Load the extension's pyproject.toml
with open(package_map[pkg], encoding="utf-8") as f:
ext_data = load(f)
ext_version = ext_data["tool"]["poetry"]["version"] # type: ignore
# Normalize main_version if it's a dict
m_version = (
main_version.get("version", "")
if isinstance(main_version, dict)
else main_version
)
m_version = str(m_version).lstrip("^")
assert ext_version == m_version, (
f"Version mismatch for {pkg}: main pyproject.toml has"
f"{m_version}, extension pyproject.toml has {ext_version}"
)