diff --git a/assets/extensions/provider.json b/assets/extensions/provider.json index cff4eaf21ddd..2c8afa2818c9 100644 --- a/assets/extensions/provider.json +++ b/assets/extensions/provider.json @@ -145,6 +145,14 @@ "credentials": [], "website": "https://data.gov" }, + { + "packageName": "openbb-imf", + "optional": false, + "reprName": "International Monetary Fund (IMF) Public Data API", + "description": "This provider allows you to access International Monetary Fund data through the IMF Public Data API.", + "credentials": [], + "website": "https://datahelp.imf.org/knowledgebase/articles/667681-using-json-restful-web-service" + }, { "packageName": "openbb-intrinio", "optional": false, diff --git a/openbb_platform/core/openbb_core/provider/standard_models/economic_indicators.py b/openbb_platform/core/openbb_core/provider/standard_models/economic_indicators.py index 013c962440ae..a20fe2690eb8 100644 --- a/openbb_platform/core/openbb_core/provider/standard_models/economic_indicators.py +++ b/openbb_platform/core/openbb_core/provider/standard_models/economic_indicators.py @@ -16,10 +16,6 @@ class EconomicIndicatorsQueryParams(QueryParams): """Economic Indicators Query.""" - symbol: str = Field( - description=QUERY_DESCRIPTIONS.get("symbol", "") - + " The base symbol for the indicator (e.g. GDP, CPI, etc.).", - ) country: Optional[str] = Field( default=None, description=QUERY_DESCRIPTIONS.get("country", "") diff --git a/openbb_platform/dev_install.py b/openbb_platform/dev_install.py index 8b3bb2338f8c..58eeb24fa2e6 100644 --- a/openbb_platform/dev_install.py +++ b/openbb_platform/dev_install.py @@ -28,6 +28,7 @@ openbb-federal-reserve = { path = "./providers/federal_reserve", develop = true } openbb-fmp = { path = "./providers/fmp", develop = true } openbb-fred = { path = "./providers/fred", develop = true } +openbb-imf = { path = "./providers/imf", develop = true } openbb-intrinio = { path = "./providers/intrinio", develop = true } openbb-oecd = { path = "./providers/oecd", develop = true } openbb-polygon = { path = "./providers/polygon", develop = true } diff --git a/openbb_platform/extensions/economy/integration/test_economy_api.py b/openbb_platform/extensions/economy/integration/test_economy_api.py index 956130af9c92..aabc9091b00f 100644 --- a/openbb_platform/extensions/economy/integration/test_economy_api.py +++ b/openbb_platform/extensions/economy/integration/test_economy_api.py @@ -609,6 +609,26 @@ def test_economy_fred_regional(params, headers): "frequency": "quarter", } ), + ( + { + "provider": "imf", + "country": "us,uk,jp", + "symbol": "gold_reserves", + "start_date": "2022-01-01", + "end_date": "2023-12-31", + "frequency": "annual", + } + ), + ( + { + "provider": "imf", + "country": "all", + "symbol": "derivative_assets", + "start_date": "2022-01-01", + "end_date": "2023-12-31", + "frequency": "annual", + } + ), ], ) @pytest.mark.integration diff --git a/openbb_platform/extensions/economy/integration/test_economy_python.py b/openbb_platform/extensions/economy/integration/test_economy_python.py index 51345bcc39cb..ae1ef3159ec8 100644 --- a/openbb_platform/extensions/economy/integration/test_economy_python.py +++ b/openbb_platform/extensions/economy/integration/test_economy_python.py @@ -629,6 +629,26 @@ def test_economy_available_indicators(params, obb): "frequency": "quarter", } ), + ( + { + "provider": "imf", + "country": "us,uk,jp", + "symbol": "gold_reserves", + "start_date": "2022-01-01", + "end_date": "2023-12-31", + "frequency": "annual", + } + ), + ( + { + "provider": "imf", + "country": "all", + "symbol": "derivative_assets", + "start_date": "2022-01-01", + "end_date": "2023-12-31", + "frequency": "annual", + } + ), ], ) @pytest.mark.integration diff --git a/openbb_platform/extensions/economy/openbb_economy/economy_router.py b/openbb_platform/extensions/economy/openbb_economy/economy_router.py index c4c1f60674c8..6c2be0e800c1 100644 --- a/openbb_platform/extensions/economy/openbb_economy/economy_router.py +++ b/openbb_platform/extensions/economy/openbb_economy/economy_router.py @@ -411,6 +411,29 @@ async def available_indicators( description="Use the `main` symbol to get the group of main indicators for a country.", parameters={"provider": "econdb", "symbol": "main", "country": "eu"}, ), + APIEx( + description="When the provider is 'imf', the absence of a symbol will default to 'irfcl_top_lines'." + + " Use 'IRFCL' to get all the data from the set of indicators.", + parameters={"provider": "imf"}, + ), + APIEx( + description="When the provider is 'imf', complete tables are returned by using a 'preset'." + + " Refer to the function's docstring for descriptions of each preset." + + " When no country is supplied, the data is returned for all countries.", + parameters={"provider": "imf", "symbol": "gold_reserves"}, + ), + APIEx( + description="When the provider is 'imf', multiple countries and symbols can be supplied." + + " Enter countries as a two-letter ISO country code, or the country name in lower_snake_case.", + parameters={ + "provider": "imf", + "symbol": "RAFA_USD,RAPFA_USD,RAFA_RAPFA_RO", + "country": "us,china,jp,4f,gb", + "start_date": "2010-01-01", + "end_date": "2020-12-31", + "frequency": "annual", + }, + ), ], ) async def indicators( diff --git a/openbb_platform/openbb/assets/reference.json b/openbb_platform/openbb/assets/reference.json index 0b42bcdf9e1d..5fa4566f23f4 100644 --- a/openbb_platform/openbb/assets/reference.json +++ b/openbb_platform/openbb/assets/reference.json @@ -26,6 +26,7 @@ "federal_reserve@1.3.2", "fmp@1.3.2", "fred@1.3.2", + "imf@1.0.0b0", "intrinio@1.3.2", "oecd@1.3.2", "polygon@1.3.2", @@ -7050,7 +7051,8 @@ "optional": true, "choices": null } - ] + ], + "imf": [] }, "returns": { "OBBject": [ @@ -7061,7 +7063,7 @@ }, { "name": "provider", - "type": "Optional[Literal['econdb']]", + "type": "Optional[Literal['econdb', 'imf']]", "description": "Provider name." }, { @@ -7197,6 +7199,32 @@ "optional": true, "choices": null } + ], + "imf": [ + { + "name": "table", + "type": "str", + "description": "The name of the table associated with the symbol.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "level", + "type": "int", + "description": "The indentation level of the data, relative to the table and symbol_root", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "order", + "type": "int", + "description": "Order of the data, relative to the table.", + "default": null, + "optional": true, + "choices": null + } ] }, "model": "AvailableIndicators" @@ -7207,24 +7235,237 @@ "message": null }, "description": "Get economic indicators by country and indicator.", - "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.indicators(provider='econdb', symbol='PCOCO')\n# Enter the country as the full name, or iso code. Use `available_indicators()` to get a list of supported indicators from EconDB.\nobb.economy.indicators(symbol='CPI', country='united_states,jp', provider='econdb')\n# Use the `main` symbol to get the group of main indicators for a country.\nobb.economy.indicators(provider='econdb', symbol='main', country='eu')\n```\n\n", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.indicators(provider='econdb', symbol=PCOCO)\n# Enter the country as the full name, or iso code. Use `available_indicators()` to get a list of supported indicators from EconDB.\nobb.economy.indicators(symbol=CPI, country='united_states,jp', provider='econdb')\n# Use the `main` symbol to get the group of main indicators for a country.\nobb.economy.indicators(provider='econdb', symbol=main, country='eu')\n# When the provider is 'imf', the absence of a symbol will default to 'irfcl_top_lines'. Use 'IRFCL' to get all the data from the set of indicators.\nobb.economy.indicators(provider='imf')\n# When the provider is 'imf', complete tables are returned by using a 'preset'. Refer to the function's docstring for descriptions of each preset. When no country is supplied, the data is returned for all countries.\nobb.economy.indicators(provider='imf', symbol=gold_reserves)\n# When the provider is 'imf', multiple countries and symbols can be supplied. Enter countries as a two-letter ISO country code, or the country name in lower_snake_case.\nobb.economy.indicators(provider='imf', symbol=RAFA_USD,RAPFA_USD,RAFA_RAPFA_RO, country='us,china,jp,4f,gb', start_date='2010-01-01', end_date='2020-12-31', frequency=annual)\n```\n\n", "parameters": { "standard": [ - { - "name": "symbol", - "type": "Union[str, List[str]]", - "description": "Symbol to get data for. The base symbol for the indicator (e.g. GDP, CPI, etc.). Multiple items allowed for provider(s): econdb.", - "default": "", - "optional": false, - "choices": null - }, { "name": "country", "type": "Union[str, List[str]]", - "description": "The country to get data. The country represented by the indicator, if available. Multiple items allowed for provider(s): econdb.", + "description": "The country to get data. The country represented by the indicator, if available. Multiple items allowed for provider(s): econdb, imf.", "default": null, "optional": true, - "choices": null + "choices": [ + "all", + "afghanistan", + "albania", + "algeria", + "american_samoa", + "angola", + "anguilla", + "antigua_and_barbuda", + "argentina", + "armenia", + "aruba", + "australia", + "austria", + "azerbaijan", + "bahamas", + "bahrain", + "bangladesh", + "barbados", + "belarus", + "belgium", + "belize", + "benin", + "bermuda", + "bhutan", + "bolivia", + "bosnia_and_herzegovina", + "botswana", + "brazil", + "brunei_darussalam", + "bulgaria", + "burkina_faso", + "burundi", + "cabo_verde", + "cambodia", + "cameroon", + "canada", + "cayman_islands", + "central_african_republic", + "chad", + "chile", + "hong_kong", + "macao", + "china", + "colombia", + "comoros", + "congo", + "cook_islands", + "costa_rica", + "cote_divoire", + "croatia", + "cuba", + "curacao", + "cyprus", + "czech_republic", + "denmark", + "djibouti", + "dominica", + "dominican_republic", + "ecuador", + "egypt", + "el_salvador", + "equatorial_guinea", + "eritrea", + "estonia", + "eswatini", + "ethiopia", + "ecb", + "falkland_islands", + "faroe_islands", + "fiji", + "finland", + "france", + "french_polynesia", + "gabon", + "gambia", + "georgia", + "germany", + "ghana", + "gibraltar", + "greece", + "greenland", + "grenada", + "guadeloupe", + "guam", + "guatemala", + "french_guiana", + "guinea", + "guyana", + "haiti", + "honduras", + "hungary", + "iceland", + "india", + "indonesia", + "iran", + "iraq", + "ireland", + "israel", + "italy", + "jamaica", + "japan", + "jordan", + "kazakhstan", + "kenya", + "kiribati", + "korea", + "kosovo", + "kuwait", + "kyrgyzstan", + "lao_peoples_democratic_republic", + "latvia", + "lebanon", + "lesotho", + "liberia", + "libya", + "lithuania", + "luxembourg", + "madagascar", + "malawi", + "malaysia", + "maldives", + "mali", + "malta", + "marshall_islands", + "martinique", + "mauritania", + "mauritius", + "mexico", + "micronesia", + "moldova", + "mongolia", + "montenegro", + "montserrat", + "morocco", + "mozambique", + "myanmar", + "namibia", + "nauru", + "nepal", + "netherlands_antilles", + "netherlands", + "new_caledonia", + "new_zealand", + "nicaragua", + "niger", + "nigeria", + "north_macedonia", + "norway", + "oman", + "pakistan", + "palau", + "panama", + "papua_new_guinea", + "paraguay", + "peru", + "philippines", + "poland", + "portugal", + "qatar", + "reunion", + "romania", + "russian_federation", + "rwanda", + "saint_helena", + "saint_pierre_and_miquelon", + "samoa", + "san_marino", + "sao_tome_and_principe", + "saudi_arabia", + "senegal", + "serbia_and_montenegro", + "serbia", + "seychelles", + "sierra_leone", + "singapore", + "sint_maarten", + "slovakia", + "slovenia", + "solomon_islands", + "somalia", + "south_africa", + "south_sudan", + "spain", + "sri_lanka", + "saint_kitts_and_nevis", + "saint_lucia", + "saint_vincent_and_the_grenadines", + "sudan", + "suriname", + "sweden", + "switzerland", + "syrian_arab_republic", + "taiwan", + "tajikistan", + "tanzania", + "thailand", + "timor", + "timor-leste", + "togo", + "tonga", + "trinidad_and_tobago", + "tunisia", + "turkey", + "turkmenistan", + "tuvalu", + "uganda", + "ukraine", + "united_arab_emirates", + "united_kingdom", + "united_states", + "uruguay", + "uzbekistan", + "vanuatu", + "venezuela", + "viet_nam", + "palestine", + "yemen", + "zambia", + "zimbabwe", + "euro_area" + ] }, { "name": "start_date", @@ -7244,6 +7485,14 @@ } ], "econdb": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. The base symbol for the indicator (e.g. GDP, CPI, etc.). Use `available_indicators()` to get a list of available symbols. Multiple items allowed for provider(s): econdb.", + "default": "", + "optional": false, + "choices": null + }, { "name": "transform", "type": "Literal['toya', 'tpop', 'tusd', 'tpgp']", @@ -7268,6 +7517,28 @@ "optional": true, "choices": null } + ], + "imf": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Use `available_indicators()` to get the list of available symbols. Use 'IRFCL' to get all the data from the set of indicators. Complete tables are available only by single country, and are keyed as described below. The default is 'irfcl_top_lines'. Available presets not listed in `available_indicators()` are:\n\n 'IRFCL': All the data from the set of indicators. Not compatible with multiple countries.\n 'irfcl_top_lines': The default, top line items from the IRFCL data. Compatible with multiple countries.\n 'reserve_assets_and_other_fx_assets': Table I of the IRFCL data. Not compatible with multiple countries.\n 'predetermined_drains_on_fx_assets': Table II of the IRFCL data. Not compatible with multiple countries.\n 'contingent_drains_fx_assets': Table III of the IRFCL data. Not compatible with multiple countries.\n 'memorandum_items': The memorandum items table of the IRFCL data. Not compatible with multiple countries.\n 'gold_reserves': Gold reserves as value in USD and Fine Troy Ounces. Compatible with multiple countries.\n 'derivative_assets': Net derivative assets as value in USD. Compatible with multipile countries. Multiple items allowed for provider(s): imf.", + "default": "irfcl_top_lines", + "optional": true, + "choices": null + }, + { + "name": "frequency", + "type": "Literal['annual', 'quarter', 'month']", + "description": "Frequency of the data.", + "default": "quarter", + "optional": true, + "choices": [ + "annual", + "quarter", + "month" + ] + } ] }, "returns": { @@ -7279,7 +7550,7 @@ }, { "name": "provider", - "type": "Optional[Literal['econdb']]", + "type": "Optional[Literal['econdb', 'imf']]", "description": "Provider name." }, { @@ -7342,7 +7613,57 @@ "choices": null } ], - "econdb": [] + "econdb": [], + "imf": [ + { + "name": "scale", + "type": "str", + "description": "The scale of the value.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "table", + "type": "str", + "description": "The name of the table associated with the symbol.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "level", + "type": "int", + "description": "The indentation level of the data, relative to the table and symbol_root", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "order", + "type": "int", + "description": "Order of the data, relative to the table.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "reference_sector", + "type": "str", + "description": "The reference sector for the data.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "title", + "type": "str", + "description": "The title of the series associated with the symbol.", + "default": null, + "optional": true, + "choices": null + } + ] }, "model": "EconomicIndicators" }, diff --git a/openbb_platform/openbb/package/__extensions__.py b/openbb_platform/openbb/package/__extensions__.py index 93a7bdf3fabe..ea51839f6820 100644 --- a/openbb_platform/openbb/package/__extensions__.py +++ b/openbb_platform/openbb/package/__extensions__.py @@ -39,6 +39,7 @@ class Extensions(Container): - federal_reserve@1.3.2 - fmp@1.3.2 - fred@1.3.2 + - imf@1.0.0b0 - intrinio@1.3.2 - oecd@1.3.2 - polygon@1.3.2 diff --git a/openbb_platform/openbb/package/economy.py b/openbb_platform/openbb/package/economy.py index 450c16889830..d1b67b18114d 100644 --- a/openbb_platform/openbb/package/economy.py +++ b/openbb_platform/openbb/package/economy.py @@ -54,9 +54,9 @@ def __repr__(self) -> str: def available_indicators( self, provider: Annotated[ - Optional[Literal["econdb"]], + Optional[Literal["econdb", "imf"]], OpenBBField( - description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb." + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb, imf." ), ] = None, **kwargs @@ -65,8 +65,8 @@ def available_indicators( Parameters ---------- - provider : Optional[Literal['econdb']] - The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb. + provider : Optional[Literal['econdb', 'imf']] + The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb, imf. use_cache : bool Whether to use cache or not, by default is True The cache of indicator symbols will persist for one week. (provider: econdb) @@ -75,7 +75,7 @@ def available_indicators( OBBject results : List[AvailableIndicators] Serializable results. - provider : Optional[Literal['econdb']] + provider : Optional[Literal['econdb', 'imf']] Provider name. warnings : Optional[List[Warning_]] List of warnings. @@ -88,16 +88,22 @@ def available_indicators( ------------------- symbol_root : Optional[str] The root symbol representing the indicator. + The root symbol representing the indicator. symbol : Optional[str] Symbol representing the entity requested in the data. The root symbol with additional codes. + Symbol representing the entity requested in the data. The root symbol with additional codes. country : Optional[str] The name of the country, region, or entity represented by the symbol. + The name of the country, region, or entity represented by the symbol. iso : Optional[str] The ISO code of the country, region, or entity represented by the symbol. + The ISO code of the country, region, or entity represented by the symbol. description : Optional[str] The description of the indicator. + The description of the indicator. frequency : Optional[str] The frequency of the indicator data. + The frequency of the indicator data. currency : Optional[str] The currency, or unit, the data is based in. (provider: econdb) scale : Optional[str] @@ -114,6 +120,12 @@ def available_indicators( The last date of the data. (provider: econdb) last_insert_timestamp : Optional[datetime] The time of the last update. Data is typically reported with a lag. (provider: econdb) + table : Optional[str] + The name of the table associated with the symbol. (provider: imf) + level : Optional[int] + The indentation level of the data, relative to the table and symbol_root (provider: imf) + order : Optional[int] + Order of the data, relative to the table. (provider: imf) Examples -------- @@ -128,10 +140,11 @@ def available_indicators( "provider": self._get_provider( provider, "economy.available_indicators", - ("econdb",), + ("econdb", "imf"), ) }, standard_params={}, + standard_params={}, extra_params=kwargs, ) ) @@ -146,6 +159,12 @@ def balance_of_payments( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: 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: """Balance of Payments Reports. @@ -179,46 +198,67 @@ def balance_of_payments( ----------------- period : Optional[date] The date representing the beginning of the reporting period. + The date representing the beginning of the reporting period. balance_percent_of_gdp : Optional[float] Current Account Balance as Percent of GDP + Current Account Balance as Percent of GDP balance_total : Optional[float] Current Account Total Balance (USD) + Current Account Total Balance (USD) balance_total_services : Optional[float] Current Account Total Services Balance (USD) + Current Account Total Services Balance (USD) balance_total_secondary_income : Optional[float] Current Account Total Secondary Income Balance (USD) + Current Account Total Secondary Income Balance (USD) balance_total_goods : Optional[float] Current Account Total Goods Balance (USD) + Current Account Total Goods Balance (USD) balance_total_primary_income : Optional[float] Current Account Total Primary Income Balance (USD) + Current Account Total Primary Income Balance (USD) credits_services_percent_of_goods_and_services : Optional[float] Current Account Credits Services as Percent of Goods and Services + Current Account Credits Services as Percent of Goods and Services credits_services_percent_of_current_account : Optional[float] Current Account Credits Services as Percent of Current Account + Current Account Credits Services as Percent of Current Account credits_total_services : Optional[float] Current Account Credits Total Services (USD) + Current Account Credits Total Services (USD) credits_total_goods : Optional[float] Current Account Credits Total Goods (USD) + Current Account Credits Total Goods (USD) credits_total_primary_income : Optional[float] Current Account Credits Total Primary Income (USD) + Current Account Credits Total Primary Income (USD) credits_total_secondary_income : Optional[float] Current Account Credits Total Secondary Income (USD) + Current Account Credits Total Secondary Income (USD) credits_total : Optional[float] Current Account Credits Total (USD) + Current Account Credits Total (USD) debits_services_percent_of_goods_and_services : Optional[float] Current Account Debits Services as Percent of Goods and Services + Current Account Debits Services as Percent of Goods and Services debits_services_percent_of_current_account : Optional[float] Current Account Debits Services as Percent of Current Account + Current Account Debits Services as Percent of Current Account debits_total_services : Optional[float] Current Account Debits Total Services (USD) + Current Account Debits Total Services (USD) debits_total_goods : Optional[float] Current Account Debits Total Goods (USD) + Current Account Debits Total Goods (USD) debits_total_primary_income : Optional[float] Current Account Debits Total Primary Income (USD) + Current Account Debits Total Primary Income (USD) debits_total : Optional[float] Current Account Debits Total (USD) + Current Account Debits Total (USD) debits_total_secondary_income : Optional[float] Current Account Debits Total Secondary Income (USD) + Current Account Debits Total Secondary Income (USD) Examples -------- @@ -238,6 +278,7 @@ def balance_of_payments( ) }, standard_params={}, + standard_params={}, extra_params=kwargs, ) ) @@ -260,6 +301,20 @@ def calendar( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, tradingeconomics." ), ] = 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, + provider: Annotated[ + Optional[Literal["fmp", "tradingeconomics"]], + OpenBBField( + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, tradingeconomics." + ), + ] = None, **kwargs ) -> OBBject: """Get the upcoming, or historical, economic calendar of global events. @@ -299,28 +354,40 @@ def calendar( ---------------- date : Optional[datetime] The date of the data. + The date of the data. country : Optional[str] Country of event. + Country of event. category : Optional[str] Category of event. + Category of event. event : Optional[str] Event name. + Event name. importance : Optional[str] The importance level for the event. + The importance level for the event. source : Optional[str] Source of the data. + Source of the data. currency : Optional[str] Currency of the data. + Currency of the data. unit : Optional[str] Unit of the data. + Unit of the data. consensus : Optional[Union[str, float]] Average forecast among a representative group of economists. + Average forecast among a representative group of economists. previous : Optional[Union[str, float]] Value for the previous period after the revision (if revision is applicable). + Value for the previous period after the revision (if revision is applicable). revised : Optional[Union[str, float]] Revised previous value, if applicable. + Revised previous value, if applicable. actual : Optional[Union[str, float]] Latest released value. + Latest released value. change : Optional[float] Value change since previous. (provider: fmp) change_percent : Optional[float] @@ -584,194 +651,441 @@ def calendar( } }, }, - ) - ) - - @exception_handler - @validate - def central_bank_holdings( - self, - date: Annotated[ - Union[datetime.date, None, str], - OpenBBField(description="A specific date to get data for."), - ] = None, - provider: Annotated[ - Optional[Literal["federal_reserve"]], - OpenBBField( - description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve." - ), - ] = None, - **kwargs - ) -> OBBject: - """Get the balance sheet holdings of a central bank. - - Parameters - ---------- - date : Union[date, None, str] - A specific date to get data for. - provider : Optional[Literal['federal_reserve']] - The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve. - holding_type : Literal['all_agency', 'agency_debts', 'mbs', 'cmbs', 'all_treasury', 'bills', 'notesbonds', 'frn', 'tips'] - Type of holdings to return. (provider: federal_reserve) - summary : bool - If True, returns historical weekly summary by holding type. This parameter takes priority over other parameters. (provider: federal_reserve) - cusip : Optional[str] - Multiple comma separated items allowed. - wam : bool - If True, returns weighted average maturity aggregated by agency or treasury securities. This parameter takes priority over `holding_type`, `cusip`, and `monthly`. (provider: federal_reserve) - monthly : bool - If True, returns historical data for all Treasury securities at a monthly interval. This parameter takes priority over other parameters, except `wam`. Only valid when `holding_type` is set to: 'all_treasury', 'bills', 'notesbonds', 'frn', 'tips'. (provider: federal_reserve) - - Returns - ------- - OBBject - results : List[CentralBankHoldings] - Serializable results. - provider : Optional[Literal['federal_reserve']] - Provider name. - warnings : Optional[List[Warning_]] - List of warnings. - chart : Optional[Chart] - Chart object. - extra : Dict[str, Any] - Extra info. - - CentralBankHoldings - ------------------- - date : date - The date of the data. - security_type : Optional[str] - Type of security - i.e. TIPs, FRNs, etc. (provider: federal_reserve) - description : Optional[str] - Description of the security. Only returned for Agency securities. (provider: federal_reserve) - is_aggreated : Optional[Literal['Y']] - Whether the security is aggregated. Only returned for Agency securities. (provider: federal_reserve) - cusip : Optional[str] - - issuer : Optional[str] - Issuer of the security. (provider: federal_reserve) - maturity_date : Optional[date] - Maturity date of the security. (provider: federal_reserve) - term : Optional[str] - Term of the security. Only returned for Agency securities. (provider: federal_reserve) - face_value : Optional[float] - Current face value of the security (Thousands of $USD). Current face value of the securities, which is the remaining principal balance of the securities. (provider: federal_reserve) - par_value : Optional[float] - Par value of the security (Thousands of $USD). Changes in par may reflect primary and secondary market transactions and/or custodial account activity. (provider: federal_reserve) - coupon : Optional[float] - Coupon rate of the security. (provider: federal_reserve) - spread : Optional[float] - Spread to the current reference rate, as determined at each security's initial auction. (provider: federal_reserve) - percent_outstanding : Optional[float] - Total percent of the outstanding CUSIP issuance. (provider: federal_reserve) - bills : Optional[float] - Treasury bills amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) - frn : Optional[float] - Floating rate Treasury notes amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) - notes_and_bonds : Optional[float] - Treasuy Notes and bonds amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) - tips : Optional[float] - Treasury inflation-protected securities amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) - mbs : Optional[float] - Mortgage-backed securities amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) - cmbs : Optional[float] - Commercial mortgage-backed securities amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) - agencies : Optional[float] - Agency securities amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) - total : Optional[float] - Total SOMA holdings amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) - tips_inflation_compensation : Optional[float] - Treasury inflation-protected securities inflation compensation amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) - change_prior_week : Optional[float] - Change in SOMA holdings from the prior week (Thousands of $USD). (provider: federal_reserve) - change_prior_year : Optional[float] - Change in SOMA holdings from the prior year (Thousands of $USD). (provider: federal_reserve) - - Examples - -------- - >>> from openbb import obb - >>> # The default is the latest Treasury securities held by the Federal Reserve. - >>> obb.economy.central_bank_holdings(provider='federal_reserve') - >>> # Get historical summaries of the Fed's holdings. - >>> obb.economy.central_bank_holdings(provider='federal_reserve', summary=True) - >>> # Get the balance sheet holdings as-of a historical date. - >>> obb.economy.central_bank_holdings(provider='federal_reserve', date='2019-05-21') - >>> # Use the `holding_type` parameter to select Agency securities, or specific categories or Treasury securities. - >>> obb.economy.central_bank_holdings(provider='federal_reserve', holding_type='agency_debts') - """ # noqa: E501 - - return self._run( - "/economy/central_bank_holdings", - **filter_inputs( - provider_choices={ - "provider": self._get_provider( - provider, - "economy.central_bank_holdings", - ("federal_reserve",), - ) - }, - standard_params={ - "date": date, - }, - extra_params=kwargs, info={ - "cusip": { - "federal_reserve": { + "country": { + "tradingeconomics": { "multiple_items_allowed": True, - "choices": None, - } - } - }, - ) - ) - - @exception_handler - @validate - def composite_leading_indicator( - 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 the composite leading indicator (CLI). - - It is designed to provide early signals of turning points - in business cycles showing fluctuation of the economic activity around its long term potential level. - - CLIs show short-term economic movements in qualitative rather than quantitative terms. - - - Parameters - ---------- - 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. - provider : Optional[Literal['oecd']] - The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd. - country : Union[Literal['g20', 'g7', 'asia5', 'north_america', 'europe4', 'australia', 'brazil', 'canada', 'china', 'france', 'germany', 'india', 'indonesia', 'italy', 'japan', 'mexico', 'south_africa', 'south_korea', 'spain', 'turkey', 'united_kingdom', 'united_states', 'all'], str] - Country to get the CLI for, default is G20. Multiple comma separated items allowed. (provider: oecd) - adjustment : Literal['amplitude', 'normalized'] - Adjustment of the data, either 'amplitude' or 'normalized'. Default is amplitude. (provider: oecd) - growth_rate : bool - Return the 1-year growth rate (%) of the CLI, default is False. (provider: oecd) - - Returns - ------- - OBBject - results : List[CompositeLeadingIndicator] + "choices": [ + "afghanistan", + "albania", + "algeria", + "andorra", + "angola", + "antigua_and_barbuda", + "argentina", + "armenia", + "aruba", + "australia", + "austria", + "azerbaijan", + "bahamas", + "bahrain", + "bangladesh", + "barbados", + "belarus", + "belgium", + "belize", + "benin", + "bermuda", + "bhutan", + "bolivia", + "bosnia_and_herzegovina", + "botswana", + "brazil", + "brunei", + "bulgaria", + "burkina_faso", + "burundi", + "cambodia", + "cameroon", + "canada", + "cape_verde", + "cayman_islands", + "central_african_republic", + "chad", + "chile", + "china", + "colombia", + "comoros", + "congo", + "costa_rica", + "croatia", + "cuba", + "cyprus", + "czech_republic", + "denmark", + "djibouti", + "dominica", + "dominican_republic", + "east_timor", + "ecuador", + "egypt", + "el_salvador", + "equatorial_guinea", + "eritrea", + "estonia", + "ethiopia", + "euro_area", + "faroe_islands", + "fiji", + "finland", + "france", + "gabon", + "gambia", + "georgia", + "germany", + "ghana", + "greece", + "grenada", + "guatemala", + "guinea", + "guinea_bissau", + "guyana", + "haiti", + "honduras", + "hong_kong", + "hungary", + "iceland", + "india", + "indonesia", + "iran", + "iraq", + "ireland", + "isle_of_man", + "israel", + "italy", + "ivory_coast", + "jamaica", + "japan", + "jordan", + "kazakhstan", + "kenya", + "kiribati", + "kosovo", + "kuwait", + "kyrgyzstan", + "laos", + "latvia", + "lebanon", + "lesotho", + "liberia", + "libya", + "liechtenstein", + "lithuania", + "luxembourg", + "macao", + "madagascar", + "malawi", + "malaysia", + "maldives", + "mali", + "malta", + "mauritania", + "mauritius", + "mexico", + "moldova", + "monaco", + "mongolia", + "montenegro", + "morocco", + "mozambique", + "myanmar", + "namibia", + "nepal", + "netherlands", + "new_caledonia", + "new_zealand", + "nicaragua", + "niger", + "nigeria", + "north_korea", + "north_macedonia", + "norway", + "oman", + "pakistan", + "palestine", + "panama", + "papua_new_guinea", + "paraguay", + "peru", + "philippines", + "poland", + "portugal", + "puerto_rico", + "qatar", + "republic_of_the_congo", + "romania", + "russia", + "rwanda", + "samoa", + "sao_tome_and_principe", + "saudi_arabia", + "senegal", + "serbia", + "seychelles", + "sierra_leone", + "singapore", + "slovakia", + "slovenia", + "solomon_islands", + "somalia", + "south_africa", + "south_korea", + "south_sudan", + "spain", + "sri_lanka", + "sudan", + "suriname", + "swaziland", + "sweden", + "switzerland", + "syria", + "taiwan", + "tajikistan", + "tanzania", + "thailand", + "togo", + "tonga", + "trinidad_and_tobago", + "tunisia", + "turkey", + "turkmenistan", + "uganda", + "ukraine", + "united_arab_emirates", + "united_kingdom", + "united_states", + "uruguay", + "uzbekistan", + "vanuatu", + "venezuela", + "vietnam", + "yemen", + "zambia", + "zimbabwe", + ], + } + }, + "calendar_id": { + "tradingeconomics": { + "multiple_items_allowed": True, + "choices": ["low", "medium", "high"], + } + }, + }, + ) + ) + + @exception_handler + @validate + def central_bank_holdings( + self, + date: Annotated[ + Union[datetime.date, None, str], + OpenBBField(description="A specific date to get data for."), + ] = None, + provider: Annotated[ + Optional[Literal["federal_reserve"]], + OpenBBField( + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve." + ), + ] = None, + date: Annotated[ + Union[datetime.date, None, str], + OpenBBField(description="A specific date to get data for."), + ] = None, + provider: Annotated[ + Optional[Literal["federal_reserve"]], + OpenBBField( + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve." + ), + ] = None, + **kwargs + ) -> OBBject: + """Get the balance sheet holdings of a central bank. + + Parameters + ---------- + date : Union[date, None, str] + A specific date to get data for. + provider : Optional[Literal['federal_reserve']] + The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve. + holding_type : Literal['all_agency', 'agency_debts', 'mbs', 'cmbs', 'all_treasury', 'bills', 'notesbonds', 'frn', 'tips'] + Type of holdings to return. (provider: federal_reserve) + summary : bool + If True, returns historical weekly summary by holding type. This parameter takes priority over other parameters. (provider: federal_reserve) + cusip : Optional[str] + Multiple comma separated items allowed. + wam : bool + If True, returns weighted average maturity aggregated by agency or treasury securities. This parameter takes priority over `holding_type`, `cusip`, and `monthly`. (provider: federal_reserve) + monthly : bool + If True, returns historical data for all Treasury securities at a monthly interval. This parameter takes priority over other parameters, except `wam`. Only valid when `holding_type` is set to: 'all_treasury', 'bills', 'notesbonds', 'frn', 'tips'. (provider: federal_reserve) + + Returns + ------- + OBBject + results : List[CentralBankHoldings] + Serializable results. + provider : Optional[Literal['federal_reserve']] + Provider name. + warnings : Optional[List[Warning_]] + List of warnings. + chart : Optional[Chart] + Chart object. + extra : Dict[str, Any] + Extra info. + + CentralBankHoldings + ------------------- + date : date + The date of the data. + The date of the data. + security_type : Optional[str] + Type of security - i.e. TIPs, FRNs, etc. (provider: federal_reserve) + description : Optional[str] + Description of the security. Only returned for Agency securities. (provider: federal_reserve) + is_aggreated : Optional[Literal['Y']] + Whether the security is aggregated. Only returned for Agency securities. (provider: federal_reserve) + cusip : Optional[str] + + + issuer : Optional[str] + Issuer of the security. (provider: federal_reserve) + maturity_date : Optional[date] + Maturity date of the security. (provider: federal_reserve) + term : Optional[str] + Term of the security. Only returned for Agency securities. (provider: federal_reserve) + face_value : Optional[float] + Current face value of the security (Thousands of $USD). Current face value of the securities, which is the remaining principal balance of the securities. (provider: federal_reserve) + par_value : Optional[float] + Par value of the security (Thousands of $USD). Changes in par may reflect primary and secondary market transactions and/or custodial account activity. (provider: federal_reserve) + coupon : Optional[float] + Coupon rate of the security. (provider: federal_reserve) + spread : Optional[float] + Spread to the current reference rate, as determined at each security's initial auction. (provider: federal_reserve) + percent_outstanding : Optional[float] + Total percent of the outstanding CUSIP issuance. (provider: federal_reserve) + bills : Optional[float] + Treasury bills amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) + frn : Optional[float] + Floating rate Treasury notes amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) + notes_and_bonds : Optional[float] + Treasuy Notes and bonds amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) + tips : Optional[float] + Treasury inflation-protected securities amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) + mbs : Optional[float] + Mortgage-backed securities amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) + cmbs : Optional[float] + Commercial mortgage-backed securities amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) + agencies : Optional[float] + Agency securities amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) + total : Optional[float] + Total SOMA holdings amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) + tips_inflation_compensation : Optional[float] + Treasury inflation-protected securities inflation compensation amount (Thousands of $USD). Only returned when 'summary' is True. (provider: federal_reserve) + change_prior_week : Optional[float] + Change in SOMA holdings from the prior week (Thousands of $USD). (provider: federal_reserve) + change_prior_year : Optional[float] + Change in SOMA holdings from the prior year (Thousands of $USD). (provider: federal_reserve) + + Examples + -------- + >>> from openbb import obb + >>> # The default is the latest Treasury securities held by the Federal Reserve. + >>> obb.economy.central_bank_holdings(provider='federal_reserve') + >>> # Get historical summaries of the Fed's holdings. + >>> obb.economy.central_bank_holdings(provider='federal_reserve', summary=True) + >>> # Get the balance sheet holdings as-of a historical date. + >>> obb.economy.central_bank_holdings(provider='federal_reserve', date='2019-05-21') + >>> # Use the `holding_type` parameter to select Agency securities, or specific categories or Treasury securities. + >>> obb.economy.central_bank_holdings(provider='federal_reserve', holding_type='agency_debts') + """ # noqa: E501 + + return self._run( + "/economy/central_bank_holdings", + **filter_inputs( + provider_choices={ + "provider": self._get_provider( + provider, + "economy.central_bank_holdings", + ("federal_reserve",), + ) + }, + standard_params={ + "date": date, + }, + extra_params=kwargs, + info={ + "cusip": { + "federal_reserve": { + "multiple_items_allowed": True, + "choices": None, + } + } + }, + info={ + "cusip": { + "federal_reserve": { + "multiple_items_allowed": True, + "choices": None, + } + } + }, + ) + ) + + @exception_handler + @validate + def composite_leading_indicator( + 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, + 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 the composite leading indicator (CLI). + + It is designed to provide early signals of turning points + in business cycles showing fluctuation of the economic activity around its long term potential level. + + CLIs show short-term economic movements in qualitative rather than quantitative terms. + + + + Parameters + ---------- + 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. + provider : Optional[Literal['oecd']] + The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd. + country : Union[Literal['g20', 'g7', 'asia5', 'north_america', 'europe4', 'australia', 'brazil', 'canada', 'china', 'france', 'germany', 'india', 'indonesia', 'italy', 'japan', 'mexico', 'south_africa', 'south_korea', 'spain', 'turkey', 'united_kingdom', 'united_states', 'all'], str] + Country to get the CLI for, default is G20. Multiple comma separated items allowed. (provider: oecd) + adjustment : Literal['amplitude', 'normalized'] + Adjustment of the data, either 'amplitude' or 'normalized'. Default is amplitude. (provider: oecd) + growth_rate : bool + Return the 1-year growth rate (%) of the CLI, default is False. (provider: oecd) + + Returns + ------- + OBBject + results : List[CompositeLeadingIndicator] Serializable results. provider : Optional[Literal['oecd']] Provider name. @@ -786,10 +1100,13 @@ def composite_leading_indicator( ------------------------- date : date The date of the data. + The date of the data. value : Optional[float] CLI value + CLI value country : str Country for the CLI value. + Country for the CLI value. Examples -------- @@ -845,6 +1162,38 @@ def composite_leading_indicator( } } }, + info={ + "country": { + "oecd": { + "multiple_items_allowed": True, + "choices": [ + "g20", + "g7", + "asia5", + "north_america", + "europe4", + "australia", + "brazil", + "canada", + "china", + "france", + "germany", + "india", + "indonesia", + "italy", + "japan", + "mexico", + "spain", + "south_africa", + "south_korea", + "turkey", + "united_states", + "united_kingdom", + "all", + ], + } + } + }, ) ) @@ -864,6 +1213,18 @@ def country_profile( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb." ), ] = None, + country: Annotated[ + Union[str, List[str]], + OpenBBField( + description="The country to get data. Multiple comma separated items allowed for provider(s): econdb." + ), + ], + provider: Annotated[ + Optional[Literal["econdb"]], + OpenBBField( + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb." + ), + ] = None, **kwargs ) -> OBBject: """Get a profile of country statistics and economic indicators. @@ -897,32 +1258,46 @@ def country_profile( -------------- country : str + population : Optional[int] Population. + Population. gdp_usd : Optional[float] Gross Domestic Product, in billions of USD. + Gross Domestic Product, in billions of USD. gdp_qoq : Optional[float] GDP growth quarter-over-quarter change, as a normalized percent. + GDP growth quarter-over-quarter change, as a normalized percent. gdp_yoy : Optional[float] GDP growth year-over-year change, as a normalized percent. + GDP growth year-over-year change, as a normalized percent. cpi_yoy : Optional[float] Consumer Price Index year-over-year change, as a normalized percent. + Consumer Price Index year-over-year change, as a normalized percent. core_yoy : Optional[float] Core Consumer Price Index year-over-year change, as a normalized percent. + Core Consumer Price Index year-over-year change, as a normalized percent. retail_sales_yoy : Optional[float] Retail Sales year-over-year change, as a normalized percent. + Retail Sales year-over-year change, as a normalized percent. industrial_production_yoy : Optional[float] Industrial Production year-over-year change, as a normalized percent. + Industrial Production year-over-year change, as a normalized percent. policy_rate : Optional[float] Short term policy rate, as a normalized percent. + Short term policy rate, as a normalized percent. yield_10y : Optional[float] 10-year government bond yield, as a normalized percent. + 10-year government bond yield, as a normalized percent. govt_debt_gdp : Optional[float] Government debt as a percent (normalized) of GDP. + Government debt as a percent (normalized) of GDP. current_account_gdp : Optional[float] Current account balance as a percent (normalized) of GDP. + Current account balance as a percent (normalized) of GDP. jobless_rate : Optional[float] Unemployment rate, as a normalized percent. + Unemployment rate, as a normalized percent. Examples -------- @@ -951,6 +1326,11 @@ def country_profile( "econdb": {"multiple_items_allowed": True, "choices": None} } }, + info={ + "country": { + "econdb": {"multiple_items_allowed": True, "choices": None} + } + }, ) ) @@ -991,6 +1371,39 @@ def cpi( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred, oecd." ), ] = None, + country: Annotated[ + Union[str, List[str]], + OpenBBField( + description="The country to get data. Multiple comma separated items allowed for provider(s): fred, oecd." + ), + ] = "united_states", + transform: Annotated[ + Literal["index", "yoy", "period"], + OpenBBField( + description="Transformation of the CPI data. Period represents the change since previous. Defaults to change from one year ago (yoy)." + ), + ] = "yoy", + frequency: Annotated[ + Literal["annual", "quarter", "monthly"], + OpenBBField(description="The frequency of the data."), + ] = "monthly", + harmonized: Annotated[ + bool, OpenBBField(description="If true, returns harmonized data.") + ] = False, + 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", "oecd"]], + OpenBBField( + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred, oecd." + ), + ] = None, **kwargs ) -> OBBject: """Get Consumer Price Index (CPI). @@ -998,6 +1411,7 @@ def cpi( Returns either the rescaled index value, or a rate of change (inflation). + Parameters ---------- country : Union[str, List[str]] @@ -1035,10 +1449,12 @@ def cpi( ------------------ date : date The date of the data. + The date of the data. country : str None value : float CPI index value or period change. + CPI index value or period change. expenditure : Optional[str] Expenditure component of CPI. (provider: oecd) @@ -1185,6 +1601,122 @@ def cpi( }, } }, + info={ + "country": { + "fred": { + "multiple_items_allowed": True, + "choices": [ + "australia", + "austria", + "belgium", + "brazil", + "bulgaria", + "canada", + "chile", + "china", + "croatia", + "cyprus", + "czech_republic", + "denmark", + "estonia", + "euro_area", + "finland", + "france", + "germany", + "greece", + "hungary", + "iceland", + "india", + "indonesia", + "ireland", + "israel", + "italy", + "japan", + "korea", + "latvia", + "lithuania", + "luxembourg", + "malta", + "mexico", + "netherlands", + "new_zealand", + "norway", + "poland", + "portugal", + "romania", + "russian_federation", + "slovak_republic", + "slovakia", + "slovenia", + "south_africa", + "spain", + "sweden", + "switzerland", + "turkey", + "united_kingdom", + "united_states", + ], + }, + "oecd": { + "multiple_items_allowed": True, + "choices": [ + "G20", + "G7", + "argentina", + "australia", + "austria", + "belgium", + "brazil", + "canada", + "chile", + "china", + "colombia", + "costa_rica", + "czech_republic", + "denmark", + "estonia", + "euro_area_20", + "europe", + "european_union_27", + "finland", + "france", + "germany", + "greece", + "hungary", + "iceland", + "india", + "indonesia", + "ireland", + "israel", + "italy", + "japan", + "korea", + "latvia", + "lithuania", + "luxembourg", + "mexico", + "netherlands", + "new_zealand", + "norway", + "oecd_total", + "poland", + "portugal", + "russia", + "saudi_arabia", + "slovak_republic", + "slovenia", + "south_africa", + "spain", + "sweden", + "switzerland", + "turkey", + "united_kingdom", + "united_states", + "all", + ], + }, + } + }, ) ) @@ -1295,6 +1827,24 @@ def fred_regional( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred." ), ] = 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."), + ] = 100000, + 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: """Query the Geo Fred API for regional economic data by series group. @@ -1302,6 +1852,7 @@ def fred_regional( The series group ID is found by using `fred_search` and the `series_id` parameter. + Parameters ---------- symbol : str @@ -1325,65 +1876,92 @@ def fred_regional( 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. 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) @@ -1405,6 +1983,7 @@ def fred_regional( ------------ date : date The date of the data. + The date of the data. region : Optional[str] The name of the region. (provider: fred) code : Optional[Union[int, str]] @@ -1470,6 +2049,30 @@ def fred_release_table( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred." ), ] = None, + release_id: Annotated[ + str, + OpenBBField( + description="The ID of the release. Use `fred_search` to find releases." + ), + ], + element_id: Annotated[ + Optional[str], + OpenBBField( + description="The element ID of a specific table in the release." + ), + ] = None, + 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: """Get economic release data by ID and/or element from FRED. @@ -1503,24 +2106,34 @@ def fred_release_table( ---------------- date : Optional[date] The date of the data. + The date of the data. level : Optional[int] The indentation level of the element. + The indentation level of the element. element_type : Optional[str] The type of the element. + The type of the element. line : Optional[int] The line number of the element. + The line number of the element. element_id : Optional[str] The element id in the parent/child relationship. + The element id in the parent/child relationship. parent_id : Optional[str] The parent id in the parent/child relationship. + The parent id in the parent/child relationship. children : Optional[str] The element_id of each child, as a comma-separated string. + The element_id of each child, as a comma-separated string. symbol : Optional[str] Symbol representing the entity requested in the data. + Symbol representing the entity requested in the data. name : Optional[str] The name of the series. + The name of the series. value : Optional[float] The reported value of the series. + The reported value of the series. Examples -------- @@ -1552,6 +2165,9 @@ def fred_release_table( info={ "date": {"fred": {"multiple_items_allowed": True, "choices": None}} }, + info={ + "date": {"fred": {"multiple_items_allowed": True, "choices": None}} + }, ) ) @@ -1563,50 +2179,336 @@ def fred_search( Optional[str], OpenBBField(description="The search word(s).") ] = None, provider: Annotated[ - Optional[Literal["fred"]], + 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, + query: Annotated[ + Optional[str], OpenBBField(description="The search word(s).") + ] = 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: + """Search for FRED series or economic releases by ID or string. + + This does not return the observation values, only the metadata. + Use this function to find series IDs for `fred_series()`. + + + + Parameters + ---------- + query : Optional[str] + The search word(s). + provider : Optional[Literal['fred']] + The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred. + is_release : Optional[bool] + Is release? If True, other search filter variables are ignored. If no query text or release_id is supplied, this defaults to True. (provider: fred) + release_id : Optional[Union[int, str]] + A specific release ID to target. (provider: fred) + limit : Optional[int] + The number of data entries to return. (1-1000) (provider: fred) + offset : Optional[Annotated[int, Ge(ge=0)]] + Offset the results in conjunction with limit. (provider: fred) + filter_variable : Optional[Literal['frequency', 'units', 'seasonal_adjustment']] + Filter by an attribute. (provider: fred) + filter_value : Optional[str] + String value to filter the variable by. Used in conjunction with filter_variable. (provider: fred) + tag_names : Optional[str] + A semicolon delimited list of tag names that series match all of. Example: 'japan;imports' Multiple comma separated items allowed. (provider: fred) + exclude_tag_names : Optional[str] + A semicolon delimited list of tag names that series match none of. Example: 'imports;services'. Requires that variable tag_names also be set to limit the number of matching series. Multiple comma separated items allowed. (provider: fred) + series_id : Optional[str] + A FRED Series ID to return series group information for. This returns the required information to query for regional data. Not all series that are in FRED have geographical data. Entering a value for series_id will override all other parameters. Multiple series_ids can be separated by commas. (provider: fred) + + Returns + ------- + OBBject + results : List[FredSearch] + Serializable results. + provider : Optional[Literal['fred']] + Provider name. + warnings : Optional[List[Warning_]] + List of warnings. + chart : Optional[Chart] + Chart object. + extra : Dict[str, Any] + Extra info. + + FredSearch + ---------- + release_id : Optional[Union[int, str]] + The release ID for queries. + The release ID for queries. + series_id : Optional[str] + The series ID for the item in the release. + The series ID for the item in the release. + name : Optional[str] + The name of the release. + The name of the release. + title : Optional[str] + The title of the series. + The title of the series. + observation_start : Optional[date] + The date of the first observation in the series. + The date of the first observation in the series. + observation_end : Optional[date] + The date of the last observation in the series. + The date of the last observation in the series. + frequency : Optional[str] + The frequency of the data. + The frequency of the data. + frequency_short : Optional[str] + Short form of the data frequency. + Short form of the data frequency. + units : Optional[str] + The units of the data. + The units of the data. + units_short : Optional[str] + Short form of the data units. + Short form of the data units. + seasonal_adjustment : Optional[str] + The seasonal adjustment of the data. + The seasonal adjustment of the data. + seasonal_adjustment_short : Optional[str] + Short form of the data seasonal adjustment. + Short form of the data seasonal adjustment. + last_updated : Optional[datetime] + The datetime of the last update to the data. + The datetime of the last update to the data. + notes : Optional[str] + Description of the release. + Description of the release. + press_release : Optional[bool] + If the release is a press release. + If the release is a press release. + url : Optional[str] + URL to the release. + URL to the release. + popularity : Optional[int] + Popularity of the series (provider: fred) + group_popularity : Optional[int] + Group popularity of the release (provider: fred) + region_type : Optional[str] + The region type of the series. (provider: fred) + series_group : Optional[Union[int, str]] + The series group ID of the series. This value is used to query for regional data. (provider: fred) + + Examples + -------- + >>> from openbb import obb + >>> obb.economy.fred_search(provider='fred') + """ # noqa: E501 + + return self._run( + "/economy/fred_search", + **filter_inputs( + provider_choices={ + "provider": self._get_provider( + provider, + "economy.fred_search", + ("fred",), + ) + }, + standard_params={ + "query": query, + }, + extra_params=kwargs, + info={ + "tag_names": { + "fred": {"multiple_items_allowed": True, "choices": None} + }, + "exclude_tag_names": { + "fred": {"multiple_items_allowed": True, "choices": None} + }, + }, + info={ + "tag_names": { + "fred": {"multiple_items_allowed": True, "choices": None} + }, + "exclude_tag_names": { + "fred": {"multiple_items_allowed": True, "choices": None} + }, + }, + ) + ) + + @exception_handler + @validate + def fred_series( + self, + symbol: Annotated[ + Union[str, List[str]], + OpenBBField( + description="Symbol to get data for. Multiple comma separated items allowed for provider(s): fred." + ), + ], + 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."), + ] = 100000, + provider: Annotated[ + Optional[Literal["fred", "intrinio"]], + OpenBBField( + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred, intrinio." + ), + ] = None, + symbol: Annotated[ + Union[str, List[str]], + OpenBBField( + description="Symbol to get data for. Multiple comma separated items allowed for provider(s): fred." + ), + ], + 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."), + ] = 100000, + provider: Annotated[ + Optional[Literal["fred", "intrinio"]], OpenBBField( - description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred." + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred, intrinio." ), ] = None, **kwargs ) -> OBBject: - """Search for FRED series or economic releases by ID or string. - - This does not return the observation values, only the metadata. - Use this function to find series IDs for `fred_series()`. - + """Get data by series ID from FRED. Parameters ---------- - query : Optional[str] - The search word(s). - provider : Optional[Literal['fred']] - The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred. - is_release : Optional[bool] - Is release? If True, other search filter variables are ignored. If no query text or release_id is supplied, this defaults to True. (provider: fred) - release_id : Optional[Union[int, str]] - A specific release ID to target. (provider: fred) + symbol : Union[str, List[str]] + Symbol to get data for. Multiple comma separated items allowed for provider(s): 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. limit : Optional[int] - The number of data entries to return. (1-1000) (provider: fred) - offset : Optional[Annotated[int, Ge(ge=0)]] - Offset the results in conjunction with limit. (provider: fred) - filter_variable : Optional[Literal['frequency', 'units', 'seasonal_adjustment']] - Filter by an attribute. (provider: fred) - filter_value : Optional[str] - String value to filter the variable by. Used in conjunction with filter_variable. (provider: fred) - tag_names : Optional[str] - A semicolon delimited list of tag names that series match all of. Example: 'japan;imports' Multiple comma separated items allowed. (provider: fred) - exclude_tag_names : Optional[str] - A semicolon delimited list of tag names that series match none of. Example: 'imports;services'. Requires that variable tag_names also be set to limit the number of matching series. Multiple comma separated items allowed. (provider: fred) - series_id : Optional[str] - A FRED Series ID to return series group information for. This returns the required information to query for regional data. Not all series that are in FRED have geographical data. Entering a value for series_id will override all other parameters. Multiple series_ids can be separated by commas. (provider: fred) + The number of data entries to return. + provider : Optional[Literal['fred', 'intrinio']] + The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred, intrinio. + 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. + 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) + all_pages : Optional[bool] + Returns all pages of data from the API call at once. (provider: intrinio) + sleep : Optional[float] + Time to sleep between requests to avoid rate limiting. (provider: intrinio) Returns ------- OBBject - results : List[FredSearch] + results : List[FredSeries] Serializable results. - provider : Optional[Literal['fred']] + provider : Optional[Literal['fred', 'intrinio']] Provider name. warnings : Optional[List[Warning_]] List of warnings. @@ -1615,90 +2517,111 @@ def fred_search( extra : Dict[str, Any] Extra info. - FredSearch + FredSeries ---------- - release_id : Optional[Union[int, str]] - The release ID for queries. - series_id : Optional[str] - The series ID for the item in the release. - name : Optional[str] - The name of the release. - title : Optional[str] - The title of the series. - observation_start : Optional[date] - The date of the first observation in the series. - observation_end : Optional[date] - The date of the last observation in the series. - frequency : Optional[str] - The frequency of the data. - frequency_short : Optional[str] - Short form of the data frequency. - units : Optional[str] - The units of the data. - units_short : Optional[str] - Short form of the data units. - seasonal_adjustment : Optional[str] - The seasonal adjustment of the data. - seasonal_adjustment_short : Optional[str] - Short form of the data seasonal adjustment. - last_updated : Optional[datetime] - The datetime of the last update to the data. - notes : Optional[str] - Description of the release. - press_release : Optional[bool] - If the release is a press release. - url : Optional[str] - URL to the release. - popularity : Optional[int] - Popularity of the series (provider: fred) - group_popularity : Optional[int] - Group popularity of the release (provider: fred) - region_type : Optional[str] - The region type of the series. (provider: fred) - series_group : Optional[Union[int, str]] - The series group ID of the series. This value is used to query for regional data. (provider: fred) + date : date + The date of the data. + The date of the data. + value : Optional[float] + Value of the index. (provider: intrinio) Examples -------- >>> from openbb import obb - >>> obb.economy.fred_search(provider='fred') + >>> obb.economy.fred_series(symbol='NFCI', provider='fred') + >>> # Multiple series can be passed in as a list. + >>> obb.economy.fred_series(symbol='NFCI,STLFSI4', provider='fred') + >>> # Use the `transform` parameter to transform the data as change, log, or percent change. + >>> obb.economy.fred_series(symbol='CBBTCUSD', transform='pc1', provider='fred') """ # noqa: E501 return self._run( - "/economy/fred_search", + "/economy/fred_series", **filter_inputs( provider_choices={ "provider": self._get_provider( provider, - "economy.fred_search", - ("fred",), + "economy.fred_series", + ("fred", "intrinio"), ) }, standard_params={ - "query": query, + "symbol": symbol, + "start_date": start_date, + "end_date": end_date, + "limit": limit, }, extra_params=kwargs, info={ - "tag_names": { + "symbol": { "fred": {"multiple_items_allowed": True, "choices": None} - }, - "exclude_tag_names": { + } + }, + info={ + "symbol": { "fred": {"multiple_items_allowed": True, "choices": None} - }, + } }, ) ) + @property + def gdp(self): + # pylint: disable=import-outside-toplevel + from . import economy_gdp + + return economy_gdp.ROUTER_economy_gdp(command_runner=self._command_runner) + @exception_handler @validate - def fred_series( + def house_price_index( self, - symbol: Annotated[ + country: Annotated[ + Union[str, List[str]], + OpenBBField( + description="The country to get data. Multiple comma separated items allowed for provider(s): oecd." + ), + ] = "united_states", + frequency: Annotated[ + Literal["monthly", "quarter", "annual"], + OpenBBField(description="The frequency of the data."), + ] = "quarter", + transform: Annotated[ + Literal["index", "yoy", "period"], + OpenBBField( + description="Transformation of the CPI data. Period represents the change since previous. Defaults to change from one year ago (yoy)." + ), + ] = "index", + 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, + country: Annotated[ Union[str, List[str]], OpenBBField( - description="Symbol to get data for. Multiple comma separated items allowed for provider(s): fred." + description="The country to get data. Multiple comma separated items allowed for provider(s): oecd." ), - ], + ] = "united_states", + frequency: Annotated[ + Literal["monthly", "quarter", "annual"], + OpenBBField(description="The frequency of the data."), + ] = "quarter", + transform: Annotated[ + Literal["index", "yoy", "period"], + OpenBBField( + description="Transformation of the CPI data. Period represents the change since previous. Defaults to change from one year ago (yoy)." + ), + ] = "index", start_date: Annotated[ Union[datetime.date, None, str], OpenBBField(description="Start date of the data, in YYYY-MM-DD format."), @@ -1707,107 +2630,37 @@ def fred_series( 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."), - ] = 100000, provider: Annotated[ - Optional[Literal["fred", "intrinio"]], + 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: fred, intrinio." + 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 data by series ID from FRED. + """Get the House Price Index by country from the OECD Short-Term Economics Statistics. Parameters ---------- - symbol : Union[str, List[str]] - Symbol to get data for. Multiple comma separated items allowed for provider(s): fred. + country : Union[str, List[str]] + The country to get data. Multiple comma separated items allowed for provider(s): oecd. + frequency : Literal['monthly', 'quarter', 'annual'] + The frequency of the data. + transform : Literal['index', 'yoy', 'period'] + Transformation of the CPI data. Period represents the change since previous. Defaults to change from one year ago (yoy). 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. - provider : Optional[Literal['fred', 'intrinio']] - The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred, intrinio. - 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. - 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) - all_pages : Optional[bool] - Returns all pages of data from the API call at once. (provider: intrinio) - sleep : Optional[float] - Time to sleep between requests to avoid rate limiting. (provider: intrinio) + provider : Optional[Literal['oecd']] + The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd. Returns ------- OBBject - results : List[FredSeries] + results : List[HousePriceIndex] Serializable results. - provider : Optional[Literal['fred', 'intrinio']] + provider : Optional[Literal['oecd']] Provider name. warnings : Optional[List[Warning_]] List of warnings. @@ -1816,58 +2669,186 @@ def fred_series( extra : Dict[str, Any] Extra info. - FredSeries - ---------- - date : date + HousePriceIndex + --------------- + date : Optional[date] + The date of the data. The date of the data. + country : Optional[str] + + value : Optional[float] - Value of the index. (provider: intrinio) + Share price index value. + Share price index value. Examples -------- >>> from openbb import obb - >>> obb.economy.fred_series(symbol='NFCI', provider='fred') - >>> # Multiple series can be passed in as a list. - >>> obb.economy.fred_series(symbol='NFCI,STLFSI4', provider='fred') - >>> # Use the `transform` parameter to transform the data as change, log, or percent change. - >>> obb.economy.fred_series(symbol='CBBTCUSD', transform='pc1', provider='fred') + >>> obb.economy.house_price_index(provider='oecd') + >>> # Multiple countries can be passed in as a list. + >>> obb.economy.house_price_index(country='united_kingdom,germany', frequency='quarter', provider='oecd') """ # noqa: E501 return self._run( - "/economy/fred_series", + "/economy/house_price_index", **filter_inputs( provider_choices={ "provider": self._get_provider( provider, - "economy.fred_series", - ("fred", "intrinio"), + "economy.house_price_index", + ("oecd",), ) }, standard_params={ - "symbol": symbol, + "country": country, + "frequency": frequency, + "transform": transform, "start_date": start_date, "end_date": end_date, - "limit": limit, }, extra_params=kwargs, info={ - "symbol": { - "fred": {"multiple_items_allowed": True, "choices": None} + "country": { + "oecd": { + "multiple_items_allowed": True, + "choices": [ + "G20", + "G7", + "argentina", + "australia", + "austria", + "belgium", + "brazil", + "bulgaria", + "canada", + "chile", + "china", + "colombia", + "costa_rica", + "croatia", + "czech_republic", + "denmark", + "estonia", + "euro_area_20", + "euro_area_19", + "europe", + "european_union_27", + "finland", + "france", + "germany", + "greece", + "hungary", + "iceland", + "india", + "indonesia", + "ireland", + "israel", + "italy", + "japan", + "korea", + "latvia", + "lithuania", + "luxembourg", + "mexico", + "netherlands", + "new_zealand", + "norway", + "oecd_total", + "poland", + "portugal", + "romania", + "russia", + "saudi_arabia", + "slovak_republic", + "slovenia", + "south_africa", + "spain", + "sweden", + "switzerland", + "turkey", + "united_kingdom", + "united_states", + "all", + ], + } + } + }, + info={ + "country": { + "oecd": { + "multiple_items_allowed": True, + "choices": [ + "G20", + "G7", + "argentina", + "australia", + "austria", + "belgium", + "brazil", + "bulgaria", + "canada", + "chile", + "china", + "colombia", + "costa_rica", + "croatia", + "czech_republic", + "denmark", + "estonia", + "euro_area_20", + "euro_area_19", + "europe", + "european_union_27", + "finland", + "france", + "germany", + "greece", + "hungary", + "iceland", + "india", + "indonesia", + "ireland", + "israel", + "italy", + "japan", + "korea", + "latvia", + "lithuania", + "luxembourg", + "mexico", + "netherlands", + "new_zealand", + "norway", + "oecd_total", + "poland", + "portugal", + "romania", + "russia", + "saudi_arabia", + "slovak_republic", + "slovenia", + "south_africa", + "spain", + "sweden", + "switzerland", + "turkey", + "united_kingdom", + "united_states", + "all", + ], + } } }, ) ) - @property - def gdp(self): - # pylint: disable=import-outside-toplevel - from . import economy_gdp - - return economy_gdp.ROUTER_economy_gdp(command_runner=self._command_runner) - @exception_handler @validate - def house_price_index( + @deprecated( + "This endpoint will be removed in a future version. Use, `/economy/interest_rates`, instead. Deprecated in OpenBB Platform V4.3 to be removed in V4.5.", + category=OpenBBDeprecationWarning, + ) + def immediate_interest_rate( self, country: Annotated[ Union[str, List[str]], @@ -1875,16 +2856,26 @@ def house_price_index( description="The country to get data. Multiple comma separated items allowed for provider(s): oecd." ), ] = "united_states", - frequency: Annotated[ - Literal["monthly", "quarter", "annual"], - OpenBBField(description="The frequency of the data."), - ] = "quarter", - transform: Annotated[ - Literal["index", "yoy", "period"], + 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="Transformation of the CPI data. Period represents the change since previous. Defaults to change from one year ago (yoy)." + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd." ), - ] = "index", + ] = None, + country: Annotated[ + Union[str, List[str]], + OpenBBField( + description="The country to get data. Multiple comma separated items allowed for provider(s): oecd." + ), + ] = "united_states", start_date: Annotated[ Union[datetime.date, None, str], OpenBBField(description="Start date of the data, in YYYY-MM-DD format."), @@ -1901,27 +2892,25 @@ def house_price_index( ] = None, **kwargs ) -> OBBject: - """Get the House Price Index by country from the OECD Short-Term Economics Statistics. + """Get immediate interest rates by country. Parameters ---------- country : Union[str, List[str]] The country to get data. Multiple comma separated items allowed for provider(s): oecd. - frequency : Literal['monthly', 'quarter', 'annual'] - The frequency of the data. - transform : Literal['index', 'yoy', 'period'] - Transformation of the CPI data. Period represents the change since previous. Defaults to change from one year ago (yoy). 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. provider : Optional[Literal['oecd']] The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd. + frequency : Literal['monthly', 'quarter', 'annual'] + The frequency of the data. (provider: oecd) Returns ------- OBBject - results : List[HousePriceIndex] + results : List[ImmediateInterestRate] Serializable results. provider : Optional[Literal['oecd']] Provider name. @@ -1932,37 +2921,50 @@ def house_price_index( extra : Dict[str, Any] Extra info. - HousePriceIndex - --------------- + ImmediateInterestRate + --------------------- date : Optional[date] The date of the data. + The date of the data. country : Optional[str] - + Country for which interest rate is given + Country for which interest rate is given value : Optional[float] - Share price index value. + Immediate interest rates, call money, interbank rate. + Immediate interest rates, call money, interbank rate. Examples -------- >>> from openbb import obb - >>> obb.economy.house_price_index(provider='oecd') + >>> obb.economy.immediate_interest_rate(provider='oecd') >>> # Multiple countries can be passed in as a list. - >>> obb.economy.house_price_index(country='united_kingdom,germany', frequency='quarter', provider='oecd') + >>> obb.economy.immediate_interest_rate(country='united_kingdom,germany', frequency='monthly', provider='oecd') """ # noqa: E501 + simplefilter("always", DeprecationWarning) + warn( + "This endpoint will be removed in a future version. Use, `/economy/interest_rates`, instead. Deprecated in OpenBB Platform V4.3 to be removed in V4.5.", + category=DeprecationWarning, + stacklevel=2, + ) + warn( + "This endpoint will be removed in a future version. Use, `/economy/interest_rates`, instead. Deprecated in OpenBB Platform V4.3 to be removed in V4.5.", + category=DeprecationWarning, + stacklevel=2, + ) + return self._run( - "/economy/house_price_index", + "/economy/immediate_interest_rate", **filter_inputs( provider_choices={ "provider": self._get_provider( provider, - "economy.house_price_index", + "economy.immediate_interest_rate", ("oecd",), ) }, standard_params={ "country": country, - "frequency": frequency, - "transform": transform, "start_date": start_date, "end_date": end_date, }, @@ -1972,62 +2974,112 @@ def house_price_index( "oecd": { "multiple_items_allowed": True, "choices": [ - "G20", - "G7", - "argentina", - "australia", - "austria", "belgium", - "brazil", "bulgaria", - "canada", + "brazil", + "ireland", + "mexico", + "indonesia", + "new_zealand", + "japan", + "united_kingdom", + "france", "chile", - "china", - "colombia", - "costa_rica", - "croatia", - "czech_republic", + "canada", + "netherlands", + "united_states", + "south_korea", + "norway", + "austria", + "south_africa", "denmark", - "estonia", - "euro_area_20", - "euro_area_19", - "europe", - "european_union_27", - "finland", - "france", - "germany", - "greece", + "switzerland", "hungary", + "luxembourg", + "australia", + "germany", + "sweden", "iceland", - "india", - "indonesia", - "ireland", + "turkey", + "greece", "israel", - "italy", - "japan", - "korea", + "czech_republic", "latvia", + "slovenia", + "poland", + "estonia", "lithuania", - "luxembourg", + "portugal", + "costa_rica", + "slovakia", + "finland", + "spain", + "romania", + "russia", + "euro_area19", + "colombia", + "italy", + "india", + "china", + "croatia", + "all", + ], + } + } + }, + info={ + "country": { + "oecd": { + "multiple_items_allowed": True, + "choices": [ + "belgium", + "bulgaria", + "brazil", + "ireland", "mexico", - "netherlands", + "indonesia", "new_zealand", + "japan", + "united_kingdom", + "france", + "chile", + "canada", + "netherlands", + "united_states", + "south_korea", "norway", - "oecd_total", + "austria", + "south_africa", + "denmark", + "switzerland", + "hungary", + "luxembourg", + "australia", + "germany", + "sweden", + "iceland", + "turkey", + "greece", + "israel", + "czech_republic", + "latvia", + "slovenia", "poland", + "estonia", + "lithuania", "portugal", + "costa_rica", + "slovakia", + "finland", + "spain", "romania", "russia", - "saudi_arabia", - "slovak_republic", - "slovenia", - "south_africa", - "spain", - "sweden", - "switzerland", - "turkey", - "united_kingdom", - "united_states", + "euro_area19", + "colombia", + "italy", + "india", + "china", + "croatia", "all", ], } @@ -2038,18 +3090,14 @@ def house_price_index( @exception_handler @validate - @deprecated( - "This endpoint will be removed in a future version. Use, `/economy/interest_rates`, instead. Deprecated in OpenBB Platform V4.3 to be removed in V4.5.", - category=OpenBBDeprecationWarning, - ) - def immediate_interest_rate( + def indicators( self, country: Annotated[ - Union[str, List[str]], + Union[str, None, List[Optional[str]]], OpenBBField( - description="The country to get data. Multiple comma separated items allowed for provider(s): oecd." + description="The country to get data. The country represented by the indicator, if available. Multiple comma separated items allowed for provider(s): econdb, imf." ), - ] = "united_states", + ] = None, start_date: Annotated[ Union[datetime.date, None, str], OpenBBField(description="Start date of the data, in YYYY-MM-DD format."), @@ -2059,34 +3107,63 @@ def immediate_interest_rate( OpenBBField(description="End date of the data, in YYYY-MM-DD format."), ] = None, provider: Annotated[ - Optional[Literal["oecd"]], + Optional[Literal["econdb", "imf"]], OpenBBField( - description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd." + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb, imf." ), ] = None, **kwargs ) -> OBBject: - """Get immediate interest rates by country. + """Get economic indicators by country and indicator. Parameters ---------- - country : Union[str, List[str]] - The country to get data. Multiple comma separated items allowed for provider(s): oecd. + country : Union[str, None, List[Optional[str]]] + The country to get data. The country represented by the indicator, if available. Multiple comma separated items allowed for provider(s): econdb, imf. 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. - provider : Optional[Literal['oecd']] - The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd. - frequency : Literal['monthly', 'quarter', 'annual'] - The frequency of the data. (provider: oecd) + provider : Optional[Literal['econdb', 'imf']] + The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb, imf. + symbol : Optional[str] + Symbol to get data for. The base symbol for the indicator (e.g. GDP, CPI, etc.). Use `available_indicators()` to get a list of available symbols. Multiple comma separated items allowed. (provider: econdb); + Symbol to get data for. Use `available_indicators()` to get the list of available symbols. Use 'IRFCL' to get all the data from the set of indicators. Complete tables are available only by single country, and are keyed as described below. The default is 'irfcl_top_lines'. Available presets not listed in `available_indicators()` are: + + 'IRFCL': All the data from the set of indicators. Not compatible with multiple countries. + 'irfcl_top_lines': The default, top line items from the IRFCL data. Compatible with multiple countries. + 'reserve_assets_and_other_fx_assets': Table I of the IRFCL data. Not compatible with multiple countries. + 'predetermined_drains_on_fx_assets': Table II of the IRFCL data. Not compatible with multiple countries. + 'contingent_drains_fx_assets': Table III of the IRFCL data. Not compatible with multiple countries. + 'memorandum_items': The memorandum items table of the IRFCL data. Not compatible with multiple countries. + 'gold_reserves': Gold reserves as value in USD and Fine Troy Ounces. Compatible with multiple countries. + 'derivative_assets': Net derivative assets as value in USD. Compatible with multipile countries. + Multiple comma separated items allowed. (provider: imf) + transform : Optional[Literal['toya', 'tpop', 'tusd', 'tpgp']] + The transformation to apply to the data, default is None. + + + tpop: Change from previous period + toya: Change from one year ago + tusd: Values as US dollars + tpgp: Values as a percent of GDP + + + Only 'tpop' and 'toya' are applicable to all indicators. Applying transformations across multiple indicators/countries may produce unexpected results. + This is because not all indicators are compatible with all transformations, and the original units and scale differ between entities. + `tusd` should only be used where values are currencies. (provider: econdb) + frequency : Literal['annual', 'quarter', 'month'] + The frequency of the data, default is 'quarter'. Only valid when 'symbol' is 'main'. (provider: econdb); + Frequency of the data. (provider: imf) + 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) Returns ------- OBBject - results : List[ImmediateInterestRate] + results : List[EconomicIndicators] Serializable results. - provider : Optional[Literal['oecd']] + provider : Optional[Literal['econdb', 'imf']] Provider name. warnings : Optional[List[Warning_]] List of warnings. @@ -2095,38 +3172,59 @@ def immediate_interest_rate( extra : Dict[str, Any] Extra info. - ImmediateInterestRate - --------------------- - date : Optional[date] + EconomicIndicators + ------------------ + date : date The date of the data. + The date of the data. + symbol_root : Optional[str] + The root symbol for the indicator (e.g. GDP). + The root symbol for the indicator (e.g. GDP). + symbol : Optional[str] + Symbol representing the entity requested in the data. + Symbol representing the entity requested in the data. country : Optional[str] - Country for which interest rate is given - value : Optional[float] - Immediate interest rates, call money, interbank rate. + The country represented by the data. + The country represented by the data. + value : Optional[Union[int, float]] + + scale : Optional[str] + The scale of the value. (provider: imf) + table : Optional[str] + The name of the table associated with the symbol. (provider: imf) + level : Optional[int] + The indentation level of the data, relative to the table and symbol_root (provider: imf) + order : Optional[int] + Order of the data, relative to the table. (provider: imf) + reference_sector : Optional[str] + The reference sector for the data. (provider: imf) + title : Optional[str] + The title of the series associated with the symbol. (provider: imf) Examples -------- >>> from openbb import obb - >>> obb.economy.immediate_interest_rate(provider='oecd') - >>> # Multiple countries can be passed in as a list. - >>> obb.economy.immediate_interest_rate(country='united_kingdom,germany', frequency='monthly', provider='oecd') + >>> obb.economy.indicators(provider='econdb', symbol='PCOCO') + >>> # Enter the country as the full name, or iso code. Use `available_indicators()` to get a list of supported indicators from EconDB. + >>> obb.economy.indicators(symbol='CPI', country='united_states,jp', provider='econdb') + >>> # Use the `main` symbol to get the group of main indicators for a country. + >>> obb.economy.indicators(provider='econdb', symbol='main', country='eu') + >>> # When the provider is 'imf', the absence of a symbol will default to 'irfcl_top_lines'. Use 'IRFCL' to get all the data from the set of indicators. + >>> obb.economy.indicators(provider='imf') + >>> # When the provider is 'imf', complete tables are returned by using a 'preset'. Refer to the function's docstring for descriptions of each preset. When no country is supplied, the data is returned for all countries. + >>> obb.economy.indicators(provider='imf', symbol='gold_reserves') + >>> # When the provider is 'imf', multiple countries and symbols can be supplied. Enter countries as a two-letter ISO country code, or the country name in lower_snake_case. + >>> obb.economy.indicators(provider='imf', symbol='RAFA_USD,RAPFA_USD,RAFA_RAPFA_RO', country='us,china,jp,4f,gb', start_date='2010-01-01', end_date='2020-12-31', frequency='annual') """ # noqa: E501 - simplefilter("always", DeprecationWarning) - warn( - "This endpoint will be removed in a future version. Use, `/economy/interest_rates`, instead. Deprecated in OpenBB Platform V4.3 to be removed in V4.5.", - category=DeprecationWarning, - stacklevel=2, - ) - return self._run( - "/economy/immediate_interest_rate", + "/economy/indicators", **filter_inputs( provider_choices={ "provider": self._get_provider( provider, - "economy.immediate_interest_rate", - ("oecd",), + "economy.indicators", + ("econdb", "imf"), ) }, standard_params={ @@ -2137,81 +3235,257 @@ def immediate_interest_rate( extra_params=kwargs, info={ "country": { - "oecd": { + "econdb": {"multiple_items_allowed": True, "choices": None}, + "imf": { "multiple_items_allowed": True, "choices": [ + "all", + "afghanistan", + "albania", + "algeria", + "american_samoa", + "angola", + "anguilla", + "antigua_and_barbuda", + "argentina", + "armenia", + "aruba", + "australia", + "austria", + "azerbaijan", + "bahamas", + "bahrain", + "bangladesh", + "barbados", + "belarus", "belgium", - "bulgaria", + "belize", + "benin", + "bermuda", + "bhutan", + "bolivia", + "bosnia_and_herzegovina", + "botswana", "brazil", - "ireland", - "mexico", - "indonesia", - "new_zealand", - "japan", - "united_kingdom", - "france", - "chile", + "brunei_darussalam", + "bulgaria", + "burkina_faso", + "burundi", + "cabo_verde", + "cambodia", + "cameroon", "canada", - "netherlands", - "united_states", - "south_korea", - "norway", - "austria", - "south_africa", + "cayman_islands", + "central_african_republic", + "chad", + "chile", + "hong_kong", + "macao", + "china", + "colombia", + "comoros", + "congo", + "cook_islands", + "costa_rica", + "cote_divoire", + "croatia", + "cuba", + "curacao", + "cyprus", + "czech_republic", "denmark", - "switzerland", - "hungary", - "luxembourg", - "australia", + "djibouti", + "dominica", + "dominican_republic", + "ecuador", + "egypt", + "el_salvador", + "equatorial_guinea", + "eritrea", + "estonia", + "eswatini", + "ethiopia", + "ecb", + "falkland_islands", + "faroe_islands", + "fiji", + "finland", + "france", + "french_polynesia", + "gabon", + "gambia", + "georgia", "germany", - "sweden", - "iceland", - "turkey", + "ghana", + "gibraltar", "greece", + "greenland", + "grenada", + "guadeloupe", + "guam", + "guatemala", + "french_guiana", + "guinea", + "guyana", + "haiti", + "honduras", + "hungary", + "iceland", + "india", + "indonesia", + "iran", + "iraq", + "ireland", "israel", - "czech_republic", + "italy", + "jamaica", + "japan", + "jordan", + "kazakhstan", + "kenya", + "kiribati", + "korea", + "kosovo", + "kuwait", + "kyrgyzstan", + "lao_peoples_democratic_republic", "latvia", - "slovenia", - "poland", - "estonia", + "lebanon", + "lesotho", + "liberia", + "libya", "lithuania", + "luxembourg", + "madagascar", + "malawi", + "malaysia", + "maldives", + "mali", + "malta", + "marshall_islands", + "martinique", + "mauritania", + "mauritius", + "mexico", + "micronesia", + "moldova", + "mongolia", + "montenegro", + "montserrat", + "morocco", + "mozambique", + "myanmar", + "namibia", + "nauru", + "nepal", + "netherlands_antilles", + "netherlands", + "new_caledonia", + "new_zealand", + "nicaragua", + "niger", + "nigeria", + "north_macedonia", + "norway", + "oman", + "pakistan", + "palau", + "panama", + "papua_new_guinea", + "paraguay", + "peru", + "philippines", + "poland", "portugal", - "costa_rica", + "qatar", + "reunion", + "romania", + "russian_federation", + "rwanda", + "saint_helena", + "saint_pierre_and_miquelon", + "samoa", + "san_marino", + "sao_tome_and_principe", + "saudi_arabia", + "senegal", + "serbia_and_montenegro", + "serbia", + "seychelles", + "sierra_leone", + "singapore", + "sint_maarten", "slovakia", - "finland", + "slovenia", + "solomon_islands", + "somalia", + "south_africa", + "south_sudan", "spain", - "romania", - "russia", - "euro_area19", - "colombia", - "italy", - "india", - "china", - "croatia", - "all", + "sri_lanka", + "saint_kitts_and_nevis", + "saint_lucia", + "saint_vincent_and_the_grenadines", + "sudan", + "suriname", + "sweden", + "switzerland", + "syrian_arab_republic", + "taiwan", + "tajikistan", + "tanzania", + "thailand", + "timor", + "timor-leste", + "togo", + "tonga", + "trinidad_and_tobago", + "tunisia", + "turkey", + "turkmenistan", + "tuvalu", + "uganda", + "ukraine", + "united_arab_emirates", + "united_kingdom", + "united_states", + "uruguay", + "uzbekistan", + "vanuatu", + "venezuela", + "viet_nam", + "palestine", + "yemen", + "zambia", + "zimbabwe", + "euro_area", ], + }, + }, + "symbol": { + "econdb": {"multiple_items_allowed": True, "choices": None}, + "imf": {"multiple_items_allowed": True, "choices": None}, + }, + "frequency": { + "imf": { + "multiple_items_allowed": False, + "choices": ["annual", "quarter", "month"], } - } + }, }, ) ) @exception_handler @validate - def indicators( + def interest_rates( self, - symbol: Annotated[ - Union[str, List[str]], - OpenBBField( - description="Symbol to get data for. The base symbol for the indicator (e.g. GDP, CPI, etc.). Multiple comma separated items allowed for provider(s): econdb." - ), - ], country: Annotated[ - Union[str, None, List[Optional[str]]], + Union[str, List[str]], OpenBBField( - description="The country to get data. The country represented by the indicator, if available. Multiple comma separated items allowed for provider(s): econdb." + description="The country to get data. Multiple comma separated items allowed for provider(s): oecd." ), - ] = None, + ] = "united_states", start_date: Annotated[ Union[datetime.date, None, str], OpenBBField(description="Start date of the data, in YYYY-MM-DD format."), @@ -2221,112 +3495,11 @@ def indicators( OpenBBField(description="End date of the data, in YYYY-MM-DD format."), ] = None, provider: Annotated[ - Optional[Literal["econdb"]], + 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: econdb." + 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 economic indicators by country and indicator. - - Parameters - ---------- - symbol : Union[str, List[str]] - Symbol to get data for. The base symbol for the indicator (e.g. GDP, CPI, etc.). Multiple comma separated items allowed for provider(s): econdb. - country : Union[str, None, List[Optional[str]]] - The country to get data. The country represented by the indicator, if available. Multiple comma separated items allowed for provider(s): econdb. - 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. - provider : Optional[Literal['econdb']] - The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: econdb. - transform : Optional[Literal['toya', 'tpop', 'tusd', 'tpgp']] - The transformation to apply to the data, default is None. - - tpop: Change from previous period - toya: Change from one year ago - tusd: Values as US dollars - tpgp: Values as a percent of GDP - - Only 'tpop' and 'toya' are applicable to all indicators. Applying transformations across multiple indicators/countries may produce unexpected results. - This is because not all indicators are compatible with all transformations, and the original units and scale differ between entities. - `tusd` should only be used where values are currencies. (provider: econdb) - frequency : Literal['annual', 'quarter', 'month'] - The frequency of the data, default is 'quarter'. Only valid when 'symbol' is 'main'. (provider: econdb) - 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) - - Returns - ------- - OBBject - results : List[EconomicIndicators] - Serializable results. - provider : Optional[Literal['econdb']] - Provider name. - warnings : Optional[List[Warning_]] - List of warnings. - chart : Optional[Chart] - Chart object. - extra : Dict[str, Any] - Extra info. - - EconomicIndicators - ------------------ - date : date - The date of the data. - symbol_root : Optional[str] - The root symbol for the indicator (e.g. GDP). - symbol : Optional[str] - Symbol representing the entity requested in the data. - country : Optional[str] - The country represented by the data. - value : Optional[Union[int, float]] - - - Examples - -------- - >>> from openbb import obb - >>> obb.economy.indicators(provider='econdb', symbol='PCOCO') - >>> # Enter the country as the full name, or iso code. Use `available_indicators()` to get a list of supported indicators from EconDB. - >>> obb.economy.indicators(symbol='CPI', country='united_states,jp', provider='econdb') - >>> # Use the `main` symbol to get the group of main indicators for a country. - >>> obb.economy.indicators(provider='econdb', symbol='main', country='eu') - """ # noqa: E501 - - return self._run( - "/economy/indicators", - **filter_inputs( - provider_choices={ - "provider": self._get_provider( - provider, - "economy.indicators", - ("econdb",), - ) - }, - standard_params={ - "symbol": symbol, - "country": country, - "start_date": start_date, - "end_date": end_date, - }, - extra_params=kwargs, - info={ - "symbol": { - "econdb": {"multiple_items_allowed": True, "choices": None} - }, - "country": { - "econdb": {"multiple_items_allowed": True, "choices": None} - }, - }, - ) - ) - - @exception_handler - @validate - def interest_rates( - self, country: Annotated[ Union[str, List[str]], OpenBBField( @@ -2353,6 +3526,7 @@ def interest_rates( Most OECD countries publish short-term, a long-term, and immediate rates monthly. + Parameters ---------- country : Union[str, List[str]] @@ -2386,10 +3560,13 @@ def interest_rates( -------------------- date : Optional[date] The date of the data. + The date of the data. value : Optional[float] The interest rate value. + The interest rate value. country : Optional[str] Country for which the interest rate is given. + Country for which the interest rate is given. Examples -------- @@ -2487,6 +3664,76 @@ def interest_rates( } }, }, + info={ + "country": { + "oecd": { + "multiple_items_allowed": True, + "choices": [ + "belgium", + "bulgaria", + "brazil", + "ireland", + "mexico", + "indonesia", + "new_zealand", + "japan", + "united_kingdom", + "france", + "chile", + "canada", + "netherlands", + "united_states", + "south_korea", + "norway", + "austria", + "south_africa", + "denmark", + "switzerland", + "hungary", + "luxembourg", + "australia", + "germany", + "sweden", + "iceland", + "turkey", + "greece", + "israel", + "czech_republic", + "latvia", + "slovenia", + "poland", + "estonia", + "lithuania", + "portugal", + "costa_rica", + "slovakia", + "finland", + "spain", + "romania", + "russia", + "euro_area19", + "colombia", + "italy", + "india", + "china", + "croatia", + "all", + ], + } + }, + "duration": { + "oecd": { + "multiple_items_allowed": False, + "choices": ["immediate", "short", "long"], + } + }, + "frequency": { + "oecd": { + "multiple_items_allowed": False, + "choices": ["monthly", "quarter", "annual"], + } + }, + }, ) ) @@ -2512,6 +3759,20 @@ def long_term_interest_rate( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd." ), ] = 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, + 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 Long-term interest rates that refer to government bonds maturing in ten years. @@ -2526,6 +3787,7 @@ def long_term_interest_rate( Investment is, in turn, a major source of economic growth. + Parameters ---------- start_date : Union[date, None, str] @@ -2557,10 +3819,13 @@ def long_term_interest_rate( ---- date : Optional[date] The date of the data. + The date of the data. value : Optional[float] Interest rate (given as a whole number, i.e 10=10%) + Interest rate (given as a whole number, i.e 10=10%) country : Optional[str] Country for which interest rate is given + Country for which interest rate is given Examples -------- @@ -2575,6 +3840,11 @@ def long_term_interest_rate( category=DeprecationWarning, stacklevel=2, ) + warn( + "This endpoint will be removed in a future version. Use, `/economy/interest_rates`, instead. Deprecated in OpenBB Platform V4.3 to be removed in V4.5.", + category=DeprecationWarning, + stacklevel=2, + ) return self._run( "/economy/long_term_interest_rate", @@ -2616,6 +3886,24 @@ def money_measures( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve." ), ] = 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, + adjusted: Annotated[ + Optional[bool], + OpenBBField(description="Whether to return seasonally adjusted data."), + ] = True, + provider: Annotated[ + Optional[Literal["federal_reserve"]], + OpenBBField( + description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: federal_reserve." + ), + ] = None, **kwargs ) -> OBBject: """Get Money Measures (M1/M2 and components). @@ -2623,6 +3911,7 @@ def money_measures( The Federal Reserve publishes as part of the H.6 Release. + Parameters ---------- start_date : Union[date, None, str] @@ -2652,20 +3941,28 @@ def money_measures( ------------- month : date The date of the data. + The date of the data. M1 : float Value of the M1 money supply in billions. + Value of the M1 money supply in billions. M2 : float Value of the M2 money supply in billions. + Value of the M2 money supply in billions. currency : Optional[float] Value of currency in circulation in billions. + Value of currency in circulation in billions. demand_deposits : Optional[float] Value of demand deposits in billions. + Value of demand deposits in billions. retail_money_market_funds : Optional[float] Value of retail money market funds in billions. + Value of retail money market funds in billions. other_liquid_deposits : Optional[float] Value of other liquid deposits in billions. + Value of other liquid deposits in billions. small_denomination_time_deposits : Optional[float] Value of small denomination time deposits in billions. + Value of small denomination time deposits in billions. Examples -------- @@ -2709,6 +4006,18 @@ def pce( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred." ), ] = None, + 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 Personal Consumption Expenditures (PCE) reports. @@ -2740,10 +4049,13 @@ def pce( ------------------------------- date : date The date of the data. + The date of the data. symbol : str Symbol representing the entity requested in the data. + Symbol representing the entity requested in the data. value : float + name : Optional[str] The name of the series. (provider: fred) element_id : Optional[str] @@ -2787,7 +4099,7 @@ def pce( @exception_handler @validate - def primary_dealer_fails( + def primary_dealer_positioning( self, start_date: Annotated[ Union[datetime.date, None, str], @@ -3044,8 +4356,10 @@ def primary_dealer_positioning( ------------------------ date : date The date of the data. + The date of the data. symbol : str Symbol representing the entity requested in the data. + Symbol representing the entity requested in the data. value : Optional[int] The reported value of the net position (long - short), in millions of $USD. (provider: federal_reserve) name : Optional[str] @@ -3103,6 +4417,27 @@ def retail_prices( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fred." ), ] = None, + item: Annotated[ + Optional[str], + OpenBBField(description="The item or basket of items to query."), + ] = None, + country: Annotated[ + str, OpenBBField(description="The country to get data.") + ] = "united_states", + 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 retail prices for common items. @@ -3125,6 +4460,7 @@ def retail_prices( The frequency of the data. (provider: fred) transform : Optional[Literal['chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']] + Transformation type None = No transformation chg = Change @@ -3155,14 +4491,19 @@ def retail_prices( ------------ date : Optional[date] The date of the data. + The date of the data. symbol : Optional[str] Symbol representing the entity requested in the data. + Symbol representing the entity requested in the data. country : Optional[str] + description : Optional[str] Description of the item. + Description of the item. value : Optional[float] Price, or change in price, per unit. + Price, or change in price, per unit. Examples -------- @@ -3204,6 +4545,12 @@ def risk_premium( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp." ), ] = 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 Market Risk Premium by country. @@ -3231,12 +4578,16 @@ def risk_premium( ----------- country : str Market country. + Market country. continent : Optional[str] Continent of the country. + Continent of the country. total_equity_risk_premium : Optional[Annotated[float, Gt(gt=0)]] Total equity risk premium for the country. + Total equity risk premium for the country. country_risk_premium : Optional[Annotated[float, Ge(ge=0)]] Country-specific risk premium. + Country-specific risk premium. Examples -------- @@ -3255,6 +4606,7 @@ def risk_premium( ) }, standard_params={}, + standard_params={}, extra_params=kwargs, ) ) @@ -3287,6 +4639,30 @@ def share_price_index( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd." ), ] = None, + country: Annotated[ + Union[str, List[str]], + OpenBBField( + description="The country to get data. Multiple comma separated items allowed for provider(s): oecd." + ), + ] = "united_states", + frequency: Annotated[ + Literal["monthly", "quarter", "annual"], + OpenBBField(description="The frequency of the data."), + ] = "monthly", + 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 the Share Price Index by country from the OECD Short-Term Economics Statistics. @@ -3322,10 +4698,13 @@ def share_price_index( --------------- date : Optional[date] The date of the data. + The date of the data. country : Optional[str] + value : Optional[float] Share price index value. + Share price index value. Examples -------- @@ -3418,6 +4797,72 @@ def share_price_index( } } }, + info={ + "country": { + "oecd": { + "multiple_items_allowed": True, + "choices": [ + "G20", + "G7", + "all", + "argentina", + "australia", + "austria", + "belgium", + "brazil", + "bulgaria", + "canada", + "chile", + "china", + "colombia", + "costa_rica", + "croatia", + "czech_republic", + "denmark", + "estonia", + "euro_area_19", + "euro_area_20", + "europe", + "european_union_27", + "finland", + "france", + "germany", + "greece", + "hungary", + "iceland", + "india", + "indonesia", + "ireland", + "israel", + "italy", + "japan", + "korea", + "latvia", + "lithuania", + "luxembourg", + "mexico", + "netherlands", + "new_zealand", + "norway", + "oecd_total", + "poland", + "portugal", + "romania", + "russia", + "saudi_arabia", + "slovak_republic", + "slovenia", + "south_africa", + "spain", + "sweden", + "switzerland", + "turkey", + "united_kingdom", + "united_states", + ], + } + } + }, ) ) @@ -3443,6 +4888,20 @@ def short_term_interest_rate( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd." ), ] = 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, + 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 Short-term interest rates. @@ -3455,6 +4914,7 @@ def short_term_interest_rate( Typical standardised names are "money market rate" and "treasury bill rate". + Parameters ---------- start_date : Union[date, None, str] @@ -3486,10 +4946,13 @@ def short_term_interest_rate( ---- date : Optional[date] The date of the data. + The date of the data. value : Optional[float] Interest rate (given as a whole number, i.e 10=10%) + Interest rate (given as a whole number, i.e 10=10%) country : Optional[str] Country for which interest rate is given + Country for which interest rate is given Examples -------- @@ -3504,6 +4967,11 @@ def short_term_interest_rate( category=DeprecationWarning, stacklevel=2, ) + warn( + "This endpoint will be removed in a future version. Use, `/economy/interest_rates`, instead. Deprecated in OpenBB Platform V4.3 to be removed in V4.5.", + category=DeprecationWarning, + stacklevel=2, + ) return self._run( "/economy/short_term_interest_rate", @@ -3558,6 +5026,30 @@ def unemployment( description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: oecd." ), ] = None, + country: Annotated[ + Union[str, List[str]], + OpenBBField( + description="The country to get data. Multiple comma separated items allowed for provider(s): oecd." + ), + ] = "united_states", + frequency: Annotated[ + Literal["monthly", "quarter", "annual"], + OpenBBField(description="The frequency of the data."), + ] = "monthly", + 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 global unemployment data. @@ -3599,10 +5091,13 @@ def unemployment( ------------ date : Optional[date] The date of the data. + The date of the data. country : Optional[str] Country for which unemployment rate is given + Country for which unemployment rate is given value : Optional[float] Unemployment rate, as a normalized percent. + Unemployment rate, as a normalized percent. Examples -------- @@ -3684,5 +5179,59 @@ def unemployment( } } }, + info={ + "country": { + "oecd": { + "multiple_items_allowed": True, + "choices": [ + "all", + "australia", + "austria", + "belgium", + "canada", + "chile", + "colombia", + "costa_rica", + "czech_republic", + "denmark", + "estonia", + "euro_area20", + "european_union27_2020", + "finland", + "france", + "g7", + "germany", + "greece", + "hungary", + "iceland", + "ireland", + "israel", + "italy", + "japan", + "korea", + "latvia", + "lithuania", + "luxembourg", + "mexico", + "netherlands", + "new_zealand", + "norway", + "oecd", + "poland", + "portugal", + "russia", + "slovakia", + "slovenia", + "south_africa", + "spain", + "sweden", + "switzerland", + "turkey", + "united_kingdom", + "united_states", + ], + } + } + }, ) ) diff --git a/openbb_platform/providers/econdb/openbb_econdb/models/economic_indicators.py b/openbb_platform/providers/econdb/openbb_econdb/models/economic_indicators.py index 703ba1cb2f91..3b3724f780d1 100644 --- a/openbb_platform/providers/econdb/openbb_econdb/models/economic_indicators.py +++ b/openbb_platform/providers/econdb/openbb_econdb/models/economic_indicators.py @@ -13,6 +13,7 @@ EconomicIndicatorsData, EconomicIndicatorsQueryParams, ) +from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS from openbb_core.provider.utils.errors import EmptyDataError from pydantic import Field, field_validator @@ -25,6 +26,12 @@ class EconDbEconomicIndicatorsQueryParams(EconomicIndicatorsQueryParams): "country": {"multiple_items_allowed": True}, } + symbol: str = Field( + description=QUERY_DESCRIPTIONS.get("symbol", "") + + " The base symbol for the indicator (e.g. GDP, CPI, etc.)." + + " Use `available_indicators()` to get a list of available symbols.", + ) + transform: Union[None, Literal["toya", "tpop", "tusd", "tpgp"]] = Field( default=None, description="The transformation to apply to the data, default is None." diff --git a/openbb_platform/providers/imf/README.md b/openbb_platform/providers/imf/README.md new file mode 100644 index 000000000000..10b4b90fa46e --- /dev/null +++ b/openbb_platform/providers/imf/README.md @@ -0,0 +1,31 @@ +# OpenBB IMF Provider Extension + +This package adds the `openbb-imf` provider extension to the OpenBB Platform. + +## Installation + +Install from PyPI with: + +```sh +pip install openbb-imf +``` + +## Implementation + +The extension utilizes the JSON RESTful Web Service ((https://datahelp.imf.org/knowledgebase/articles/630877-data-services)[https://datahelp.imf.org/knowledgebase/articles/630877-data-services]) + +No authorization is required to use, but IP addresses are bound by the limitations described in the link above. + +## Coverage + +- Databases: + - International Reserves and Foreign Currency Liquidity + +Coverage: + - All IRFCL tables. + - Individual, or multiple, time series from single or multiple countries. + +### Endpoints + +- `obb.economy.available_indicators` +- `obb.economy.indicators` diff --git a/openbb_platform/providers/imf/openbb_imf/__init__.py b/openbb_platform/providers/imf/openbb_imf/__init__.py new file mode 100644 index 000000000000..b7ac1e8b64ab --- /dev/null +++ b/openbb_platform/providers/imf/openbb_imf/__init__.py @@ -0,0 +1,17 @@ +"""OpenBB IMF Provider Module.""" + +from openbb_core.provider.abstract.provider import Provider + +from openbb_imf.models.available_indicators import ImfAvailableIndicatorsFetcher +from openbb_imf.models.economic_indicators import ImfEconomicIndicatorsFetcher + +imf_provider = Provider( + name="imf", + website="https://datahelp.imf.org/knowledgebase/articles/667681-using-json-restful-web-service", + description="This provider allows you to access International Monetary Fund data through the IMF Public Data API.", + fetcher_dict={ + "AvailableIndicators": ImfAvailableIndicatorsFetcher, + "EconomicIndicators": ImfEconomicIndicatorsFetcher, + }, + repr_name="International Monetary Fund (IMF) Public Data API", +) diff --git a/openbb_platform/providers/imf/openbb_imf/assets/__init__.py b/openbb_platform/providers/imf/openbb_imf/assets/__init__.py new file mode 100644 index 000000000000..e65c4f3d7813 --- /dev/null +++ b/openbb_platform/providers/imf/openbb_imf/assets/__init__.py @@ -0,0 +1 @@ +"""IMF Static Assets.""" diff --git a/openbb_platform/providers/imf/openbb_imf/assets/imf_country_map.json b/openbb_platform/providers/imf/openbb_imf/assets/imf_country_map.json new file mode 100644 index 000000000000..796ea4e784ef --- /dev/null +++ b/openbb_platform/providers/imf/openbb_imf/assets/imf_country_map.json @@ -0,0 +1,252 @@ +{ + "AF": "Afghanistan", + "AL": "Albania", + "DZ": "Algeria", + "AS": "American Samoa", + "AO": "Angola", + "AI": "Anguilla", + "AG": "Antigua and Barbuda", + "5M": "AMF (Arab Monetary Fund)", + "AR": "Argentina", + "AM": "Armenia", + "AW": "Aruba", + "AU": "Australia", + "AT": "Austria", + "AZ": "Azerbaijan", + "BS": "Bahamas", + "BH": "Bahrain", + "BD": "Bangladesh", + "5W": "BEAC (Banque des Etats de l`Afrique Centrale)", + "5B": "BIS (Bank for International Settlements)", + "BB": "Barbados", + "BY": "Belarus", + "BE": "Belgium", + "R1": "Belgo-Luxembourg Economic Union", + "BZ": "Belize", + "BJ": "Benin", + "BM": "Bermuda", + "BT": "Bhutan", + "BO": "Bolivia", + "BA": "Bosnia and Herzegovina", + "BW": "Botswana", + "BR": "Brazil", + "BN": "Brunei Darussalam", + "BG": "Bulgaria", + "BF": "Burkina Faso", + "BI": "Burundi", + "CV": "Cabo Verde", + "KH": "Cambodia", + "CM": "Cameroon", + "CA": "Canada", + "KY": "Cayman Islands", + "CF": "Central African Republic", + "1C_752": "Central Bank West Africa", + "TD": "Chad", + "CL": "Chile", + "HK": "Hong Kong, China", + "MO": "Macao", + "CN": "China", + "CO": "Colombia", + "KM": "Comoros", + "CD": "Congo, the Democratic Republic of the", + "CG": "Congo", + "CK": "Cook Islands", + "CR": "Costa Rica", + "CI": "Cote d`Ivoire", + "HR": "Croatia", + "CU": "Cuba", + "1C_355": "Curacao & St. Maarten", + "CW": "Curacao", + "CY": "Cyprus", + "CZ": "Czech Republic", + "CSH": "Former Czechoslovakia", + "DK": "Denmark", + "DJ": "Djibouti", + "DM": "Dominica", + "DO": "Dominican Republic", + "5I": "ECCB (Eastern Caribbean Central Bank)", + "EC": "Ecuador", + "EG": "Egypt", + "SV": "El Salvador", + "GQ": "Equatorial Guinea", + "ER": "Eritrea", + "EE": "Estonia", + "SZ": "Eswatini", + "ET": "Ethiopia", + "4F": "ECB (European Central Bank)", + "1C_977": "European Monetary Institution", + "FK": "Falkland Islands (Malvinas)", + "FO": "Faroe Islands", + "FJ": "Fiji", + "FI": "Finland", + "FR": "France", + "PF": "French Polynesia", + "GA": "Gabon", + "GM": "Gambia", + "GE": "Georgia", + "DE": "Germany", + "GH": "Ghana", + "GI": "Gibraltar", + "GR": "Greece", + "GL": "Greenland", + "GD": "Grenada", + "GP": "Guadeloupe", + "GU": "Guam", + "GT": "Guatemala", + "GF": "French Guiana", + "GN": "Guinea", + "GW": "Guinea-Bissau", + "GY": "Guyana", + "HT": "Haiti", + "HN": "Honduras", + "HU": "Hungary", + "IS": "Iceland", + "IN": "India", + "ID": "Indonesia", + "1E": "IBRD (International Bank for Reconstruction and Development)", + "X0": "IMF Member Countries (IMF)", + "IR": "Iran, Islamic Republic of", + "IQ": "Iraq", + "IE": "Ireland", + "7B": "IDB (Islamic Development Bank)", + "IL": "Israel", + "IT": "Italy", + "JM": "Jamaica", + "JP": "Japan", + "JO": "Jordan", + "KZ": "Kazakhstan", + "KE": "Kenya", + "KI": "Kiribati", + "KR": "Korea, Republic of", + "XK": "Kosovo, Republic of", + "KW": "Kuwait", + "KG": "Kyrgyzstan", + "LA": "Lao People`s Democratic Republic", + "LV": "Latvia", + "LB": "Lebanon", + "LS": "Lesotho", + "LR": "Liberia", + "LY": "Libya", + "LT": "Lithuania", + "LU": "Luxembourg", + "MG": "Madagascar", + "MW": "Malawi", + "MY": "Malaysia", + "MV": "Maldives", + "ML": "Mali", + "MT": "Malta", + "MH": "Marshall islands", + "MQ": "Martinique", + "MR": "Mauritania", + "MU": "Mauritius", + "MX": "Mexico", + "FM": "Micronesia, Federated States of", + "MD": "Moldova, Republic of", + "MN": "Mongolia", + "ME": "Montenegro", + "MS": "Montserrat", + "MA": "Morocco", + "MZ": "Mozambique", + "MM": "Myanmar", + "NA": "Namibia", + "NR": "Nauru", + "NP": "Nepal", + "AN": "Netherlands Antilles", + "NL": "Netherlands", + "NC": "New Caledonia", + "NZ": "New Zealand", + "NI": "Nicaragua", + "NE": "Niger", + "NG": "Nigeria", + "5H": "NIB (Nordic Investment Bank)", + "MK": "North Macedonia, Republic of", + "NO": "Norway", + "OM": "Oman", + "PK": "Pakistan", + "PW": "Palau", + "PA": "Panama", + "1C_356": "Panama Canal Zone", + "PG": "Papua New Guinea", + "PY": "Paraguay", + "PE": "Peru", + "PH": "Philippines", + "PL": "Poland", + "PT": "Portugal", + "QA": "Qatar", + "RE": "Reunion", + "RO": "Romania", + "RU": "Russian Federation", + "RW": "Rwanda", + "1C_568": "Ryukyus", + "SH": "Saint Helena", + "PM": "Saint Pierre and Miquelon", + "WS": "Samoa", + "SM": "San Marino", + "ST": "Sao Tome and Principe", + "SA": "Saudi Arabia", + "SN": "Senegal", + "CS": "Serbia and Montenegro", + "RS": "Serbia", + "SC": "Seychelles", + "SL": "Sierra Leone", + "SG": "Singapore", + "SX": "Sint Maarten (Dutch part)", + "SK": "Slovakia", + "SI": "Slovenia", + "SB": "Solomon Islands", + "SO": "Somalia", + "ZA": "South Africa", + "SS": "South Sudan", + "ES": "Spain", + "LK": "Sri Lanka", + "KN": "Saint Kitts and Nevis", + "LC": "Saint Lucia", + "VC": "Saint Vincent and the Grenadines", + "SD": "Sudan", + "SR": "Suriname", + "SE": "Sweden", + "CH": "Switzerland", + "SY": "Syrian Arab Republic", + "TW": "Taiwan, Province of China", + "TJ": "Tajikistan", + "TZ": "Tanzania, United Republic of", + "TH": "Thailand", + "TP": "Timor", + "TL": "Timor-Leste", + "TG": "Togo", + "TO": "Tonga", + "TT": "Trinidad and Tobago", + "TN": "Tunisia", + "TR": "Turkey", + "TM": "Turkmenistan", + "TV": "Tuvalu", + "UG": "Uganda", + "UA": "Ukraine", + "AE": "United Arab Emirates", + "GB": "United Kingdom", + "US": "United States", + "UY": "Uruguay", + "UZ": "Uzbekistan", + "VU": "Vanuatu", + "VE": "Venezuela, Bolivarian Republic", + "VN": "Viet Nam", + "PS": "Palestine, State of", + "1C_473": "Yemen Arab Rep.", + "1C_459": "Yemen, P.D. Rep.", + "YE": "Yemen", + "YUC": "Former Yugoslavia", + "ZM": "Zambia", + "ZW": "Zimbabwe", + "1C_ALLC": "All Countries", + "1C_ALL": "All Countries and Country Groups", + "1C_ALLG": "All Country Groups", + "1C_All_Reporting_Countries_Data": "All Reporting Countries, Data", + "1C_All_Reporting_Countries_Metadata": "All Reporting Countries, Metadata", + "1C_Daily_Reporters": "Daily Reporters", + "1C_Dual_Reporters": "Dual Reporters", + "U2": "Euro area (Member States and Institutions of the Euro Area) changing composition", + "B00": "EU (Member States of the European Union) changing composition, excluding EU Institutions", + "1C_Monthly_Reporters": "Monthly Reporters", + "1C_Single_Reporters": "Single Reporters", + "1C_Single_Reporters_USA_and_Peru": "Single Reporters - USA and Peru" +} \ No newline at end of file diff --git a/openbb_platform/providers/imf/openbb_imf/assets/imf_symbols.json b/openbb_platform/providers/imf/openbb_imf/assets/imf_symbols.json new file mode 100644 index 000000000000..282236de8ac7 --- /dev/null +++ b/openbb_platform/providers/imf/openbb_imf/assets/imf_symbols.json @@ -0,0 +1,2058 @@ +{ + "RAF_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAF_USD", + "order": 1, + "level": 1, + "title": "Official Reserve Assets and Other Foreign Currency Assets, US Dollars" + }, + "RAFA_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAF_USD", + "order": 2, + "level": 2, + "title": "Official Reserve Assets, US Dollars" + }, + "RAFAFX_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFA_USD", + "order": 3, + "level": 3, + "title": "Official Reserve Assets, Foreign Currency Reserves (in Convertible Foreign Currencies), US Dollars" + }, + "RAFAFXS_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAFX_USD", + "order": 4, + "level": 4, + "title": "Official Reserve Assets, Foreign Currency Reserves (in Convertible Foreign Currencies), Securities, US Dollars" + }, + "RAFAFXSI_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAFXS_USD", + "order": 5, + "level": 5, + "title": "Official Reserve Assets, Securities, of Which: Issuer Headquartered in Reporting Country But Located Abroad, US Dollars" + }, + "RAFAFXCD_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAFX_USD", + "order": 6, + "level": 4, + "title": "Official Reserve Assets, Foreign Currency Reserves (in Convertible Foreign Currencies), Total Currency and Deposits with:, US Dollars" + }, + "RAFAFXCDN_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAFXCD_USD", + "order": 7, + "level": 5, + "title": "Official Reserve Assets, Foreign Currency Reserves (in Convertible Foreign Currencies), Total Currency and Deposits with:, Other National Central Banks, BIS and IMF, US Dollars" + }, + "RAFAFXCDBI_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAFXCD_USD", + "order": 8, + "level": 5, + "title": "Official Reserve Assets, Foreign Currency Reserves (in Convertible Foreign Currencies), Total Currency and Deposits with:, Banks Headquartered in the Reporting Country, US Dollars" + }, + "RAFAFXCDBIA_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAFXCDBI_USD", + "order": 9, + "level": 6, + "title": "Official Reserve Assets, Foreign Currency Reserves (in Convertible Foreign Currencies), Total Currency and Deposits with:, Banks Headquartered in the Reporting Country, of Which: Located Abroad, US Dollars" + }, + "RAFAFXCDBO_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAFXCD_USD", + "order": 10, + "level": 5, + "title": "Official Reserve Assets, Foreign Currency Reserves (in Convertible Foreign Currencies), Total Currency and Deposits with:, Banks Headquartered Outside the Reporting Country, US Dollars" + }, + "RAFAFXCDBOA_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAFXCDBO_USD", + "order": 11, + "level": 6, + "title": "Official Reserve Assets, Foreign Currency Reserves (in Convertible Foreign Currencies), Total Currency and Deposits with:, Banks Headquartered Outside the Reporting Country, of Which: Located in the Reporting Country, US Dollars" + }, + "RAFAIMF_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFA_USD", + "order": 12, + "level": 3, + "title": "Official Reserve Assets, IMF Reserve Position, US Dollars" + }, + "RAFASDR_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFA_USD", + "order": 13, + "level": 3, + "title": "Official Reserve Assets, SDRs, US Dollars" + }, + "RAFAGOLD_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFA_USD", + "order": 14, + "level": 3, + "title": "Official Reserve Assets, Gold (Including Gold Deposits and, If Appropriate, Gold Swapped) , US Dollars" + }, + "RAFAGOLDV_OZT": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAGOLD_USD", + "order": 15, + "level": 4, + "title": "Official Reserve Assets, Gold (Including Gold Deposits and, If Appropriate, Gold Swapped), Volume in Millions of Fine Troy Ounces , Fine Troy Ounces" + }, + "RAFAO_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFA_USD", + "order": 16, + "level": 3, + "title": "Official Reserve Assets, Other Reserve Assets (Specify), US Dollars" + }, + "RAFAOF_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAO_USD", + "order": 17, + "level": 4, + "title": "Official Reserve Assets, Other Reserve Assets (Specify), Financial Derivatives, US Dollars" + }, + "RAFAOL_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAO_USD", + "order": 18, + "level": 4, + "title": "Official Reserve Assets, Other Reserve Assets (Specify), Loans to Non-bank Nonresidents, US Dollars" + }, + "RAFAOO_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAFAO_USD", + "order": 19, + "level": 4, + "title": "Official Reserve Assets, Other Reserve Assets (Specify), Other, US Dollars" + }, + "RAOFA_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAF_USD", + "order": 20, + "level": 2, + "title": "Other Foreign Currency Assets (Specify), US Dollars" + }, + "RAOFAS_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAOFA_USD", + "order": 21, + "level": 3, + "title": "Other Foreign Currency Assets (Specify), Securities Not Included in Official Reserve Assets, US Dollars" + }, + "RAOFAD_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAOFA_USD", + "order": 22, + "level": 3, + "title": "Other Foreign Currency Assets (Specify), Deposits Not Included in Official Reserve Assets, US Dollars" + }, + "RAOFAL_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAOFA_USD", + "order": 23, + "level": 3, + "title": "Other Foreign Currency Assets (Specify), Loans Not Included in Official Reserve Assets, US Dollars" + }, + "RAOFAF_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAOFA_USD", + "order": 24, + "level": 3, + "title": "Other Foreign Currency Assets (Specify), Financial Derivatives Not Included in Official Reserve Assets, US Dollars" + }, + "RAOFAG_USD": { + "dataset": "IRFCL", + "table": "reserve_assets_and_other_fx_assets", + "parent": "RAOFA_USD", + "order": 25, + "level": 3, + "title": "Other Foreign Currency Assets (Specify), Gold Not Included in Official Reserve Assets, US Dollars" + }, + "RAPFA_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFA_USD", + "order": 1, + "level": 1, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, US Dollars" + }, + "RAPFALSD_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFA_USD", + "order": 2, + "level": 2, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Foreign Currency Loans, Securities, and Deposits, US Dollars" + }, + "RAPFALSD_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSD_USD", + "order": 3, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Foreign Currency Loans, Securities, and Deposits, US Dollars" + }, + "RAPFALSD_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSD_USD", + "order": 4, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Foreign Currency Loans, Securities, and Deposits, US Dollars" + }, + "RAPFALSD_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSD_USD", + "order": 5, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Foreign Currency Loans, Securities, and Deposits, US Dollars" + }, + "RAPFALSDOP_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSD_USD", + "order": 6, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Foreign Currency Loans, Securities, and Deposits, Outflows (-) Principal, US Dollars" + }, + "RAPFALSDOP_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDOP_USD", + "order": 7, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Foreign Currency Loans, Securities, and Deposits, Outflows (-) Principal, US Dollars" + }, + "RAPFALSDOP_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDOP_USD", + "order": 8, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Foreign Currency Loans, Securities, and Deposits, Outflows (-) Principal, US Dollars" + }, + "RAPFALSDOP_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDOP_USD", + "order": 9, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Foreign Currency Loans, Securities, and Deposits, Outflows (-) Principal, US Dollars" + }, + "RAPFALSDOI_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSD_USD", + "order": 10, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Foreign Currency Loans, Securities, and Deposits, Outflows (-) Interest, US Dollars" + }, + "RAPFALSDOI_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDOI_USD", + "order": 11, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Foreign Currency Loans, Securities, and Deposits, Outflows (-) Interest, US Dollars" + }, + "RAPFALSDOI_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDOI_USD", + "order": 12, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Foreign Currency Loans, Securities, and Deposits, Outflows (-) Interest, US Dollars" + }, + "RAPFALSDOI_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDOI_USD", + "order": 13, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Foreign Currency Loans, Securities, and Deposits, Outflows (-) Interest, US Dollars" + }, + "RAPFALSDIP_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSD_USD", + "order": 14, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Foreign Currency Loans, Securities, and Deposits, Inflows (+) Principal, US Dollars" + }, + "RAPFALSDIP_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDIP_USD", + "order": 15, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Foreign Currency Loans, Securities, and Deposits, Inflows (+) Principal, US Dollars" + }, + "RAPFALSDIP_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDIP_USD", + "order": 16, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Foreign Currency Loans, Securities, and Deposits, Inflows (+) Principal, US Dollars" + }, + "RAPFALSDIP_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDIP_USD", + "order": 17, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Foreign Currency Loans, Securities, and Deposits, Inflows (+) Principal, US Dollars" + }, + "RAPFALSDII_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSD_USD", + "order": 18, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Foreign Currency Loans, Securities, and Deposits, Inflows (+) Interest, US Dollars" + }, + "RAPFALSDII_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDII_USD", + "order": 19, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Foreign Currency Loans, Securities, and Deposits, Inflows (+) Interest, US Dollars" + }, + "RAPFALSDII_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDII_USD", + "order": 20, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Foreign Currency Loans, Securities, and Deposits, Inflows (+) Interest, US Dollars" + }, + "RAPFALSDII_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFALSDII_USD", + "order": 21, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Foreign Currency Loans, Securities, and Deposits, Inflows (+) Interest, US Dollars" + }, + "RAPFAFFS_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFA_USD", + "order": 22, + "level": 2, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregated Short & Long Positions in Forwards and Futures in Foreign Currencies vis-a-vis the Domestic Currency (including the Forward leg of Ccy. Swaps), Short Positions (-), US Dollars" + }, + "RAPFAFFS_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAFFS_USD", + "order": 23, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregated Short & Long Positions in Forwards and Futures in Foreign Currencies vis-a-vis the Domestic Currency (including the Forward Leg of Ccy. Swaps), Short positions (-), US Dollars" + }, + "RAPFAFFS_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAFFS_USD", + "order": 24, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short & Long Positions in Forwards and Futures in Foreign Currencies vis-a-vis the Domestic Currency (including the Forward Leg of Ccy. Swaps), Short Positions (-), US Dollars" + }, + "RAPFAFFS_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAFFS_USD", + "order": 25, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short & Long Positions in Forwards and Futures in Foreign Currencies vis-a-vis the Domestic Currency (including the Forward Leg of Ccy. Swaps), Short Positions (-), US Dollars" + }, + "RAPFAFFL_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFA_USD", + "order": 26, + "level": 2, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregated Short & Long Positions in Forwards and Futures in Foreign Currencies vis-a-vis the Domestic Currency (including the Forward leg of Ccy. Swaps), Long Positions (+), US Dollars" + }, + "RAPFAFFL_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAFFL_USD", + "order": 27, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregated Short & Long Positions in Forwards and Futures in Foreign Currencies vis-a-vis the Domestic Currency (including the Forward Leg of Ccy. Swaps), Long positions (+), US Dollars" + }, + "RAPFAFFL_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAFFL_USD", + "order": 28, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregated Short & Long Positions in Forwards and Futures in Foreign Currencies vis-a-vis the Domestic Currency (including the Forward Leg of Ccy. Swaps), Long positions (+), US Dollars" + }, + "RAPFAFFL_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAFFL_USD", + "order": 29, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregated Short & Long Positions in Forwards and Futures in Foreign Currencies vis-a-vis the Domestic Currency (including the Forward Leg of Ccy. Swaps), Long positions (+), US Dollars" + }, + "RAPFAO_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFA_USD", + "order": 30, + "level": 2, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Other Predetermined Short-term Net Drains on Foreign Currency Assets, US Dollars" + }, + "RAPFAO_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAO_USD", + "order": 31, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Other Predetermined Short-term Net Drains on Foreign Currency Assets, US Dollars" + }, + "RAPFAO_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAO_USD", + "order": 32, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Other Predetermined Short-term Net Drains on Foreign Currency Assets, US Dollars" + }, + "RAPFAO_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAO_USD", + "order": 33, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Other Predetermined Short-term Net Drains on Foreign Currency Assets, US Dollars" + }, + "RAPFAOOR_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAO_USD", + "order": 34, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Outflows Related to Repos (-), US Dollars" + }, + "RAPFAOOR_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOOR_USD", + "order": 35, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Outflows Related to Repos (-), US Dollars" + }, + "RAPFAOOR_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOOR_USD", + "order": 36, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Outflows Related to Repos (-), US Dollars" + }, + "RAPFAOOR_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOOR_USD", + "order": 37, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Outflows Related to Repos (-), US Dollars" + }, + "RAPFAOIRR_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAO_USD", + "order": 38, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Inflows Related to Reverse Repos (+), US Dollars" + }, + "RAPFAOIRR_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOIRR_USD", + "order": 39, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Inflows Related to Reverse Repos (+), US Dollars" + }, + "RAPFAOIRR_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOIRR_USD", + "order": 40, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Inflows Related to Reverse Repos (+), US Dollars" + }, + "RAPFAOIRR_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOIRR_USD", + "order": 41, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Inflows Related to Reverse Repos (+), US Dollars" + }, + "RAPFAOOC_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAO_USD", + "order": 42, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Trade Credit (-), US Dollars" + }, + "RAPFAOOC_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOOC_USD", + "order": 43, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Trade Credit (-), US Dollars" + }, + "RAPFAOOC_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOOC_USD", + "order": 44, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Trade Credit (-), US Dollars" + }, + "RAPFAOOC_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOOC_USD", + "order": 45, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Trade Credit (-), US Dollars" + }, + "RAPFAOIC_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAO_USD", + "order": 46, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Trade Credit (+), US Dollars" + }, + "RAPFAOIC_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOIC_USD", + "order": 47, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Trade Credit (+), US Dollars" + }, + "RAPFAOIC_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOIC_USD", + "order": 48, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Trade Credit (+), US Dollars" + }, + "RAPFAOIC_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOIC_USD", + "order": 49, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Trade Credit (+), US Dollars" + }, + "RAPFAOOP_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAO_USD", + "order": 50, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Other Accounts Payable (-), US Dollars" + }, + "RAPFAOOP_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOOP_USD", + "order": 51, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Other Accounts Payable (-), US Dollars" + }, + "RAPFAOOP_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOOP_USD", + "order": 52, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Other Accounts Payable (-), US Dollars" + }, + "RAPFAOOP_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOOP_USD", + "order": 53, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Other Accounts Payable (-), US Dollars" + }, + "RAPFAOIR_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAO_USD", + "order": 54, + "level": 3, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Other Accounts Receivable (+), US Dollars" + }, + "RAPFAOIR_1M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOIR_USD", + "order": 55, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Other Accounts Receivable (+), US Dollars" + }, + "RAPFAOIR_1M_3M_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOIR_USD", + "order": 56, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Other Accounts Receivable (+), US Dollars" + }, + "RAPFAOIR_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAPFAOIR_USD", + "order": 57, + "level": 4, + "title": "Predetermined Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Other Predetermined Short-term Net Drains on Foreign Currency Assets, Other Accounts Receivable (+), US Dollars" + }, + "RAFA_RAPFA_RO": { + "dataset": "IRFCL", + "table": "predetermined_drains_on_fx_assets", + "parent": "RAFA_RAPFA_RO", + "order": 58, + "level": 1, + "title": "Official Reserve Assets by Predetermined Short-term Net Drains on Foreign Currency Assets, Ratio" + }, + "RACFA_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFA_USD", + "order": 1, + "level": 1, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, US Dollars" + }, + "RACFAL_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFA_USD", + "order": 2, + "level": 2, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Contingent Liabilities in Foreign Currency, US Dollars" + }, + "RACFAL_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAL_USD", + "order": 3, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Contingent Liabilities in Foreign Currency, US Dollars" + }, + "RACFAL_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAL_USD", + "order": 4, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Contingent Liabilities in Foreign Currency, US Dollars" + }, + "RACFAL_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAL_USD", + "order": 5, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Contingent Liabilities in Foreign Currency, US Dollars" + }, + "RACFALG_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAL_USD", + "order": 6, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Contingent Liabilities in Foreign Currency, Guarantees of Foreign Currency Securities, US Dollars" + }, + "RACFALG_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFALG_USD", + "order": 7, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Contingent Liabilities in Foreign Currency, Guarantees of Foreign Currency Securities, US Dollars" + }, + "RACFALG_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFALG_USD", + "order": 8, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Contingent Liabilities in Foreign Currency, Guarantees of Foreign Currency Securities, US Dollars" + }, + "RACFALO_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAL_USD", + "order": 9, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Contingent Liabilities in Foreign Currency, Other Contingent Liabilities, US Dollars" + }, + "RACFALO_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFALO_USD", + "order": 10, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Contingent Liabilities in Foreign Currency, Other Contingent Liabilities, US Dollars" + }, + "RACFALO_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFALO_USD", + "order": 11, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Contingent Liabilities in Foreign Currency, Other Contingent Liabilities, US Dollars" + }, + "RACFALO_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFALO_USD", + "order": 12, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Contingent Liabilities in Foreign Currency, Other Contingent Liabilities, US Dollars" + }, + "RACFAS_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFA_USD", + "order": 13, + "level": 2, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Foreign Currency Securities Issued with Embedded Options (Puttable Bonds), US Dollars" + }, + "RACFACB_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFA_USD", + "order": 14, + "level": 2, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided by:, US Dollars" + }, + "RACFACB_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACB_USD", + "order": 15, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided by:, US Dollars" + }, + "RACFACB_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACB_USD", + "order": 16, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided by:, US Dollars" + }, + "RACFACB_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACB_USD", + "order": 17, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided by:, US Dollars" + }, + "RACFACBA_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACB_USD", + "order": 18, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, US Dollars" + }, + "RACFACBA_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBA_USD", + "order": 19, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, US Dollars" + }, + "RACFACBA_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBA_USD", + "order": 20, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, US Dollars" + }, + "RACFACBA_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBA_USD", + "order": 21, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, US Dollars" + }, + "RACFACBAOI_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBA_USD", + "order": 22, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other International Organizations (+), US Dollars'" + }, + "RACFACBAOI_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBAOI_USD", + "order": 23, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other International Organizations (+), US Dollars" + }, + "RACFACBAOI_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBAOI_USD", + "order": 24, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other International Organizations (+), US Dollars" + }, + "RACFACBAON_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBA_USD", + "order": 25, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other National Monetary Authorities (+), US Dollars'" + }, + "RACFACBAON_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBAON_USD", + "order": 26, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other National Monetary Authorities (+), US Dollars" + }, + "RACFACBAON_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBAON_USD", + "order": 27, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other National Monetary Authorities (+), US Dollars" + }, + "RACFACBAON_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBAON_USD", + "order": 28, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other National Monetary Authorities (+), US Dollars" + }, + "RACFACBABIS_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBA_USD", + "order": 29, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, BIS (+), US Dollars" + }, + "RACFACBAIMF_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBAIMF_USD", + "order": 34, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, IMF (+), US Dollars" + }, + "RACFACBAIMF_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBAIMF_USD", + "order": 35, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, IMF (+), US Dollars" + }, + "RACFACBAIMF_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBAIMF_USD", + "order": 36, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, IMF (+), US Dollars" + }, + "RACFACBAIMF_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBA_USD", + "order": 33, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided by: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, IMF (+), US Dollars" + }, + "RACFACBFIR_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACB_USD", + "order": 37, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided by: Banks and Other Financial Institutions hdqrtd in the Reporting Country (+), US Dollars" + }, + "RACFACBFIR_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBFIR_USD", + "order": 38, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided by: Banks and Other Financial Institutions hdqrtd in the Reporting Country (+), US Dollars" + }, + "RACFACBFIR_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBFIR_USD", + "order": 39, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided by: Banks and Other Financial Institutions hdqrtd in the Reporting Country (+), US Dollars" + }, + "RACFACBFIR_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBFIR_USD", + "order": 40, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided by: Banks and Other Financial Institutions hdqrtd in the Reporting Country (+), US Dollars" + }, + "RACFACBFIO_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACB_USD", + "order": 41, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided by: Banks and Other Financial Institutions hdqrtd outside Reporting Country (+), US Dollars" + }, + "RACFACBFIO_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBFIO_USD", + "order": 42, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided by: Banks and Other Financial Institutions hdqrtd outside Reporting Country (+), US Dollars" + }, + "RACFACBFIO_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBFIO_USD", + "order": 43, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided by: Banks and Other Financial Institutions hdqrtd outside Reporting Country (+), US Dollars" + }, + "RACFACBFIO_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACBFIO_USD", + "order": 44, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided by: Banks and Other Financial Institutions hdqrtd outside Reporting Country (+), US Dollars" + }, + "RACFACT_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFA_USD", + "order": 45, + "level": 2, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided to:, US Dollars" + }, + "RACFACT_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACT_USD", + "order": 46, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided to:, US Dollars" + }, + "RACFACT_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACT_USD", + "order": 47, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided to:, US Dollars" + }, + "RACFACT_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACT_USD", + "order": 48, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided to:, US Dollars" + }, + "RACFACTA_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACT_USD", + "order": 49, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, US Dollars" + }, + "RACFACTA_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTA_USD", + "order": 50, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, US Dollars" + }, + "RACFACTA_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTA_USD", + "order": 51, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, US Dollars" + }, + "RACFACTA_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTA_USD", + "order": 52, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, US Dollars" + }, + "RACFACTAOI_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTA_USD", + "order": 53, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other International Organizations (-), US Dollars" + }, + "RACFACTAOI_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTAOI_USD", + "order": 54, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other International Organizations (-), US Dollars" + }, + "RACFACTAOI_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTAOI_USD", + "order": 55, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other International Organizations (-), US Dollars" + }, + "RACFACTAOI_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTAOI_USD", + "order": 56, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other International Organizations (-), US Dollars" + }, + "RACFACTAON_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTA_USD", + "order": 57, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other National Monetary Authorities (-), US Dollars" + }, + "RACFACTAON_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTAON_USD", + "order": 58, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other National Monetary Authorities (-), US Dollars" + }, + "RACFACTAON_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTAON_USD", + "order": 59, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other National Monetary Authorities (-), US Dollars" + }, + "RACFACTAON_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTAON_USD", + "order": 60, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, Other National Monetary Authorities (-), US Dollars" + }, + "RACFACTABIS_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTA_USD", + "order": 61, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, BIS (-), US Dollars" + }, + "RACFACTABIS_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTABIS_USD", + "order": 62, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, BIS (-), US Dollars" + }, + "RACFACTABIS_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTABIS_USD", + "order": 63, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, BIS (-), US Dollars" + }, + "RACFACTABIS_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTABIS_USD", + "order": 64, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, BIS (-), US Dollars" + }, + "RACFACTAIMF_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTA_USD", + "order": 65, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, IMF (-), US Dollars" + }, + "RACFACTAIMF_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTAIMF_USD", + "order": 66, + "level": 5, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided to: Other National Monetary Authorities, BIS, IMF, and Other International Organizations, IMF (-), US Dollars" + }, + "RACFACTFIR_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACT_USD", + "order": 67, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided to: Banks and Other Financial Institutions hdqrtd in the Reporting Country (-), US Dollars" + }, + "RACFACTFIR_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTFIR_USD", + "order": 68, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided to: Banks and Other Financial Institutions hdqrtd in the Reporting Country (-), US Dollars" + }, + "RACFACTFIR_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTFIR_USD", + "order": 69, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided to: Banks and Other Financial Institutions hdqrtd in the Reporting Country (-), US Dollars" + }, + "RACFACTFIR_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTFIR_USD", + "order": 70, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided to: Banks and Other Financial Institutions hdqrtd in the Reporting Country (-), US Dollars" + }, + "RACFACTFIO_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACT_USD", + "order": 71, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Undrawn, Unconditional Credit Lines provided to: Banks and Other Financial Institutions hdqrtd outside Reporting Country (-), US Dollars" + }, + "RACFACTFIO_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTFIO_USD", + "order": 72, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Undrawn, Unconditional Credit Lines provided to: Banks and Other Financial Institutions hdqrtd outside Reporting Country (-), US Dollars" + }, + "RACFACTFIO_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTFIO_USD", + "order": 73, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Undrawn, Unconditional Credit Lines provided to: Banks and Other Financial Institutions hdqrtd outside Reporting Country (-), US Dollars" + }, + "RACFACTFIO_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFACTFIO_USD", + "order": 74, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Undrawn, Unconditional Credit Lines provided to: Banks and Other Financial Institutions hdqrtd outside Reporting Country (-), US Dollars" + }, + "RACFAPPS_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFA_USD", + "order": 75, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, US Dollars" + }, + "RACFAPPS_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 76, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, US Dollars" + }, + "RACFAPPS_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 77, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, US Dollars" + }, + "RACFAPPS_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 78, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, US Dollars" + }, + "RACFAPPSBP_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 79, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, Bought Puts, US Dollars" + }, + "RACFAPPSBP_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPSBP_USD", + "order": 80, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, Bought Puts, US Dollars" + }, + "RACFAPPSBP_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPSBP_USD", + "order": 81, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, Bought Puts, US Dollars" + }, + "RACFAPPSBP_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPSBP_USD", + "order": 82, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, Bought Puts, US Dollars" + }, + "RACFAPPSWC_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 83, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, Written Calls, US Dollars" + }, + "RACFAPPSWC_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPSWC_USD", + "order": 84, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, Written Calls, US Dollars" + }, + "RACFAPPSWC_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPSWC_USD", + "order": 85, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, Written Calls, US Dollars" + }, + "RACFAPPSWC_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPSWC_USD", + "order": 86, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, Written Calls, US Dollars" + }, + "RACFAPPL_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFA_USD", + "order": 87, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, US Dollars" + }, + "RACFAPPL_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 88, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, US Dollars" + }, + "RACFAPPL_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 89, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, US Dollars" + }, + "RACFAPPL_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 90, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, US Dollars" + }, + "RACFAPPLBC_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 91, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, Bought Calls, US Dollars" + }, + "RACFAPPLBC_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPLBC_USD", + "order": 92, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, Bought Calls, US Dollars" + }, + "RACFAPPLBC_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPLBC_USD", + "order": 93, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, Bought Calls, US Dollars" + }, + "RACFAPPLBC_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPLBC_USD", + "order": 94, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, Bought Calls, US Dollars" + }, + "RACFAPPLWP_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 95, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, Written Puts, US Dollars" + }, + "RACFAPPLWP_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPLWP_USD", + "order": 96, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, Written Puts, US Dollars" + }, + "RACFAPPLWP_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPLWP_USD", + "order": 97, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, Written Puts, US Dollars" + }, + "RACFAPPLWP_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPLWP_USD", + "order": 98, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, Written Puts, US Dollars" + }, + "RACFAMPAS_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 99, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, At Current Exchange Rate, Short Position, US Dollars" + }, + "RACFAMPAS_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPAS_USD", + "order": 100, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, At Current Exchange Rate, Short Position, US Dollars" + }, + "RACFAMPAS_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPAS_USD", + "order": 101, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, At Current Exchange Rate, Short Position, US Dollars" + }, + "RACFAMPAS_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPAS_USD", + "order": 102, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, At Current Exchange Rate, Short Position, US Dollars" + }, + "RACFAMPAL_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 103, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, At Current Exchange Rate, Long Position, US Dollars" + }, + "RACFAMPAL_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPAL_USD", + "order": 104, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, At Current Exchange Rate, Long Position, US Dollars" + }, + "RACFAMPAL_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPAL_USD", + "order": 105, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, At Current Exchange Rate, Long Position, US Dollars" + }, + "RACFAMPAL_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPAL_USD", + "order": 106, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, At Current Exchange Rate, Long Position, US Dollars" + }, + "RACFAMPBS_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 107, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 5 % (Depreciation of 5%), Short Position, US Dollars" + }, + "RACFAMPBS_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPBS_USD", + "order": 108, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 5 % (Depreciation of 5%), Short Position, US Dollars" + }, + "RACFAMPBS_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPBS_USD", + "order": 109, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 5 % (Depreciation of 5%), Short Position, US Dollars" + }, + "RACFAMPBS_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPBS_USD", + "order": 110, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 5 % (Depreciation of 5%), Short Position, US Dollars" + }, + "RACFAMPBL_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 111, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 5 % (Depreciation of 5%), Long Position, US Dollars" + }, + "RACFAMPBL_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPBL_USD", + "order": 112, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 5 % (Depreciation of 5%), Long Position, US Dollars" + }, + "RACFAMPBL_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPBL_USD", + "order": 113, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 5 % (Depreciation of 5%), Long Position, US Dollars" + }, + "RACFAMPBL_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPBL_USD", + "order": 114, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 5 % (Depreciation of 5%), Long Position, US Dollars" + }, + "RACFAMPCS_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 115, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 5 % (Appreciation of 5%), Short Position, US Dollars" + }, + "RACFAMPCS_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPCS_USD", + "order": 116, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 5 % (Appreciation of 5%), Short Position, US Dollars" + }, + "RACFAMPCS_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPCS_USD", + "order": 117, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 5 % (Appreciation of 5%), Short Position, US Dollars" + }, + "RACFAMPCS_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPCS_USD", + "order": 118, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 5 % (Appreciation of 5%), Short Position, US Dollars" + }, + "RACFAMPCL_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 119, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 5 % (Appreciation of 5%), Long Position, US Dollars" + }, + "RACFAMPCL_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPCL_USD", + "order": 120, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 5 % (Appreciation of 5%), Long Position, US Dollars" + }, + "RACFAMPCL_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPCL_USD", + "order": 121, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 5 % (Appreciation of 5%), Long Position, US Dollars" + }, + "RACFAMPCL_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPCL_USD", + "order": 122, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 5 % (Appreciation of 5%), Long Position, US Dollars" + }, + "RACFAMPDS_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 123, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 10 % (Depreciation of 10%), Short Position, US Dollars" + }, + "RACFAMPDS_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPDS_USD", + "order": 124, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 10 % (Depreciation of 10%), Short Position, US Dollars" + }, + "RACFAMPDS_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPDS_USD", + "order": 125, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 10 % (Depreciation of 10%), Short Position, US Dollars" + }, + "RACFAMPDS_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPDS_USD", + "order": 126, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 10 % (Depreciation of 10%), Short Position, US Dollars" + }, + "RACFAMPDL_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 127, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 10 % (Depreciation of 10%), Long Position, US Dollars" + }, + "RACFAMPDL_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPDL_USD", + "order": 128, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 10 % (Depreciation of 10%), Long Position, US Dollars" + }, + "RACFAMPDL_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPDL_USD", + "order": 129, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 10 % (Depreciation of 10%), Long Position, US Dollars" + }, + "RACFAMPDL_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPDL_USD", + "order": 130, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, + 10 % (Depreciation of 10%), Long Position, US Dollars" + }, + "RACFAMPES_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 131, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 10 % (Appreciation of 10%), Short Position, US Dollars" + }, + "RACFAMPES_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPES_USD", + "order": 132, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 10 % (Appreciation of 10%), Short Position, US Dollars" + }, + "RACFAMPES_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPES_USD", + "order": 133, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 10 % (Appreciation of 10%), Short Position, US Dollars" + }, + "RACFAMPES_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPES_USD", + "order": 134, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 10 % (Appreciation of 10%), Short Position, US Dollars" + }, + "RACFAMPEL_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 135, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 10 % (Appreciation of 10%), Long Position, US Dollars" + }, + "RACFAMPEL_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPEL_USD", + "order": 136, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 10 % (Appreciation of 10%), Long Position, US Dollars" + }, + "RACFAMPEL_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPEL_USD", + "order": 137, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 10 % (Appreciation of 10%), Long Position, US Dollars" + }, + "RACFAMPEL_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPEL_USD", + "order": 138, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, - 10 % (Appreciation of 10%), Long Position, US Dollars" + }, + "RACFAMPFS_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPS_USD", + "order": 139, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, Other, Short Position, US Dollars" + }, + "RACFAMPFS_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPFS_USD", + "order": 140, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, Other, Short Position, US Dollars" + }, + "RACFAMPFS_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPFS_USD", + "order": 141, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, Other, Short Position, US Dollars" + }, + "RACFAMPFS_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPFS_USD", + "order": 142, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, Other, Short Position, US Dollars" + }, + "RACFAMPFL_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAPPL_USD", + "order": 143, + "level": 3, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Total, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, Other, Long Position, US Dollars" + }, + "RACFAMPFL_1M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPFL_USD", + "order": 144, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), Up to 1 Month, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, Other, Long Position, US Dollars" + }, + "RACFAMPFL_1M_3M_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPFL_USD", + "order": 145, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 1 and up to 3 Months, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, Other, Long Position, US Dollars" + }, + "RACFAMPFL_3M_1Y_USD": { + "dataset": "IRFCL", + "table": "contingent_drains_fx_assets", + "parent": "RACFAMPFL_USD", + "order": 146, + "level": 4, + "title": "Contingent Short-term Net Drains on Foreign Currency Assets (nominal value), More than 3 Months and up to 1 Year, Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, PRO MEMORIA: In-the-money Options, Other, Long Position, US Dollars" + }, + "RAMDCD_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMDCD_USD", + "order": 1, + "level": 1, + "title": "Memorandum Items (Section IV of Reserves Data Template), Short-term Domestic Currency Debt Indexed to the Exchange Rate, US Dollars" + }, + "RAMFIFC_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMFIFC_USD", + "order": 2, + "level": 1, + "title": "Memorandum Items (Section IV of Reserves Data Template), Financial Instruments Denominated in Foreign Currency and Settled by Other Means (e.g., in Dom. Ccy.), US Dollars" + }, + "RAMPA_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMPA_USD", + "order": 3, + "level": 1, + "title": "Memorandum Items (Section IV of Reserves Data Template), Pledged Assets, US Dollars" + }, + "RAMFFS_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMFFS_USD", + "order": 17, + "level": 1, + "title": "Memorandum Items (Section IV of Reserves Data Template), Aggregate Short & Long Positions in Forwards and Futures in Foreign Currencies vis-a-vis the Domestic Currency (including the Forward Leg of Currency Swaps), Short Positions (-), US Dollars" + }, + "RAMPAOA_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMPA_USD", + "order": 5, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Pledged Assets, Included in Other Foreign Currency Assets, US Dollars" + }, + "RAMSR_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMSR_USD", + "order": 6, + "level": 1, + "title": "Memorandum Items (Section IV of Reserves Data Template), Securities Lent and on Repo, US Dollars" + }, + "RAMSRLRI_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMSR_USD", + "order": 7, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Securities Lent and on Repo, Lent or Repoed and Included in Section I, US Dollars" + }, + "RAMSRLRN_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMSR_USD", + "order": 8, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Securities Lent and on Repo, Lent or Repoed but not Included in Section I, US Dollars" + }, + "RAMSRBRI_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMSR_USD", + "order": 9, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Securities Lent and on Repo, Borrowed or Acquired and Included in Section I, US Dollars" + }, + "RAMSRBAN_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMSR_USD", + "order": 10, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Securities Lent and on Repo, Borrowed or Acquired but not Included in Section I, US Dollars" + }, + "RAMFDA_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMFDA_USD", + "order": 11, + "level": 1, + "title": "Memorandum Items (Section IV of Reserves Data Template), Financial Derivative Assets (Net, Marked to Market), US Dollars" + }, + "RAMFDAF_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMFDA_USD", + "order": 12, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Financial Derivative Assets (Net, Marked to Market), Forwards, US Dollars" + }, + "RAMFDAU_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMFDA_USD", + "order": 13, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Financial Derivative Assets (Net, Marked to Market), Futures, US Dollars" + }, + "RAMFDAW_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMFDA_USD", + "order": 14, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Financial Derivative Assets (Net, Marked to Market), Swaps, US Dollars" + }, + "RAMFDAP_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMFDA_USD", + "order": 15, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Financial Derivative Assets (Net, Marked to Market), Options, US Dollars" + }, + "RAMFDAO_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMFDA_USD", + "order": 16, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Financial Derivative Assets (Net, Marked to Market), Other, US Dollars" + }, + "RAMFFL_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMFFL_USD", + "order": 18, + "level": 1, + "title": "Memorandum Items (Section IV of Reserves Data Template), Aggregate Short & Long Positions in Forwards and Futures in Foreign Currencies vis-a-vis the Domestic Currency (including the Forward Leg of Currency Swaps), Long Positions (+), US Dollars" + }, + "RAMPPS_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMPPS_USD", + "order": 19, + "level": 1, + "title": "Memorandum Items (Section IV of Reserves Data Template), Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, US Dollars" + }, + "RAMPPSBP_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMPPS_USD", + "order": 20, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, Bought Puts, US Dollars" + }, + "RAMPPSWC_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMPPS_USD", + "order": 21, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Short Positions, Written Calls, US Dollars" + }, + "RAMPPL_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMPPL_USD", + "order": 22, + "level": 1, + "title": "Memorandum Items (Section IV of Reserves Data Template), Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, US Dollars" + }, + "RAMPPLBP_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMPPL_USD", + "order": 23, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, Bought Puts, US Dollars" + }, + "RAMPPLWC_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMPPL_USD", + "order": 24, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Aggregate Short and Long Positions of Options in Foreign Currencies vis-a-vis the Domestic Currency, Long Positions, Written Calls, US Dollars" + }, + "RAMCR_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMCR_USD", + "order": 25, + "level": 1, + "title": "Memorandum Items (Section IV of Reserves Data Template), Currency Composition of Reserves (by Groups of Currencies), US Dollars" + }, + "RAMCRISDR_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMCR_USD", + "order": 26, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Currency Composition of Reserves (by Groups of Currencies), Currencies in SDR Basket, US Dollars" + }, + "RAMCRIC_USD_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMCRISDR_USD", + "order": 27, + "level": 3, + "title": "Memorandum Items (Section IV of Reserves Data Template), Currency Composition of Reserves, Denominated in US Dollars, US Dollars" + }, + "RAMCRIC_EUR_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMCRISDR_USD", + "order": 28, + "level": 3, + "title": "Memorandum Items (Section IV of Reserves Data Template), Currency Composition of Reserves, Denominated in Euros, US Dollars" + }, + "RAMCRIC_CNY_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMCRISDR_USD", + "order": 29, + "level": 3, + "title": "Memorandum Items (Section IV of Reserves Data Template), Currency Composition of Reserves, Denominated in Chinese Yuan, US Dollars" + }, + "RAMCRIC_JPY_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMCRISDR_USD", + "order": 30, + "level": 3, + "title": "Memorandum Items (Section IV of Reserves Data Template), Currency Composition of Reserves, Denominated in Japanese Yen, US Dollars" + }, + "RAMCRIC_GBP_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMCRISDR_USD", + "order": 31, + "level": 3, + "title": "Memorandum Items (Section IV of Reserves Data Template), Currency Composition of Reserves, Denominated in UK Pound Sterling, US Dollars" + }, + "RAMCROSDR_USD": { + "dataset": "IRFCL", + "table": "memorandum_items", + "parent": "RAMCR_USD", + "order": 32, + "level": 2, + "title": "Memorandum Items (Section IV of Reserves Data Template), Currency Composition of Reserves (by Groups of Currencies, Currencies not in SDR Basket), US Dollars" + } +} \ No newline at end of file diff --git a/openbb_platform/providers/imf/openbb_imf/models/__init__.py b/openbb_platform/providers/imf/openbb_imf/models/__init__.py new file mode 100644 index 000000000000..b987d9482876 --- /dev/null +++ b/openbb_platform/providers/imf/openbb_imf/models/__init__.py @@ -0,0 +1 @@ +"""OpenBB IMF Provider Models.""" diff --git a/openbb_platform/providers/imf/openbb_imf/models/available_indicators.py b/openbb_platform/providers/imf/openbb_imf/models/available_indicators.py new file mode 100644 index 000000000000..9b57427185ee --- /dev/null +++ b/openbb_platform/providers/imf/openbb_imf/models/available_indicators.py @@ -0,0 +1,81 @@ +"""IMF Available Indicators.""" + +# pylint: disable=unused-argument + +from typing import Any, Dict, List, Optional + +from openbb_core.app.model.abstract.error import OpenBBError +from openbb_core.provider.abstract.fetcher import Fetcher +from openbb_core.provider.standard_models.available_indicators import ( + AvailableIndicatorsData, + AvailableIndicesQueryParams, +) +from pydantic import Field + + +class ImfAvailableIndicatorsQueryParams(AvailableIndicesQueryParams): + """IMF Available Indicators Query Parameters.""" + + +class ImfAvailableIndicatorsData(AvailableIndicatorsData): + """IMF Available Indicators Data.""" + + __alias_dict__ = { + "symbol_root": "parent", + "description": "title", + } + + table: Optional[str] = Field( + default=None, + description="The name of the table associated with the symbol.", + ) + level: Optional[int] = Field( + default=None, + description="The indentation level of the data, relative to the table and symbol_root", + ) + order: Optional[int] = Field( + default=None, + description="Order of the data, relative to the table.", + ) + + +class ImfAvailableIndicatorsFetcher( + Fetcher[ImfAvailableIndicatorsQueryParams, List[ImfAvailableIndicatorsData]] +): + """IMF Available Indicators Fetcher.""" + + @staticmethod + def transform_query(params: Dict[str, Any]) -> ImfAvailableIndicatorsQueryParams: + """Transform the query.""" + return ImfAvailableIndicatorsQueryParams(**params) + + @staticmethod + def extract_data( + query: ImfAvailableIndicatorsQueryParams, + credentials: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> List[Dict]: + """Fetch the data.""" + # pylint: disable=import-outside-toplevel + from openbb_imf.utils.irfcl_helpers import load_irfcl_symbols + + try: + irfcl_symbols = load_irfcl_symbols() + except OpenBBError as e: + raise OpenBBError(f"Failed to load IMF IRFCL symbols: {e}") from e + + records: List = [] + for key, value in irfcl_symbols.items(): + value["symbol"] = key + records.append(value) + + return records + + @staticmethod + def transform_data( + query: ImfAvailableIndicatorsQueryParams, + data: List[Dict], + **kwargs: Any, + ) -> List[ImfAvailableIndicatorsData]: + """Transform the data.""" + return [ImfAvailableIndicatorsData.model_validate(d) for d in data] diff --git a/openbb_platform/providers/imf/openbb_imf/models/economic_indicators.py b/openbb_platform/providers/imf/openbb_imf/models/economic_indicators.py new file mode 100644 index 000000000000..f6edc5ce8fe7 --- /dev/null +++ b/openbb_platform/providers/imf/openbb_imf/models/economic_indicators.py @@ -0,0 +1,197 @@ +"""IMF Economic Indicators Model.""" + +# pylint: disable=unused-argument + +from datetime import datetime +from typing import Any, Dict, List, Literal, Optional + +from openbb_core.app.model.abstract.error import OpenBBError +from openbb_core.provider.abstract.fetcher import Fetcher +from openbb_core.provider.standard_models.economic_indicators import ( + EconomicIndicatorsData, + EconomicIndicatorsQueryParams, +) +from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS +from openbb_core.provider.utils.errors import EmptyDataError +from pydantic import Field + +from openbb_imf.utils.constants import IRFCL_PRESET, IRFCL_TABLES +from openbb_imf.utils.irfcl_helpers import ( + load_country_to_code_map, + load_irfcl_symbols, + validate_countries, +) + + +class ImfEconomicIndicatorsQueryParams(EconomicIndicatorsQueryParams): + """IMF Economic Indicators Query.""" + + __json_schema_extra__ = { + "symbol": { + "multiple_items_allowed": True, + }, + "country": { + "multiple_items_allowed": True, + "choices": ["all"] + list(list(load_country_to_code_map())), + }, + "frequency": { + "choices": ["annual", "quarter", "month"], + }, + } + symbol: str = Field( + default="irfcl_top_lines", + description=QUERY_DESCRIPTIONS.get("symbol", "") + + " Use `available_indicators()` to get the list of available symbols." + + " Use 'IRFCL' to get all the data from the set of indicators." + + " Complete tables are available only by single country, and are keyed as described below." + + " The default is 'irfcl_top_lines'. Available presets not listed in `available_indicators()` are:" + + """\n + 'IRFCL': All the data from the set of indicators. Not compatible with multiple countries. + 'irfcl_top_lines': The default, top line items from the IRFCL data. Compatible with multiple countries. + 'reserve_assets_and_other_fx_assets': Table I of the IRFCL data. Not compatible with multiple countries. + 'predetermined_drains_on_fx_assets': Table II of the IRFCL data. Not compatible with multiple countries. + 'contingent_drains_fx_assets': Table III of the IRFCL data. Not compatible with multiple countries. + 'memorandum_items': The memorandum items table of the IRFCL data. Not compatible with multiple countries. + 'gold_reserves': Gold reserves as value in USD and Fine Troy Ounces. Compatible with multiple countries. + 'derivative_assets': Net derivative assets as value in USD. Compatible with multipile countries. + """, + ) + frequency: Literal["annual", "quarter", "month"] = Field( + default="quarter", + description="Frequency of the data.", + ) + + +class ImfEconomicIndicatorsData(EconomicIndicatorsData): + """IMF Economic Indicators Data.""" + + __alias_dict__ = { + "symbol_root": "parent", + } + + scale: Optional[str] = Field( + default=None, + description="The scale of the value.", + ) + table: Optional[str] = Field( + default=None, + description="The name of the table associated with the symbol.", + ) + level: Optional[int] = Field( + default=None, + description="The indentation level of the data, relative to the table and symbol_root", + ) + order: Optional[int] = Field( + default=None, + description="Order of the data, relative to the table.", + ) + reference_sector: Optional[str] = Field( + default=None, + description="The reference sector for the data.", + ) + title: Optional[str] = Field( + default=None, + description="The title of the series associated with the symbol.", + ) + + +class ImfEconomicIndicatorsFetcher( + Fetcher[ImfEconomicIndicatorsQueryParams, List[ImfEconomicIndicatorsData]] +): + """IMF Economic Indicators Fetcher.""" + + @staticmethod + def transform_query(params: Dict[str, Any]) -> ImfEconomicIndicatorsQueryParams: + """Transform the query.""" + symbols = params.get("symbol", "") + countries = params.get("country") + now = datetime.now().date() + symbols = "IRFCL" if ("all" in symbols or "IRFCL" in symbols) else symbols + if symbols == "IRFCL" and not (countries or countries == "all"): + raise OpenBBError( + f"The selected symbol(s), {params.get('symbol')}, requires a single country for the 'country' parameter." + ) + + if countries: + params["country"] = validate_countries(countries) + + if symbols and symbols in IRFCL_PRESET: + params["symbol"] = IRFCL_PRESET[symbols] + if symbols in IRFCL_TABLES and countries and countries.split(",") > 1: + raise OpenBBError( + f"Symbol '{symbols}' is a table and can only be used with one country." + ) + elif symbols: + params["symbol"] = symbols + + if not params.get("start_date") and (not countries or countries == "all"): + params["start_date"] = now.replace( + year=now.year - 1, month=1, day=1 + ).strftime("%Y-%m-%d") + + if not params.get("end_date"): + params["end_date"] = now.replace(month=12, day=31).strftime("%Y-%m-%d") + + if (not symbols or symbols == "all") and not params.get("start_date"): + params["start_date"] = now.replace(year=now.year - 1).strftime("%Y-%m-%d") + + return ImfEconomicIndicatorsQueryParams(**params) + + @staticmethod + async def aextract_data( + query: ImfEconomicIndicatorsQueryParams, + credentials: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> List[Dict]: + """Extract the data.""" + # pylint: disable = import-outside-toplevel + from openbb_imf.utils.irfcl_helpers import _get_irfcl_data + + try: + res = await _get_irfcl_data(**query.model_dump(exclude_none=True)) + except OpenBBError as e: + raise e from e + if not res: + raise EmptyDataError("No results returned for the query.") + return res + + @staticmethod + def transform_data( + query: ImfEconomicIndicatorsQueryParams, + data: List[Dict], + **kwargs: Any, + ) -> List[ImfEconomicIndicatorsData]: + """Transform the data.""" + # pylint: disable = import-outside-toplevel + from pandas import Categorical, DataFrame + + if not data: + raise EmptyDataError("The data is empty.") + + all_symbols = load_irfcl_symbols() + df = DataFrame(data) + + if df.empty: + raise EmptyDataError("The data is empty.") + + df = df[df["symbol"].isin(all_symbols)] + + if len(df) == 0: + raise OpenBBError("The data has a length of 0.") + + df["symbol"] = Categorical( + df["symbol"], + categories=all_symbols, + ordered=True, + ) + df["parent"] = Categorical( + df["parent"], + categories=all_symbols, + ordered=True, + ) + df = df.sort_values( + by=["date", "symbol", "parent", "value"], + ascending=[True, True, True, False], + ).reset_index(drop=True) + + return [ImfEconomicIndicatorsData(**d) for d in df.to_dict(orient="records")] diff --git a/openbb_platform/providers/imf/openbb_imf/utils/__init__.py b/openbb_platform/providers/imf/openbb_imf/utils/__init__.py new file mode 100644 index 000000000000..926e70a5e6b2 --- /dev/null +++ b/openbb_platform/providers/imf/openbb_imf/utils/__init__.py @@ -0,0 +1 @@ +"""IMF Utilities.""" diff --git a/openbb_platform/providers/imf/openbb_imf/utils/constants.py b/openbb_platform/providers/imf/openbb_imf/utils/constants.py new file mode 100644 index 000000000000..5abba1071c74 --- /dev/null +++ b/openbb_platform/providers/imf/openbb_imf/utils/constants.py @@ -0,0 +1,93 @@ +"""IMF Constants.""" + +# pylint: disable=line-too-long +# flake8: noqa: E501 + +IRFCL_HEADLINE = "RAF_USD,RAFA_USD,RAFAFX_USD,RAOFA_USD,RAPFA_USD,RAFAIMF_USD,RAFASDR_USD,RAFAGOLD_USD,RACFA_USD,RAMDCD_USD,RAMFIFC_USD,RAMSR_USD" + +RESERVE_ASSETS_AND_OTHER_FX_ASSETS = "RAF_USD,RAFA_USD,RAFAFX_USD,RAFAFXS_USD,RAFAFXSI_USD,RAFAFXCD_USD,RAFAFXCDN_USD,RAFAFXCDBI_USD,RAFAFXCDBIA_USD,RAFAFXCDBO_USD,RAFAFXCDBOA_USD,RAFAIMF_USD,RAFASDR_USD,RAFAGOLD_USD,RAFAGOLDV_OZT,RAFAO_USD,RAFAOF_USD,RAFAOL_USD,RAFAOO_USD,RAOFA_USD,RAOFAS_USD,RAOFAD_USD,RAOFAL_USD,RAOFAF_USD,RAOFAG_USD" + +PREDETERMINED_DRAINS_ON_FX_ASSETS = "RAPFA_USD,RAPFALSD_USD,RAPFALSD_1M_USD,RAPFALSD_1M_3M_USD,RAPFALSD_3M_1Y_USD,RAPFALSDOP_USD,RAPFALSDOP_1M_USD,RAPFALSDOP_1M_3M_USD,RAPFALSDOP_3M_1Y_USD,RAPFALSDOI_USD,RAPFALSDOI_1M_USD,RAPFALSDOI_1M_3M_USD,RAPFALSDOI_3M_1Y_USD,RAPFALSDIP_USD,RAPFALSDIP_1M_USD,RAPFALSDIP_1M_3M_USD,RAPFALSDIP_3M_1Y_USD,RAPFALSDII_USD,RAPFALSDII_1M_USD,RAPFALSDII_1M_3M_USD,RAPFALSDII_3M_1Y_USD,RAPFAFFS_USD,RAPFAFFS_1M_USD,RAPFAFFS_1M_3M_USD,RAPFAFFS_3M_1Y_USD,RAPFAFFL_USD,RAPFAFFL_1M_USD,RAPFAFFL_1M_3M_USD,RAPFAFFL_3M_1Y_USD,RAPFAO_USD,RAPFAO_1M_USD,RAPFAO_1M_3M_USD,RAPFAO_3M_1Y_USD,RAPFAOOR_USD,RAPFAOOR_1M_USD,RAPFAOOR_1M_3M_USD,RAPFAOOR_3M_1Y_USD,RAPFAOIRR_USD,RAPFAOIRR_1M_USD,RAPFAOIRR_1M_3M_USD,RAPFAOIRR_3M_1Y_USD,RAPFAOOC_USD,RAPFAOOC_1M_USD,RAPFAOOC_1M_3M_USD,RAPFAOOC_3M_1Y_USD,RAPFAOIC_USD,RAPFAOIC_1M_USD,RAPFAOIC_1M_3M_USD,RAPFAOIC_3M_1Y_USD,RAPFAOOP_USD,RAPFAOOP_1M_USD,RAPFAOOP_1M_3M_USD,RAPFAOOP_3M_1Y_USD,RAPFAOIR_USD,RAPFAOIR_1M_USD,RAPFAOIR_1M_3M_USD,RAPFAOIR_3M_1Y_USD,RAFA_RAPFA_RO" + +CONTINGENT_DRAINS_FX_ASSETS = "RACFA_USD,RACFAL_USD,RACFAL_1M_USD,RACFAL_1M_3M_USD,RACFAL_3M_1Y_USD,RACFALG_USD,RACFALG_1M_USD,RACFALG_1M_3M_USD,RACFALO_USD,RACFALO_1M_USD,RACFALO_1M_3M_USD,RACFALO_3M_1Y_USD,RACFAS_USD,RACFACB_USD,RACFACB_1M_USD,RACFACB_1M_3M_USD,RACFACB_3M_1Y_USD,RACFACBA_USD,RACFACBA_1M_USD,RACFACBA_1M_3M_USD,RACFACBA_3M_1Y_USD,RACFACBAOI_USD,RACFACBAOI_1M_USD,RACFACBAOI_1M_3M_USD,RACFACBAON_USD,RACFACBAON_1M_USD,RACFACBAON_1M_3M_USD,RACFACBAON_3M_1Y_USD,RACFACBABIS_USD,RACFACBAIMF_1M_USD,RACFACBAIMF_1M_3M_USD,RACFACBAIMF_3M_1Y_USD,RACFACBAIMF_USD,RACFACBFIR_USD,RACFACBFIR_1M_USD,RACFACBFIR_1M_3M_USD,RACFACBFIR_3M_1Y_USD,RACFACBFIO_USD,RACFACBFIO_1M_USD,RACFACBFIO_1M_3M_USD,RACFACBFIO_3M_1Y_USD,RACFACT_USD,RACFACT_1M_USD,RACFACT_1M_3M_USD,RACFACT_3M_1Y_USD,RACFACTA_USD,RACFACTA_1M_USD,RACFACTA_1M_3M_USD,RACFACTA_3M_1Y_USD,RACFACTAOI_USD,RACFACTAOI_1M_USD,RACFACTAOI_1M_3M_USD,RACFACTAOI_3M_1Y_USD,RACFACTAON_USD,RACFACTAON_1M_USD,RACFACTAON_1M_3M_USD,RACFACTAON_3M_1Y_USD,RACFACTABIS_USD,RACFACTABIS_1M_USD,RACFACTABIS_1M_3M_USD,RACFACTABIS_3M_1Y_USD,RACFACTAIMF_USD,RACFACTAIMF_1M_USD,RACFACTFIR_USD,RACFACTFIR_1M_USD,RACFACTFIR_1M_3M_USD,RACFACTFIR_3M_1Y_USD,RACFACTFIO_USD,RACFACTFIO_1M_USD,RACFACTFIO_1M_3M_USD,RACFACTFIO_3M_1Y_USD,RACFAPPS_USD,RACFAPPS_1M_USD,RACFAPPS_1M_3M_USD,RACFAPPS_3M_1Y_USD,RACFAPPSBP_USD,RACFAPPSBP_1M_USD,RACFAPPSBP_1M_3M_USD,RACFAPPSBP_3M_1Y_USD,RACFAPPSWC_USD,RACFAPPSWC_1M_USD,RACFAPPSWC_1M_3M_USD,RACFAPPSWC_3M_1Y_USD,RACFAPPL_USD,RACFAPPL_1M_USD,RACFAPPL_1M_3M_USD,RACFAPPL_3M_1Y_USD,RACFAPPLBC_USD,RACFAPPLBC_1M_USD,RACFAPPLBC_1M_3M_USD,RACFAPPLBC_3M_1Y_USD,RACFAPPLWP_USD,RACFAPPLWP_1M_USD,RACFAPPLWP_1M_3M_USD,RACFAPPLWP_3M_1Y_USD,RACFAMPAS_USD,RACFAMPAS_1M_USD,RACFAMPAS_1M_3M_USD,RACFAMPAS_3M_1Y_USD,RACFAMPAL_USD,RACFAMPAL_1M_USD,RACFAMPAL_1M_3M_USD,RACFAMPAL_3M_1Y_USD,RACFAMPBS_USD,RACFAMPBS_1M_USD,RACFAMPBS_1M_3M_USD,RACFAMPBS_3M_1Y_USD,RACFAMPBL_USD,RACFAMPBL_1M_USD,RACFAMPBL_1M_3M_USD,RACFAMPBL_3M_1Y_USD,RACFAMPCS_USD,RACFAMPCS_1M_USD,RACFAMPCS_1M_3M_USD,RACFAMPCS_3M_1Y_USD,RACFAMPCL_USD,RACFAMPCL_1M_USD,RACFAMPCL_1M_3M_USD,RACFAMPCL_3M_1Y_USD,RACFAMPDS_USD,RACFAMPDS_1M_USD,RACFAMPDS_1M_3M_USD,RACFAMPDS_3M_1Y_USD,RACFAMPDL_USD,RACFAMPDL_1M_USD,RACFAMPDL_1M_3M_USD,RACFAMPDL_3M_1Y_USD,RACFAMPES_USD,RACFAMPES_1M_USD,RACFAMPES_1M_3M_USD,RACFAMPES_3M_1Y_USD,RACFAMPEL_USD,RACFAMPEL_1M_USD,RACFAMPEL_1M_3M_USD,RACFAMPEL_3M_1Y_USD,RACFAMPFS_USD,RACFAMPFS_1M_USD,RACFAMPFS_1M_3M_USD,RACFAMPFS_3M_1Y_USD,RACFAMPFL_USD,RACFAMPFL_1M_USD,RACFAMPFL_1M_3M_USD,RACFAMPFL_3M_1Y_USD" + +IRFCL_MEMORANDUM_ITEMS = "RAMDCD_USD,RAMFIFC_USD,RAMPA_USD,RAMFFS_USD,RAMPAOA_USD,RAMSR_USD,RAMSRLRI_USD,RAMSRLRN_USD,RAMSRBRI_USD,RAMSRBAN_USD,RAMFDA_USD,RAMFDAF_USD,RAMFDAU_USD,RAMFDAW_USD,RAMFDAP_USD,RAMFDAO_USD,RAMFFL_USD,RAMPPS_USD,RAMPPSBP_USD,RAMPPSWC_USD,RAMPPL_USD,RAMPPLBP_USD,RAMPPLWC_USD,RAMCR_USD,RAMCRISDR_USD,RAMCRIC_USD_USD,RAMCRIC_EUR_USD,RAMCRIC_CNY_USD,RAMCRIC_JPY_USD,RAMCRIC_GBP_USD,RAMCROSDR_USD" + +IRFCL_TABLES = { + "reserve_assets_and_other_fx_assets": RESERVE_ASSETS_AND_OTHER_FX_ASSETS, + "predetermined_drains_on_fx_assets": PREDETERMINED_DRAINS_ON_FX_ASSETS, + "contingent_drains_fx_assets": CONTINGENT_DRAINS_FX_ASSETS, + "memorandum_items": IRFCL_MEMORANDUM_ITEMS, +} + +IRFCL_PRESET = { + "irfcl_top_lines": IRFCL_HEADLINE, + **IRFCL_TABLES, + "gold_reserves": "RAFAGOLD_USD,RAFAGOLDV_OZT", + "derivative_assets": "RAMFDA_USD", +} + +FREQUENCY_DICT = { + "month": "M", + "quarter": "Q", + "annual": "A", +} +REF_SECTORS_DICT = { + "government_ex_social_security": "S1311", + "central_bank": "S121", + "monetary_authorities": "S1X", + "all_sectors": "", +} + +SECTOR_MAP = {v: k for k, v in REF_SECTORS_DICT.items()} + +UNIT_MULTIPLIERS_MAP = { + "0": "Units", + "2": "Hundreds", + "3": "Thousands", + "6": "Millions", + "9": "Billions", + "12": "Trillions", + "N15": "Quadrillionths", + "N14": "Hundred Trillionths", + "N13": "Ten Trillionths", + "N12": "Trillionths", + "N11": "Hundred Billionths", + "N10": "Ten Billionths", + "N9": "Billionths", + "N8": "Hundred Millionths", + "N7": "Ten Millionths", + "N6": "Millionths", + "N5": "Hundred Thousandths", + "N4": "Ten Thousandths", + "N3": "Thousandths", + "N2": "Hundredths", + "N1": "Tenths", + "1": "Tens", + "4": "Ten Thousands", + "5": "Hundred Thousands", + "7": "Ten Millions", + "8": "Hundred Millions", + "10": "Ten Billions", + "11": "Hundred Billions", + "13": "Ten Trillions", + "14": "Hundred Trillions", + "15": "Quadrillions", +} + +TIME_FORMAT_MAP = { + "P1Y": "Annual", + "P6M": "Bi-annual", + "P3M": "Quarterly", + "P1M": "Monthly", + "P7D": "Weekly", + "P1D": "Daily", +} + +REF_SECTOR_MAP = { + "S1311": "Central government excluding social security", + "S121": "Central Bank", + "S1X": "Monetary Authorities", + "1C_AS": "All Sectors", + "AllSectorsIncludingAllSectors": "All Sectors Including All Sectors", +} diff --git a/openbb_platform/providers/imf/openbb_imf/utils/irfcl_helpers.py b/openbb_platform/providers/imf/openbb_imf/utils/irfcl_helpers.py new file mode 100644 index 000000000000..bce414ea54db --- /dev/null +++ b/openbb_platform/providers/imf/openbb_imf/utils/irfcl_helpers.py @@ -0,0 +1,306 @@ +"""IMF IRFCL Data Set Helpers.""" + +from typing import Dict, List, Optional + + +def load_irfcl_symbols() -> Dict: + """Load IMF IRFCL symbols.""" + # pylint: disable=import-outside-toplevel + import json # noqa + from json.decoder import JSONDecodeError + from pathlib import Path + from openbb_core.app.model.abstract.error import OpenBBError + + try: + symbols_file = Path(__file__).parents[1].joinpath("assets", "imf_symbols.json") + with symbols_file.open(encoding="utf-8") as file: + symbols = json.load(file) + except (FileNotFoundError, JSONDecodeError) as e: + raise OpenBBError(f"Failed to load IMF IRFCL symbols: {e}") from e + + return {k: v for k, v in symbols.items() if v["dataset"] == "IRFCL"} + + +def load_country_map() -> Dict: + """Load IMF IRFCL country map.""" + # pylint: disable=import-outside-toplevel + import json # noqa + from json.decoder import JSONDecodeError + from pathlib import Path + from openbb_core.app.model.abstract.error import OpenBBError + + try: + country_map_file = ( + Path(__file__).parents[1].joinpath("assets", "imf_country_map.json") + ) + with country_map_file.open(encoding="utf-8") as file: + country_map_dict = json.load(file) + except (FileNotFoundError, JSONDecodeError) as e: + raise OpenBBError(f"Failed to load IMF IRFCL country map: {e}") from e + + return { + k: v.replace("`", "").split(",")[0].split("_(")[0] + for k, v in country_map_dict.items() + if len(k) == 2 and k[0] not in ("5", "1", "7") and k not in ("X0", "R1", "GW") + } + + +def load_country_to_code_map() -> Dict: + """Load a map of lowercase country name to 2-letter ISO symbol.""" + return { + ( + "euro_area" + if k == "U2" + else v.lower() + .replace(" ", "_") + .replace("`", "") + .split(",")[0] + .split("_(")[0] + ): k + for k, v in load_country_map().items() + } + + +def validate_countries(countries) -> str: + """Validate the country and convert to a 2-letter ISO country code.""" + # pylint: disable=import-outside-toplevel + from warnings import warn # noqa + from openbb_core.app.model.abstract.error import OpenBBError + + country_map_dict = load_country_to_code_map() + + if isinstance(countries, str): + countries = countries.split(",") + elif not isinstance(countries, list): + raise OpenBBError("Invalid countries list.") + + new_countries: List = [] + + if "all" in countries or "ALL" in countries: + return "all" + + for country in countries: + if country.lower() not in country_map_dict and country.upper() not in list( + country_map_dict.values() + ): + warn(f"Invalid IMF IRFCL country: {country}") + continue + + if country.upper() in list(country_map_dict.values()): + new_countries.append(country.upper()) + else: + new_countries.append(country_map_dict.get(country, country).upper()) + + new_countries = [c for c in new_countries if c] + + if not new_countries: + raise OpenBBError("No valid countries found in the supplied list.") + + return ",".join(new_countries) + + +def validate_symbols(symbols) -> str: + """Validate the IMF IRFCL symbols.""" + # pylint: disable=import-outside-toplevel + from warnings import warn # noqa + from openbb_core.app.model.abstract.error import OpenBBError + + irfcl_symbols = load_irfcl_symbols() + + if isinstance(symbols, str): + symbols = symbols.split(",") + elif not isinstance(symbols, list): + raise OpenBBError("Invalid symbols list.") + + if "IRFCL" in symbols or "all" in symbols: + return "all" + + new_symbols: List = [] + + for symbol in symbols: + if symbol.upper() not in irfcl_symbols: + warn(f"Invalid IMF IRFCL symbol: {symbol}") + new_symbols.append(symbol.upper()) + + return "+".join(new_symbols) if len(new_symbols) > 1 else new_symbols[0] + + +# We use this as a helper to allow future expansion of the supported IMF indicators. +# Each database has its own nuances with URL construction and schemas. +# In the future, we will check the supported symbols map and direct the call +# to the appropriate dtatabase's function. + + +# pylint: disable=too-many-branches,too-many-statements,too-many-locals +async def _get_irfcl_data(**kwargs) -> List[Dict]: + """Get IMF IRFCL data. + This function is not intended to be called directly, + but through the `ImfEconomicIndicatorsFetcher` class. + """ + # pylint: disable=import-outside-toplevel + from json.decoder import JSONDecodeError # noqa + from openbb_core.provider.utils.helpers import amake_request + from openbb_core.app.model.abstract.error import OpenBBError + from openbb_imf.utils import constants + from pandas import to_datetime + from pandas.tseries import offsets + + countries = kwargs.get("country", "") + countries = ( + "" if countries == "all" else countries.replace(",", "+") if countries else "" + ) + + frequency = constants.FREQUENCY_DICT.get(kwargs.get("frequency", "quarter"), "Q") + sector = kwargs.get("sector", "monetary_authorities") + sector = constants.REF_SECTORS_DICT.get(sector, "") + start_date = kwargs.get("start_date", "") + end_date = kwargs.get("end_date", "") + + # Adjust the dates to the date relative to frequency. + # The API does not accept arbitrary dates, so we need to adjust them. + if start_date: + start_date = to_datetime(start_date) + if frequency == "Q": + # offset = offsets.QuarterBegin(startingMonth=1) + # start_date = start_date + offset + start_date = offsets.QuarterBegin(startingMonth=1).rollback(start_date) + elif frequency == "A": + start_date = offsets.YearBegin().rollback(start_date) + else: + start_date = offsets.MonthBegin().rollback(start_date) + start_date = start_date.strftime("%Y-%m-%d") + + if end_date: + end_date = to_datetime(end_date) + if frequency == "Q": + end_date = offsets.QuarterEnd().rollforward(end_date) + elif frequency == "A": + end_date = offsets.YearEnd().rollforward(end_date) + else: + end_date = offsets.MonthEnd().rollforward(end_date) + end_date = end_date.strftime("%Y-%m-%d") + + indicator = kwargs.get("symbol") + indicator = validate_symbols(indicator) if indicator else "" + indicator = "" if indicator == "all" else indicator + + if not indicator and not countries: + raise OpenBBError("Country is required when returning the complete dataset.") + + date_range = ( + f"?startPeriod={start_date}&endPeriod={end_date}" + if start_date and end_date + else "" + ) + + base_url = "http://dataservices.imf.org/REST/SDMX_JSON.svc/" + key = f"CompactData/IRFCL/{frequency}.{countries}.{indicator}.{sector}" + url = f"{base_url}{key}{date_range}" + + try: + response = await amake_request(url, timeout=20) + except JSONDecodeError as e: + raise OpenBBError( + "Error fetching data; This might be rate-limiting. Try again later." + ) from e + + if "ErrorDetails" in response: + raise OpenBBError( + f"{response['ErrorDetails'].get('Code')} -> {response['ErrorDetails'].get('Message')}" # type: ignore + ) + + series = response.get("CompactData", {}).get("DataSet", {}).pop("Series", {}) # type: ignore + + if not series: + raise OpenBBError(f"No time series data found -> {response}") + + # If there is only one series, they ruturn a dict instead of a list. + if series and isinstance(series, dict): + series = [series] + + data: List = [] + all_symbols = load_irfcl_symbols() + country_map_dict = { + v: k.replace("_", " ").title().replace("Ecb", "ECB") + for k, v in load_country_to_code_map().items() + } + # Iterate over the series to extract observations and map the metadata. + for s in series: + if "Obs" not in s: + continue + meta = { + k.replace("@", "").lower(): ( + constants.UNIT_MULTIPLIERS_MAP.get(str(v), v) + if k == "@UNIT_MULT" + else v + ) + for k, v in s.items() + if k != "Obs" + } + _symbol = meta.get("indicator") + _parent: Optional[str] = None + _order: Optional[str] = None + _level: Optional[str] = None + _table: Optional[str] = None + _title: Optional[str] = None + + if _symbol in all_symbols: + _table = all_symbols.get(_symbol, {}).get("table") + _parent = all_symbols.get(_symbol, {}).get("parent", "") + _order = all_symbols.get(_symbol, {}).get("order", "") + _level = all_symbols.get(_symbol, {}).get("level", "") + _title = all_symbols.get(_symbol, {}).get("title", "") + + _data = s.pop("Obs", []) + + if isinstance(_data, dict): + _data = [_data] + + for d in _data: + _date = d.pop("@TIME_PERIOD", None) + val = d.pop("@OBS_VALUE", None) + + if not val: + continue + + if _date: + offset = ( + offsets.QuarterEnd + if "Q" in _date + else offsets.YearEnd if len(str(_date)) == 4 else offsets.MonthEnd + ) + _date = to_datetime(_date) + _date = _date + offset(0) + _date = _date.strftime("%Y-%m-%d") + vals = { + k: v + for k, v in { + "date": _date, + "table": _table, + "symbol": _symbol, + "parent": _parent, + "order": _order, + "level": _level, + "country": country_map_dict.get( + meta.get("ref_area"), meta.get("ref_area") + ), + "reference_sector": constants.SECTOR_MAP.get( + meta.get("ref_sector"), meta.get("ref_sector") + ), + "title": _title, + "value": float(val) if val else None, + "scale": meta.get("unit_mult"), + }.items() + if v + } + + if vals.get("value") and vals.get("date"): + d.update(vals) + + if _data: + data.extend([d for d in _data if d]) + + if not data: + raise OpenBBError("No data found.") + + return data diff --git a/openbb_platform/providers/imf/poetry.lock b/openbb_platform/providers/imf/poetry.lock new file mode 100644 index 000000000000..ab93a09db704 --- /dev/null +++ b/openbb_platform/providers/imf/poetry.lock @@ -0,0 +1,1997 @@ +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "aiohappyeyeballs" +version = "2.4.0" +description = "Happy Eyeballs for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohappyeyeballs-2.4.0-py3-none-any.whl", hash = "sha256:7ce92076e249169a13c2f49320d1967425eaf1f407522d707d59cac7628d62bd"}, + {file = "aiohappyeyeballs-2.4.0.tar.gz", hash = "sha256:55a1714f084e63d49639800f95716da97a1f173d46a16dfcfda0016abb93b6b2"}, +] + +[[package]] +name = "aiohttp" +version = "3.10.5" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohttp-3.10.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:18a01eba2574fb9edd5f6e5fb25f66e6ce061da5dab5db75e13fe1558142e0a3"}, + {file = "aiohttp-3.10.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:94fac7c6e77ccb1ca91e9eb4cb0ac0270b9fb9b289738654120ba8cebb1189c6"}, + {file = "aiohttp-3.10.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f1f1c75c395991ce9c94d3e4aa96e5c59c8356a15b1c9231e783865e2772699"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7acae3cf1a2a2361ec4c8e787eaaa86a94171d2417aae53c0cca6ca3118ff6"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94c4381ffba9cc508b37d2e536b418d5ea9cfdc2848b9a7fea6aebad4ec6aac1"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c31ad0c0c507894e3eaa843415841995bf8de4d6b2d24c6e33099f4bc9fc0d4f"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0912b8a8fadeb32ff67a3ed44249448c20148397c1ed905d5dac185b4ca547bb"}, + {file = "aiohttp-3.10.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d93400c18596b7dc4794d48a63fb361b01a0d8eb39f28800dc900c8fbdaca91"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d00f3c5e0d764a5c9aa5a62d99728c56d455310bcc288a79cab10157b3af426f"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d742c36ed44f2798c8d3f4bc511f479b9ceef2b93f348671184139e7d708042c"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:814375093edae5f1cb31e3407997cf3eacefb9010f96df10d64829362ae2df69"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8224f98be68a84b19f48e0bdc14224b5a71339aff3a27df69989fa47d01296f3"}, + {file = "aiohttp-3.10.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9a487ef090aea982d748b1b0d74fe7c3950b109df967630a20584f9a99c0683"}, + {file = "aiohttp-3.10.5-cp310-cp310-win32.whl", hash = "sha256:d9ef084e3dc690ad50137cc05831c52b6ca428096e6deb3c43e95827f531d5ef"}, + {file = "aiohttp-3.10.5-cp310-cp310-win_amd64.whl", hash = "sha256:66bf9234e08fe561dccd62083bf67400bdbf1c67ba9efdc3dac03650e97c6088"}, + {file = "aiohttp-3.10.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c6a4e5e40156d72a40241a25cc226051c0a8d816610097a8e8f517aeacd59a2"}, + {file = "aiohttp-3.10.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c634a3207a5445be65536d38c13791904fda0748b9eabf908d3fe86a52941cf"}, + {file = "aiohttp-3.10.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4aff049b5e629ef9b3e9e617fa6e2dfeda1bf87e01bcfecaf3949af9e210105e"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1942244f00baaacaa8155eca94dbd9e8cc7017deb69b75ef67c78e89fdad3c77"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04a1f2a65ad2f93aa20f9ff9f1b672bf912413e5547f60749fa2ef8a644e061"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f2bfc0032a00405d4af2ba27f3c429e851d04fad1e5ceee4080a1c570476697"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:424ae21498790e12eb759040bbb504e5e280cab64693d14775c54269fd1d2bb7"}, + {file = "aiohttp-3.10.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:975218eee0e6d24eb336d0328c768ebc5d617609affaca5dbbd6dd1984f16ed0"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4120d7fefa1e2d8fb6f650b11489710091788de554e2b6f8347c7a20ceb003f5"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b90078989ef3fc45cf9221d3859acd1108af7560c52397ff4ace8ad7052a132e"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ba5a8b74c2a8af7d862399cdedce1533642fa727def0b8c3e3e02fcb52dca1b1"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:02594361128f780eecc2a29939d9dfc870e17b45178a867bf61a11b2a4367277"}, + {file = "aiohttp-3.10.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8fb4fc029e135859f533025bc82047334e24b0d489e75513144f25408ecaf058"}, + {file = "aiohttp-3.10.5-cp311-cp311-win32.whl", hash = "sha256:e1ca1ef5ba129718a8fc827b0867f6aa4e893c56eb00003b7367f8a733a9b072"}, + {file = "aiohttp-3.10.5-cp311-cp311-win_amd64.whl", hash = "sha256:349ef8a73a7c5665cca65c88ab24abe75447e28aa3bc4c93ea5093474dfdf0ff"}, + {file = "aiohttp-3.10.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:305be5ff2081fa1d283a76113b8df7a14c10d75602a38d9f012935df20731487"}, + {file = "aiohttp-3.10.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3a1c32a19ee6bbde02f1cb189e13a71b321256cc1d431196a9f824050b160d5a"}, + {file = "aiohttp-3.10.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:61645818edd40cc6f455b851277a21bf420ce347baa0b86eaa41d51ef58ba23d"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c225286f2b13bab5987425558baa5cbdb2bc925b2998038fa028245ef421e75"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ba01ebc6175e1e6b7275c907a3a36be48a2d487549b656aa90c8a910d9f3178"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8eaf44ccbc4e35762683078b72bf293f476561d8b68ec8a64f98cf32811c323e"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c43eb1ab7cbf411b8e387dc169acb31f0ca0d8c09ba63f9eac67829585b44f"}, + {file = "aiohttp-3.10.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de7a5299827253023c55ea549444e058c0eb496931fa05d693b95140a947cb73"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4790f0e15f00058f7599dab2b206d3049d7ac464dc2e5eae0e93fa18aee9e7bf"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:44b324a6b8376a23e6ba25d368726ee3bc281e6ab306db80b5819999c737d820"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0d277cfb304118079e7044aad0b76685d30ecb86f83a0711fc5fb257ffe832ca"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:54d9ddea424cd19d3ff6128601a4a4d23d54a421f9b4c0fff740505813739a91"}, + {file = "aiohttp-3.10.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4f1c9866ccf48a6df2b06823e6ae80573529f2af3a0992ec4fe75b1a510df8a6"}, + {file = "aiohttp-3.10.5-cp312-cp312-win32.whl", hash = "sha256:dc4826823121783dccc0871e3f405417ac116055bf184ac04c36f98b75aacd12"}, + {file = "aiohttp-3.10.5-cp312-cp312-win_amd64.whl", hash = "sha256:22c0a23a3b3138a6bf76fc553789cb1a703836da86b0f306b6f0dc1617398abc"}, + {file = "aiohttp-3.10.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7f6b639c36734eaa80a6c152a238242bedcee9b953f23bb887e9102976343092"}, + {file = "aiohttp-3.10.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f29930bc2921cef955ba39a3ff87d2c4398a0394ae217f41cb02d5c26c8b1b77"}, + {file = "aiohttp-3.10.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f489a2c9e6455d87eabf907ac0b7d230a9786be43fbe884ad184ddf9e9c1e385"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:123dd5b16b75b2962d0fff566effb7a065e33cd4538c1692fb31c3bda2bfb972"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b98e698dc34966e5976e10bbca6d26d6724e6bdea853c7c10162a3235aba6e16"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3b9162bab7e42f21243effc822652dc5bb5e8ff42a4eb62fe7782bcbcdfacf6"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1923a5c44061bffd5eebeef58cecf68096e35003907d8201a4d0d6f6e387ccaa"}, + {file = "aiohttp-3.10.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d55f011da0a843c3d3df2c2cf4e537b8070a419f891c930245f05d329c4b0689"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:afe16a84498441d05e9189a15900640a2d2b5e76cf4efe8cbb088ab4f112ee57"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8112fb501b1e0567a1251a2fd0747baae60a4ab325a871e975b7bb67e59221f"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1e72589da4c90337837fdfe2026ae1952c0f4a6e793adbbfbdd40efed7c63599"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:4d46c7b4173415d8e583045fbc4daa48b40e31b19ce595b8d92cf639396c15d5"}, + {file = "aiohttp-3.10.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:33e6bc4bab477c772a541f76cd91e11ccb6d2efa2b8d7d7883591dfb523e5987"}, + {file = "aiohttp-3.10.5-cp313-cp313-win32.whl", hash = "sha256:c58c6837a2c2a7cf3133983e64173aec11f9c2cd8e87ec2fdc16ce727bcf1a04"}, + {file = "aiohttp-3.10.5-cp313-cp313-win_amd64.whl", hash = "sha256:38172a70005252b6893088c0f5e8a47d173df7cc2b2bd88650957eb84fcf5022"}, + {file = "aiohttp-3.10.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f6f18898ace4bcd2d41a122916475344a87f1dfdec626ecde9ee802a711bc569"}, + {file = "aiohttp-3.10.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5ede29d91a40ba22ac1b922ef510aab871652f6c88ef60b9dcdf773c6d32ad7a"}, + {file = "aiohttp-3.10.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:673f988370f5954df96cc31fd99c7312a3af0a97f09e407399f61583f30da9bc"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58718e181c56a3c02d25b09d4115eb02aafe1a732ce5714ab70326d9776457c3"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b38b1570242fbab8d86a84128fb5b5234a2f70c2e32f3070143a6d94bc854cf"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:074d1bff0163e107e97bd48cad9f928fa5a3eb4b9d33366137ffce08a63e37fe"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd31f176429cecbc1ba499d4aba31aaccfea488f418d60376b911269d3b883c5"}, + {file = "aiohttp-3.10.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7384d0b87d4635ec38db9263e6a3f1eb609e2e06087f0aa7f63b76833737b471"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8989f46f3d7ef79585e98fa991e6ded55d2f48ae56d2c9fa5e491a6e4effb589"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c83f7a107abb89a227d6c454c613e7606c12a42b9a4ca9c5d7dad25d47c776ae"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cde98f323d6bf161041e7627a5fd763f9fd829bcfcd089804a5fdce7bb6e1b7d"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:676f94c5480d8eefd97c0c7e3953315e4d8c2b71f3b49539beb2aa676c58272f"}, + {file = "aiohttp-3.10.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2d21ac12dc943c68135ff858c3a989f2194a709e6e10b4c8977d7fcd67dfd511"}, + {file = "aiohttp-3.10.5-cp38-cp38-win32.whl", hash = "sha256:17e997105bd1a260850272bfb50e2a328e029c941c2708170d9d978d5a30ad9a"}, + {file = "aiohttp-3.10.5-cp38-cp38-win_amd64.whl", hash = "sha256:1c19de68896747a2aa6257ae4cf6ef59d73917a36a35ee9d0a6f48cff0f94db8"}, + {file = "aiohttp-3.10.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7e2fe37ac654032db1f3499fe56e77190282534810e2a8e833141a021faaab0e"}, + {file = "aiohttp-3.10.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5bf3ead3cb66ab990ee2561373b009db5bc0e857549b6c9ba84b20bc462e172"}, + {file = "aiohttp-3.10.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1b2c16a919d936ca87a3c5f0e43af12a89a3ce7ccbce59a2d6784caba945b68b"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad146dae5977c4dd435eb31373b3fe9b0b1bf26858c6fc452bf6af394067e10b"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c5c6fa16412b35999320f5c9690c0f554392dc222c04e559217e0f9ae244b92"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:95c4dc6f61d610bc0ee1edc6f29d993f10febfe5b76bb470b486d90bbece6b22"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da452c2c322e9ce0cfef392e469a26d63d42860f829026a63374fde6b5c5876f"}, + {file = "aiohttp-3.10.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:898715cf566ec2869d5cb4d5fb4be408964704c46c96b4be267442d265390f32"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:391cc3a9c1527e424c6865e087897e766a917f15dddb360174a70467572ac6ce"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:380f926b51b92d02a34119d072f178d80bbda334d1a7e10fa22d467a66e494db"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce91db90dbf37bb6fa0997f26574107e1b9d5ff939315247b7e615baa8ec313b"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9093a81e18c45227eebe4c16124ebf3e0d893830c6aca7cc310bfca8fe59d857"}, + {file = "aiohttp-3.10.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ee40b40aa753d844162dcc80d0fe256b87cba48ca0054f64e68000453caead11"}, + {file = "aiohttp-3.10.5-cp39-cp39-win32.whl", hash = "sha256:03f2645adbe17f274444953bdea69f8327e9d278d961d85657cb0d06864814c1"}, + {file = "aiohttp-3.10.5-cp39-cp39-win_amd64.whl", hash = "sha256:d17920f18e6ee090bdd3d0bfffd769d9f2cb4c8ffde3eb203777a3895c128862"}, + {file = "aiohttp-3.10.5.tar.gz", hash = "sha256:f071854b47d39591ce9a17981c46790acb30518e2f83dfca8db2dfa091178691"}, +] + +[package.dependencies] +aiohappyeyeballs = ">=2.3.0" +aiosignal = ">=1.1.2" +async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""} +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] + +[[package]] +name = "aiosignal" +version = "1.3.1" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.7" +files = [ + {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, + {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.4.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.8" +files = [ + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] + +[[package]] +name = "async-timeout" +version = "4.0.3" +description = "Timeout context manager for asyncio programs" +optional = false +python-versions = ">=3.7" +files = [ + {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"}, + {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"}, +] + +[[package]] +name = "attrs" +version = "24.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, +] + +[package.extras] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] + +[[package]] +name = "backoff" +version = "2.2.1" +description = "Function decoration for backoff and retry" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, + {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, +] + +[[package]] +name = "certifi" +version = "2024.8.30" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "dnspython" +version = "2.6.1" +description = "DNS toolkit" +optional = false +python-versions = ">=3.8" +files = [ + {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, + {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, +] + +[package.extras] +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "sphinx (>=7.2.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] +dnssec = ["cryptography (>=41)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] +doq = ["aioquic (>=0.9.25)"] +idna = ["idna (>=3.6)"] +trio = ["trio (>=0.23)"] +wmi = ["wmi (>=1.5.1)"] + +[[package]] +name = "email-validator" +version = "2.2.0" +description = "A robust email address syntax and deliverability validation library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631"}, + {file = "email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7"}, +] + +[package.dependencies] +dnspython = ">=2.0.0" +idna = ">=2.0.0" + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "fastapi" +version = "0.111.1" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi-0.111.1-py3-none-any.whl", hash = "sha256:4f51cfa25d72f9fbc3280832e84b32494cf186f50158d364a8765aabf22587bf"}, + {file = "fastapi-0.111.1.tar.gz", hash = "sha256:ddd1ac34cb1f76c2e2d7f8545a4bcb5463bce4834e81abf0b189e0c359ab2413"}, +] + +[package.dependencies] +email_validator = ">=2.0.0" +fastapi-cli = ">=0.0.2" +httpx = ">=0.23.0" +jinja2 = ">=2.11.2" +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +python-multipart = ">=0.0.7" +starlette = ">=0.37.2,<0.38.0" +typing-extensions = ">=4.8.0" +uvicorn = {version = ">=0.12.0", extras = ["standard"]} + +[package.extras] +all = ["email_validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] + +[[package]] +name = "fastapi-cli" +version = "0.0.5" +description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi_cli-0.0.5-py3-none-any.whl", hash = "sha256:e94d847524648c748a5350673546bbf9bcaeb086b33c24f2e82e021436866a46"}, + {file = "fastapi_cli-0.0.5.tar.gz", hash = "sha256:d30e1239c6f46fcb95e606f02cdda59a1e2fa778a54b64686b3ff27f6211ff9f"}, +] + +[package.dependencies] +typer = ">=0.12.3" +uvicorn = {version = ">=0.15.0", extras = ["standard"]} + +[package.extras] +standard = ["uvicorn[standard] (>=0.15.0)"] + +[[package]] +name = "frozenlist" +version = "1.4.1" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +files = [ + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, + {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, + {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, + {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, + {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, + {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, + {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, + {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, + {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, + {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, + {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, + {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, + {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, +] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "html5lib" +version = "1.1" +description = "HTML parser based on the WHATWG HTML specification" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"}, + {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"}, +] + +[package.dependencies] +six = ">=1.9" +webencodings = "*" + +[package.extras] +all = ["chardet (>=2.2)", "genshi", "lxml"] +chardet = ["chardet (>=2.2)"] +genshi = ["genshi"] +lxml = ["lxml"] + +[[package]] +name = "httpcore" +version = "1.0.5" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, + {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.26.0)"] + +[[package]] +name = "httptools" +version = "0.6.1" +description = "A collection of framework independent HTTP protocol utils." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f"}, + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563"}, + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58"}, + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185"}, + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142"}, + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658"}, + {file = "httptools-0.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b"}, + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1"}, + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0"}, + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc"}, + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2"}, + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837"}, + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d"}, + {file = "httptools-0.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb"}, + {file = "httptools-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949"}, + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3"}, + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb"}, + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97"}, + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3"}, + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4"}, + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf"}, + {file = "httptools-0.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084"}, + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3"}, + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e"}, + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d"}, + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da"}, + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81"}, + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a"}, + {file = "httptools-0.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e"}, + {file = "httptools-0.6.1.tar.gz", hash = "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a"}, +] + +[package.extras] +test = ["Cython (>=0.29.24,<0.30.0)"] + +[[package]] +name = "httpx" +version = "0.27.2" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, + {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "idna" +version = "3.8" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +files = [ + {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, + {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, +] + +[[package]] +name = "importlib-metadata" +version = "6.11.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, + {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + +[[package]] +name = "jinja2" +version = "3.1.4" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "monotonic" +version = "1.6" +description = "An implementation of time.monotonic() for Python 2 & < 3.3" +optional = false +python-versions = "*" +files = [ + {file = "monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c"}, + {file = "monotonic-1.6.tar.gz", hash = "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7"}, +] + +[[package]] +name = "multidict" +version = "6.1.0" +description = "multidict implementation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, + {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, + {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, + {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, + {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, + {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, + {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, + {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, + {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, + {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, + {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, + {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, + {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, + {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, + {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + +[[package]] +name = "numpy" +version = "2.0.2" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:51129a29dbe56f9ca83438b706e2e69a39892b5eda6cedcb6b0c9fdc9b0d3ece"}, + {file = "numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f15975dfec0cf2239224d80e32c3170b1d168335eaedee69da84fbe9f1f9cd04"}, + {file = "numpy-2.0.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8c5713284ce4e282544c68d1c3b2c7161d38c256d2eefc93c1d683cf47683e66"}, + {file = "numpy-2.0.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:becfae3ddd30736fe1889a37f1f580e245ba79a5855bff5f2a29cb3ccc22dd7b"}, + {file = "numpy-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2da5960c3cf0df7eafefd806d4e612c5e19358de82cb3c343631188991566ccd"}, + {file = "numpy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:496f71341824ed9f3d2fd36cf3ac57ae2e0165c143b55c3a035ee219413f3318"}, + {file = "numpy-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a61ec659f68ae254e4d237816e33171497e978140353c0c2038d46e63282d0c8"}, + {file = "numpy-2.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d731a1c6116ba289c1e9ee714b08a8ff882944d4ad631fd411106a30f083c326"}, + {file = "numpy-2.0.2-cp310-cp310-win32.whl", hash = "sha256:984d96121c9f9616cd33fbd0618b7f08e0cfc9600a7ee1d6fd9b239186d19d97"}, + {file = "numpy-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:c7b0be4ef08607dd04da4092faee0b86607f111d5ae68036f16cc787e250a131"}, + {file = "numpy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:49ca4decb342d66018b01932139c0961a8f9ddc7589611158cb3c27cbcf76448"}, + {file = "numpy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:11a76c372d1d37437857280aa142086476136a8c0f373b2e648ab2c8f18fb195"}, + {file = "numpy-2.0.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:807ec44583fd708a21d4a11d94aedf2f4f3c3719035c76a2bbe1fe8e217bdc57"}, + {file = "numpy-2.0.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8cafab480740e22f8d833acefed5cc87ce276f4ece12fdaa2e8903db2f82897a"}, + {file = "numpy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15f476a45e6e5a3a79d8a14e62161d27ad897381fecfa4a09ed5322f2085669"}, + {file = "numpy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e689d772146140a252c3a28501da66dfecd77490b498b168b501835041f951"}, + {file = "numpy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9ea91dfb7c3d1c56a0e55657c0afb38cf1eeae4544c208dc465c3c9f3a7c09f9"}, + {file = "numpy-2.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1c9307701fec8f3f7a1e6711f9089c06e6284b3afbbcd259f7791282d660a15"}, + {file = "numpy-2.0.2-cp311-cp311-win32.whl", hash = "sha256:a392a68bd329eafac5817e5aefeb39038c48b671afd242710b451e76090e81f4"}, + {file = "numpy-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:286cd40ce2b7d652a6f22efdfc6d1edf879440e53e76a75955bc0c826c7e64dc"}, + {file = "numpy-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:df55d490dea7934f330006d0f81e8551ba6010a5bf035a249ef61a94f21c500b"}, + {file = "numpy-2.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8df823f570d9adf0978347d1f926b2a867d5608f434a7cff7f7908c6570dcf5e"}, + {file = "numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9a92ae5c14811e390f3767053ff54eaee3bf84576d99a2456391401323f4ec2c"}, + {file = "numpy-2.0.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a842d573724391493a97a62ebbb8e731f8a5dcc5d285dfc99141ca15a3302d0c"}, + {file = "numpy-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05e238064fc0610c840d1cf6a13bf63d7e391717d247f1bf0318172e759e692"}, + {file = "numpy-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0123ffdaa88fa4ab64835dcbde75dcdf89c453c922f18dced6e27c90d1d0ec5a"}, + {file = "numpy-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:96a55f64139912d61de9137f11bf39a55ec8faec288c75a54f93dfd39f7eb40c"}, + {file = "numpy-2.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec9852fb39354b5a45a80bdab5ac02dd02b15f44b3804e9f00c556bf24b4bded"}, + {file = "numpy-2.0.2-cp312-cp312-win32.whl", hash = "sha256:671bec6496f83202ed2d3c8fdc486a8fc86942f2e69ff0e986140339a63bcbe5"}, + {file = "numpy-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:cfd41e13fdc257aa5778496b8caa5e856dc4896d4ccf01841daee1d96465467a"}, + {file = "numpy-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9059e10581ce4093f735ed23f3b9d283b9d517ff46009ddd485f1747eb22653c"}, + {file = "numpy-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:423e89b23490805d2a5a96fe40ec507407b8ee786d66f7328be214f9679df6dd"}, + {file = "numpy-2.0.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:2b2955fa6f11907cf7a70dab0d0755159bca87755e831e47932367fc8f2f2d0b"}, + {file = "numpy-2.0.2-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:97032a27bd9d8988b9a97a8c4d2c9f2c15a81f61e2f21404d7e8ef00cb5be729"}, + {file = "numpy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e795a8be3ddbac43274f18588329c72939870a16cae810c2b73461c40718ab1"}, + {file = "numpy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b258c385842546006213344c50655ff1555a9338e2e5e02a0756dc3e803dd"}, + {file = "numpy-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fec9451a7789926bcf7c2b8d187292c9f93ea30284802a0ab3f5be8ab36865d"}, + {file = "numpy-2.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9189427407d88ff25ecf8f12469d4d39d35bee1db5d39fc5c168c6f088a6956d"}, + {file = "numpy-2.0.2-cp39-cp39-win32.whl", hash = "sha256:905d16e0c60200656500c95b6b8dca5d109e23cb24abc701d41c02d74c6b3afa"}, + {file = "numpy-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:a3f4ab0caa7f053f6797fcd4e1e25caee367db3112ef2b6ef82d749530768c73"}, + {file = "numpy-2.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7f0a0c6f12e07fa94133c8a67404322845220c06a9e80e85999afe727f7438b8"}, + {file = "numpy-2.0.2-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:312950fdd060354350ed123c0e25a71327d3711584beaef30cdaa93320c392d4"}, + {file = "numpy-2.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26df23238872200f63518dd2aa984cfca675d82469535dc7162dc2ee52d9dd5c"}, + {file = "numpy-2.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a46288ec55ebbd58947d31d72be2c63cbf839f0a63b49cb755022310792a3385"}, + {file = "numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78"}, +] + +[[package]] +name = "numpy" +version = "2.1.1" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.10" +files = [ + {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, + {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, + {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, + {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, + {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, + {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, + {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, + {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, + {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, + {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, + {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, + {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, + {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, + {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, + {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, + {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, + {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, + {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, + {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, + {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, + {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, + {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, + {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, + {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, + {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, + {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, +] + +[[package]] +name = "openbb-core" +version = "1.3.2" +description = "OpenBB package with core functionality." +optional = false +python-versions = "<4.0,>=3.9" +files = [ + {file = "openbb_core-1.3.2-py3-none-any.whl", hash = "sha256:1dfd4d51892136364e5fc51308190df60ae10c3bc6ec8b66fe81a95514894685"}, + {file = "openbb_core-1.3.2.tar.gz", hash = "sha256:d384f066c9d7cf07d628b176e4a1df69032f78a9b390f82fd7ebf8e83207bf88"}, +] + +[package.dependencies] +aiohttp = ">=3.10.4,<4.0.0" +fastapi = ">=0.111.0,<0.112.0" +html5lib = ">=1.1,<2.0" +importlib-metadata = ">=6.8.0,<7.0.0" +pandas = ">=1.5.3" +posthog = ">=3.3.1,<4.0.0" +pydantic = ">=2.5.1,<3.0.0" +pyjwt = ">=2.8.0,<3.0.0" +python-dotenv = ">=1.0.0,<2.0.0" +python-multipart = ">=0.0.7,<0.0.8" +requests = ">=2.32.1,<3.0.0" +ruff = ">=0.1.6" +uuid7 = ">=0.1.0,<0.2.0" +uvicorn = ">=0.24,<0.25" +websockets = ">=12.0,<13.0" + +[[package]] +name = "pandas" +version = "2.2.2" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, +] +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + +[[package]] +name = "posthog" +version = "3.6.5" +description = "Integrate PostHog into any python application." +optional = false +python-versions = "*" +files = [ + {file = "posthog-3.6.5-py2.py3-none-any.whl", hash = "sha256:f8b7c573826b061a1d22c9495169c38ebe83a1df2729f49c7129a9c23a02acf6"}, + {file = "posthog-3.6.5.tar.gz", hash = "sha256:7fd3ca809e15476c35f75d18cd6bba31395daf0a17b75242965c469fb6292510"}, +] + +[package.dependencies] +backoff = ">=1.10.0" +monotonic = ">=1.5" +python-dateutil = ">2.1" +requests = ">=2.7,<3.0" +six = ">=1.5" + +[package.extras] +dev = ["black", "flake8", "flake8-print", "isort", "pre-commit"] +sentry = ["django", "sentry-sdk"] +test = ["coverage", "django", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)", "pylint", "pytest", "pytest-timeout"] + +[[package]] +name = "pydantic" +version = "2.9.1" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.9.1-py3-none-any.whl", hash = "sha256:7aff4db5fdf3cf573d4b3c30926a510a10e19a0774d38fc4967f78beb6deb612"}, + {file = "pydantic-2.9.1.tar.gz", hash = "sha256:1363c7d975c7036df0db2b4a61f2e062fbc0aa5ab5f2772e0ffc7191a4f4bce2"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.23.3" +typing-extensions = [ + {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, + {version = ">=4.6.1", markers = "python_version < \"3.13\""}, +] + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.23.3" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.23.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7f10a5d1b9281392f1bf507d16ac720e78285dfd635b05737c3911637601bae6"}, + {file = "pydantic_core-2.23.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c09a7885dd33ee8c65266e5aa7fb7e2f23d49d8043f089989726391dd7350c5"}, + {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6470b5a1ec4d1c2e9afe928c6cb37eb33381cab99292a708b8cb9aa89e62429b"}, + {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9172d2088e27d9a185ea0a6c8cebe227a9139fd90295221d7d495944d2367700"}, + {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86fc6c762ca7ac8fbbdff80d61b2c59fb6b7d144aa46e2d54d9e1b7b0e780e01"}, + {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0cb80fd5c2df4898693aa841425ea1727b1b6d2167448253077d2a49003e0ed"}, + {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03667cec5daf43ac4995cefa8aaf58f99de036204a37b889c24a80927b629cec"}, + {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:047531242f8e9c2db733599f1c612925de095e93c9cc0e599e96cf536aaf56ba"}, + {file = "pydantic_core-2.23.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5499798317fff7f25dbef9347f4451b91ac2a4330c6669821c8202fd354c7bee"}, + {file = "pydantic_core-2.23.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bbb5e45eab7624440516ee3722a3044b83fff4c0372efe183fd6ba678ff681fe"}, + {file = "pydantic_core-2.23.3-cp310-none-win32.whl", hash = "sha256:8b5b3ed73abb147704a6e9f556d8c5cb078f8c095be4588e669d315e0d11893b"}, + {file = "pydantic_core-2.23.3-cp310-none-win_amd64.whl", hash = "sha256:2b603cde285322758a0279995b5796d64b63060bfbe214b50a3ca23b5cee3e83"}, + {file = "pydantic_core-2.23.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c889fd87e1f1bbeb877c2ee56b63bb297de4636661cc9bbfcf4b34e5e925bc27"}, + {file = "pydantic_core-2.23.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea85bda3189fb27503af4c45273735bcde3dd31c1ab17d11f37b04877859ef45"}, + {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7f7f72f721223f33d3dc98a791666ebc6a91fa023ce63733709f4894a7dc611"}, + {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b2b55b0448e9da68f56b696f313949cda1039e8ec7b5d294285335b53104b61"}, + {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c24574c7e92e2c56379706b9a3f07c1e0c7f2f87a41b6ee86653100c4ce343e5"}, + {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2b05e6ccbee333a8f4b8f4d7c244fdb7a979e90977ad9c51ea31261e2085ce0"}, + {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2c409ce1c219c091e47cb03feb3c4ed8c2b8e004efc940da0166aaee8f9d6c8"}, + {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d965e8b325f443ed3196db890d85dfebbb09f7384486a77461347f4adb1fa7f8"}, + {file = "pydantic_core-2.23.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f56af3a420fb1ffaf43ece3ea09c2d27c444e7c40dcb7c6e7cf57aae764f2b48"}, + {file = "pydantic_core-2.23.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5b01a078dd4f9a52494370af21aa52964e0a96d4862ac64ff7cea06e0f12d2c5"}, + {file = "pydantic_core-2.23.3-cp311-none-win32.whl", hash = "sha256:560e32f0df04ac69b3dd818f71339983f6d1f70eb99d4d1f8e9705fb6c34a5c1"}, + {file = "pydantic_core-2.23.3-cp311-none-win_amd64.whl", hash = "sha256:c744fa100fdea0d000d8bcddee95213d2de2e95b9c12be083370b2072333a0fa"}, + {file = "pydantic_core-2.23.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e0ec50663feedf64d21bad0809f5857bac1ce91deded203efc4a84b31b2e4305"}, + {file = "pydantic_core-2.23.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:db6e6afcb95edbe6b357786684b71008499836e91f2a4a1e55b840955b341dbb"}, + {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98ccd69edcf49f0875d86942f4418a4e83eb3047f20eb897bffa62a5d419c8fa"}, + {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a678c1ac5c5ec5685af0133262103defb427114e62eafeda12f1357a12140162"}, + {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01491d8b4d8db9f3391d93b0df60701e644ff0894352947f31fff3e52bd5c801"}, + {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fcf31facf2796a2d3b7fe338fe8640aa0166e4e55b4cb108dbfd1058049bf4cb"}, + {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7200fd561fb3be06827340da066df4311d0b6b8eb0c2116a110be5245dceb326"}, + {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dc1636770a809dee2bd44dd74b89cc80eb41172bcad8af75dd0bc182c2666d4c"}, + {file = "pydantic_core-2.23.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:67a5def279309f2e23014b608c4150b0c2d323bd7bccd27ff07b001c12c2415c"}, + {file = "pydantic_core-2.23.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:748bdf985014c6dd3e1e4cc3db90f1c3ecc7246ff5a3cd4ddab20c768b2f1dab"}, + {file = "pydantic_core-2.23.3-cp312-none-win32.whl", hash = "sha256:255ec6dcb899c115f1e2a64bc9ebc24cc0e3ab097775755244f77360d1f3c06c"}, + {file = "pydantic_core-2.23.3-cp312-none-win_amd64.whl", hash = "sha256:40b8441be16c1e940abebed83cd006ddb9e3737a279e339dbd6d31578b802f7b"}, + {file = "pydantic_core-2.23.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6daaf5b1ba1369a22c8b050b643250e3e5efc6a78366d323294aee54953a4d5f"}, + {file = "pydantic_core-2.23.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d015e63b985a78a3d4ccffd3bdf22b7c20b3bbd4b8227809b3e8e75bc37f9cb2"}, + {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3fc572d9b5b5cfe13f8e8a6e26271d5d13f80173724b738557a8c7f3a8a3791"}, + {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f6bd91345b5163ee7448bee201ed7dd601ca24f43f439109b0212e296eb5b423"}, + {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc379c73fd66606628b866f661e8785088afe2adaba78e6bbe80796baf708a63"}, + {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbdce4b47592f9e296e19ac31667daed8753c8367ebb34b9a9bd89dacaa299c9"}, + {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3cf31edf405a161a0adad83246568647c54404739b614b1ff43dad2b02e6d5"}, + {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e22b477bf90db71c156f89a55bfe4d25177b81fce4aa09294d9e805eec13855"}, + {file = "pydantic_core-2.23.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:0a0137ddf462575d9bce863c4c95bac3493ba8e22f8c28ca94634b4a1d3e2bb4"}, + {file = "pydantic_core-2.23.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:203171e48946c3164fe7691fc349c79241ff8f28306abd4cad5f4f75ed80bc8d"}, + {file = "pydantic_core-2.23.3-cp313-none-win32.whl", hash = "sha256:76bdab0de4acb3f119c2a4bff740e0c7dc2e6de7692774620f7452ce11ca76c8"}, + {file = "pydantic_core-2.23.3-cp313-none-win_amd64.whl", hash = "sha256:37ba321ac2a46100c578a92e9a6aa33afe9ec99ffa084424291d84e456f490c1"}, + {file = "pydantic_core-2.23.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d063c6b9fed7d992bcbebfc9133f4c24b7a7f215d6b102f3e082b1117cddb72c"}, + {file = "pydantic_core-2.23.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6cb968da9a0746a0cf521b2b5ef25fc5a0bee9b9a1a8214e0a1cfaea5be7e8a4"}, + {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edbefe079a520c5984e30e1f1f29325054b59534729c25b874a16a5048028d16"}, + {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cbaaf2ef20d282659093913da9d402108203f7cb5955020bd8d1ae5a2325d1c4"}, + {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb539d7e5dc4aac345846f290cf504d2fd3c1be26ac4e8b5e4c2b688069ff4cf"}, + {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e6f33503c5495059148cc486867e1d24ca35df5fc064686e631e314d959ad5b"}, + {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04b07490bc2f6f2717b10c3969e1b830f5720b632f8ae2f3b8b1542394c47a8e"}, + {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:03795b9e8a5d7fda05f3873efc3f59105e2dcff14231680296b87b80bb327295"}, + {file = "pydantic_core-2.23.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c483dab0f14b8d3f0df0c6c18d70b21b086f74c87ab03c59250dbf6d3c89baba"}, + {file = "pydantic_core-2.23.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b2682038e255e94baf2c473dca914a7460069171ff5cdd4080be18ab8a7fd6e"}, + {file = "pydantic_core-2.23.3-cp38-none-win32.whl", hash = "sha256:f4a57db8966b3a1d1a350012839c6a0099f0898c56512dfade8a1fe5fb278710"}, + {file = "pydantic_core-2.23.3-cp38-none-win_amd64.whl", hash = "sha256:13dd45ba2561603681a2676ca56006d6dee94493f03d5cadc055d2055615c3ea"}, + {file = "pydantic_core-2.23.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:82da2f4703894134a9f000e24965df73cc103e31e8c31906cc1ee89fde72cbd8"}, + {file = "pydantic_core-2.23.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dd9be0a42de08f4b58a3cc73a123f124f65c24698b95a54c1543065baca8cf0e"}, + {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89b731f25c80830c76fdb13705c68fef6a2b6dc494402987c7ea9584fe189f5d"}, + {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6de1ec30c4bb94f3a69c9f5f2182baeda5b809f806676675e9ef6b8dc936f28"}, + {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb68b41c3fa64587412b104294b9cbb027509dc2f6958446c502638d481525ef"}, + {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c3980f2843de5184656aab58698011b42763ccba11c4a8c35936c8dd6c7068c"}, + {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94f85614f2cba13f62c3c6481716e4adeae48e1eaa7e8bac379b9d177d93947a"}, + {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:510b7fb0a86dc8f10a8bb43bd2f97beb63cffad1203071dc434dac26453955cd"}, + {file = "pydantic_core-2.23.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1eba2f7ce3e30ee2170410e2171867ea73dbd692433b81a93758ab2de6c64835"}, + {file = "pydantic_core-2.23.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b259fd8409ab84b4041b7b3f24dcc41e4696f180b775961ca8142b5b21d0e70"}, + {file = "pydantic_core-2.23.3-cp39-none-win32.whl", hash = "sha256:40d9bd259538dba2f40963286009bf7caf18b5112b19d2b55b09c14dde6db6a7"}, + {file = "pydantic_core-2.23.3-cp39-none-win_amd64.whl", hash = "sha256:5a8cd3074a98ee70173a8633ad3c10e00dcb991ecec57263aacb4095c5efb958"}, + {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f399e8657c67313476a121a6944311fab377085ca7f490648c9af97fc732732d"}, + {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6b5547d098c76e1694ba85f05b595720d7c60d342f24d5aad32c3049131fa5c4"}, + {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dda0290a6f608504882d9f7650975b4651ff91c85673341789a476b1159f211"}, + {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65b6e5da855e9c55a0c67f4db8a492bf13d8d3316a59999cfbaf98cc6e401961"}, + {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:09e926397f392059ce0afdcac920df29d9c833256354d0c55f1584b0b70cf07e"}, + {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:87cfa0ed6b8c5bd6ae8b66de941cece179281239d482f363814d2b986b79cedc"}, + {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e61328920154b6a44d98cabcb709f10e8b74276bc709c9a513a8c37a18786cc4"}, + {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce3317d155628301d649fe5e16a99528d5680af4ec7aa70b90b8dacd2d725c9b"}, + {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e89513f014c6be0d17b00a9a7c81b1c426f4eb9224b15433f3d98c1a071f8433"}, + {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4f62c1c953d7ee375df5eb2e44ad50ce2f5aff931723b398b8bc6f0ac159791a"}, + {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2718443bc671c7ac331de4eef9b673063b10af32a0bb385019ad61dcf2cc8f6c"}, + {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d90e08b2727c5d01af1b5ef4121d2f0c99fbee692c762f4d9d0409c9da6541"}, + {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b676583fc459c64146debea14ba3af54e540b61762dfc0613dc4e98c3f66eeb"}, + {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:50e4661f3337977740fdbfbae084ae5693e505ca2b3130a6d4eb0f2281dc43b8"}, + {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:68f4cf373f0de6abfe599a38307f4417c1c867ca381c03df27c873a9069cda25"}, + {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:59d52cf01854cb26c46958552a21acb10dd78a52aa34c86f284e66b209db8cab"}, + {file = "pydantic_core-2.23.3.tar.gz", hash = "sha256:3cb0f65d8b4121c1b015c60104a685feb929a29d7cf204387c7f2688c7974690"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pygments" +version = "2.18.0" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pyjwt" +version = "2.9.0" +description = "JSON Web Token implementation in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, + {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, +] + +[package.extras] +crypto = ["cryptography (>=3.4.0)"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] +tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-dotenv" +version = "1.0.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "python-multipart" +version = "0.0.7" +description = "A streaming multipart parser for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "python_multipart-0.0.7-py3-none-any.whl", hash = "sha256:b1fef9a53b74c795e2347daac8c54b252d9e0df9c619712691c1cc8021bd3c49"}, + {file = "python_multipart-0.0.7.tar.gz", hash = "sha256:288a6c39b06596c1b988bb6794c6fbc80e6c369e35e5062637df256bee0c9af9"}, +] + +[package.extras] +dev = ["atomicwrites (==1.2.1)", "attrs (==19.2.0)", "coverage (==6.5.0)", "hatch", "invoke (==2.2.0)", "more-itertools (==4.3.0)", "pbr (==4.3.0)", "pluggy (==1.0.0)", "py (==1.11.0)", "pytest (==7.2.0)", "pytest-cov (==4.0.0)", "pytest-timeout (==2.1.0)", "pyyaml (==5.1)"] + +[[package]] +name = "pytz" +version = "2024.1" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rich" +version = "13.8.1" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.8.1-py3-none-any.whl", hash = "sha256:1760a3c0848469b97b558fc61c85233e3dafb69c7a071b4d60c38099d3cd4c06"}, + {file = "rich-13.8.1.tar.gz", hash = "sha256:8260cda28e3db6bf04d2d1ef4dbc03ba80a824c88b0e7668a0f23126a424844a"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "ruff" +version = "0.6.4" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.6.4-py3-none-linux_armv6l.whl", hash = "sha256:c4b153fc152af51855458e79e835fb6b933032921756cec9af7d0ba2aa01a258"}, + {file = "ruff-0.6.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:bedff9e4f004dad5f7f76a9d39c4ca98af526c9b1695068198b3bda8c085ef60"}, + {file = "ruff-0.6.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d02a4127a86de23002e694d7ff19f905c51e338c72d8e09b56bfb60e1681724f"}, + {file = "ruff-0.6.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7862f42fc1a4aca1ea3ffe8a11f67819d183a5693b228f0bb3a531f5e40336fc"}, + {file = "ruff-0.6.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eebe4ff1967c838a1a9618a5a59a3b0a00406f8d7eefee97c70411fefc353617"}, + {file = "ruff-0.6.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:932063a03bac394866683e15710c25b8690ccdca1cf192b9a98260332ca93408"}, + {file = "ruff-0.6.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:50e30b437cebef547bd5c3edf9ce81343e5dd7c737cb36ccb4fe83573f3d392e"}, + {file = "ruff-0.6.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c44536df7b93a587de690e124b89bd47306fddd59398a0fb12afd6133c7b3818"}, + {file = "ruff-0.6.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ea086601b22dc5e7693a78f3fcfc460cceabfdf3bdc36dc898792aba48fbad6"}, + {file = "ruff-0.6.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b52387d3289ccd227b62102c24714ed75fbba0b16ecc69a923a37e3b5e0aaaa"}, + {file = "ruff-0.6.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0308610470fcc82969082fc83c76c0d362f562e2f0cdab0586516f03a4e06ec6"}, + {file = "ruff-0.6.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:803b96dea21795a6c9d5bfa9e96127cc9c31a1987802ca68f35e5c95aed3fc0d"}, + {file = "ruff-0.6.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:66dbfea86b663baab8fcae56c59f190caba9398df1488164e2df53e216248baa"}, + {file = "ruff-0.6.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:34d5efad480193c046c86608dbba2bccdc1c5fd11950fb271f8086e0c763a5d1"}, + {file = "ruff-0.6.4-py3-none-win32.whl", hash = "sha256:f0f8968feea5ce3777c0d8365653d5e91c40c31a81d95824ba61d871a11b8523"}, + {file = "ruff-0.6.4-py3-none-win_amd64.whl", hash = "sha256:549daccee5227282289390b0222d0fbee0275d1db6d514550d65420053021a58"}, + {file = "ruff-0.6.4-py3-none-win_arm64.whl", hash = "sha256:ac4b75e898ed189b3708c9ab3fc70b79a433219e1e87193b4f2b77251d058d14"}, + {file = "ruff-0.6.4.tar.gz", hash = "sha256:ac3b5bfbee99973f80aa1b7cbd1c9cbce200883bdd067300c22a6cc1c7fba212"}, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +description = "Tool to Detect Surrounding Shell" +optional = false +python-versions = ">=3.7" +files = [ + {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, + {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, +] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "starlette" +version = "0.37.2" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.8" +files = [ + {file = "starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee"}, + {file = "starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823"}, +] + +[package.dependencies] +anyio = ">=3.4.0,<5" +typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} + +[package.extras] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] + +[[package]] +name = "typer" +version = "0.12.5" +description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +optional = false +python-versions = ">=3.7" +files = [ + {file = "typer-0.12.5-py3-none-any.whl", hash = "sha256:62fe4e471711b147e3365034133904df3e235698399bc4de2b36c8579298d52b"}, + {file = "typer-0.12.5.tar.gz", hash = "sha256:f592f089bedcc8ec1b974125d64851029c3b1af145f04aca64d69410f0c9b722"}, +] + +[package.dependencies] +click = ">=8.0.0" +rich = ">=10.11.0" +shellingham = ">=1.3.0" +typing-extensions = ">=3.7.4.3" + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "tzdata" +version = "2024.1" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, + {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, +] + +[[package]] +name = "urllib3" +version = "2.2.2" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "uuid7" +version = "0.1.0" +description = "UUID version 7, generating time-sorted UUIDs with 200ns time resolution and 48 bits of randomness" +optional = false +python-versions = ">=3.7" +files = [ + {file = "uuid7-0.1.0-py2.py3-none-any.whl", hash = "sha256:5e259bb63c8cb4aded5927ff41b444a80d0c7124e8a0ced7cf44efa1f5cccf61"}, + {file = "uuid7-0.1.0.tar.gz", hash = "sha256:8c57aa32ee7456d3cc68c95c4530bc571646defac01895cfc73545449894a63c"}, +] + +[[package]] +name = "uvicorn" +version = "0.24.0.post1" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.8" +files = [ + {file = "uvicorn-0.24.0.post1-py3-none-any.whl", hash = "sha256:7c84fea70c619d4a710153482c0d230929af7bcf76c7bfa6de151f0a3a80121e"}, + {file = "uvicorn-0.24.0.post1.tar.gz", hash = "sha256:09c8e5a79dc466bdf28dead50093957db184de356fcdc48697bad3bde4c2588e"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} +h11 = ">=0.8" +httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} +python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} +typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} + +[package.extras] +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] + +[[package]] +name = "uvloop" +version = "0.20.0" +description = "Fast implementation of asyncio event loop on top of libuv" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "uvloop-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9ebafa0b96c62881d5cafa02d9da2e44c23f9f0cd829f3a32a6aff771449c996"}, + {file = "uvloop-0.20.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:35968fc697b0527a06e134999eef859b4034b37aebca537daeb598b9d45a137b"}, + {file = "uvloop-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b16696f10e59d7580979b420eedf6650010a4a9c3bd8113f24a103dfdb770b10"}, + {file = "uvloop-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b04d96188d365151d1af41fa2d23257b674e7ead68cfd61c725a422764062ae"}, + {file = "uvloop-0.20.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:94707205efbe809dfa3a0d09c08bef1352f5d3d6612a506f10a319933757c006"}, + {file = "uvloop-0.20.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:89e8d33bb88d7263f74dc57d69f0063e06b5a5ce50bb9a6b32f5fcbe655f9e73"}, + {file = "uvloop-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e50289c101495e0d1bb0bfcb4a60adde56e32f4449a67216a1ab2750aa84f037"}, + {file = "uvloop-0.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e237f9c1e8a00e7d9ddaa288e535dc337a39bcbf679f290aee9d26df9e72bce9"}, + {file = "uvloop-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:746242cd703dc2b37f9d8b9f173749c15e9a918ddb021575a0205ec29a38d31e"}, + {file = "uvloop-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82edbfd3df39fb3d108fc079ebc461330f7c2e33dbd002d146bf7c445ba6e756"}, + {file = "uvloop-0.20.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:80dc1b139516be2077b3e57ce1cb65bfed09149e1d175e0478e7a987863b68f0"}, + {file = "uvloop-0.20.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4f44af67bf39af25db4c1ac27e82e9665717f9c26af2369c404be865c8818dcf"}, + {file = "uvloop-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4b75f2950ddb6feed85336412b9a0c310a2edbcf4cf931aa5cfe29034829676d"}, + {file = "uvloop-0.20.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:77fbc69c287596880ecec2d4c7a62346bef08b6209749bf6ce8c22bbaca0239e"}, + {file = "uvloop-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6462c95f48e2d8d4c993a2950cd3d31ab061864d1c226bbf0ee2f1a8f36674b9"}, + {file = "uvloop-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:649c33034979273fa71aa25d0fe120ad1777c551d8c4cd2c0c9851d88fcb13ab"}, + {file = "uvloop-0.20.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a609780e942d43a275a617c0839d85f95c334bad29c4c0918252085113285b5"}, + {file = "uvloop-0.20.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aea15c78e0d9ad6555ed201344ae36db5c63d428818b4b2a42842b3870127c00"}, + {file = "uvloop-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f0e94b221295b5e69de57a1bd4aeb0b3a29f61be6e1b478bb8a69a73377db7ba"}, + {file = "uvloop-0.20.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fee6044b64c965c425b65a4e17719953b96e065c5b7e09b599ff332bb2744bdf"}, + {file = "uvloop-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:265a99a2ff41a0fd56c19c3838b29bf54d1d177964c300dad388b27e84fd7847"}, + {file = "uvloop-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10c2956efcecb981bf9cfb8184d27d5d64b9033f917115a960b83f11bfa0d6b"}, + {file = "uvloop-0.20.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e7d61fe8e8d9335fac1bf8d5d82820b4808dd7a43020c149b63a1ada953d48a6"}, + {file = "uvloop-0.20.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2beee18efd33fa6fdb0976e18475a4042cd31c7433c866e8a09ab604c7c22ff2"}, + {file = "uvloop-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d8c36fdf3e02cec92aed2d44f63565ad1522a499c654f07935c8f9d04db69e95"}, + {file = "uvloop-0.20.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a0fac7be202596c7126146660725157d4813aa29a4cc990fe51346f75ff8fde7"}, + {file = "uvloop-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d0fba61846f294bce41eb44d60d58136090ea2b5b99efd21cbdf4e21927c56a"}, + {file = "uvloop-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95720bae002ac357202e0d866128eb1ac82545bcf0b549b9abe91b5178d9b541"}, + {file = "uvloop-0.20.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:36c530d8fa03bfa7085af54a48f2ca16ab74df3ec7108a46ba82fd8b411a2315"}, + {file = "uvloop-0.20.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e97152983442b499d7a71e44f29baa75b3b02e65d9c44ba53b10338e98dedb66"}, + {file = "uvloop-0.20.0.tar.gz", hash = "sha256:4603ca714a754fc8d9b197e325db25b2ea045385e8a3ad05d3463de725fdf469"}, +] + +[package.extras] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] + +[[package]] +name = "watchfiles" +version = "0.24.0" +description = "Simple, modern and high performance file watching and code reload in python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "watchfiles-0.24.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:083dc77dbdeef09fa44bb0f4d1df571d2e12d8a8f985dccde71ac3ac9ac067a0"}, + {file = "watchfiles-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e94e98c7cb94cfa6e071d401ea3342767f28eb5a06a58fafdc0d2a4974f4f35c"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82ae557a8c037c42a6ef26c494d0631cacca040934b101d001100ed93d43f361"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:acbfa31e315a8f14fe33e3542cbcafc55703b8f5dcbb7c1eecd30f141df50db3"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b74fdffce9dfcf2dc296dec8743e5b0332d15df19ae464f0e249aa871fc1c571"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:449f43f49c8ddca87c6b3980c9284cab6bd1f5c9d9a2b00012adaaccd5e7decd"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4abf4ad269856618f82dee296ac66b0cd1d71450fc3c98532d93798e73399b7a"}, + {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f895d785eb6164678ff4bb5cc60c5996b3ee6df3edb28dcdeba86a13ea0465e"}, + {file = "watchfiles-0.24.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ae3e208b31be8ce7f4c2c0034f33406dd24fbce3467f77223d10cd86778471c"}, + {file = "watchfiles-0.24.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2efec17819b0046dde35d13fb8ac7a3ad877af41ae4640f4109d9154ed30a188"}, + {file = "watchfiles-0.24.0-cp310-none-win32.whl", hash = "sha256:6bdcfa3cd6fdbdd1a068a52820f46a815401cbc2cb187dd006cb076675e7b735"}, + {file = "watchfiles-0.24.0-cp310-none-win_amd64.whl", hash = "sha256:54ca90a9ae6597ae6dc00e7ed0a040ef723f84ec517d3e7ce13e63e4bc82fa04"}, + {file = "watchfiles-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:bdcd5538e27f188dd3c804b4a8d5f52a7fc7f87e7fd6b374b8e36a4ca03db428"}, + {file = "watchfiles-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2dadf8a8014fde6addfd3c379e6ed1a981c8f0a48292d662e27cabfe4239c83c"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6509ed3f467b79d95fc62a98229f79b1a60d1b93f101e1c61d10c95a46a84f43"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8360f7314a070c30e4c976b183d1d8d1585a4a50c5cb603f431cebcbb4f66327"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:316449aefacf40147a9efaf3bd7c9bdd35aaba9ac5d708bd1eb5763c9a02bef5"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73bde715f940bea845a95247ea3e5eb17769ba1010efdc938ffcb967c634fa61"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3770e260b18e7f4e576edca4c0a639f704088602e0bc921c5c2e721e3acb8d15"}, + {file = "watchfiles-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa0fd7248cf533c259e59dc593a60973a73e881162b1a2f73360547132742823"}, + {file = "watchfiles-0.24.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d7a2e3b7f5703ffbd500dabdefcbc9eafeff4b9444bbdd5d83d79eedf8428fab"}, + {file = "watchfiles-0.24.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d831ee0a50946d24a53821819b2327d5751b0c938b12c0653ea5be7dea9c82ec"}, + {file = "watchfiles-0.24.0-cp311-none-win32.whl", hash = "sha256:49d617df841a63b4445790a254013aea2120357ccacbed00253f9c2b5dc24e2d"}, + {file = "watchfiles-0.24.0-cp311-none-win_amd64.whl", hash = "sha256:d3dcb774e3568477275cc76554b5a565024b8ba3a0322f77c246bc7111c5bb9c"}, + {file = "watchfiles-0.24.0-cp311-none-win_arm64.whl", hash = "sha256:9301c689051a4857d5b10777da23fafb8e8e921bcf3abe6448a058d27fb67633"}, + {file = "watchfiles-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7211b463695d1e995ca3feb38b69227e46dbd03947172585ecb0588f19b0d87a"}, + {file = "watchfiles-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4b8693502d1967b00f2fb82fc1e744df128ba22f530e15b763c8d82baee15370"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdab9555053399318b953a1fe1f586e945bc8d635ce9d05e617fd9fe3a4687d6"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:34e19e56d68b0dad5cff62273107cf5d9fbaf9d75c46277aa5d803b3ef8a9e9b"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41face41f036fee09eba33a5b53a73e9a43d5cb2c53dad8e61fa6c9f91b5a51e"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5148c2f1ea043db13ce9b0c28456e18ecc8f14f41325aa624314095b6aa2e9ea"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e4bd963a935aaf40b625c2499f3f4f6bbd0c3776f6d3bc7c853d04824ff1c9f"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c79d7719d027b7a42817c5d96461a99b6a49979c143839fc37aa5748c322f234"}, + {file = "watchfiles-0.24.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:32aa53a9a63b7f01ed32e316e354e81e9da0e6267435c7243bf8ae0f10b428ef"}, + {file = "watchfiles-0.24.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ce72dba6a20e39a0c628258b5c308779b8697f7676c254a845715e2a1039b968"}, + {file = "watchfiles-0.24.0-cp312-none-win32.whl", hash = "sha256:d9018153cf57fc302a2a34cb7564870b859ed9a732d16b41a9b5cb2ebed2d444"}, + {file = "watchfiles-0.24.0-cp312-none-win_amd64.whl", hash = "sha256:551ec3ee2a3ac9cbcf48a4ec76e42c2ef938a7e905a35b42a1267fa4b1645896"}, + {file = "watchfiles-0.24.0-cp312-none-win_arm64.whl", hash = "sha256:b52a65e4ea43c6d149c5f8ddb0bef8d4a1e779b77591a458a893eb416624a418"}, + {file = "watchfiles-0.24.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:3d2e3ab79a1771c530233cadfd277fcc762656d50836c77abb2e5e72b88e3a48"}, + {file = "watchfiles-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:327763da824817b38ad125dcd97595f942d720d32d879f6c4ddf843e3da3fe90"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd82010f8ab451dabe36054a1622870166a67cf3fce894f68895db6f74bbdc94"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d64ba08db72e5dfd5c33be1e1e687d5e4fcce09219e8aee893a4862034081d4e"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1cf1f6dd7825053f3d98f6d33f6464ebdd9ee95acd74ba2c34e183086900a827"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43e3e37c15a8b6fe00c1bce2473cfa8eb3484bbeecf3aefbf259227e487a03df"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88bcd4d0fe1d8ff43675360a72def210ebad3f3f72cabfeac08d825d2639b4ab"}, + {file = "watchfiles-0.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:999928c6434372fde16c8f27143d3e97201160b48a614071261701615a2a156f"}, + {file = "watchfiles-0.24.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:30bbd525c3262fd9f4b1865cb8d88e21161366561cd7c9e1194819e0a33ea86b"}, + {file = "watchfiles-0.24.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:edf71b01dec9f766fb285b73930f95f730bb0943500ba0566ae234b5c1618c18"}, + {file = "watchfiles-0.24.0-cp313-none-win32.whl", hash = "sha256:f4c96283fca3ee09fb044f02156d9570d156698bc3734252175a38f0e8975f07"}, + {file = "watchfiles-0.24.0-cp313-none-win_amd64.whl", hash = "sha256:a974231b4fdd1bb7f62064a0565a6b107d27d21d9acb50c484d2cdba515b9366"}, + {file = "watchfiles-0.24.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ee82c98bed9d97cd2f53bdb035e619309a098ea53ce525833e26b93f673bc318"}, + {file = "watchfiles-0.24.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fd92bbaa2ecdb7864b7600dcdb6f2f1db6e0346ed425fbd01085be04c63f0b05"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f83df90191d67af5a831da3a33dd7628b02a95450e168785586ed51e6d28943c"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fca9433a45f18b7c779d2bae7beeec4f740d28b788b117a48368d95a3233ed83"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b995bfa6bf01a9e09b884077a6d37070464b529d8682d7691c2d3b540d357a0c"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed9aba6e01ff6f2e8285e5aa4154e2970068fe0fc0998c4380d0e6278222269b"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5171ef898299c657685306d8e1478a45e9303ddcd8ac5fed5bd52ad4ae0b69b"}, + {file = "watchfiles-0.24.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4933a508d2f78099162da473841c652ad0de892719043d3f07cc83b33dfd9d91"}, + {file = "watchfiles-0.24.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95cf3b95ea665ab03f5a54765fa41abf0529dbaf372c3b83d91ad2cfa695779b"}, + {file = "watchfiles-0.24.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:01def80eb62bd5db99a798d5e1f5f940ca0a05986dcfae21d833af7a46f7ee22"}, + {file = "watchfiles-0.24.0-cp38-none-win32.whl", hash = "sha256:4d28cea3c976499475f5b7a2fec6b3a36208656963c1a856d328aeae056fc5c1"}, + {file = "watchfiles-0.24.0-cp38-none-win_amd64.whl", hash = "sha256:21ab23fdc1208086d99ad3f69c231ba265628014d4aed31d4e8746bd59e88cd1"}, + {file = "watchfiles-0.24.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b665caeeda58625c3946ad7308fbd88a086ee51ccb706307e5b1fa91556ac886"}, + {file = "watchfiles-0.24.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5c51749f3e4e269231510da426ce4a44beb98db2dce9097225c338f815b05d4f"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82b2509f08761f29a0fdad35f7e1638b8ab1adfa2666d41b794090361fb8b855"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a60e2bf9dc6afe7f743e7c9b149d1fdd6dbf35153c78fe3a14ae1a9aee3d98b"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7d9b87c4c55e3ea8881dfcbf6d61ea6775fffed1fedffaa60bd047d3c08c430"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:78470906a6be5199524641f538bd2c56bb809cd4bf29a566a75051610bc982c3"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:07cdef0c84c03375f4e24642ef8d8178e533596b229d32d2bbd69e5128ede02a"}, + {file = "watchfiles-0.24.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d337193bbf3e45171c8025e291530fb7548a93c45253897cd764a6a71c937ed9"}, + {file = "watchfiles-0.24.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ec39698c45b11d9694a1b635a70946a5bad066b593af863460a8e600f0dff1ca"}, + {file = "watchfiles-0.24.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e28d91ef48eab0afb939fa446d8ebe77e2f7593f5f463fd2bb2b14132f95b6e"}, + {file = "watchfiles-0.24.0-cp39-none-win32.whl", hash = "sha256:7138eff8baa883aeaa074359daabb8b6c1e73ffe69d5accdc907d62e50b1c0da"}, + {file = "watchfiles-0.24.0-cp39-none-win_amd64.whl", hash = "sha256:b3ef2c69c655db63deb96b3c3e587084612f9b1fa983df5e0c3379d41307467f"}, + {file = "watchfiles-0.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:632676574429bee8c26be8af52af20e0c718cc7f5f67f3fb658c71928ccd4f7f"}, + {file = "watchfiles-0.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a2a9891723a735d3e2540651184be6fd5b96880c08ffe1a98bae5017e65b544b"}, + {file = "watchfiles-0.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7fa2bc0efef3e209a8199fd111b8969fe9db9c711acc46636686331eda7dd4"}, + {file = "watchfiles-0.24.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01550ccf1d0aed6ea375ef259706af76ad009ef5b0203a3a4cce0f6024f9b68a"}, + {file = "watchfiles-0.24.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:96619302d4374de5e2345b2b622dc481257a99431277662c30f606f3e22f42be"}, + {file = "watchfiles-0.24.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:85d5f0c7771dcc7a26c7a27145059b6bb0ce06e4e751ed76cdf123d7039b60b5"}, + {file = "watchfiles-0.24.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951088d12d339690a92cef2ec5d3cfd957692834c72ffd570ea76a6790222777"}, + {file = "watchfiles-0.24.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49fb58bcaa343fedc6a9e91f90195b20ccb3135447dc9e4e2570c3a39565853e"}, + {file = "watchfiles-0.24.0.tar.gz", hash = "sha256:afb72325b74fa7a428c009c1b8be4b4d7c2afedafb2982827ef2156646df2fe1"}, +] + +[package.dependencies] +anyio = ">=3.0.0" + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "websockets" +version = "12.0" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"}, + {file = "websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be"}, + {file = "websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603"}, + {file = "websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f"}, + {file = "websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f"}, + {file = "websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53"}, + {file = "websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402"}, + {file = "websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"}, + {file = "websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113"}, + {file = "websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d"}, + {file = "websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2"}, + {file = "websockets-12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7"}, + {file = "websockets-12.0-cp38-cp38-win32.whl", hash = "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62"}, + {file = "websockets-12.0-cp38-cp38-win_amd64.whl", hash = "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28"}, + {file = "websockets-12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9"}, + {file = "websockets-12.0-cp39-cp39-win32.whl", hash = "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6"}, + {file = "websockets-12.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8"}, + {file = "websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b"}, + {file = "websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30"}, + {file = "websockets-12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2"}, + {file = "websockets-12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468"}, + {file = "websockets-12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611"}, + {file = "websockets-12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370"}, + {file = "websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e"}, + {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, +] + +[[package]] +name = "yarl" +version = "1.11.1" +description = "Yet another URL library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "yarl-1.11.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:400cd42185f92de559d29eeb529e71d80dfbd2f45c36844914a4a34297ca6f00"}, + {file = "yarl-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8258c86f47e080a258993eed877d579c71da7bda26af86ce6c2d2d072c11320d"}, + {file = "yarl-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2164cd9725092761fed26f299e3f276bb4b537ca58e6ff6b252eae9631b5c96e"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08ea567c16f140af8ddc7cb58e27e9138a1386e3e6e53982abaa6f2377b38cc"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:768ecc550096b028754ea28bf90fde071c379c62c43afa574edc6f33ee5daaec"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2909fa3a7d249ef64eeb2faa04b7957e34fefb6ec9966506312349ed8a7e77bf"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01a8697ec24f17c349c4f655763c4db70eebc56a5f82995e5e26e837c6eb0e49"}, + {file = "yarl-1.11.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e286580b6511aac7c3268a78cdb861ec739d3e5a2a53b4809faef6b49778eaff"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4179522dc0305c3fc9782549175c8e8849252fefeb077c92a73889ccbcd508ad"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:27fcb271a41b746bd0e2a92182df507e1c204759f460ff784ca614e12dd85145"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f61db3b7e870914dbd9434b560075e0366771eecbe6d2b5561f5bc7485f39efd"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:c92261eb2ad367629dc437536463dc934030c9e7caca861cc51990fe6c565f26"}, + {file = "yarl-1.11.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d95b52fbef190ca87d8c42f49e314eace4fc52070f3dfa5f87a6594b0c1c6e46"}, + {file = "yarl-1.11.1-cp310-cp310-win32.whl", hash = "sha256:489fa8bde4f1244ad6c5f6d11bb33e09cf0d1d0367edb197619c3e3fc06f3d91"}, + {file = "yarl-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:476e20c433b356e16e9a141449f25161e6b69984fb4cdbd7cd4bd54c17844998"}, + {file = "yarl-1.11.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:946eedc12895873891aaceb39bceb484b4977f70373e0122da483f6c38faaa68"}, + {file = "yarl-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:21a7c12321436b066c11ec19c7e3cb9aec18884fe0d5b25d03d756a9e654edfe"}, + {file = "yarl-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c35f493b867912f6fda721a59cc7c4766d382040bdf1ddaeeaa7fa4d072f4675"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25861303e0be76b60fddc1250ec5986c42f0a5c0c50ff57cc30b1be199c00e63"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4b53f73077e839b3f89c992223f15b1d2ab314bdbdf502afdc7bb18e95eae27"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:327c724b01b8641a1bf1ab3b232fb638706e50f76c0b5bf16051ab65c868fac5"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4307d9a3417eea87715c9736d050c83e8c1904e9b7aada6ce61b46361b733d92"}, + {file = "yarl-1.11.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48a28bed68ab8fb7e380775f0029a079f08a17799cb3387a65d14ace16c12e2b"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:067b961853c8e62725ff2893226fef3d0da060656a9827f3f520fb1d19b2b68a"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8215f6f21394d1f46e222abeb06316e77ef328d628f593502d8fc2a9117bde83"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:498442e3af2a860a663baa14fbf23fb04b0dd758039c0e7c8f91cb9279799bff"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:69721b8effdb588cb055cc22f7c5105ca6fdaa5aeb3ea09021d517882c4a904c"}, + {file = "yarl-1.11.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e969fa4c1e0b1a391f3fcbcb9ec31e84440253325b534519be0d28f4b6b533e"}, + {file = "yarl-1.11.1-cp311-cp311-win32.whl", hash = "sha256:7d51324a04fc4b0e097ff8a153e9276c2593106a811704025bbc1d6916f45ca6"}, + {file = "yarl-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:15061ce6584ece023457fb8b7a7a69ec40bf7114d781a8c4f5dcd68e28b5c53b"}, + {file = "yarl-1.11.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a4264515f9117be204935cd230fb2a052dd3792789cc94c101c535d349b3dab0"}, + {file = "yarl-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f41fa79114a1d2eddb5eea7b912d6160508f57440bd302ce96eaa384914cd265"}, + {file = "yarl-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:02da8759b47d964f9173c8675710720b468aa1c1693be0c9c64abb9d8d9a4867"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9361628f28f48dcf8b2f528420d4d68102f593f9c2e592bfc842f5fb337e44fd"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b91044952da03b6f95fdba398d7993dd983b64d3c31c358a4c89e3c19b6f7aef"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:74db2ef03b442276d25951749a803ddb6e270d02dda1d1c556f6ae595a0d76a8"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e975a2211952a8a083d1b9d9ba26472981ae338e720b419eb50535de3c02870"}, + {file = "yarl-1.11.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aef97ba1dd2138112890ef848e17d8526fe80b21f743b4ee65947ea184f07a2"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a7915ea49b0c113641dc4d9338efa9bd66b6a9a485ffe75b9907e8573ca94b84"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:504cf0d4c5e4579a51261d6091267f9fd997ef58558c4ffa7a3e1460bd2336fa"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3de5292f9f0ee285e6bd168b2a77b2a00d74cbcfa420ed078456d3023d2f6dff"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a34e1e30f1774fa35d37202bbeae62423e9a79d78d0874e5556a593479fdf239"}, + {file = "yarl-1.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:66b63c504d2ca43bf7221a1f72fbe981ff56ecb39004c70a94485d13e37ebf45"}, + {file = "yarl-1.11.1-cp312-cp312-win32.whl", hash = "sha256:a28b70c9e2213de425d9cba5ab2e7f7a1c8ca23a99c4b5159bf77b9c31251447"}, + {file = "yarl-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:17b5a386d0d36fb828e2fb3ef08c8829c1ebf977eef88e5367d1c8c94b454639"}, + {file = "yarl-1.11.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1fa2e7a406fbd45b61b4433e3aa254a2c3e14c4b3186f6e952d08a730807fa0c"}, + {file = "yarl-1.11.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:750f656832d7d3cb0c76be137ee79405cc17e792f31e0a01eee390e383b2936e"}, + {file = "yarl-1.11.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b8486f322d8f6a38539136a22c55f94d269addb24db5cb6f61adc61eabc9d93"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fce4da3703ee6048ad4138fe74619c50874afe98b1ad87b2698ef95bf92c96d"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed653638ef669e0efc6fe2acb792275cb419bf9cb5c5049399f3556995f23c7"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18ac56c9dd70941ecad42b5a906820824ca72ff84ad6fa18db33c2537ae2e089"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:688654f8507464745ab563b041d1fb7dab5d9912ca6b06e61d1c4708366832f5"}, + {file = "yarl-1.11.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4973eac1e2ff63cf187073cd4e1f1148dcd119314ab79b88e1b3fad74a18c9d5"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:964a428132227edff96d6f3cf261573cb0f1a60c9a764ce28cda9525f18f7786"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6d23754b9939cbab02c63434776df1170e43b09c6a517585c7ce2b3d449b7318"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c2dc4250fe94d8cd864d66018f8344d4af50e3758e9d725e94fecfa27588ff82"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09696438cb43ea6f9492ef237761b043f9179f455f405279e609f2bc9100212a"}, + {file = "yarl-1.11.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:999bfee0a5b7385a0af5ffb606393509cfde70ecca4f01c36985be6d33e336da"}, + {file = "yarl-1.11.1-cp313-cp313-win32.whl", hash = "sha256:ce928c9c6409c79e10f39604a7e214b3cb69552952fbda8d836c052832e6a979"}, + {file = "yarl-1.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:501c503eed2bb306638ccb60c174f856cc3246c861829ff40eaa80e2f0330367"}, + {file = "yarl-1.11.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dae7bd0daeb33aa3e79e72877d3d51052e8b19c9025ecf0374f542ea8ec120e4"}, + {file = "yarl-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3ff6b1617aa39279fe18a76c8d165469c48b159931d9b48239065767ee455b2b"}, + {file = "yarl-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3257978c870728a52dcce8c2902bf01f6c53b65094b457bf87b2644ee6238ddc"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f351fa31234699d6084ff98283cb1e852270fe9e250a3b3bf7804eb493bd937"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8aef1b64da41d18026632d99a06b3fefe1d08e85dd81d849fa7c96301ed22f1b"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7175a87ab8f7fbde37160a15e58e138ba3b2b0e05492d7351314a250d61b1591"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba444bdd4caa2a94456ef67a2f383710928820dd0117aae6650a4d17029fa25e"}, + {file = "yarl-1.11.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ea9682124fc062e3d931c6911934a678cb28453f957ddccf51f568c2f2b5e05"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8418c053aeb236b20b0ab8fa6bacfc2feaaf7d4683dd96528610989c99723d5f"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:61a5f2c14d0a1adfdd82258f756b23a550c13ba4c86c84106be4c111a3a4e413"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f3a6d90cab0bdf07df8f176eae3a07127daafcf7457b997b2bf46776da2c7eb7"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:077da604852be488c9a05a524068cdae1e972b7dc02438161c32420fb4ec5e14"}, + {file = "yarl-1.11.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:15439f3c5c72686b6c3ff235279630d08936ace67d0fe5c8d5bbc3ef06f5a420"}, + {file = "yarl-1.11.1-cp38-cp38-win32.whl", hash = "sha256:238a21849dd7554cb4d25a14ffbfa0ef380bb7ba201f45b144a14454a72ffa5a"}, + {file = "yarl-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:67459cf8cf31da0e2cbdb4b040507e535d25cfbb1604ca76396a3a66b8ba37a6"}, + {file = "yarl-1.11.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:884eab2ce97cbaf89f264372eae58388862c33c4f551c15680dd80f53c89a269"}, + {file = "yarl-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a336eaa7ee7e87cdece3cedb395c9657d227bfceb6781295cf56abcd3386a26"}, + {file = "yarl-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87f020d010ba80a247c4abc335fc13421037800ca20b42af5ae40e5fd75e7909"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:637c7ddb585a62d4469f843dac221f23eec3cbad31693b23abbc2c366ad41ff4"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:48dfd117ab93f0129084577a07287376cc69c08138694396f305636e229caa1a"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e0ae31fb5ccab6eda09ba1494e87eb226dcbd2372dae96b87800e1dcc98804"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f46f81501160c28d0c0b7333b4f7be8983dbbc161983b6fb814024d1b4952f79"}, + {file = "yarl-1.11.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04293941646647b3bfb1719d1d11ff1028e9c30199509a844da3c0f5919dc520"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:250e888fa62d73e721f3041e3a9abf427788a1934b426b45e1b92f62c1f68366"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e8f63904df26d1a66aabc141bfd258bf738b9bc7bc6bdef22713b4f5ef789a4c"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:aac44097d838dda26526cffb63bdd8737a2dbdf5f2c68efb72ad83aec6673c7e"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:267b24f891e74eccbdff42241c5fb4f974de2d6271dcc7d7e0c9ae1079a560d9"}, + {file = "yarl-1.11.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6907daa4b9d7a688063ed098c472f96e8181733c525e03e866fb5db480a424df"}, + {file = "yarl-1.11.1-cp39-cp39-win32.whl", hash = "sha256:14438dfc5015661f75f85bc5adad0743678eefee266ff0c9a8e32969d5d69f74"}, + {file = "yarl-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:94d0caaa912bfcdc702a4204cd5e2bb01eb917fc4f5ea2315aa23962549561b0"}, + {file = "yarl-1.11.1-py3-none-any.whl", hash = "sha256:72bf26f66456baa0584eff63e44545c9f0eaed9b73cb6601b647c91f14c11f38"}, + {file = "yarl-1.11.1.tar.gz", hash = "sha256:1bb2d9e212fb7449b8fb73bc461b51eaa17cc8430b4a87d87be7b25052d92f53"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[[package]] +name = "zipp" +version = "3.20.1" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.20.1-py3-none-any.whl", hash = "sha256:9960cd8967c8f85a56f920d5d507274e74f9ff813a0ab8889a5b5be2daf44064"}, + {file = "zipp-3.20.1.tar.gz", hash = "sha256:c22b14cc4763c5a5b04134207736c107db42e9d3ef2d9779d465f5f1bcba572b"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.9" +content-hash = "570dd65bb65134a95133b7e54ac3b446fb16bb8a4111d148f0e42195f3752222" diff --git a/openbb_platform/providers/imf/pyproject.toml b/openbb_platform/providers/imf/pyproject.toml new file mode 100644 index 000000000000..623908039860 --- /dev/null +++ b/openbb_platform/providers/imf/pyproject.toml @@ -0,0 +1,19 @@ +[tool.poetry] +name = "openbb-imf" +version = "1.0.0b" +description = "https://datahelp.imf.org/knowledgebase/articles/630877-api" +authors = ["OpenBB Team "] +license = "AGPL-3.0-only" +readme = "README.md" +packages = [{ include = "openbb_imf" }] + +[tool.poetry.dependencies] +python = "^3.9" +openbb-core = "^1.3.2" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry.plugins."openbb_provider_extension"] +imf = "openbb_imf:imf_provider" diff --git a/openbb_platform/providers/imf/tests/__init__.py b/openbb_platform/providers/imf/tests/__init__.py new file mode 100644 index 000000000000..c8097be653a0 --- /dev/null +++ b/openbb_platform/providers/imf/tests/__init__.py @@ -0,0 +1 @@ +"""IMF Provider Fetcher Tests.""" diff --git a/openbb_platform/providers/imf/tests/record/http/test_imf_fetchers/test_imf_economic_indicators_fetcher_urllib3_v1.yaml b/openbb_platform/providers/imf/tests/record/http/test_imf_fetchers/test_imf_economic_indicators_fetcher_urllib3_v1.yaml new file mode 100644 index 000000000000..8d3335f869fb --- /dev/null +++ b/openbb_platform/providers/imf/tests/record/http/test_imf_fetchers/test_imf_economic_indicators_fetcher_urllib3_v1.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: http://dataservices.imf.org/REST/SDMX_JSON.svc/CompactData/IRFCL/M.JP.RAMFDA_USD.S1X?startPeriod=2023-01-01&endPeriod=2023-12-31 + response: + body: + string: !!binary | + H4sIAAAAAAAEA6SSX4+aQBTFv4qhL226yICiC09S/qQ0oBawMfaBTJmrkggYZlZtzH733hlNttuk + zSZ9nHPP7557Z+aq+V1zpJUIqKCae9Vml+bQcvfCa83V9kIcXcM4n8/D82jY9TvDIsQ01mmSV3to + qF63XNC2Au3hBWRvAJWf1y5XbZKuoqLu2tdgHqRrldkD7576CrghpTQxbhQ3TlZJjAY4pzsYyFk5 + DtvDruai/znkrLko/pVdtbghwwtnCkOK4foc+lONMcO62Sqwul2NEWeRn7zdKfuqBeVN/s9O2OQz + UAa9fJg4wFbjEXu02cTW2eN2pI8dRnUHto5Ox4wSx7bNCiykCuAC3Vt64PJplj0caQ8MJYtYY504 + ukkKc+qatmvZ6M+hvafMaukyfYLqnDYgk+WXcA+03SEPLRbeCbgIPMRppD0/aH7XCvxB0rrKYtT3 + L9/mfpUIFXCA475rAQ0fB+bgPY7yYTCxRvrEsoj2jI0yqKA+gVp3VjM0bjYbmRBQQXMQcYCSeozf + RBkrJ2w5Fu/JDP38n6+JA+XQ14DQVZtFWfgV6RTVWRZGpZeFHp6/LKUQz4PY94pFhkrmpVHglas8 + kBVpzUP/VsrNtdRW87go01VSoHsihSJOwzJaZKknpaUpQxY/MPc7BqviMsziRYB+i+BtEFNSi095 + +c1LViHK+tQZ48J/sVt/2m0y/dXnHNwADIMwFN2l90oBAnGG6SjZvTmDjM9P1ufaslYfXM+ssY1r + z1pMGx6Fo2tZhesCj0HhNjfnu3BfQbmMwrt3kcwxJj/XrF8NPOc7dz97tJr2sAUAAA== + headers: + Cache-Control: + - private + Connection: + - Keep-Alive + Content-Encoding: + - gzip + Content-Length: + - '619' + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 10 Sep 2024 21:15:25 GMT + Set-Cookie: null + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Permitted-Cross-Domain-Policies: + - none + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/openbb_platform/providers/imf/tests/record/http/test_imf_fetchers/test_imf_economic_indicators_fetcher_urllib3_v2.yaml b/openbb_platform/providers/imf/tests/record/http/test_imf_fetchers/test_imf_economic_indicators_fetcher_urllib3_v2.yaml new file mode 100644 index 000000000000..6c4a6ce1c3e0 --- /dev/null +++ b/openbb_platform/providers/imf/tests/record/http/test_imf_fetchers/test_imf_economic_indicators_fetcher_urllib3_v2.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: http://dataservices.imf.org/REST/SDMX_JSON.svc/CompactData/IRFCL/M.JP.RAMFDA_USD.S1X?startPeriod=2023-01-01&endPeriod=2023-12-31 + response: + body: + string: !!binary | + H4sIAAAAAAAEA6SSXY+aQBSG/4qhN226yDB+ULmS8pHSgFrAxtgLMg5HJREwDKs2Zv97z4w27W6y + zSa95J3nPe/54Kq5TXVkvPNYxzT7qk0v1aEW9kWUmq3tu+5oG8b5fO6fB/2m3RmUENNYxVHK91Ax + vaxFx2oO2sMfY/EGo+JFaQtVJmo468qmfm5MvXilMlsQzWPLQRhSiiPj5hLGiebEqEAItoOe7FVg + sy3sStG1P/uiqC7K/wxXJW6W/kUUyoauAscX0J5KjOmX1VYZ+W01RpgEbvR2UtZVA8pN/s9MWOQL + sAJaeZjQw1IFZeaWTLjOh9ZAH47ISN8UfKOTicVhY32a8BFFVwaiQ3rLDkKeZtHCkbVQoEQJHSKt + EyszB/aQ2qMx8inU95RpKSnTJajOWAUyWf4S9oHVO/RDjQ/vOrh0+BHGgfb0oLlN3TGOwlVbJiHq + 8hS4U/nb3FeJpgwOcNw3NSDwsWf23mMrH3pjOtDHlBLtCQslwKE8gRp3WhYIrtdrmeDhdVLo1ArU + Mf4Sf3dYC+TvyQXy4p/XxIZSaEtA01WbBon/Dd0xqtPED3In8R38/rqQQjjzQtfJ5gkqiRMHnpMv + U0++SDT13dtTaq6ktpyFWR4vowzpsRSyMPbzYJ7EjpQWpgyZbzD3Bwarx4WfhHMPeUpwG8SUrvnn + NP/uREsfZd2aDHHgV3D6Eh8R63V68JL+1eecmwAMxEAU7cW5QfdRjEvZ3r2xhDTxY/ikMGupOpJn + rVUj08Kt8dhavHHymGOicZaceTaubiNHaHx7R6w8QOZzqvoli+d85+4HilPlVbAFAAA= + headers: + Cache-Control: + - private + Connection: + - Keep-Alive + Content-Encoding: + - gzip + Content-Length: + - '620' + Content-Type: + - application/json; charset=utf-8 + Date: + - Sat, 07 Sep 2024 17:42:56 GMT + Set-Cookie: null + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Permitted-Cross-Domain-Policies: + - none + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/openbb_platform/providers/imf/tests/test_imf_fetchers.py b/openbb_platform/providers/imf/tests/test_imf_fetchers.py new file mode 100644 index 000000000000..b70f15acc425 --- /dev/null +++ b/openbb_platform/providers/imf/tests/test_imf_fetchers.py @@ -0,0 +1,60 @@ +"""IMF Fetcher Tests.""" + +from datetime import date + +import pytest + +from openbb_imf.models.available_indicators import ImfAvailableIndicatorsFetcher +from openbb_imf.models.economic_indicators import ImfEconomicIndicatorsFetcher +from openbb_core.app.service.user_service import UserService + +test_credentials = UserService().default_user_settings.credentials.model_dump( + mode="json" +) + + +def scrub_string(key): + """Scrub a string from the response.""" + + def before_record_response(response): + response["headers"][key] = response["headers"].update({key: None}) + return response + + return before_record_response + + +@pytest.fixture(scope="module") +def vcr_config(): + """VCR configuration.""" + return { + "filter_headers": [("User-Agent", None)], + "before_record_response": [ + scrub_string("Set-Cookie"), + ], + } + + +@pytest.mark.record_http +def test_imf_economic_indicators_fetcher(credentials=test_credentials): + """Test the IMF EconomicIndicators fetcher.""" + params = { + "country": "JP", + "frequency": "month", + "symbol": "RAMFDA_USD", + "start_date": date(2023, 1, 1), + "end_date": date(2023, 12, 31), + } + + fetcher = ImfEconomicIndicatorsFetcher() + result = fetcher.test(params, credentials) + assert result is None + + +# The data for this request are local files, so we can't record them. +def test_imf_available_indicators_fetcher(credentials=test_credentials): + """Test the IMF Available Indicators fetcher.""" + params = {} + + fetcher = ImfAvailableIndicatorsFetcher() + result = fetcher.test(params, credentials) + assert result is None diff --git a/openbb_platform/pyproject.toml b/openbb_platform/pyproject.toml index 824cfd7139ba..4e735dee647b 100644 --- a/openbb_platform/pyproject.toml +++ b/openbb_platform/pyproject.toml @@ -18,6 +18,7 @@ openbb-econdb = "^1.2.2" openbb-federal-reserve = "^1.3.2" openbb-fmp = "^1.3.2" openbb-fred = "^1.3.2" +openbb-imf = "^1.0.0b" openbb-intrinio = "^1.3.2" openbb-oecd = "^1.3.2" openbb-polygon = "^1.3.2"