mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 12:40:35 +00:00
[Feature] Add BLS Provider Extension With Endpoints For Search and Time Series (#6630)
* add bls provider extension * null is returned as '-' * codespell * mypy * missed colon * more linting * more lint * missing charting api test * handle months starting with Q * too many branches * make annual_average False by default * review items
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
"""BLS Search Model."""
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
from openbb_core.provider.abstract.data import Data
|
||||
from openbb_core.provider.abstract.query_params import QueryParams
|
||||
from openbb_core.provider.utils.descriptions import DATA_DESCRIPTIONS
|
||||
|
||||
|
||||
class SearchQueryParams(QueryParams):
|
||||
"""BLS Search Query Params."""
|
||||
|
||||
query: str = Field(
|
||||
default="",
|
||||
description="The search word(s). Use semi-colon to separate multiple queries as an & operator.",
|
||||
)
|
||||
|
||||
|
||||
class SearchData(Data):
|
||||
"""BLS Search Data."""
|
||||
|
||||
symbol: str = Field(description=DATA_DESCRIPTIONS.get("symbol", ""))
|
||||
title: Optional[str] = Field(default=None, description="The title of the series.")
|
||||
survey_name: Optional[str] = Field(
|
||||
default=None, description="The name of the survey."
|
||||
)
|
||||
@@ -0,0 +1,44 @@
|
||||
"""BLS Series Standard Model."""
|
||||
|
||||
from datetime import date as dateType
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import Field, field_validator
|
||||
|
||||
from openbb_core.provider.abstract.data import Data
|
||||
from openbb_core.provider.abstract.query_params import QueryParams
|
||||
from openbb_core.provider.utils.descriptions import (
|
||||
DATA_DESCRIPTIONS,
|
||||
QUERY_DESCRIPTIONS,
|
||||
)
|
||||
|
||||
|
||||
class SeriesQueryParams(QueryParams):
|
||||
"""BLS Series Query."""
|
||||
|
||||
symbol: str = Field(
|
||||
description=QUERY_DESCRIPTIONS.get("symbol", ""),
|
||||
)
|
||||
start_date: Optional[dateType] = Field(
|
||||
description=QUERY_DESCRIPTIONS.get("start_date", ""), default=None
|
||||
)
|
||||
end_date: Optional[dateType] = Field(
|
||||
description=QUERY_DESCRIPTIONS.get("end_date", ""), default=None
|
||||
)
|
||||
|
||||
@field_validator("symbol", mode="before", check_fields=False)
|
||||
@classmethod
|
||||
def to_upper(cls, v: str) -> str:
|
||||
"""Convert field to uppercase."""
|
||||
return v.upper()
|
||||
|
||||
|
||||
class SeriesData(Data):
|
||||
"""BLS Series Data."""
|
||||
|
||||
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
|
||||
symbol: str = Field(description=DATA_DESCRIPTIONS.get("symbol", ""))
|
||||
title: Optional[str] = Field(default=None, description="Title of the series.")
|
||||
value: Optional[float] = Field(
|
||||
default=None, description="Observation value for the symbol and date."
|
||||
)
|
||||
@@ -22,6 +22,7 @@ openbb-devtools = { path = "./extensions/devtools", develop = true, markers = "p
|
||||
openbb-core = { path = "./core", develop = true }
|
||||
|
||||
openbb-benzinga = { path = "./providers/benzinga", develop = true }
|
||||
openbb-bls = { path = "./providers/bls", develop = true }
|
||||
openbb-econdb = { path = "./providers/econdb", develop = true }
|
||||
openbb-federal-reserve = { path = "./providers/federal_reserve", develop = true }
|
||||
openbb-fmp = { path = "./providers/fmp", develop = true }
|
||||
|
||||
@@ -1053,3 +1053,57 @@ def test_economy_fred_release_table(params, headers):
|
||||
result = requests.get(url, headers=headers, timeout=10)
|
||||
assert isinstance(result, requests.Response)
|
||||
assert result.status_code == 200
|
||||
|
||||
|
||||
@parametrize(
|
||||
"params",
|
||||
[
|
||||
(
|
||||
{
|
||||
"provider": "bls",
|
||||
"query": "gasoline;seattle;average price",
|
||||
"category": "cpi",
|
||||
"include_extras": False,
|
||||
"include_code_map": False,
|
||||
}
|
||||
),
|
||||
],
|
||||
)
|
||||
@pytest.mark.integration
|
||||
def test_economy_survey_bls_search(params, headers):
|
||||
"""Test the economy survey bls search endpoint."""
|
||||
params = {p: v for p, v in params.items() if v}
|
||||
|
||||
query_str = get_querystring(params, [])
|
||||
url = f"http://0.0.0.0:8000/api/v1/economy/survey/bls_search?{query_str}"
|
||||
result = requests.get(url, headers=headers, timeout=10)
|
||||
assert isinstance(result, requests.Response)
|
||||
assert result.status_code == 200
|
||||
|
||||
|
||||
@parametrize(
|
||||
"params",
|
||||
[
|
||||
(
|
||||
{
|
||||
"provider": "bls",
|
||||
"symbol": "APUS49D74714,APUS49D74715,APUS49D74716",
|
||||
"start_date": "2024-01-01",
|
||||
"end_date": "2024-07-01",
|
||||
"aspects": False,
|
||||
"calculations": True,
|
||||
"annual_average": True,
|
||||
}
|
||||
),
|
||||
],
|
||||
)
|
||||
@pytest.mark.integration
|
||||
def test_economy_survey_bls_series(params, headers):
|
||||
"""Test the economy survey bls search endpoint."""
|
||||
params = {p: v for p, v in params.items() if v}
|
||||
|
||||
query_str = get_querystring(params, [])
|
||||
url = f"http://0.0.0.0:8000/api/v1/economy/survey/bls_series?{query_str}"
|
||||
result = requests.get(url, headers=headers, timeout=10)
|
||||
assert isinstance(result, requests.Response)
|
||||
assert result.status_code == 200
|
||||
|
||||
@@ -1013,3 +1013,55 @@ def test_economy_fred_release_table(params, obb):
|
||||
assert result
|
||||
assert isinstance(result, OBBject)
|
||||
assert len(result.results) > 0
|
||||
|
||||
|
||||
@parametrize(
|
||||
"params",
|
||||
[
|
||||
(
|
||||
{
|
||||
"provider": "bls",
|
||||
"query": "gasoline;seattle;average price",
|
||||
"category": "cpi",
|
||||
"include_extras": False,
|
||||
"include_code_map": False,
|
||||
}
|
||||
),
|
||||
],
|
||||
)
|
||||
@pytest.mark.integration
|
||||
def test_economy_survey_bls_search(params, obb):
|
||||
"""Test the economy survey bls search endpoint"""
|
||||
params = {p: v for p, v in params.items() if v}
|
||||
|
||||
result = obb.economy.survey.bls_search(**params)
|
||||
assert result
|
||||
assert isinstance(result, OBBject)
|
||||
assert len(result.results) > 0
|
||||
|
||||
|
||||
@parametrize(
|
||||
"params",
|
||||
[
|
||||
(
|
||||
{
|
||||
"provider": "bls",
|
||||
"symbol": "APUS49D74714,APUS49D74715,APUS49D74716",
|
||||
"start_date": "2024-01-01",
|
||||
"end_date": "2024-07-01",
|
||||
"aspects": False,
|
||||
"calculations": True,
|
||||
"annual_average": True,
|
||||
}
|
||||
),
|
||||
],
|
||||
)
|
||||
@pytest.mark.integration
|
||||
def test_economy_survey_bls_series(params, obb):
|
||||
"""Test the economy survey bls series endpoint"""
|
||||
params = {p: v for p, v in params.items() if v}
|
||||
|
||||
result = obb.economy.survey.bls_series(**params)
|
||||
assert result
|
||||
assert isinstance(result, OBBject)
|
||||
assert len(result.results) > 0
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
"""Views for the Economy Extension."""
|
||||
|
||||
# flake8: noqa: PLR0912
|
||||
# pylint: disable=too-many-branches
|
||||
|
||||
from typing import TYPE_CHECKING, Any, Dict, Optional, Tuple
|
||||
from warnings import warn
|
||||
|
||||
@@ -13,7 +16,7 @@ class EconomyViews:
|
||||
"""economy Views."""
|
||||
|
||||
@staticmethod
|
||||
def economy_fred_series( # noqa: PLR0912 # pylint: disable=too-many-branches
|
||||
def economy_fred_series(
|
||||
**kwargs,
|
||||
) -> Tuple["OpenBBFigure", Dict[str, Any]]:
|
||||
"""FRED Series Chart."""
|
||||
@@ -311,3 +314,210 @@ class EconomyViews:
|
||||
content = fig.to_plotly_json()
|
||||
|
||||
return fig, content
|
||||
|
||||
@staticmethod
|
||||
def economy_survey_bls_series(
|
||||
**kwargs,
|
||||
) -> Tuple["OpenBBFigure", Dict[str, Any]]:
|
||||
"""Economy Survey BLS Series Chart.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data: Optional[Union[DataFrame, List[Data]]]
|
||||
Filtered subset of the parent results.
|
||||
target_symbol: Optional[str]
|
||||
The target symbol(s) to plot. Plot multiple symbols by separating them with a comma. Max 10 symbols.
|
||||
target_col: Optional[str]
|
||||
The target column to plot. Default is 'value'.
|
||||
plot_type: Literal["line", "bar"]
|
||||
The type of plot to display. Default is 'line', unless the data is significantly small.
|
||||
normalize: bool
|
||||
Normalize the data before displaying. Default is False.
|
||||
title: Optional[str]
|
||||
The title of the chart.
|
||||
xtitle: Optional[str]
|
||||
The title of the x-axis.
|
||||
ytitle: Optional[str]
|
||||
The title of the y-axis.
|
||||
bar_kwargs: Optional[Dict]
|
||||
Additional keyword arguments applied to `fig.add_bar`.
|
||||
scatter_kwargs: Optional[Dict]
|
||||
Additional keyword arguments applied to `fig.add_scatter`.
|
||||
layout_kwargs: Optional[Dict]
|
||||
Additional keyword arguments applied to `fig.update_layout`.
|
||||
"""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
from openbb_charting.charts.generic_charts import bar_chart, line_chart
|
||||
from openbb_charting.charts.helpers import (
|
||||
z_score_standardization,
|
||||
)
|
||||
from openbb_core.app.utils import basemodel_to_df
|
||||
from pandas import DataFrame
|
||||
|
||||
provider = kwargs.get("provider")
|
||||
|
||||
if provider != "bls":
|
||||
raise RuntimeError(
|
||||
f"This charting method does not support {provider}. Supported providers: bls."
|
||||
)
|
||||
|
||||
_data = (
|
||||
kwargs.pop("data", None)
|
||||
if "data" in kwargs and kwargs["data"] is not None
|
||||
else kwargs.get("obbject_item")
|
||||
)
|
||||
df = DataFrame()
|
||||
|
||||
if isinstance(_data, DataFrame) and not _data.empty:
|
||||
df = _data.reset_index() if _data.index.name == "date" else _data
|
||||
else:
|
||||
try:
|
||||
df = basemodel_to_df(_data, index=None) # type: ignore
|
||||
except Exception as e:
|
||||
raise RuntimeError("Unable to process supplied data.") from e
|
||||
|
||||
if df.empty or len(df) < 2:
|
||||
raise RuntimeError("No data found to plot.")
|
||||
|
||||
cols = df.columns.to_list()
|
||||
target_col = kwargs.get("target_col", "value")
|
||||
if target_col not in cols:
|
||||
raise RuntimeError(f"Column '{target_col}' not found in the data.")
|
||||
|
||||
new_df = df.pivot(columns="symbol", values=target_col, index="date")
|
||||
target_symbols = kwargs.get("target_symbol", "").split(",")[:10] # type: ignore
|
||||
|
||||
if not target_symbols or len(target_symbols) == 0 or target_symbols[0] == "":
|
||||
target_symbols = new_df.columns.to_list()[:10]
|
||||
|
||||
metadata = kwargs["extra"].get("results_metadata", {}) # type: ignore
|
||||
ytitle = kwargs.get("ytitle", "")
|
||||
|
||||
new_df = new_df.filter(target_symbols, axis=1)
|
||||
|
||||
if "percent" in target_col.lower(): # type: ignore
|
||||
ytitle = (
|
||||
ytitle
|
||||
if ytitle
|
||||
else target_col.replace("change_percent_", "").replace("M", " Month") # type: ignore
|
||||
+ " Change (%)"
|
||||
)
|
||||
new_df = new_df.apply(lambda x: x * 100)
|
||||
elif "change" in target_col.lower() and "percent" not in target_col.lower(): # type: ignore
|
||||
ytitle = (
|
||||
ytitle
|
||||
if ytitle
|
||||
else target_col.replace("change_", "").replace("M", " Month") # type: ignore
|
||||
+ " Change"
|
||||
)
|
||||
|
||||
title_map: Dict = {}
|
||||
for symbol in target_symbols:
|
||||
if symbol not in new_df.columns:
|
||||
continue
|
||||
survey_name = metadata.get(symbol, {}).get("survey_name", symbol) # type: ignore
|
||||
series_title = metadata.get(symbol, {}).get("series_title", symbol) # type: ignore
|
||||
|
||||
if survey_name != series_title:
|
||||
title_map[symbol] = f"{survey_name} \n {series_title}"
|
||||
|
||||
normalize = kwargs.get("normalize", False)
|
||||
same_axis = kwargs.get("same_axis", False)
|
||||
|
||||
if normalize:
|
||||
new_df = new_df.apply(z_score_standardization)
|
||||
same_axis = True
|
||||
if ytitle:
|
||||
ytitle = f"Normalized {ytitle.replace('(%)', '')}" # type: ignore
|
||||
|
||||
plot_type = kwargs.get("plot_type")
|
||||
|
||||
if plot_type is None:
|
||||
plot_type = (
|
||||
"line" # type: ignore
|
||||
if (len(new_df.index) > 36 and len(new_df.columns.to_list()) >= 1)
|
||||
else "bar"
|
||||
)
|
||||
|
||||
layout_kwargs: Dict = kwargs.pop("layout_kwargs", {}) # type: ignore
|
||||
scatter_kwargs: Dict = kwargs.pop("scatter_kwargs", {}) # type: ignore
|
||||
bar_kwargs: Dict = kwargs.pop("bar_kwargs", {}) # type: ignore
|
||||
hovertemplate = scatter_kwargs.pop("hovertemplate", None) # type: ignore
|
||||
trace_titles = {
|
||||
symbol: metadata.get(symbol, {})
|
||||
.get("series_title", symbol)
|
||||
.replace(",", " -")
|
||||
for symbol in target_symbols
|
||||
}
|
||||
new_df.columns = [trace_titles.get(col, col) for col in new_df.columns]
|
||||
scatter_kwargs["hovertemplate"] = ( # type: ignore
|
||||
hovertemplate if hovertemplate else "%{fullData.name}:%{y}<extra></extra>"
|
||||
)
|
||||
|
||||
if len(target_symbols) == 1:
|
||||
title = title_map.get(target_symbols[0], target_symbols[0])
|
||||
fig = (
|
||||
line_chart(
|
||||
data=new_df,
|
||||
title=title,
|
||||
ytitle=ytitle,
|
||||
y=list(trace_titles.values()),
|
||||
scatter_kwargs=scatter_kwargs,
|
||||
layout_kwargs=layout_kwargs,
|
||||
**kwargs,
|
||||
)
|
||||
if plot_type == "line"
|
||||
else bar_chart(
|
||||
data=new_df,
|
||||
title=title,
|
||||
ytitle=ytitle,
|
||||
x=new_df.index,
|
||||
y=list(trace_titles.values()),
|
||||
layout_kwargs=layout_kwargs,
|
||||
bar_kwargs=bar_kwargs,
|
||||
**kwargs,
|
||||
)
|
||||
)
|
||||
else:
|
||||
survey_name = metadata.get(target_symbols[0], {}).get("survey_name", target_symbols[0]).split("\n")[0].strip() # type: ignore
|
||||
_t = kwargs.pop("title", None)
|
||||
title = _t if _t else f"{survey_name} - {ytitle}" if ytitle else survey_name
|
||||
fig = (
|
||||
line_chart(
|
||||
data=new_df,
|
||||
y=list(trace_titles.values()),
|
||||
title=title,
|
||||
ytitle=ytitle,
|
||||
same_axis=same_axis,
|
||||
normalize=False,
|
||||
scatter_kwargs=scatter_kwargs,
|
||||
layout_kwargs=layout_kwargs,
|
||||
**kwargs,
|
||||
)
|
||||
if plot_type == "line"
|
||||
else bar_chart(
|
||||
data=new_df,
|
||||
title=title,
|
||||
ytitle=ytitle,
|
||||
x=new_df.index,
|
||||
y=list(trace_titles.values()),
|
||||
layout_kwargs=layout_kwargs,
|
||||
bar_kwargs=bar_kwargs,
|
||||
**kwargs,
|
||||
)
|
||||
)
|
||||
|
||||
fig.update_layout(
|
||||
margin=dict(b=20),
|
||||
legend=dict(
|
||||
orientation="h",
|
||||
yanchor="top",
|
||||
xanchor="left",
|
||||
y=-0.075,
|
||||
x=0,
|
||||
font=dict(size=12),
|
||||
),
|
||||
)
|
||||
content = fig.to_plotly_json()
|
||||
|
||||
return fig, content
|
||||
|
||||
@@ -16,6 +16,51 @@ router = Router(prefix="/survey")
|
||||
# pylint: disable=unused-argument
|
||||
|
||||
|
||||
@router.command(
|
||||
model="BlsSeries",
|
||||
examples=[
|
||||
APIEx(parameters={"provider": "bls", "symbol": "CES0000000001"}),
|
||||
],
|
||||
)
|
||||
async def bls_series(
|
||||
cc: CommandContext,
|
||||
provider_choices: ProviderChoices,
|
||||
standard_params: StandardParams,
|
||||
extra_params: ExtraParams,
|
||||
) -> OBBject:
|
||||
"""Get time series data for one, or more, BLS series IDs."""
|
||||
return await OBBject.from_query(Query(**locals()))
|
||||
|
||||
|
||||
@router.command(
|
||||
model="BlsSearch",
|
||||
examples=[
|
||||
APIEx(
|
||||
parameters={
|
||||
"provider": "bls",
|
||||
"category": "cpi",
|
||||
}
|
||||
),
|
||||
APIEx(
|
||||
description="Use semi-colon to separate multiple queries as an & operator.",
|
||||
parameters={
|
||||
"provider": "bls",
|
||||
"category": "cpi",
|
||||
"query": "seattle;gasoline",
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
async def bls_search(
|
||||
cc: CommandContext,
|
||||
provider_choices: ProviderChoices,
|
||||
standard_params: StandardParams,
|
||||
extra_params: ExtraParams,
|
||||
) -> OBBject:
|
||||
"""Search BLS surveys by category and keyword or phrase to identify BLS series IDs."""
|
||||
return await OBBject.from_query(Query(**locals()))
|
||||
|
||||
|
||||
@router.command(
|
||||
model="SeniorLoanOfficerSurvey",
|
||||
examples=[
|
||||
|
||||
@@ -600,7 +600,9 @@ def test_charting_technical_relative_rotation(params):
|
||||
)
|
||||
data_query_str = get_querystring(data_params, [])
|
||||
data_url = f"http://0.0.0.0:8000/api/v1/equity/price/historical?{data_query_str}"
|
||||
data_result = requests.get(data_url, headers=get_headers(), timeout=10).json()["results"]
|
||||
data_result = requests.get(data_url, headers=get_headers(), timeout=10).json()[
|
||||
"results"
|
||||
]
|
||||
body = json.dumps({"data": data_result})
|
||||
query_str = get_querystring(params, ["data"])
|
||||
url = f"http://0.0.0.0:8000/api/v1/technical/relative_rotation?{query_str}"
|
||||
@@ -632,7 +634,11 @@ def test_charting_technical_relative_rotation(params):
|
||||
def test_charting_equity_price_performance(params, headers):
|
||||
"""Test chart equity price performance."""
|
||||
params = {p: v for p, v in params.items() if v}
|
||||
body = (json.dumps({"extra_params": {"chart_params": {"limit": 4, "orientation": "h"}}}),)
|
||||
body = (
|
||||
json.dumps(
|
||||
{"extra_params": {"chart_params": {"limit": 4, "orientation": "h"}}}
|
||||
),
|
||||
)
|
||||
query_str = get_querystring(params, [])
|
||||
url = f"http://0.0.0.0:8000/api/v1/equity/price/performance?{query_str}"
|
||||
result = requests.get(url, headers=headers, timeout=10, json=body)
|
||||
@@ -696,7 +702,11 @@ def test_charting_etf_price_performance(params, headers):
|
||||
def test_charting_etf_holdings(params, headers):
|
||||
"""Test chart etf holdings."""
|
||||
params = {p: v for p, v in params.items() if v}
|
||||
body = (json.dumps({"extra_params": {"chart_params": {"orientation": "v", "limit": 10}}}),)
|
||||
body = (
|
||||
json.dumps(
|
||||
{"extra_params": {"chart_params": {"orientation": "v", "limit": 10}}}
|
||||
),
|
||||
)
|
||||
query_str = get_querystring(params, [])
|
||||
url = f"http://0.0.0.0:8000/api/v1/etf/holdings?{query_str}"
|
||||
result = requests.get(url, headers=headers, timeout=10, json=body)
|
||||
@@ -854,3 +864,36 @@ def test_charting_equity_historical_market_cap(params, headers):
|
||||
assert chart
|
||||
assert not fig
|
||||
assert list(chart.keys()) == ["content", "format"]
|
||||
|
||||
|
||||
@parametrize(
|
||||
"params",
|
||||
[
|
||||
(
|
||||
{
|
||||
"provider": "bls",
|
||||
"symbol": "APUS49D74714,APUS49D74715,APUS49D74716",
|
||||
"start_date": "2014-01-01",
|
||||
"end_date": "2024-07-01",
|
||||
"chart": True,
|
||||
}
|
||||
),
|
||||
],
|
||||
)
|
||||
@pytest.mark.integration
|
||||
def test_charting_economy_survey_bls_series(params, headers):
|
||||
"""Test chart economy survey bls series."""
|
||||
params = {p: v for p, v in params.items() if v}
|
||||
body = (json.dumps({"extra_params": {"chart_params": {"title": "test chart"}}}),)
|
||||
query_str = get_querystring(params, [])
|
||||
url = f"http://0.0.0.0:8000/api/v1/economy/survey/bls_series?{query_str}"
|
||||
result = requests.get(url, headers=headers, timeout=10, json=body)
|
||||
assert isinstance(result, requests.Response)
|
||||
assert result.status_code == 200
|
||||
|
||||
chart = result.json()["chart"]
|
||||
fig = chart.pop("fig", {})
|
||||
|
||||
assert chart
|
||||
assert not fig
|
||||
assert list(chart.keys()) == ["content", "format"]
|
||||
|
||||
@@ -31,7 +31,9 @@ def get_equity_data():
|
||||
symbol = "AAPL"
|
||||
provider = "fmp"
|
||||
|
||||
data["stocks_data"] = openbb.obb.equity.price.historical(symbol=symbol, provider=provider).results
|
||||
data["stocks_data"] = openbb.obb.equity.price.historical(
|
||||
symbol=symbol, provider=provider
|
||||
).results
|
||||
return data["stocks_data"]
|
||||
|
||||
|
||||
@@ -701,3 +703,28 @@ def test_charting_equity_historical_market_cap(params, obb):
|
||||
assert len(result.results) > 0
|
||||
assert result.chart.content
|
||||
assert isinstance(result.chart.fig, OpenBBFigure)
|
||||
|
||||
|
||||
@parametrize(
|
||||
"params",
|
||||
[
|
||||
(
|
||||
{
|
||||
"provider": "bls",
|
||||
"symbol": "APUS49D74714,APUS49D74715,APUS49D74716",
|
||||
"start_date": "2014-01-01",
|
||||
"end_date": "2024-07-01",
|
||||
"chart": True,
|
||||
}
|
||||
),
|
||||
],
|
||||
)
|
||||
@pytest.mark.integration
|
||||
def test_charting_economy_survey_bls_series(params, obb):
|
||||
"""Test chart economy survey bls series."""
|
||||
result = obb.economy.survey.bls_series(**params)
|
||||
assert result
|
||||
assert isinstance(result, OBBject)
|
||||
assert len(result.results) > 0
|
||||
assert result.chart.content
|
||||
assert isinstance(result.chart.fig, OpenBBFigure)
|
||||
|
||||
330
openbb_platform/openbb/assets/reference.json
vendored
330
openbb_platform/openbb/assets/reference.json
vendored
@@ -20,6 +20,7 @@
|
||||
],
|
||||
"openbb_provider_extension": [
|
||||
"benzinga@1.3.1",
|
||||
"bls@1.0.0b0",
|
||||
"econdb@1.2.1",
|
||||
"federal_reserve@1.3.1",
|
||||
"fmp@1.3.1",
|
||||
@@ -3127,6 +3128,335 @@
|
||||
},
|
||||
"model": "GdpReal"
|
||||
},
|
||||
"/economy/survey/bls_series": {
|
||||
"deprecated": {
|
||||
"flag": null,
|
||||
"message": null
|
||||
},
|
||||
"description": "Get time series data for one, or more, BLS series IDs.",
|
||||
"examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.survey.bls_series(provider='bls', symbol='CES0000000001')\n```\n\n",
|
||||
"parameters": {
|
||||
"standard": [
|
||||
{
|
||||
"name": "symbol",
|
||||
"type": "Union[str, List[str]]",
|
||||
"description": "Symbol to get data for. Multiple items allowed for provider(s): bls.",
|
||||
"default": "",
|
||||
"optional": false,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "start_date",
|
||||
"type": "Union[date, str]",
|
||||
"description": "Start date of the data, in YYYY-MM-DD format.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "end_date",
|
||||
"type": "Union[date, str]",
|
||||
"description": "End date of the data, in YYYY-MM-DD format.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
}
|
||||
],
|
||||
"bls": [
|
||||
{
|
||||
"name": "calculations",
|
||||
"type": "bool",
|
||||
"description": "Include calculations in the response, if available. Default is True.",
|
||||
"default": true,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "annual_average",
|
||||
"type": "bool",
|
||||
"description": "Include annual averages in the response, if available. Default is False.",
|
||||
"default": false,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "aspects",
|
||||
"type": "bool",
|
||||
"description": "Include all aspects associated with a data point for a given BLS series ID, if available. Returned with the series metadata, under `extras` of the response object. Default is False.",
|
||||
"default": false,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"returns": {
|
||||
"OBBject": [
|
||||
{
|
||||
"name": "results",
|
||||
"type": "List[BlsSeries]",
|
||||
"description": "Serializable results."
|
||||
},
|
||||
{
|
||||
"name": "provider",
|
||||
"type": "Optional[Literal['bls']]",
|
||||
"description": "Provider name."
|
||||
},
|
||||
{
|
||||
"name": "warnings",
|
||||
"type": "Optional[List[Warning_]]",
|
||||
"description": "List of warnings."
|
||||
},
|
||||
{
|
||||
"name": "chart",
|
||||
"type": "Optional[Chart]",
|
||||
"description": "Chart object."
|
||||
},
|
||||
{
|
||||
"name": "extra",
|
||||
"type": "Dict[str, Any]",
|
||||
"description": "Extra info."
|
||||
}
|
||||
]
|
||||
},
|
||||
"data": {
|
||||
"standard": [
|
||||
{
|
||||
"name": "date",
|
||||
"type": "Union[date, str]",
|
||||
"description": "The date of the data.",
|
||||
"default": "",
|
||||
"optional": false,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "symbol",
|
||||
"type": "str",
|
||||
"description": "Symbol representing the entity requested in the data.",
|
||||
"default": "",
|
||||
"optional": false,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "title",
|
||||
"type": "str",
|
||||
"description": "Title of the series.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "value",
|
||||
"type": "float",
|
||||
"description": "Observation value for the symbol and date.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
}
|
||||
],
|
||||
"bls": [
|
||||
{
|
||||
"name": "change_1M",
|
||||
"type": "float",
|
||||
"description": "One month change in value.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "change_3M",
|
||||
"type": "float",
|
||||
"description": "Three month change in value.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "change_6M",
|
||||
"type": "float",
|
||||
"description": "Six month change in value.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "change_12M",
|
||||
"type": "float",
|
||||
"description": "One year change in value.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "change_percent_1M",
|
||||
"type": "float",
|
||||
"description": "One month change in percent.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "change_percent_3M",
|
||||
"type": "float",
|
||||
"description": "Three month change in percent.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "change_percent_6M",
|
||||
"type": "float",
|
||||
"description": "Six month change in percent.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "change_percent_12M",
|
||||
"type": "float",
|
||||
"description": "One year change in percent.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "latest",
|
||||
"type": "bool",
|
||||
"description": "Latest value indicator.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "footnotes",
|
||||
"type": "str",
|
||||
"description": "Footnotes accompanying the value.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"model": "BlsSeries"
|
||||
},
|
||||
"/economy/survey/bls_search": {
|
||||
"deprecated": {
|
||||
"flag": null,
|
||||
"message": null
|
||||
},
|
||||
"description": "Search BLS surveys by category and keyword or phrase to identify BLS series IDs.",
|
||||
"examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.survey.bls_search(provider='bls', category=cpi)\n# Use semi-colon to separate multiple queries as an & operator.\nobb.economy.survey.bls_search(provider='bls', category=cpi, query='seattle;gasoline')\n```\n\n",
|
||||
"parameters": {
|
||||
"standard": [
|
||||
{
|
||||
"name": "query",
|
||||
"type": "str",
|
||||
"description": "The search word(s). Use semi-colon to separate multiple queries as an & operator.",
|
||||
"default": "",
|
||||
"optional": true,
|
||||
"choices": null
|
||||
}
|
||||
],
|
||||
"bls": [
|
||||
{
|
||||
"name": "category",
|
||||
"type": "Literal['cpi', 'pce', 'ppi', 'ip', 'jolts', 'nfp', 'cps', 'lfs', 'wages', 'ec', 'sla', 'bed', 'tu']",
|
||||
"description": "The category of BLS survey to search within.\n An empty search query will return all series within the category. Options are:\n \n cpi - Consumer Price Index\n \n pce - Personal Consumption Expenditure\n \n ppi - Producer Price Index\n \n ip - Industry Productivity\n \n jolts - Job Openings and Labor Turnover Survey\n \n nfp - Nonfarm Payrolls\n \n cps - Current Population Survey\n \n lfs - Labor Force Statistics\n \n wages - Wages\n \n ec - Employer Costs\n \n sla - State and Local Area Employment\n \n bed - Business Employment Dynamics\n \n tu - Time Use",
|
||||
"default": "",
|
||||
"optional": false,
|
||||
"choices": [
|
||||
"cpi",
|
||||
"pce",
|
||||
"ppi",
|
||||
"ip",
|
||||
"jolts",
|
||||
"nfp",
|
||||
"cps",
|
||||
"lfs",
|
||||
"wages",
|
||||
"ec",
|
||||
"sla",
|
||||
"bed",
|
||||
"tu"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "include_extras",
|
||||
"type": "bool",
|
||||
"description": "Include additional information in the search results. Extra fields returned are metadata and vary by survey. Fields are undefined strings that typically have names ending with '_code'.",
|
||||
"default": false,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "include_code_map",
|
||||
"type": "bool",
|
||||
"description": "When True, includes the complete code map for ea\u00e7h survey in the category, returned separately as a nested JSON to the `extras['results_metadata']` property of the response. Example content is the NAICS industry map for PPI surveys. Each code is a value within the 'symbol' of the time series.",
|
||||
"default": false,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"returns": {
|
||||
"OBBject": [
|
||||
{
|
||||
"name": "results",
|
||||
"type": "List[BlsSearch]",
|
||||
"description": "Serializable results."
|
||||
},
|
||||
{
|
||||
"name": "provider",
|
||||
"type": "Optional[Literal['bls']]",
|
||||
"description": "Provider name."
|
||||
},
|
||||
{
|
||||
"name": "warnings",
|
||||
"type": "Optional[List[Warning_]]",
|
||||
"description": "List of warnings."
|
||||
},
|
||||
{
|
||||
"name": "chart",
|
||||
"type": "Optional[Chart]",
|
||||
"description": "Chart object."
|
||||
},
|
||||
{
|
||||
"name": "extra",
|
||||
"type": "Dict[str, Any]",
|
||||
"description": "Extra info."
|
||||
}
|
||||
]
|
||||
},
|
||||
"data": {
|
||||
"standard": [
|
||||
{
|
||||
"name": "symbol",
|
||||
"type": "str",
|
||||
"description": "Symbol representing the entity requested in the data.",
|
||||
"default": "",
|
||||
"optional": false,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "title",
|
||||
"type": "str",
|
||||
"description": "The title of the series.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
},
|
||||
{
|
||||
"name": "survey_name",
|
||||
"type": "str",
|
||||
"description": "The name of the survey.",
|
||||
"default": null,
|
||||
"optional": true,
|
||||
"choices": null
|
||||
}
|
||||
],
|
||||
"bls": []
|
||||
},
|
||||
"model": "BlsSearch"
|
||||
},
|
||||
"/economy/survey/sloos": {
|
||||
"deprecated": {
|
||||
"flag": null,
|
||||
|
||||
@@ -33,6 +33,7 @@ Extensions:
|
||||
- regulators@1.3.1
|
||||
|
||||
- benzinga@1.3.1
|
||||
- bls@1.0.0b0
|
||||
- econdb@1.2.1
|
||||
- federal_reserve@1.3.1
|
||||
- fmp@1.3.1
|
||||
|
||||
@@ -13,6 +13,8 @@ from typing_extensions import Annotated
|
||||
|
||||
class ROUTER_economy_survey(Container):
|
||||
"""/economy/survey
|
||||
bls_search
|
||||
bls_series
|
||||
economic_conditions_chicago
|
||||
manufacturing_outlook_texas
|
||||
nonfarm_payrolls
|
||||
@@ -23,6 +25,255 @@ class ROUTER_economy_survey(Container):
|
||||
def __repr__(self) -> str:
|
||||
return self.__doc__ or ""
|
||||
|
||||
@exception_handler
|
||||
@validate
|
||||
def bls_search(
|
||||
self,
|
||||
query: Annotated[
|
||||
str,
|
||||
OpenBBField(
|
||||
description="The search word(s). Use semi-colon to separate multiple queries as an & operator."
|
||||
),
|
||||
] = "",
|
||||
provider: Annotated[
|
||||
Optional[Literal["bls"]],
|
||||
OpenBBField(
|
||||
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: bls."
|
||||
),
|
||||
] = None,
|
||||
**kwargs
|
||||
) -> OBBject:
|
||||
"""Search BLS surveys by category and keyword or phrase to identify BLS series IDs.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
query : str
|
||||
The search word(s). Use semi-colon to separate multiple queries as an & operator.
|
||||
provider : Optional[Literal['bls']]
|
||||
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: bls.
|
||||
category : Optional[Literal['cpi', 'pce', 'ppi', 'ip', 'jolts', 'nfp', 'cps', 'lfs', 'wages', 'ec', 'sla', 'bed', 'tu']]
|
||||
The category of BLS survey to search within.
|
||||
An empty search query will return all series within the category. Options are:
|
||||
|
||||
cpi - Consumer Price Index
|
||||
|
||||
pce - Personal Consumption Expenditure
|
||||
|
||||
ppi - Producer Price Index
|
||||
|
||||
ip - Industry Productivity
|
||||
|
||||
jolts - Job Openings and Labor Turnover Survey
|
||||
|
||||
nfp - Nonfarm Payrolls
|
||||
|
||||
cps - Current Population Survey
|
||||
|
||||
lfs - Labor Force Statistics
|
||||
|
||||
wages - Wages
|
||||
|
||||
ec - Employer Costs
|
||||
|
||||
sla - State and Local Area Employment
|
||||
|
||||
bed - Business Employment Dynamics
|
||||
|
||||
tu - Time Use
|
||||
(provider: bls)
|
||||
include_extras : bool
|
||||
Include additional information in the search results. Extra fields returned are metadata and vary by survey. Fields are undefined strings that typically have names ending with '_code'. (provider: bls)
|
||||
include_code_map : bool
|
||||
When True, includes the complete code map for eaçh survey in the category, returned separately as a nested JSON to the `extras['results_metadata']` property of the response. Example content is the NAICS industry map for PPI surveys. Each code is a value within the 'symbol' of the time series. (provider: bls)
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject
|
||||
results : List[BlsSearch]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['bls']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
chart : Optional[Chart]
|
||||
Chart object.
|
||||
extra : Dict[str, Any]
|
||||
Extra info.
|
||||
|
||||
BlsSearch
|
||||
---------
|
||||
symbol : str
|
||||
Symbol representing the entity requested in the data.
|
||||
title : Optional[str]
|
||||
The title of the series.
|
||||
survey_name : Optional[str]
|
||||
The name of the survey.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb import obb
|
||||
>>> obb.economy.survey.bls_search(provider='bls', category='cpi')
|
||||
>>> # Use semi-colon to separate multiple queries as an & operator.
|
||||
>>> obb.economy.survey.bls_search(provider='bls', category='cpi', query='seattle;gasoline')
|
||||
""" # noqa: E501
|
||||
|
||||
return self._run(
|
||||
"/economy/survey/bls_search",
|
||||
**filter_inputs(
|
||||
provider_choices={
|
||||
"provider": self._get_provider(
|
||||
provider,
|
||||
"economy.survey.bls_search",
|
||||
("bls",),
|
||||
)
|
||||
},
|
||||
standard_params={
|
||||
"query": query,
|
||||
},
|
||||
extra_params=kwargs,
|
||||
info={
|
||||
"category": {
|
||||
"bls": {
|
||||
"multiple_items_allowed": False,
|
||||
"choices": [
|
||||
"cpi",
|
||||
"pce",
|
||||
"ppi",
|
||||
"ip",
|
||||
"jolts",
|
||||
"nfp",
|
||||
"cps",
|
||||
"lfs",
|
||||
"wages",
|
||||
"ec",
|
||||
"sla",
|
||||
"bed",
|
||||
"tu",
|
||||
],
|
||||
}
|
||||
}
|
||||
},
|
||||
)
|
||||
)
|
||||
|
||||
@exception_handler
|
||||
@validate
|
||||
def bls_series(
|
||||
self,
|
||||
symbol: Annotated[
|
||||
Union[str, List[str]],
|
||||
OpenBBField(
|
||||
description="Symbol to get data for. Multiple comma separated items allowed for provider(s): bls."
|
||||
),
|
||||
],
|
||||
start_date: Annotated[
|
||||
Union[datetime.date, None, str],
|
||||
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
|
||||
] = None,
|
||||
end_date: Annotated[
|
||||
Union[datetime.date, None, str],
|
||||
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
|
||||
] = None,
|
||||
provider: Annotated[
|
||||
Optional[Literal["bls"]],
|
||||
OpenBBField(
|
||||
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: bls."
|
||||
),
|
||||
] = None,
|
||||
**kwargs
|
||||
) -> OBBject:
|
||||
"""Get time series data for one, or more, BLS series IDs.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : Union[str, List[str]]
|
||||
Symbol to get data for. Multiple comma separated items allowed for provider(s): bls.
|
||||
start_date : Union[date, None, str]
|
||||
Start date of the data, in YYYY-MM-DD format.
|
||||
end_date : Union[date, None, str]
|
||||
End date of the data, in YYYY-MM-DD format.
|
||||
provider : Optional[Literal['bls']]
|
||||
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: bls.
|
||||
calculations : bool
|
||||
Include calculations in the response, if available. Default is True. (provider: bls)
|
||||
annual_average : bool
|
||||
Include annual averages in the response, if available. Default is False. (provider: bls)
|
||||
aspects : bool
|
||||
Include all aspects associated with a data point for a given BLS series ID, if available. Returned with the series metadata, under `extras` of the response object. Default is False. (provider: bls)
|
||||
|
||||
Returns
|
||||
-------
|
||||
OBBject
|
||||
results : List[BlsSeries]
|
||||
Serializable results.
|
||||
provider : Optional[Literal['bls']]
|
||||
Provider name.
|
||||
warnings : Optional[List[Warning_]]
|
||||
List of warnings.
|
||||
chart : Optional[Chart]
|
||||
Chart object.
|
||||
extra : Dict[str, Any]
|
||||
Extra info.
|
||||
|
||||
BlsSeries
|
||||
---------
|
||||
date : date
|
||||
The date of the data.
|
||||
symbol : str
|
||||
Symbol representing the entity requested in the data.
|
||||
title : Optional[str]
|
||||
Title of the series.
|
||||
value : Optional[float]
|
||||
Observation value for the symbol and date.
|
||||
change_1_m : Optional[float]
|
||||
One month change in value. (provider: bls)
|
||||
change_3_m : Optional[float]
|
||||
Three month change in value. (provider: bls)
|
||||
change_6_m : Optional[float]
|
||||
Six month change in value. (provider: bls)
|
||||
change_12_m : Optional[float]
|
||||
One year change in value. (provider: bls)
|
||||
change_percent_1_m : Optional[float]
|
||||
One month change in percent. (provider: bls)
|
||||
change_percent_3_m : Optional[float]
|
||||
Three month change in percent. (provider: bls)
|
||||
change_percent_6_m : Optional[float]
|
||||
Six month change in percent. (provider: bls)
|
||||
change_percent_12_m : Optional[float]
|
||||
One year change in percent. (provider: bls)
|
||||
latest : Optional[bool]
|
||||
Latest value indicator. (provider: bls)
|
||||
footnotes : Optional[str]
|
||||
Footnotes accompanying the value. (provider: bls)
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb import obb
|
||||
>>> obb.economy.survey.bls_series(provider='bls', symbol='CES0000000001')
|
||||
""" # noqa: E501
|
||||
|
||||
return self._run(
|
||||
"/economy/survey/bls_series",
|
||||
**filter_inputs(
|
||||
provider_choices={
|
||||
"provider": self._get_provider(
|
||||
provider,
|
||||
"economy.survey.bls_series",
|
||||
("bls",),
|
||||
)
|
||||
},
|
||||
standard_params={
|
||||
"symbol": symbol,
|
||||
"start_date": start_date,
|
||||
"end_date": end_date,
|
||||
},
|
||||
extra_params=kwargs,
|
||||
info={
|
||||
"symbol": {"bls": {"multiple_items_allowed": True, "choices": None}}
|
||||
},
|
||||
)
|
||||
)
|
||||
|
||||
@exception_handler
|
||||
@validate
|
||||
def economic_conditions_chicago(
|
||||
|
||||
606
openbb_platform/poetry.lock
generated
vendored
606
openbb_platform/poetry.lock
generated
vendored
@@ -2,98 +2,113 @@
|
||||
|
||||
[[package]]
|
||||
name = "aiohappyeyeballs"
|
||||
version = "2.3.5"
|
||||
version = "2.4.0"
|
||||
description = "Happy Eyeballs for asyncio"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "aiohappyeyeballs-2.3.5-py3-none-any.whl", hash = "sha256:4d6dea59215537dbc746e93e779caea8178c866856a721c9c660d7a5a7b8be03"},
|
||||
{file = "aiohappyeyeballs-2.3.5.tar.gz", hash = "sha256:6fa48b9f1317254f122a07a131a86b71ca6946ca989ce6326fff54a99a920105"},
|
||||
{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.1"
|
||||
version = "3.10.5"
|
||||
description = "Async http client/server framework (asyncio)"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:47b4c2412960e64d97258f40616efddaebcb34ff664c8a972119ed38fac2a62c"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7dbf637f87dd315fa1f36aaed8afa929ee2c607454fb7791e74c88a0d94da59"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c8fb76214b5b739ce59e2236a6489d9dc3483649cfd6f563dbf5d8e40dbdd57d"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c577cdcf8f92862363b3d598d971c6a84ed8f0bf824d4cc1ce70c2fb02acb4a"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:777e23609899cb230ad2642b4bdf1008890f84968be78de29099a8a86f10b261"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b07286a1090483799599a2f72f76ac396993da31f6e08efedb59f40876c144fa"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9db600a86414a9a653e3c1c7f6a2f6a1894ab8f83d11505247bd1b90ad57157"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c3f1eb280008e51965a8d160a108c333136f4a39d46f516c64d2aa2e6a53f2"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f5dd109a925fee4c9ac3f6a094900461a2712df41745f5d04782ebcbe6479ccb"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8c81ff4afffef9b1186639506d70ea90888218f5ddfff03870e74ec80bb59970"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2a384dfbe8bfebd203b778a30a712886d147c61943675f4719b56725a8bbe803"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:b9fb6508893dc31cfcbb8191ef35abd79751db1d6871b3e2caee83959b4d91eb"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:88596384c3bec644a96ae46287bb646d6a23fa6014afe3799156aef42669c6bd"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-win32.whl", hash = "sha256:68164d43c580c2e8bf8e0eb4960142919d304052ccab92be10250a3a33b53268"},
|
||||
{file = "aiohttp-3.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:d6bbe2c90c10382ca96df33b56e2060404a4f0f88673e1e84b44c8952517e5f3"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f6979b4f20d3e557a867da9d9227de4c156fcdcb348a5848e3e6190fd7feb972"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03c0c380c83f8a8d4416224aafb88d378376d6f4cadebb56b060688251055cd4"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1c2b104e81b3c3deba7e6f5bc1a9a0e9161c380530479970766a6655b8b77c7c"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b023b68c61ab0cd48bd38416b421464a62c381e32b9dc7b4bdfa2905807452a4"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a07c76a82390506ca0eabf57c0540cf5a60c993c442928fe4928472c4c6e5e6"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:41d8dab8c64ded1edf117d2a64f353efa096c52b853ef461aebd49abae979f16"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:615348fab1a9ef7d0960a905e83ad39051ae9cb0d2837da739b5d3a7671e497a"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:256ee6044214ee9d66d531bb374f065ee94e60667d6bbeaa25ca111fc3997158"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b7d5bb926805022508b7ddeaad957f1fce7a8d77532068d7bdb431056dc630cd"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:028faf71b338f069077af6315ad54281612705d68889f5d914318cbc2aab0d50"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:5c12310d153b27aa630750be44e79313acc4e864c421eb7d2bc6fa3429c41bf8"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:de1a91d5faded9054957ed0a9e01b9d632109341942fc123947ced358c5d9009"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9c186b270979fb1dee3ababe2d12fb243ed7da08b30abc83ebac3a928a4ddb15"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-win32.whl", hash = "sha256:4a9ce70f5e00380377aac0e568abd075266ff992be2e271765f7b35d228a990c"},
|
||||
{file = "aiohttp-3.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:a77c79bac8d908d839d32c212aef2354d2246eb9deb3e2cb01ffa83fb7a6ea5d"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:2212296cdb63b092e295c3e4b4b442e7b7eb41e8a30d0f53c16d5962efed395d"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4dcb127ca3eb0a61205818a606393cbb60d93b7afb9accd2fd1e9081cc533144"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb8b79a65332e1a426ccb6290ce0409e1dc16b4daac1cc5761e059127fa3d134"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68cc24f707ed9cb961f6ee04020ca01de2c89b2811f3cf3361dc7c96a14bfbcc"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cb54f5725b4b37af12edf6c9e834df59258c82c15a244daa521a065fbb11717"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51d03e948e53b3639ce4d438f3d1d8202898ec6655cadcc09ec99229d4adc2a9"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:786299d719eb5d868f161aeec56d589396b053925b7e0ce36e983d30d0a3e55c"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abda4009a30d51d3f06f36bc7411a62b3e647fa6cc935ef667e3e3d3a7dd09b1"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:67f7639424c313125213954e93a6229d3a1d386855d70c292a12628f600c7150"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8e5a26d7aac4c0d8414a347da162696eea0629fdce939ada6aedf951abb1d745"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:120548d89f14b76a041088b582454d89389370632ee12bf39d919cc5c561d1ca"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f5293726943bdcea24715b121d8c4ae12581441d22623b0e6ab12d07ce85f9c4"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1f8605e573ed6c44ec689d94544b2c4bb1390aaa723a8b5a2cc0a5a485987a68"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-win32.whl", hash = "sha256:e7168782621be4448d90169a60c8b37e9b0926b3b79b6097bc180c0a8a119e73"},
|
||||
{file = "aiohttp-3.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fbf8c0ded367c5c8eaf585f85ca8dd85ff4d5b73fb8fe1e6ac9e1b5e62e11f7"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:54b7f4a20d7cc6bfa4438abbde069d417bb7a119f870975f78a2b99890226d55"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2fa643ca990323db68911b92f3f7a0ca9ae300ae340d0235de87c523601e58d9"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8311d0d690487359fe2247ec5d2cac9946e70d50dced8c01ce9e72341c21151"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222821c60b8f6a64c5908cb43d69c0ee978a1188f6a8433d4757d39231b42cdb"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7b55d9ede66af7feb6de87ff277e0ccf6d51c7db74cc39337fe3a0e31b5872d"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a95151a5567b3b00368e99e9c5334a919514f60888a6b6d2054fea5e66e527e"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e9e9171d2fe6bfd9d3838a6fe63b1e91b55e0bf726c16edf265536e4eafed19"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a57e73f9523e980f6101dc9a83adcd7ac0006ea8bf7937ca3870391c7bb4f8ff"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0df51a3d70a2bfbb9c921619f68d6d02591f24f10e9c76de6f3388c89ed01de6"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:b0de63ff0307eac3961b4af74382d30220d4813f36b7aaaf57f063a1243b4214"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:8db9b749f589b5af8e4993623dbda6716b2b7a5fcb0fa2277bf3ce4b278c7059"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6b14c19172eb53b63931d3e62a9749d6519f7c121149493e6eefca055fcdb352"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cd57ad998e3038aa87c38fe85c99ed728001bf5dde8eca121cadee06ee3f637"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-win32.whl", hash = "sha256:df31641e3f02b77eb3c5fb63c0508bee0fc067cf153da0e002ebbb0db0b6d91a"},
|
||||
{file = "aiohttp-3.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:93094eba50bc2ad4c40ff4997ead1fdcd41536116f2e7d6cfec9596a8ecb3615"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:440954ddc6b77257e67170d57b1026aa9545275c33312357472504eef7b4cc0b"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f9f8beed277488a52ee2b459b23c4135e54d6a819eaba2e120e57311015b58e9"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d8a8221a63602008550022aa3a4152ca357e1dde7ab3dd1da7e1925050b56863"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a702bd3663b5cbf3916e84bf332400d24cdb18399f0877ca6b313ce6c08bfb43"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1988b370536eb14f0ce7f3a4a5b422ab64c4e255b3f5d7752c5f583dc8c967fc"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ccf1f0a304352c891d124ac1a9dea59b14b2abed1704aaa7689fc90ef9c5be1"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc3ea6ef2a83edad84bbdb5d96e22f587b67c68922cd7b6f9d8f24865e655bcf"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89b47c125ab07f0831803b88aeb12b04c564d5f07a1c1a225d4eb4d2f26e8b5e"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:21778552ef3d44aac3278cc6f6d13a6423504fa5f09f2df34bfe489ed9ded7f5"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bde0693073fd5e542e46ea100aa6c1a5d36282dbdbad85b1c3365d5421490a92"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:bf66149bb348d8e713f3a8e0b4f5b952094c2948c408e1cfef03b49e86745d60"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:587237571a85716d6f71f60d103416c9df7d5acb55d96d3d3ced65f39bff9c0c"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:bfe33cba6e127d0b5b417623c9aa621f0a69f304742acdca929a9fdab4593693"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-win32.whl", hash = "sha256:9fbff00646cf8211b330690eb2fd64b23e1ce5b63a342436c1d1d6951d53d8dd"},
|
||||
{file = "aiohttp-3.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:5951c328f9ac42d7bce7a6ded535879bc9ae13032818d036749631fa27777905"},
|
||||
{file = "aiohttp-3.10.1.tar.gz", hash = "sha256:8b0d058e4e425d3b45e8ec70d49b402f4d6b21041e674798b1f91ba027c73f28"},
|
||||
{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]
|
||||
@@ -1211,153 +1226,149 @@ statsmodels = ">=0.13.0"
|
||||
|
||||
[[package]]
|
||||
name = "lxml"
|
||||
version = "5.2.2"
|
||||
version = "5.3.0"
|
||||
description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
files = [
|
||||
{file = "lxml-5.2.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:364d03207f3e603922d0d3932ef363d55bbf48e3647395765f9bfcbdf6d23632"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:50127c186f191b8917ea2fb8b206fbebe87fd414a6084d15568c27d0a21d60db"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74e4f025ef3db1c6da4460dd27c118d8cd136d0391da4e387a15e48e5c975147"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981a06a3076997adf7c743dcd0d7a0415582661e2517c7d961493572e909aa1d"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aef5474d913d3b05e613906ba4090433c515e13ea49c837aca18bde190853dff"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e275ea572389e41e8b039ac076a46cb87ee6b8542df3fff26f5baab43713bca"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5b65529bb2f21ac7861a0e94fdbf5dc0daab41497d18223b46ee8515e5ad297"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:bcc98f911f10278d1daf14b87d65325851a1d29153caaf146877ec37031d5f36"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:b47633251727c8fe279f34025844b3b3a3e40cd1b198356d003aa146258d13a2"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:fbc9d316552f9ef7bba39f4edfad4a734d3d6f93341232a9dddadec4f15d425f"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:13e69be35391ce72712184f69000cda04fc89689429179bc4c0ae5f0b7a8c21b"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3b6a30a9ab040b3f545b697cb3adbf3696c05a3a68aad172e3fd7ca73ab3c835"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a233bb68625a85126ac9f1fc66d24337d6e8a0f9207b688eec2e7c880f012ec0"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:dfa7c241073d8f2b8e8dbc7803c434f57dbb83ae2a3d7892dd068d99e96efe2c"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1a7aca7964ac4bb07680d5c9d63b9d7028cace3e2d43175cb50bba8c5ad33316"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ae4073a60ab98529ab8a72ebf429f2a8cc612619a8c04e08bed27450d52103c0"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ffb2be176fed4457e445fe540617f0252a72a8bc56208fd65a690fdb1f57660b"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e290d79a4107d7d794634ce3e985b9ae4f920380a813717adf61804904dc4393"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:96e85aa09274955bb6bd483eaf5b12abadade01010478154b0ec70284c1b1526"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-win32.whl", hash = "sha256:f956196ef61369f1685d14dad80611488d8dc1ef00be57c0c5a03064005b0f30"},
|
||||
{file = "lxml-5.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:875a3f90d7eb5c5d77e529080d95140eacb3c6d13ad5b616ee8095447b1d22e7"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:45f9494613160d0405682f9eee781c7e6d1bf45f819654eb249f8f46a2c22545"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0b3f2df149efb242cee2ffdeb6674b7f30d23c9a7af26595099afaf46ef4e88"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d28cb356f119a437cc58a13f8135ab8a4c8ece18159eb9194b0d269ec4e28083"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657a972f46bbefdbba2d4f14413c0d079f9ae243bd68193cb5061b9732fa54c1"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b9ea10063efb77a965a8d5f4182806fbf59ed068b3c3fd6f30d2ac7bee734"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:07542787f86112d46d07d4f3c4e7c760282011b354d012dc4141cc12a68cef5f"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:303f540ad2dddd35b92415b74b900c749ec2010e703ab3bfd6660979d01fd4ed"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2eb2227ce1ff998faf0cd7fe85bbf086aa41dfc5af3b1d80867ecfe75fb68df3"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:1d8a701774dfc42a2f0b8ccdfe7dbc140500d1049e0632a611985d943fcf12df"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:56793b7a1a091a7c286b5f4aa1fe4ae5d1446fe742d00cdf2ffb1077865db10d"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eb00b549b13bd6d884c863554566095bf6fa9c3cecb2e7b399c4bc7904cb33b5"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a2569a1f15ae6c8c64108a2cd2b4a858fc1e13d25846be0666fc144715e32ab"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:8cf85a6e40ff1f37fe0f25719aadf443686b1ac7652593dc53c7ef9b8492b115"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:d237ba6664b8e60fd90b8549a149a74fcc675272e0e95539a00522e4ca688b04"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0b3f5016e00ae7630a4b83d0868fca1e3d494c78a75b1c7252606a3a1c5fc2ad"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23441e2b5339bc54dc949e9e675fa35efe858108404ef9aa92f0456929ef6fe8"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2fb0ba3e8566548d6c8e7dd82a8229ff47bd8fb8c2da237607ac8e5a1b8312e5"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:79d1fb9252e7e2cfe4de6e9a6610c7cbb99b9708e2c3e29057f487de5a9eaefa"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6dcc3d17eac1df7859ae01202e9bb11ffa8c98949dcbeb1069c8b9a75917e01b"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-win32.whl", hash = "sha256:4c30a2f83677876465f44c018830f608fa3c6a8a466eb223535035fbc16f3438"},
|
||||
{file = "lxml-5.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:49095a38eb333aaf44c06052fd2ec3b8f23e19747ca7ec6f6c954ffea6dbf7be"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7429e7faa1a60cad26ae4227f4dd0459efde239e494c7312624ce228e04f6391"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:50ccb5d355961c0f12f6cf24b7187dbabd5433f29e15147a67995474f27d1776"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc911208b18842a3a57266d8e51fc3cfaccee90a5351b92079beed912a7914c2"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33ce9e786753743159799fdf8e92a5da351158c4bfb6f2db0bf31e7892a1feb5"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec87c44f619380878bd49ca109669c9f221d9ae6883a5bcb3616785fa8f94c97"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08ea0f606808354eb8f2dfaac095963cb25d9d28e27edcc375d7b30ab01abbf6"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75a9632f1d4f698b2e6e2e1ada40e71f369b15d69baddb8968dcc8e683839b18"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74da9f97daec6928567b48c90ea2c82a106b2d500f397eeb8941e47d30b1ca85"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:0969e92af09c5687d769731e3f39ed62427cc72176cebb54b7a9d52cc4fa3b73"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:9164361769b6ca7769079f4d426a41df6164879f7f3568be9086e15baca61466"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d26a618ae1766279f2660aca0081b2220aca6bd1aa06b2cf73f07383faf48927"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab67ed772c584b7ef2379797bf14b82df9aa5f7438c5b9a09624dd834c1c1aaf"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:3d1e35572a56941b32c239774d7e9ad724074d37f90c7a7d499ab98761bd80cf"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:8268cbcd48c5375f46e000adb1390572c98879eb4f77910c6053d25cc3ac2c67"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e282aedd63c639c07c3857097fc0e236f984ceb4089a8b284da1c526491e3f3d"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfdc2bfe69e9adf0df4915949c22a25b39d175d599bf98e7ddf620a13678585"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4aefd911793b5d2d7a921233a54c90329bf3d4a6817dc465f12ffdfe4fc7b8fe"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:8b8df03a9e995b6211dafa63b32f9d405881518ff1ddd775db4e7b98fb545e1c"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f11ae142f3a322d44513de1018b50f474f8f736bc3cd91d969f464b5bfef8836"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-win32.whl", hash = "sha256:16a8326e51fcdffc886294c1e70b11ddccec836516a343f9ed0f82aac043c24a"},
|
||||
{file = "lxml-5.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:bbc4b80af581e18568ff07f6395c02114d05f4865c2812a1f02f2eaecf0bfd48"},
|
||||
{file = "lxml-5.2.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e3d9d13603410b72787579769469af730c38f2f25505573a5888a94b62b920f8"},
|
||||
{file = "lxml-5.2.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38b67afb0a06b8575948641c1d6d68e41b83a3abeae2ca9eed2ac59892b36706"},
|
||||
{file = "lxml-5.2.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c689d0d5381f56de7bd6966a4541bff6e08bf8d3871bbd89a0c6ab18aa699573"},
|
||||
{file = "lxml-5.2.2-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:cf2a978c795b54c539f47964ec05e35c05bd045db5ca1e8366988c7f2fe6b3ce"},
|
||||
{file = "lxml-5.2.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:739e36ef7412b2bd940f75b278749106e6d025e40027c0b94a17ef7968d55d56"},
|
||||
{file = "lxml-5.2.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d8bbcd21769594dbba9c37d3c819e2d5847656ca99c747ddb31ac1701d0c0ed9"},
|
||||
{file = "lxml-5.2.2-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:2304d3c93f2258ccf2cf7a6ba8c761d76ef84948d87bf9664e14d203da2cd264"},
|
||||
{file = "lxml-5.2.2-cp36-cp36m-win32.whl", hash = "sha256:02437fb7308386867c8b7b0e5bc4cd4b04548b1c5d089ffb8e7b31009b961dc3"},
|
||||
{file = "lxml-5.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:edcfa83e03370032a489430215c1e7783128808fd3e2e0a3225deee278585196"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28bf95177400066596cdbcfc933312493799382879da504633d16cf60bba735b"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a745cc98d504d5bd2c19b10c79c61c7c3df9222629f1b6210c0368177589fb8"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b590b39ef90c6b22ec0be925b211298e810b4856909c8ca60d27ffbca6c12e6"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b336b0416828022bfd5a2e3083e7f5ba54b96242159f83c7e3eebaec752f1716"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:c2faf60c583af0d135e853c86ac2735ce178f0e338a3c7f9ae8f622fd2eb788c"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:4bc6cb140a7a0ad1f7bc37e018d0ed690b7b6520ade518285dc3171f7a117905"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7ff762670cada8e05b32bf1e4dc50b140790909caa8303cfddc4d702b71ea184"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:57f0a0bbc9868e10ebe874e9f129d2917750adf008fe7b9c1598c0fbbfdde6a6"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:a6d2092797b388342c1bc932077ad232f914351932353e2e8706851c870bca1f"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:60499fe961b21264e17a471ec296dcbf4365fbea611bf9e303ab69db7159ce61"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-win32.whl", hash = "sha256:d9b342c76003c6b9336a80efcc766748a333573abf9350f4094ee46b006ec18f"},
|
||||
{file = "lxml-5.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b16db2770517b8799c79aa80f4053cd6f8b716f21f8aca962725a9565ce3ee40"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7ed07b3062b055d7a7f9d6557a251cc655eed0b3152b76de619516621c56f5d3"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f60fdd125d85bf9c279ffb8e94c78c51b3b6a37711464e1f5f31078b45002421"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a7e24cb69ee5f32e003f50e016d5fde438010c1022c96738b04fc2423e61706"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23cfafd56887eaed93d07bc4547abd5e09d837a002b791e9767765492a75883f"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:19b4e485cd07b7d83e3fe3b72132e7df70bfac22b14fe4bf7a23822c3a35bff5"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7ce7ad8abebe737ad6143d9d3bf94b88b93365ea30a5b81f6877ec9c0dee0a48"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e49b052b768bb74f58c7dda4e0bdf7b79d43a9204ca584ffe1fb48a6f3c84c66"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d14a0d029a4e176795cef99c056d58067c06195e0c7e2dbb293bf95c08f772a3"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:be49ad33819d7dcc28a309b86d4ed98e1a65f3075c6acd3cd4fe32103235222b"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a6d17e0370d2516d5bb9062c7b4cb731cff921fc875644c3d751ad857ba9c5b1"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-win32.whl", hash = "sha256:5b8c041b6265e08eac8a724b74b655404070b636a8dd6d7a13c3adc07882ef30"},
|
||||
{file = "lxml-5.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:f61efaf4bed1cc0860e567d2ecb2363974d414f7f1f124b1df368bbf183453a6"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fb91819461b1b56d06fa4bcf86617fac795f6a99d12239fb0c68dbeba41a0a30"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d4ed0c7cbecde7194cd3228c044e86bf73e30a23505af852857c09c24e77ec5d"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54401c77a63cc7d6dc4b4e173bb484f28a5607f3df71484709fe037c92d4f0ed"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:625e3ef310e7fa3a761d48ca7ea1f9d8718a32b1542e727d584d82f4453d5eeb"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:519895c99c815a1a24a926d5b60627ce5ea48e9f639a5cd328bda0515ea0f10c"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7079d5eb1c1315a858bbf180000757db8ad904a89476653232db835c3114001"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:343ab62e9ca78094f2306aefed67dcfad61c4683f87eee48ff2fd74902447726"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:cd9e78285da6c9ba2d5c769628f43ef66d96ac3085e59b10ad4f3707980710d3"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:546cf886f6242dff9ec206331209db9c8e1643ae642dea5fdbecae2453cb50fd"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:02f6a8eb6512fdc2fd4ca10a49c341c4e109aa6e9448cc4859af5b949622715a"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:339ee4a4704bc724757cd5dd9dc8cf4d00980f5d3e6e06d5847c1b594ace68ab"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0a028b61a2e357ace98b1615fc03f76eb517cc028993964fe08ad514b1e8892d"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f90e552ecbad426eab352e7b2933091f2be77115bb16f09f78404861c8322981"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d83e2d94b69bf31ead2fa45f0acdef0757fa0458a129734f59f67f3d2eb7ef32"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a02d3c48f9bb1e10c7788d92c0c7db6f2002d024ab6e74d6f45ae33e3d0288a3"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6d68ce8e7b2075390e8ac1e1d3a99e8b6372c694bbe612632606d1d546794207"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:453d037e09a5176d92ec0fd282e934ed26d806331a8b70ab431a81e2fbabf56d"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:3b019d4ee84b683342af793b56bb35034bd749e4cbdd3d33f7d1107790f8c472"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb3942960f0beb9f46e2a71a3aca220d1ca32feb5a398656be934320804c0df9"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-win32.whl", hash = "sha256:ac6540c9fff6e3813d29d0403ee7a81897f1d8ecc09a8ff84d2eea70ede1cdbf"},
|
||||
{file = "lxml-5.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:610b5c77428a50269f38a534057444c249976433f40f53e3b47e68349cca1425"},
|
||||
{file = "lxml-5.2.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b537bd04d7ccd7c6350cdaaaad911f6312cbd61e6e6045542f781c7f8b2e99d2"},
|
||||
{file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4820c02195d6dfb7b8508ff276752f6b2ff8b64ae5d13ebe02e7667e035000b9"},
|
||||
{file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a09f6184f17a80897172863a655467da2b11151ec98ba8d7af89f17bf63dae"},
|
||||
{file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:76acba4c66c47d27c8365e7c10b3d8016a7da83d3191d053a58382311a8bf4e1"},
|
||||
{file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b128092c927eaf485928cec0c28f6b8bead277e28acf56800e972aa2c2abd7a2"},
|
||||
{file = "lxml-5.2.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ae791f6bd43305aade8c0e22f816b34f3b72b6c820477aab4d18473a37e8090b"},
|
||||
{file = "lxml-5.2.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a2f6a1bc2460e643785a2cde17293bd7a8f990884b822f7bca47bee0a82fc66b"},
|
||||
{file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e8d351ff44c1638cb6e980623d517abd9f580d2e53bfcd18d8941c052a5a009"},
|
||||
{file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bec4bd9133420c5c52d562469c754f27c5c9e36ee06abc169612c959bd7dbb07"},
|
||||
{file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:55ce6b6d803890bd3cc89975fca9de1dff39729b43b73cb15ddd933b8bc20484"},
|
||||
{file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ab6a358d1286498d80fe67bd3d69fcbc7d1359b45b41e74c4a26964ca99c3f8"},
|
||||
{file = "lxml-5.2.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:06668e39e1f3c065349c51ac27ae430719d7806c026fec462e5693b08b95696b"},
|
||||
{file = "lxml-5.2.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9cd5323344d8ebb9fb5e96da5de5ad4ebab993bbf51674259dbe9d7a18049525"},
|
||||
{file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89feb82ca055af0fe797a2323ec9043b26bc371365847dbe83c7fd2e2f181c34"},
|
||||
{file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e481bba1e11ba585fb06db666bfc23dbe181dbafc7b25776156120bf12e0d5a6"},
|
||||
{file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9d6c6ea6a11ca0ff9cd0390b885984ed31157c168565702959c25e2191674a14"},
|
||||
{file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3d98de734abee23e61f6b8c2e08a88453ada7d6486dc7cdc82922a03968928db"},
|
||||
{file = "lxml-5.2.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:69ab77a1373f1e7563e0fb5a29a8440367dec051da6c7405333699d07444f511"},
|
||||
{file = "lxml-5.2.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:34e17913c431f5ae01d8658dbf792fdc457073dcdfbb31dc0cc6ab256e664a8d"},
|
||||
{file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f8757b03208c3f50097761be2dea0aba02e94f0dc7023ed73a7bb14ff11eb0"},
|
||||
{file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a520b4f9974b0a0a6ed73c2154de57cdfd0c8800f4f15ab2b73238ffed0b36e"},
|
||||
{file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5e097646944b66207023bc3c634827de858aebc226d5d4d6d16f0b77566ea182"},
|
||||
{file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b5e4ef22ff25bfd4ede5f8fb30f7b24446345f3e79d9b7455aef2836437bc38a"},
|
||||
{file = "lxml-5.2.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ff69a9a0b4b17d78170c73abe2ab12084bdf1691550c5629ad1fe7849433f324"},
|
||||
{file = "lxml-5.2.2.tar.gz", hash = "sha256:bb2dc4898180bea79863d5487e5f9c7c34297414bad54bcd0f0852aee9cfdb87"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dd36439be765e2dde7660212b5275641edbc813e7b24668831a5c8ac91180656"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ae5fe5c4b525aa82b8076c1a59d642c17b6e8739ecf852522c6321852178119d"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:501d0d7e26b4d261fca8132854d845e4988097611ba2531408ec91cf3fd9d20a"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb66442c2546446944437df74379e9cf9e9db353e61301d1a0e26482f43f0dd8"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e41506fec7a7f9405b14aa2d5c8abbb4dbbd09d88f9496958b6d00cb4d45330"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7d4a670107d75dfe5ad080bed6c341d18c4442f9378c9f58e5851e86eb79965"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41ce1f1e2c7755abfc7e759dc34d7d05fd221723ff822947132dc934d122fe22"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:44264ecae91b30e5633013fb66f6ddd05c006d3e0e884f75ce0b4755b3e3847b"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:3c174dc350d3ec52deb77f2faf05c439331d6ed5e702fc247ccb4e6b62d884b7"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:2dfab5fa6a28a0b60a20638dc48e6343c02ea9933e3279ccb132f555a62323d8"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b1c8c20847b9f34e98080da785bb2336ea982e7f913eed5809e5a3c872900f32"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2c86bf781b12ba417f64f3422cfc302523ac9cd1d8ae8c0f92a1c66e56ef2e86"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c162b216070f280fa7da844531169be0baf9ccb17263cf5a8bf876fcd3117fa5"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:36aef61a1678cb778097b4a6eeae96a69875d51d1e8f4d4b491ab3cfb54b5a03"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f65e5120863c2b266dbcc927b306c5b78e502c71edf3295dfcb9501ec96e5fc7"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-win32.whl", hash = "sha256:ef0c1fe22171dd7c7c27147f2e9c3e86f8bdf473fed75f16b0c2e84a5030ce80"},
|
||||
{file = "lxml-5.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:052d99051e77a4f3e8482c65014cf6372e61b0a6f4fe9edb98503bb5364cfee3"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:74bcb423462233bc5d6066e4e98b0264e7c1bed7541fff2f4e34fe6b21563c8b"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a3d819eb6f9b8677f57f9664265d0a10dd6551d227afb4af2b9cd7bdc2ccbf18"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b8f5db71b28b8c404956ddf79575ea77aa8b1538e8b2ef9ec877945b3f46442"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3406b63232fc7e9b8783ab0b765d7c59e7c59ff96759d8ef9632fca27c7ee4"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ecdd78ab768f844c7a1d4a03595038c166b609f6395e25af9b0f3f26ae1230f"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168f2dfcfdedf611eb285efac1516c8454c8c99caf271dccda8943576b67552e"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa617107a410245b8660028a7483b68e7914304a6d4882b5ff3d2d3eb5948d8c"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:69959bd3167b993e6e710b99051265654133a98f20cec1d9b493b931942e9c16"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:bd96517ef76c8654446fc3db9242d019a1bb5fe8b751ba414765d59f99210b79"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:ab6dd83b970dc97c2d10bc71aa925b84788c7c05de30241b9e96f9b6d9ea3080"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eec1bb8cdbba2925bedc887bc0609a80e599c75b12d87ae42ac23fd199445654"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a7095eeec6f89111d03dabfe5883a1fd54da319c94e0fb104ee8f23616b572d"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6f651ebd0b21ec65dfca93aa629610a0dbc13dbc13554f19b0113da2e61a4763"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f422a209d2455c56849442ae42f25dbaaba1c6c3f501d58761c619c7836642ec"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:62f7fdb0d1ed2065451f086519865b4c90aa19aed51081979ecd05a21eb4d1be"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-win32.whl", hash = "sha256:c6379f35350b655fd817cd0d6cbeef7f265f3ae5fedb1caae2eb442bbeae9ab9"},
|
||||
{file = "lxml-5.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c52100e2c2dbb0649b90467935c4b0de5528833c76a35ea1a2691ec9f1ee7a1"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e99f5507401436fdcc85036a2e7dc2e28d962550afe1cbfc07c40e454256a859"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:384aacddf2e5813a36495233b64cb96b1949da72bef933918ba5c84e06af8f0e"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:874a216bf6afaf97c263b56371434e47e2c652d215788396f60477540298218f"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65ab5685d56914b9a2a34d67dd5488b83213d680b0c5d10b47f81da5a16b0b0e"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aac0bbd3e8dd2d9c45ceb82249e8bdd3ac99131a32b4d35c8af3cc9db1657179"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b369d3db3c22ed14c75ccd5af429086f166a19627e84a8fdade3f8f31426e52a"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c24037349665434f375645fa9d1f5304800cec574d0310f618490c871fd902b3"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:62d172f358f33a26d6b41b28c170c63886742f5b6772a42b59b4f0fa10526cb1"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:c1f794c02903c2824fccce5b20c339a1a14b114e83b306ff11b597c5f71a1c8d"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:5d6a6972b93c426ace71e0be9a6f4b2cfae9b1baed2eed2006076a746692288c"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:3879cc6ce938ff4eb4900d901ed63555c778731a96365e53fadb36437a131a99"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:74068c601baff6ff021c70f0935b0c7bc528baa8ea210c202e03757c68c5a4ff"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ecd4ad8453ac17bc7ba3868371bffb46f628161ad0eefbd0a855d2c8c32dd81a"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7e2f58095acc211eb9d8b5771bf04df9ff37d6b87618d1cbf85f92399c98dae8"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e63601ad5cd8f860aa99d109889b5ac34de571c7ee902d6812d5d9ddcc77fa7d"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-win32.whl", hash = "sha256:17e8d968d04a37c50ad9c456a286b525d78c4a1c15dd53aa46c1d8e06bf6fa30"},
|
||||
{file = "lxml-5.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:c1a69e58a6bb2de65902051d57fde951febad631a20a64572677a1052690482f"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c72e9563347c7395910de6a3100a4840a75a6f60e05af5e58566868d5eb2d6a"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e92ce66cd919d18d14b3856906a61d3f6b6a8500e0794142338da644260595cd"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d04f064bebdfef9240478f7a779e8c5dc32b8b7b0b2fc6a62e39b928d428e51"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c2fb570d7823c2bbaf8b419ba6e5662137f8166e364a8b2b91051a1fb40ab8b"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c120f43553ec759f8de1fee2f4794452b0946773299d44c36bfe18e83caf002"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:562e7494778a69086f0312ec9689f6b6ac1c6b65670ed7d0267e49f57ffa08c4"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:423b121f7e6fa514ba0c7918e56955a1d4470ed35faa03e3d9f0e3baa4c7e492"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c00f323cc00576df6165cc9d21a4c21285fa6b9989c5c39830c3903dc4303ef3"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:1fdc9fae8dd4c763e8a31e7630afef517eab9f5d5d31a278df087f307bf601f4"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:658f2aa69d31e09699705949b5fc4719cbecbd4a97f9656a232e7d6c7be1a367"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1473427aff3d66a3fa2199004c3e601e6c4500ab86696edffdbc84954c72d832"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a87de7dd873bf9a792bf1e58b1c3887b9264036629a5bf2d2e6579fe8e73edff"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0d7b36afa46c97875303a94e8f3ad932bf78bace9e18e603f2085b652422edcd"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cf120cce539453ae086eacc0130a324e7026113510efa83ab42ef3fcfccac7fb"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:df5c7333167b9674aa8ae1d4008fa4bc17a313cc490b2cca27838bbdcc6bb15b"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-win32.whl", hash = "sha256:c802e1c2ed9f0c06a65bc4ed0189d000ada8049312cfeab6ca635e39c9608957"},
|
||||
{file = "lxml-5.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d"},
|
||||
{file = "lxml-5.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8f0de2d390af441fe8b2c12626d103540b5d850d585b18fcada58d972b74a74e"},
|
||||
{file = "lxml-5.3.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1afe0a8c353746e610bd9031a630a95bcfb1a720684c3f2b36c4710a0a96528f"},
|
||||
{file = "lxml-5.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56b9861a71575f5795bde89256e7467ece3d339c9b43141dbdd54544566b3b94"},
|
||||
{file = "lxml-5.3.0-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:9fb81d2824dff4f2e297a276297e9031f46d2682cafc484f49de182aa5e5df99"},
|
||||
{file = "lxml-5.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2c226a06ecb8cdef28845ae976da407917542c5e6e75dcac7cc33eb04aaeb237"},
|
||||
{file = "lxml-5.3.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:7d3d1ca42870cdb6d0d29939630dbe48fa511c203724820fc0fd507b2fb46577"},
|
||||
{file = "lxml-5.3.0-cp36-cp36m-win32.whl", hash = "sha256:094cb601ba9f55296774c2d57ad68730daa0b13dc260e1f941b4d13678239e70"},
|
||||
{file = "lxml-5.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:eafa2c8658f4e560b098fe9fc54539f86528651f61849b22111a9b107d18910c"},
|
||||
{file = "lxml-5.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cb83f8a875b3d9b458cada4f880fa498646874ba4011dc974e071a0a84a1b033"},
|
||||
{file = "lxml-5.3.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25f1b69d41656b05885aa185f5fdf822cb01a586d1b32739633679699f220391"},
|
||||
{file = "lxml-5.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23e0553b8055600b3bf4a00b255ec5c92e1e4aebf8c2c09334f8368e8bd174d6"},
|
||||
{file = "lxml-5.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ada35dd21dc6c039259596b358caab6b13f4db4d4a7f8665764d616daf9cc1d"},
|
||||
{file = "lxml-5.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:81b4e48da4c69313192d8c8d4311e5d818b8be1afe68ee20f6385d0e96fc9512"},
|
||||
{file = "lxml-5.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:2bc9fd5ca4729af796f9f59cd8ff160fe06a474da40aca03fcc79655ddee1a8b"},
|
||||
{file = "lxml-5.3.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07da23d7ee08577760f0a71d67a861019103e4812c87e2fab26b039054594cc5"},
|
||||
{file = "lxml-5.3.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:ea2e2f6f801696ad7de8aec061044d6c8c0dd4037608c7cab38a9a4d316bfb11"},
|
||||
{file = "lxml-5.3.0-cp37-cp37m-win32.whl", hash = "sha256:5c54afdcbb0182d06836cc3d1be921e540be3ebdf8b8a51ee3ef987537455f84"},
|
||||
{file = "lxml-5.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f2901429da1e645ce548bf9171784c0f74f0718c3f6150ce166be39e4dd66c3e"},
|
||||
{file = "lxml-5.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c56a1d43b2f9ee4786e4658c7903f05da35b923fb53c11025712562d5cc02753"},
|
||||
{file = "lxml-5.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ee8c39582d2652dcd516d1b879451500f8db3fe3607ce45d7c5957ab2596040"},
|
||||
{file = "lxml-5.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdf3a3059611f7585a78ee10399a15566356116a4288380921a4b598d807a22"},
|
||||
{file = "lxml-5.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:146173654d79eb1fc97498b4280c1d3e1e5d58c398fa530905c9ea50ea849b22"},
|
||||
{file = "lxml-5.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:0a7056921edbdd7560746f4221dca89bb7a3fe457d3d74267995253f46343f15"},
|
||||
{file = "lxml-5.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:9e4b47ac0f5e749cfc618efdf4726269441014ae1d5583e047b452a32e221920"},
|
||||
{file = "lxml-5.3.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f914c03e6a31deb632e2daa881fe198461f4d06e57ac3d0e05bbcab8eae01945"},
|
||||
{file = "lxml-5.3.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:213261f168c5e1d9b7535a67e68b1f59f92398dd17a56d934550837143f79c42"},
|
||||
{file = "lxml-5.3.0-cp38-cp38-win32.whl", hash = "sha256:218c1b2e17a710e363855594230f44060e2025b05c80d1f0661258142b2add2e"},
|
||||
{file = "lxml-5.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:315f9542011b2c4e1d280e4a20ddcca1761993dda3afc7a73b01235f8641e903"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1ffc23010330c2ab67fac02781df60998ca8fe759e8efde6f8b756a20599c5de"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2b3778cb38212f52fac9fe913017deea2fdf4eb1a4f8e4cfc6b009a13a6d3fcc"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b0c7a688944891086ba192e21c5229dea54382f4836a209ff8d0a660fac06be"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:747a3d3e98e24597981ca0be0fd922aebd471fa99d0043a3842d00cdcad7ad6a"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86a6b24b19eaebc448dc56b87c4865527855145d851f9fc3891673ff97950540"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b11a5d918a6216e521c715b02749240fb07ae5a1fefd4b7bf12f833bc8b4fe70"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68b87753c784d6acb8a25b05cb526c3406913c9d988d51f80adecc2b0775d6aa"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:109fa6fede314cc50eed29e6e56c540075e63d922455346f11e4d7a036d2b8cf"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:02ced472497b8362c8e902ade23e3300479f4f43e45f4105c85ef43b8db85229"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:6b038cc86b285e4f9fea2ba5ee76e89f21ed1ea898e287dc277a25884f3a7dfe"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:7437237c6a66b7ca341e868cda48be24b8701862757426852c9b3186de1da8a2"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7f41026c1d64043a36fda21d64c5026762d53a77043e73e94b71f0521939cc71"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:482c2f67761868f0108b1743098640fbb2a28a8e15bf3f47ada9fa59d9fe08c3"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:1483fd3358963cc5c1c9b122c80606a3a79ee0875bcac0204149fa09d6ff2727"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dec2d1130a9cda5b904696cec33b2cfb451304ba9081eeda7f90f724097300a"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-win32.whl", hash = "sha256:a0eabd0a81625049c5df745209dc7fcef6e2aea7793e5f003ba363610aa0a3ff"},
|
||||
{file = "lxml-5.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:89e043f1d9d341c52bf2af6d02e6adde62e0a46e6755d5eb60dc6e4f0b8aeca2"},
|
||||
{file = "lxml-5.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7b1cd427cb0d5f7393c31b7496419da594fe600e6fdc4b105a54f82405e6626c"},
|
||||
{file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51806cfe0279e06ed8500ce19479d757db42a30fd509940b1701be9c86a5ff9a"},
|
||||
{file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee70d08fd60c9565ba8190f41a46a54096afa0eeb8f76bd66f2c25d3b1b83005"},
|
||||
{file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8dc2c0395bea8254d8daebc76dcf8eb3a95ec2a46fa6fae5eaccee366bfe02ce"},
|
||||
{file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6ba0d3dcac281aad8a0e5b14c7ed6f9fa89c8612b47939fc94f80b16e2e9bc83"},
|
||||
{file = "lxml-5.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6e91cf736959057f7aac7adfc83481e03615a8e8dd5758aa1d95ea69e8931dba"},
|
||||
{file = "lxml-5.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:94d6c3782907b5e40e21cadf94b13b0842ac421192f26b84c45f13f3c9d5dc27"},
|
||||
{file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c300306673aa0f3ed5ed9372b21867690a17dba38c68c44b287437c362ce486b"},
|
||||
{file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d9b952e07aed35fe2e1a7ad26e929595412db48535921c5013edc8aa4a35ce"},
|
||||
{file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:01220dca0d066d1349bd6a1726856a78f7929f3878f7e2ee83c296c69495309e"},
|
||||
{file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2d9b8d9177afaef80c53c0a9e30fa252ff3036fb1c6494d427c066a4ce6a282f"},
|
||||
{file = "lxml-5.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:20094fc3f21ea0a8669dc4c61ed7fa8263bd37d97d93b90f28fc613371e7a875"},
|
||||
{file = "lxml-5.3.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ace2c2326a319a0bb8a8b0e5b570c764962e95818de9f259ce814ee666603f19"},
|
||||
{file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e67a0be1639c251d21e35fe74df6bcc40cba445c2cda7c4a967656733249e2"},
|
||||
{file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd5350b55f9fecddc51385463a4f67a5da829bc741e38cf689f38ec9023f54ab"},
|
||||
{file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c1fefd7e3d00921c44dc9ca80a775af49698bbfd92ea84498e56acffd4c5469"},
|
||||
{file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:71a8dd38fbd2f2319136d4ae855a7078c69c9a38ae06e0c17c73fd70fc6caad8"},
|
||||
{file = "lxml-5.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:97acf1e1fd66ab53dacd2c35b319d7e548380c2e9e8c54525c6e76d21b1ae3b1"},
|
||||
{file = "lxml-5.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:68934b242c51eb02907c5b81d138cb977b2129a0a75a8f8b60b01cb8586c7b21"},
|
||||
{file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b710bc2b8292966b23a6a0121f7a6c51d45d2347edcc75f016ac123b8054d3f2"},
|
||||
{file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18feb4b93302091b1541221196a2155aa296c363fd233814fa11e181adebc52f"},
|
||||
{file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3eb44520c4724c2e1a57c0af33a379eee41792595023f367ba3952a2d96c2aab"},
|
||||
{file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:609251a0ca4770e5a8768ff902aa02bf636339c5a93f9349b48eb1f606f7f3e9"},
|
||||
{file = "lxml-5.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:516f491c834eb320d6c843156440fe7fc0d50b33e44387fcec5b02f0bc118a4c"},
|
||||
{file = "lxml-5.3.0.tar.gz", hash = "sha256:4e109ca30d1edec1ac60cdbe341905dc3b8f55b16855e03a54aaf59e51ec8c6f"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
@@ -1365,7 +1376,7 @@ cssselect = ["cssselect (>=0.7)"]
|
||||
html-clean = ["lxml-html-clean"]
|
||||
html5 = ["html5lib"]
|
||||
htmlsoup = ["BeautifulSoup4"]
|
||||
source = ["Cython (>=3.0.10)"]
|
||||
source = ["Cython (>=3.0.11)"]
|
||||
|
||||
[[package]]
|
||||
name = "markdown-it-py"
|
||||
@@ -1742,6 +1753,19 @@ files = [
|
||||
[package.dependencies]
|
||||
openbb-core = ">=1.3.1,<2.0.0"
|
||||
|
||||
[[package]]
|
||||
name = "openbb-bls"
|
||||
version = "1.0.0b0"
|
||||
description = "The Bureau of Labor Statistics' (BLS) Public Data Application Programming Interface (API) gives the public access to economic data from all BLS programs. It is the Bureau's hope that talented developers and programmers will use the BLS Public Data API to create original, inventive applications with published BLS data."
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = []
|
||||
develop = true
|
||||
|
||||
[package.source]
|
||||
type = "directory"
|
||||
url = "providers/bls"
|
||||
|
||||
[[package]]
|
||||
name = "openbb-cboe"
|
||||
version = "1.3.1"
|
||||
@@ -3114,29 +3138,29 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "ruff"
|
||||
version = "0.5.7"
|
||||
version = "0.6.1"
|
||||
description = "An extremely fast Python linter and code formatter, written in Rust."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "ruff-0.5.7-py3-none-linux_armv6l.whl", hash = "sha256:548992d342fc404ee2e15a242cdbea4f8e39a52f2e7752d0e4cbe88d2d2f416a"},
|
||||
{file = "ruff-0.5.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00cc8872331055ee017c4f1071a8a31ca0809ccc0657da1d154a1d2abac5c0be"},
|
||||
{file = "ruff-0.5.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eaf3d86a1fdac1aec8a3417a63587d93f906c678bb9ed0b796da7b59c1114a1e"},
|
||||
{file = "ruff-0.5.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a01c34400097b06cf8a6e61b35d6d456d5bd1ae6961542de18ec81eaf33b4cb8"},
|
||||
{file = "ruff-0.5.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcc8054f1a717e2213500edaddcf1dbb0abad40d98e1bd9d0ad364f75c763eea"},
|
||||
{file = "ruff-0.5.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f70284e73f36558ef51602254451e50dd6cc479f8b6f8413a95fcb5db4a55fc"},
|
||||
{file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a78ad870ae3c460394fc95437d43deb5c04b5c29297815a2a1de028903f19692"},
|
||||
{file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ccd078c66a8e419475174bfe60a69adb36ce04f8d4e91b006f1329d5cd44bcf"},
|
||||
{file = "ruff-0.5.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e31c9bad4ebf8fdb77b59cae75814440731060a09a0e0077d559a556453acbb"},
|
||||
{file = "ruff-0.5.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d796327eed8e168164346b769dd9a27a70e0298d667b4ecee6877ce8095ec8e"},
|
||||
{file = "ruff-0.5.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a09ea2c3f7778cc635e7f6edf57d566a8ee8f485f3c4454db7771efb692c499"},
|
||||
{file = "ruff-0.5.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a36d8dcf55b3a3bc353270d544fb170d75d2dff41eba5df57b4e0b67a95bb64e"},
|
||||
{file = "ruff-0.5.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9369c218f789eefbd1b8d82a8cf25017b523ac47d96b2f531eba73770971c9e5"},
|
||||
{file = "ruff-0.5.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b88ca3db7eb377eb24fb7c82840546fb7acef75af4a74bd36e9ceb37a890257e"},
|
||||
{file = "ruff-0.5.7-py3-none-win32.whl", hash = "sha256:33d61fc0e902198a3e55719f4be6b375b28f860b09c281e4bdbf783c0566576a"},
|
||||
{file = "ruff-0.5.7-py3-none-win_amd64.whl", hash = "sha256:083bbcbe6fadb93cd86709037acc510f86eed5a314203079df174c40bbbca6b3"},
|
||||
{file = "ruff-0.5.7-py3-none-win_arm64.whl", hash = "sha256:2dca26154ff9571995107221d0aeaad0e75a77b5a682d6236cf89a58c70b76f4"},
|
||||
{file = "ruff-0.5.7.tar.gz", hash = "sha256:8dfc0a458797f5d9fb622dd0efc52d796f23f0a1493a9527f4e49a550ae9a7e5"},
|
||||
{file = "ruff-0.6.1-py3-none-linux_armv6l.whl", hash = "sha256:b4bb7de6a24169dc023f992718a9417380301b0c2da0fe85919f47264fb8add9"},
|
||||
{file = "ruff-0.6.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:45efaae53b360c81043e311cdec8a7696420b3d3e8935202c2846e7a97d4edae"},
|
||||
{file = "ruff-0.6.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:bc60c7d71b732c8fa73cf995efc0c836a2fd8b9810e115be8babb24ae87e0850"},
|
||||
{file = "ruff-0.6.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c7477c3b9da822e2db0b4e0b59e61b8a23e87886e727b327e7dcaf06213c5cf"},
|
||||
{file = "ruff-0.6.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a0af7ab3f86e3dc9f157a928e08e26c4b40707d0612b01cd577cc84b8905cc9"},
|
||||
{file = "ruff-0.6.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:392688dbb50fecf1bf7126731c90c11a9df1c3a4cdc3f481b53e851da5634fa5"},
|
||||
{file = "ruff-0.6.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5278d3e095ccc8c30430bcc9bc550f778790acc211865520f3041910a28d0024"},
|
||||
{file = "ruff-0.6.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe6d5f65d6f276ee7a0fc50a0cecaccb362d30ef98a110f99cac1c7872df2f18"},
|
||||
{file = "ruff-0.6.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2e0dd11e2ae553ee5c92a81731d88a9883af8db7408db47fc81887c1f8b672e"},
|
||||
{file = "ruff-0.6.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d812615525a34ecfc07fd93f906ef5b93656be01dfae9a819e31caa6cfe758a1"},
|
||||
{file = "ruff-0.6.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:faaa4060f4064c3b7aaaa27328080c932fa142786f8142aff095b42b6a2eb631"},
|
||||
{file = "ruff-0.6.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99d7ae0df47c62729d58765c593ea54c2546d5de213f2af2a19442d50a10cec9"},
|
||||
{file = "ruff-0.6.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9eb18dfd7b613eec000e3738b3f0e4398bf0153cb80bfa3e351b3c1c2f6d7b15"},
|
||||
{file = "ruff-0.6.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:c62bc04c6723a81e25e71715aa59489f15034d69bf641df88cb38bdc32fd1dbb"},
|
||||
{file = "ruff-0.6.1-py3-none-win32.whl", hash = "sha256:9fb4c4e8b83f19c9477a8745e56d2eeef07a7ff50b68a6998f7d9e2e3887bdc4"},
|
||||
{file = "ruff-0.6.1-py3-none-win_amd64.whl", hash = "sha256:c2ebfc8f51ef4aca05dad4552bbcf6fe8d1f75b2f6af546cc47cc1c1ca916b5b"},
|
||||
{file = "ruff-0.6.1-py3-none-win_arm64.whl", hash = "sha256:3bc81074971b0ffad1bd0c52284b22411f02a11a012082a76ac6da153536e014"},
|
||||
{file = "ruff-0.6.1.tar.gz", hash = "sha256:af3ffd8c6563acb8848d33cd19a69b9bfe943667f0419ca083f8ebe4224a3436"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3228,19 +3252,19 @@ test = ["array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "mpmath", "po
|
||||
|
||||
[[package]]
|
||||
name = "setuptools"
|
||||
version = "72.1.0"
|
||||
version = "73.0.0"
|
||||
description = "Easily download, build, install, upgrade, and uninstall Python packages"
|
||||
optional = true
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "setuptools-72.1.0-py3-none-any.whl", hash = "sha256:5a03e1860cf56bb6ef48ce186b0e557fdba433237481a9a625176c2831be15d1"},
|
||||
{file = "setuptools-72.1.0.tar.gz", hash = "sha256:8d243eff56d095e5817f796ede6ae32941278f542e0f941867cc05ae52b162ec"},
|
||||
{file = "setuptools-73.0.0-py3-none-any.whl", hash = "sha256:f2bfcce7ae1784d90b04c57c2802e8649e1976530bb25dc72c2b078d3ecf4864"},
|
||||
{file = "setuptools-73.0.0.tar.gz", hash = "sha256:3c08705fadfc8c7c445cf4d98078f0fafb9225775b2b4e8447e40348f82597c0"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
|
||||
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
|
||||
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
|
||||
core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
|
||||
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
|
||||
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "setuptools-scm"
|
||||
@@ -3299,13 +3323,13 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "soupsieve"
|
||||
version = "2.5"
|
||||
version = "2.6"
|
||||
description = "A modern CSS selector implementation for Beautiful Soup."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"},
|
||||
{file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"},
|
||||
{file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"},
|
||||
{file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3436,13 +3460,13 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,
|
||||
|
||||
[[package]]
|
||||
name = "typer"
|
||||
version = "0.12.3"
|
||||
version = "0.12.4"
|
||||
description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "typer-0.12.3-py3-none-any.whl", hash = "sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914"},
|
||||
{file = "typer-0.12.3.tar.gz", hash = "sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482"},
|
||||
{file = "typer-0.12.4-py3-none-any.whl", hash = "sha256:819aa03699f438397e876aa12b0d63766864ecba1b579092cc9fe35d886e34b6"},
|
||||
{file = "typer-0.12.4.tar.gz", hash = "sha256:c9c1613ed6a166162705b3347b8d10b661ccc5d95692654d0fb628118f2c34e6"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@@ -3543,42 +3567,42 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)",
|
||||
|
||||
[[package]]
|
||||
name = "uvloop"
|
||||
version = "0.19.0"
|
||||
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.19.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e"},
|
||||
{file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428"},
|
||||
{file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8"},
|
||||
{file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849"},
|
||||
{file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957"},
|
||||
{file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd"},
|
||||
{file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef"},
|
||||
{file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2"},
|
||||
{file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1"},
|
||||
{file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24"},
|
||||
{file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533"},
|
||||
{file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12"},
|
||||
{file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650"},
|
||||
{file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec"},
|
||||
{file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc"},
|
||||
{file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6"},
|
||||
{file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593"},
|
||||
{file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3"},
|
||||
{file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd"},
|
||||
{file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd"},
|
||||
{file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be"},
|
||||
{file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797"},
|
||||
{file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d"},
|
||||
{file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7"},
|
||||
{file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b"},
|
||||
{file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67"},
|
||||
{file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7"},
|
||||
{file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256"},
|
||||
{file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17"},
|
||||
{file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5"},
|
||||
{file = "uvloop-0.19.0.tar.gz", hash = "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd"},
|
||||
{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]
|
||||
@@ -3999,13 +4023,13 @@ repair = ["scipy (>=1.6.3)"]
|
||||
|
||||
[[package]]
|
||||
name = "zipp"
|
||||
version = "3.19.2"
|
||||
version = "3.20.0"
|
||||
description = "Backport of pathlib-compatible object wrapper for zip files"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"},
|
||||
{file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"},
|
||||
{file = "zipp-3.20.0-py3-none-any.whl", hash = "sha256:58da6168be89f0be59beb194da1250516fdaa062ccebd30127ac65d30045e10d"},
|
||||
{file = "zipp-3.20.0.tar.gz", hash = "sha256:0145e43d89664cfe1a2e533adc75adafed82fe2da404b4bbb6b026c0157bdb31"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
@@ -4036,4 +4060,4 @@ wsj = ["openbb-wsj"]
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = ">=3.9,<3.13"
|
||||
content-hash = "0427592575f683a8ace7b72a4682ae0e8ca8e088f51e999bde24cbd92db6ec87"
|
||||
content-hash = "99ed0794d2de365f2e5233bb53c33d9fd921e18f03ce5fb5e9fa5582cd46be4f"
|
||||
|
||||
19
openbb_platform/providers/bls/README.md
vendored
Normal file
19
openbb_platform/providers/bls/README.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# BLS Provider Extension
|
||||
|
||||
This extension integrates the BLS data provider into the OpenBB Platform.
|
||||
|
||||
## Installation
|
||||
|
||||
To install this extension from PyPI:
|
||||
|
||||
```console
|
||||
pip install openbb-bls
|
||||
```
|
||||
|
||||
To install the extension locally, run the following command in this folder:
|
||||
|
||||
```console
|
||||
poetry install
|
||||
```
|
||||
|
||||
Documentation available [here](https://docs.openbb.co/platform/developer_guide/contributing).
|
||||
1
openbb_platform/providers/bls/__init__.py
Normal file
1
openbb_platform/providers/bls/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
"""BLS Provider Extension."""
|
||||
21
openbb_platform/providers/bls/openbb_bls/__init__.py
Normal file
21
openbb_platform/providers/bls/openbb_bls/__init__.py
Normal file
@@ -0,0 +1,21 @@
|
||||
"""BLS Provider Module."""
|
||||
|
||||
from openbb_bls.models.search import BlsSearchFetcher
|
||||
from openbb_bls.models.series import BlsSeriesFetcher
|
||||
from openbb_core.provider.abstract.provider import Provider
|
||||
|
||||
bls_provider = Provider(
|
||||
name="bls",
|
||||
website="https://www.bls.gov/developers/api_signature_v2.htm",
|
||||
description="The Bureau of Labor Statistics' (BLS) Public Data Application Programming Interface (API)"
|
||||
+ " gives the public access to economic data from all BLS programs."
|
||||
+ " It is the Bureau's hope that talented developers and programmers will use the BLS Public Data API to create"
|
||||
+ " original, inventive applications with published BLS data.",
|
||||
credentials=["api_key"],
|
||||
fetcher_dict={
|
||||
"BlsSearch": BlsSearchFetcher,
|
||||
"BlsSeries": BlsSeriesFetcher,
|
||||
},
|
||||
repr_name="Bureau of Labor Statistics' (BLS) Public Data API",
|
||||
instructions="Sign up for a free API key here: https://data.bls.gov/registrationEngine/",
|
||||
)
|
||||
@@ -0,0 +1 @@
|
||||
"""BLS Provider Static Assets."""
|
||||
221
openbb_platform/providers/bls/openbb_bls/assets/bed_codes.json
vendored
Normal file
221
openbb_platform/providers/bls/openbb_bls/assets/bed_codes.json
vendored
Normal file
@@ -0,0 +1,221 @@
|
||||
{
|
||||
"bd": {
|
||||
"msa_code": {
|
||||
"00000": "National"
|
||||
},
|
||||
"state_code": {
|
||||
"00": "U.S. totals",
|
||||
"01": "Alabama",
|
||||
"02": "Alaska",
|
||||
"04": "Arizona",
|
||||
"05": "Arkansas",
|
||||
"06": "California",
|
||||
"08": "Colorado",
|
||||
"09": "Connecticut",
|
||||
"10": "Delaware",
|
||||
"11": "District of Columbia",
|
||||
"12": "Florida",
|
||||
"13": "Georgia",
|
||||
"15": "Hawaii",
|
||||
"16": "Idaho",
|
||||
"17": "Illinois",
|
||||
"18": "Indiana",
|
||||
"19": "Iowa",
|
||||
"20": "Kansas",
|
||||
"21": "Kentucky",
|
||||
"22": "Louisiana",
|
||||
"23": "Maine",
|
||||
"24": "Maryland",
|
||||
"25": "Massachusetts",
|
||||
"26": "Michigan",
|
||||
"27": "Minnesota",
|
||||
"28": "Mississippi",
|
||||
"29": "Missouri",
|
||||
"30": "Montana",
|
||||
"31": "Nebraska",
|
||||
"32": "Nevada",
|
||||
"33": "New Hampshire",
|
||||
"34": "New Jersey",
|
||||
"35": "New Mexico",
|
||||
"36": "New York",
|
||||
"37": "North Carolina",
|
||||
"38": "North Dakota",
|
||||
"39": "Ohio",
|
||||
"40": "Oklahoma",
|
||||
"41": "Oregon",
|
||||
"42": "Pennsylvania",
|
||||
"44": "Rhode Island",
|
||||
"45": "South Carolina",
|
||||
"46": "South Dakota",
|
||||
"47": "Tennessee",
|
||||
"48": "Texas",
|
||||
"49": "Utah",
|
||||
"50": "Vermont",
|
||||
"51": "Virginia",
|
||||
"53": "Washington",
|
||||
"54": "West Virginia",
|
||||
"55": "Wisconsin",
|
||||
"56": "Wyoming",
|
||||
"72": "Puerto Rico",
|
||||
"78": "Virgin Islands"
|
||||
},
|
||||
"county_code": {
|
||||
"000": "National"
|
||||
},
|
||||
"industry_code": {
|
||||
"000000": "Total private",
|
||||
"100000": "Goods-producing",
|
||||
"100010": "Natural resources and mining",
|
||||
"100020": "Construction",
|
||||
"100030": "Manufacturing",
|
||||
"200000": "Service-providing",
|
||||
"200010": "Wholesale trade",
|
||||
"200020": "Retail trade",
|
||||
"200030": "Transportation and warehousing",
|
||||
"200040": "Utilities",
|
||||
"200050": "Information",
|
||||
"200060": "Financial activities",
|
||||
"200070": "Professional and business services",
|
||||
"200080": "Education and health services",
|
||||
"200090": "Leisure and hospitality",
|
||||
"200100": "Other services (except public administration)",
|
||||
"300111": "Crop production",
|
||||
"300112": "Animal production and aquaculture",
|
||||
"300113": "Forestry and logging",
|
||||
"300114": "Hunting, fishing, and trapping",
|
||||
"300115": "Support activities for agriculture and forestry",
|
||||
"300211": "Oil and gas extraction",
|
||||
"300212": "Mining (except oil and gas)",
|
||||
"300213": "Support activities for mining",
|
||||
"300236": "Construction of buildings",
|
||||
"300237": "Heavy and civil engineering construction",
|
||||
"300238": "Specialty trade contractors",
|
||||
"300311": "Food manufacturing",
|
||||
"300312": "Beverage and tobacco product manufacturing",
|
||||
"300313": "Textile mills",
|
||||
"300314": "Textile product mills",
|
||||
"300315": "Apparel manufacturing",
|
||||
"300316": "Leather and allied product manufacturing",
|
||||
"300321": "Wood product manufacturing",
|
||||
"300322": "Paper Manufacturing",
|
||||
"300323": "Printing and related support activities",
|
||||
"300324": "Petroleum and coal products manufacturing",
|
||||
"300325": "Chemical manufacturing",
|
||||
"300326": "Plastics and rubber products manufacturing",
|
||||
"300327": "Nonmetallic mineral product manufacturing",
|
||||
"300331": "Primary metal manufacturing",
|
||||
"300332": "Fabricated metal product manufacturing",
|
||||
"300333": "Machinery manufacturing",
|
||||
"300334": "Computer and electronic product manufacturing",
|
||||
"300335": "Electrical equipment, appliance, and component manufacturing",
|
||||
"300336": "Transportation equipment manufacturing",
|
||||
"300337": "Furniture and related product manufacturing",
|
||||
"300339": "Miscellaneous manufacturing",
|
||||
"300423": "Merchant wholesalers, durable goods",
|
||||
"300424": "Merchant wholesalers, nondurable goods",
|
||||
"300425": "Wholesale trade agents and brokers",
|
||||
"300441": "Motor vehicle and parts dealers",
|
||||
"300444": "Building material and garden equipment and supplies dealers",
|
||||
"300445": "Food and beverage stores",
|
||||
"300481": "Air transportation",
|
||||
"300483": "Water transportation",
|
||||
"300484": "Truck transportation",
|
||||
"300485": "Transit and ground passenger transportation",
|
||||
"300486": "Pipeline transportation",
|
||||
"300487": "Scenic and sightseeing transportation",
|
||||
"300488": "Support activities for transportation",
|
||||
"300492": "Couriers and messengers",
|
||||
"300493": "Warehousing and storage",
|
||||
"300512": "Motion picture and sound recording industries",
|
||||
"300517": "Telecommunications",
|
||||
"300518": "Computing infracstructure providers, data processing, web hosting, and related services",
|
||||
"300519": "Web search portals, libraries, archives, and other information services",
|
||||
"300522": "Credit intermediation and related activities",
|
||||
"300523": "Securities, commodity contracts, and other financial investments and related activities",
|
||||
"300524": "Insurance carriers and related activities",
|
||||
"300525": "Funds, trusts, and other financial vehicles",
|
||||
"300531": "Real estate",
|
||||
"300532": "Rental and leasing services",
|
||||
"300533": "Lessors of nonfinancial intangible assets (except copyrighted works)",
|
||||
"300541": "Professional, scientific, and technical services",
|
||||
"300551": "Management of companies and enterprises",
|
||||
"300561": "Administrative and support services",
|
||||
"300562": "Waste management and remediation services",
|
||||
"300611": "Educational services",
|
||||
"300621": "Ambulatory health care services",
|
||||
"300622": "Hospitals",
|
||||
"300623": "Nursing and residential care facilities",
|
||||
"300624": "Social assistance",
|
||||
"300711": "Performing arts, spectator sports, and related industries",
|
||||
"300712": "Museums, historical sites, and similar institutions",
|
||||
"300713": "Amusement, gambling, and recreation industries",
|
||||
"300721": "Accommodation",
|
||||
"300722": "Food services and drinking places",
|
||||
"300811": "Repair and maintenance",
|
||||
"300812": "Personal and laundry services",
|
||||
"300813": "Religious, grantmaking, civic, professional, and similar organizations"
|
||||
},
|
||||
"unitanalysis_code": {
|
||||
"1": "Establishment"
|
||||
},
|
||||
"dataelement_code": {
|
||||
"1": "Employment",
|
||||
"2": "Number of Establishments"
|
||||
},
|
||||
"sizeclass_code": {
|
||||
"00": "All size classes",
|
||||
"01": "1 to 4 employees",
|
||||
"02": "5 to 9 employees",
|
||||
"03": "10 to 19 employees",
|
||||
"04": "20 to 49 employees",
|
||||
"05": "50 to 99 employees",
|
||||
"06": "100 to 249 employees",
|
||||
"07": "250 to 499 employees",
|
||||
"08": "500 to 999 employees",
|
||||
"09": "1,000 or more employees",
|
||||
"10": "1 job",
|
||||
"11": "2 jobs",
|
||||
"12": "3 jobs",
|
||||
"13": "4 jobs",
|
||||
"14": "5 jobs",
|
||||
"15": "6 jobs",
|
||||
"16": "7 jobs",
|
||||
"17": "8 jobs",
|
||||
"18": "9 jobs",
|
||||
"19": "10 jobs",
|
||||
"20": "11-14 jobs",
|
||||
"21": "15-19 jobs",
|
||||
"22": "20-24 jobs",
|
||||
"23": "25-29 jobs",
|
||||
"24": "30-39 jobs",
|
||||
"25": "40-49 jobs",
|
||||
"26": "50-74 jobs",
|
||||
"27": "75-99 jobs",
|
||||
"28": "100 or more jobs",
|
||||
"31": "1 to 4 jobs",
|
||||
"32": "5 to 19 jobs",
|
||||
"33": "20 or more jobs"
|
||||
},
|
||||
"dataclass_code": {
|
||||
"01": "Gross Job Gains",
|
||||
"02": "Expansions",
|
||||
"03": "Openings",
|
||||
"04": "Gross Job Losses",
|
||||
"05": "Contractions",
|
||||
"06": "Closings",
|
||||
"07": "Establishment Births",
|
||||
"08": "Establishment Deaths"
|
||||
},
|
||||
"ratelevel_code": {
|
||||
"L": "Level",
|
||||
"R": "Rate"
|
||||
},
|
||||
"ownership_code": {
|
||||
"5": "Private Sector"
|
||||
},
|
||||
"footnote_code": {
|
||||
"1": "Total private includes unclassified sector, not shown separately",
|
||||
"2": "An administrative event occurred during this quarter"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
openbb_platform/providers/bls/openbb_bls/assets/bed_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/bed_series.xz
vendored
Normal file
Binary file not shown.
1375
openbb_platform/providers/bls/openbb_bls/assets/bls_assets.json
vendored
Normal file
1375
openbb_platform/providers/bls/openbb_bls/assets/bls_assets.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1199
openbb_platform/providers/bls/openbb_bls/assets/cpi_codes.json
vendored
Normal file
1199
openbb_platform/providers/bls/openbb_bls/assets/cpi_codes.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
openbb_platform/providers/bls/openbb_bls/assets/cpi_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/cpi_series.xz
vendored
Normal file
Binary file not shown.
1155
openbb_platform/providers/bls/openbb_bls/assets/cps_codes.json
vendored
Normal file
1155
openbb_platform/providers/bls/openbb_bls/assets/cps_codes.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
openbb_platform/providers/bls/openbb_bls/assets/cps_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/cps_series.xz
vendored
Normal file
Binary file not shown.
430
openbb_platform/providers/bls/openbb_bls/assets/ec_codes.json
vendored
Normal file
430
openbb_platform/providers/bls/openbb_bls/assets/ec_codes.json
vendored
Normal file
@@ -0,0 +1,430 @@
|
||||
{
|
||||
"cm": {
|
||||
"owner_code": {
|
||||
"1": "Civilian workers",
|
||||
"2": "Private industry workers",
|
||||
"3": "State and local government workers"
|
||||
},
|
||||
"industry_code": {
|
||||
"000000": "All workers",
|
||||
"220000": "Utilities",
|
||||
"230000": "Construction",
|
||||
"300000": "Manufacturing",
|
||||
"336411": "Aircraft manufacturing",
|
||||
"400000": "Trade, transportation, and utilities",
|
||||
"412000": "Retail trade",
|
||||
"420000": "Wholesale trade",
|
||||
"430000": "Transportation and warehousing",
|
||||
"510000": "Information",
|
||||
"520000": "Finance and insurance",
|
||||
"520A00": "Financial activities",
|
||||
"522000": "Credit intermediation",
|
||||
"524000": "Insurance carriers",
|
||||
"530000": "Real estate and rental and leasing",
|
||||
"540000": "Professional, scientific, and technical services",
|
||||
"540A00": "Professional and business services",
|
||||
"560000": "Administrative and support and waste management and remediation services",
|
||||
"600000": "Education and health services",
|
||||
"610000": "Educational services",
|
||||
"611100": "Elementary and secondary schools",
|
||||
"612000": "Junior colleges, colleges, universities, and professional schools",
|
||||
"620000": "Health care and social assistance",
|
||||
"622000": "Hospitals",
|
||||
"623000": "Nursing and residential care facilities",
|
||||
"623100": "Nursing care facilities",
|
||||
"700000": "Leisure and hospitality",
|
||||
"720000": "Accommodation and food services",
|
||||
"810000": "Other services (except public administration)",
|
||||
"920000": "Public administration",
|
||||
"DISCON": "Discontinued codes",
|
||||
"G00000": "Goods producing",
|
||||
"S00000": "Service providing"
|
||||
},
|
||||
"occupation_code": {
|
||||
"000000": "All workers",
|
||||
"111300": "Management, business, and financial occupations",
|
||||
"112900": "Management, professional and related occupations",
|
||||
"152900": "Professional and related occupations",
|
||||
"250001": "Teachers",
|
||||
"252000": "Primary, secondary, and special education school teachers",
|
||||
"291111": "Registered nurses",
|
||||
"313900": "Service occupations",
|
||||
"410000": "Sales and related occupations",
|
||||
"414300": "Sales and office occupations",
|
||||
"430000": "Office and administrative support occupations",
|
||||
"454700": "Construction, and extraction, farming, fishing, and forestry occupations",
|
||||
"454900": "Natural resources, construction, and maintenance occupations",
|
||||
"470000": "Construction and extraction occupations",
|
||||
"490000": "Installation, maintenance, and repair occupations",
|
||||
"510000": "Production occupations",
|
||||
"515300": "Production, transportation, and material moving occupations",
|
||||
"530000": "Transportation and material moving occupations",
|
||||
"DISCON": "Discontinued Codes"
|
||||
},
|
||||
"subcell_code": {
|
||||
"00": "All workers",
|
||||
"01": "Less than 100 workers",
|
||||
"02": "Less than 50 workers",
|
||||
"04": "50-99 workers",
|
||||
"05": "100 workers or more",
|
||||
"06": "100-499 workers",
|
||||
"07": "500 workers or more",
|
||||
"23": "Union",
|
||||
"24": "Nonunion",
|
||||
"25": "Full time",
|
||||
"26": "Part time",
|
||||
"AA": "Establishment Size",
|
||||
"AB": "Region and Division",
|
||||
"AC": "Metropolitan Statistical Areas",
|
||||
"AD": "Bargaining Status",
|
||||
"AE": "Full-time and Part-time Work Status",
|
||||
"AF": "Time and Incentive Status",
|
||||
"AG": "Average Wage",
|
||||
"AH": "Civilian Wage Percentiles",
|
||||
"AI": "Private Wage Percentiles",
|
||||
"AJ": "Government Wage Percentiles",
|
||||
"AK": "Plan Sponsor"
|
||||
},
|
||||
"area_code": {
|
||||
"00122": "Atlanta-Athens-Clarke County-Sandy Springs, GA CSA",
|
||||
"00148": "Boston-Worcester-Providence, MA-RI-NH-CT CSA",
|
||||
"00176": "Chicago-Naperville, IL-IN-WI CSA",
|
||||
"00206": "Dallas-Fort Worth, TX-OK CSA",
|
||||
"00220": "Detroit-Warren-Ann Arbor, MI CSA",
|
||||
"00288": "Houston-The Woodlands, TX CSA",
|
||||
"00348": "Los Angeles-Long Beach, CA CSA",
|
||||
"00378": "Minneapolis-St. Paul, MN-WI CSA",
|
||||
"00408": "New York-Newark, NY-NJ-CT-PA CSA",
|
||||
"00428": "Philadelphia-Reading-Camden, PA-NJ-DE-MD CSA",
|
||||
"00488": "San Jose-San Francisco-Oakland, CA CSA",
|
||||
"00500": "Seattle-Tacoma, WA CSA",
|
||||
"00548": "Washington-Baltimore-Arlington, DC-MD-VA-WV-PA CSA",
|
||||
"33100": "Miami-Fort Lauderdale-Port St. Lucie, FL CSA",
|
||||
"38060": "Phoenix-Mesa-Scottsdale, AZ MSA",
|
||||
"98100": "Northeast census region",
|
||||
"98200": "South census region",
|
||||
"98300": "Midwest census region",
|
||||
"98400": "West census region",
|
||||
"98999": "Regions, divisions, and statistical areas",
|
||||
"99100": "New England census division",
|
||||
"99120": "Middle Atlantic census division",
|
||||
"99130": "East South Central census division",
|
||||
"99140": "South Atlantic census division",
|
||||
"99150": "East North Central census division",
|
||||
"99160": "West North Central census division",
|
||||
"99170": "West South Central census division",
|
||||
"99180": "Mountain census division",
|
||||
"99190": "Pacific census division",
|
||||
"99200": "Metropolitan statistical areas",
|
||||
"99210": "Metropolitan",
|
||||
"99220": "Nonmetropolitan",
|
||||
"99999": "United States (National)"
|
||||
},
|
||||
"datatype_code": {
|
||||
"D": "Cost of compensation (Cost per hour worked)",
|
||||
"L": "Average employer cost per employee hour worked at 50th percentile (median), constant dollar",
|
||||
"M": "Average employer cost per employee worked at 50th percentile (median), current dollar",
|
||||
"N": "Average employer cost per employee hour worked at 90th percentile, current dollar",
|
||||
"P": "Percent of total compensation",
|
||||
"R": "Average employer cost per employee hour worked at 90th percentile, constant dollar",
|
||||
"T": "Average employer cost per employee hour worked at 10th percentile, current dollar",
|
||||
"X": "Average employer cost per employee hour worked at 10th percentile, constant dollar"
|
||||
},
|
||||
"estimate_code": {
|
||||
"01": "Total compensation",
|
||||
"02": "Wages and salaries",
|
||||
"03": "Total benefits",
|
||||
"04": "Paid leave",
|
||||
"05": "Vacation",
|
||||
"06": "Holiday",
|
||||
"07": "Sick leave",
|
||||
"08": "Personal leave",
|
||||
"09": "Supplemental pay",
|
||||
"10": "Overtime and premium pay",
|
||||
"11": "Shift differentials",
|
||||
"12": "Nonproduction bonuses",
|
||||
"13": "Insurance",
|
||||
"14": "Life insurance",
|
||||
"15": "Health insurance",
|
||||
"16": "Short-term disability insurance",
|
||||
"17": "Long-term disability insurance",
|
||||
"18": "Retirement and savings",
|
||||
"19": "Defined benefit",
|
||||
"20": "Defined contribution",
|
||||
"21": "Legally Required benefits",
|
||||
"22": "Social Security and Medicare",
|
||||
"23": "Social Security",
|
||||
"24": "Medicare",
|
||||
"25": "Federal unemployment insurance",
|
||||
"26": "State unemployment insurance",
|
||||
"27": "Workers' compensation",
|
||||
"28": "Other benefits"
|
||||
},
|
||||
"footnote_code": {
|
||||
"2": "Registered Nurses estimates from December 2013 forward are based on the 2010 Standard Occupational Classification. For more information on classification changes, please see www.bls.gov/soc.",
|
||||
"3": "Estimates from December 2013 to March 2014 for this series were corrected, details are available at www.bls.gov/bls/ecec_correction_091014.htm",
|
||||
"4": "The relative standard error for this estimate is equal to or greater than 30 percent.",
|
||||
"5": "The relative standard error is not available for percent of total compensation estimates.",
|
||||
"6": "The relative standard error for this estimate is not currently available.",
|
||||
"8": "The relative standard error is not available as the cost per hour worked is $0.01 or less.",
|
||||
"A": "Cost per hour worked is $0.01 or less.",
|
||||
"B": "Less than .05 percent.",
|
||||
"C": "See <a href=\"http://www.bls.gov/ncs/ect/mapnote.htm#C\" target=\"new\">www.bls.gov/ncs/ect/mapnote.htm</a> for the definition of civilian workers.",
|
||||
"D": "See <a href=\"http://www.bls.gov/ncs/ect/mapnote.htm#D\" target=\"new\">www.bls.gov/ncs/ect/mapnote.htm</a> for the definition of the goods-producing sector.",
|
||||
"E": "See <a href=\"http://www.bls.gov/ncs/ect/mapnote.htm#E\" target=\"new\">www.bls.gov/ncs/ect/mapnote.htm</a> for the definition of the service-providing sector.",
|
||||
"F": "Includes premium pay for work in addition to the regular work schedule (for example, overtime).",
|
||||
"G": "Comprises the Old-Age, Survivors, and Disability Insurance (OASDI) program.",
|
||||
"H": "Includes severance pay and supplemental unemployment benefits.",
|
||||
"I": "The states that compose the New England census division are: CT, ME, MA, NH, RI, and VT.",
|
||||
"J": "The states that compose the Middle Atlantic census division are: NJ, NY, and PA.",
|
||||
"K": "The states that compose the South Atlantic census division are: DE, DC, FL, GA, MD, NC, SC, VA, and WV.",
|
||||
"L": "The states that compose the East South Central census division are: AL, KY, MS, and TN.",
|
||||
"M": "The states that compose the West South Central census division are: AR, LA, OK, and TX.",
|
||||
"N": "The states that compose the East North Central census division are: IL, IN, MI, OH, and WI.",
|
||||
"O": "The states that compose the West North Central census division are: IA, KS, MN, MO, NE, ND, and SD.",
|
||||
"S": "The states that compose the Mountain census division are: AZ, CO, ID, MT, NV, NM, UT, and WY.",
|
||||
"T": "The states that compose the Pacific census division are: AK, CA, HI, OR, and WA.",
|
||||
"W": "Includes all teachers; see <a href=\"http://www.bls.gov/ncs/ect/mapnote.htm#W\" target=\"new\">www.bls.gov/ncs/ect/mapnote.htm</a> for details.",
|
||||
"X": "See <a href=\"http://www.bls.gov/ncs/ect/mapnote.htm#X\" target=\"new\">www.bls.gov/ncs/ect/mapnote.htm</a> which is about the State and local government workforce.",
|
||||
"Y": "See <a href=\"http://www.bls.gov/ncs/ect/mapnote.htm#Y\" target=\"new\">www.bls.gov/ncs/ect/mapnote.htm</a> for details regarding the Other benefits series.",
|
||||
"Z": "Series discontinued beginning December 2008."
|
||||
}
|
||||
},
|
||||
"cc": {
|
||||
"sector_code": {
|
||||
"1": "All Civilian",
|
||||
"2": "Private industry",
|
||||
"4": "Private goods producing",
|
||||
"5": "Private service producing",
|
||||
"6": "Private manufacturing",
|
||||
"7": "Private nonmanufacturing",
|
||||
"8": "Private health services",
|
||||
"9": "Private hospitals",
|
||||
"0": "Private nursing homes",
|
||||
"3": "State and local government"
|
||||
},
|
||||
"benefit_code": {
|
||||
"10000": "Total compensation",
|
||||
"20000": "Wages and salaries",
|
||||
"30000": "Total benefits",
|
||||
"40000": "Paid leave",
|
||||
"50000": "Supplemental pay",
|
||||
"60000": "Insurance",
|
||||
"70000": "Retirement and savings",
|
||||
"80000": "Legally required benefits",
|
||||
"90000": "Other benefits",
|
||||
"A0000": "Vacation",
|
||||
"B0000": "Holiday",
|
||||
"C0000": "Sick",
|
||||
"D0000": "Other",
|
||||
"E0000": "Premium",
|
||||
"F0000": "Shift differentials",
|
||||
"G0000": "Nonproduction bonuses",
|
||||
"H0000": "Life",
|
||||
"I0000": "Health",
|
||||
"J0000": "Short-term disability",
|
||||
"K0000": "Long-term disability",
|
||||
"L0000": "Pensions",
|
||||
"M0000": "Savings and thrift",
|
||||
"P0000": "Social Security",
|
||||
"Q0000": "Old Age, Survivors, and Disability Income (OASDI)",
|
||||
"R0000": "Medicare",
|
||||
"S0000": "Federal unemployment insurance",
|
||||
"T0000": "State unemployment insurance",
|
||||
"U0000": "Workers' compensation",
|
||||
"V0000": "Defined benefit",
|
||||
"W0000": "Defined contribution"
|
||||
},
|
||||
"industryocc_code": {
|
||||
"000001": "Occupational group",
|
||||
"000002": "Industry",
|
||||
"000003": "Region",
|
||||
"000004": "Union/Nonunion",
|
||||
"000006": "Metropolitan/Nonmetropolitan",
|
||||
"000008": "Aerospace",
|
||||
"000009": "Full-time/Part-time",
|
||||
"000010": "Establishment size",
|
||||
"002000": "1-99 workers",
|
||||
"004000": "100 or more workers",
|
||||
"006000": "100-499 workers",
|
||||
"008000": "500 or more workers",
|
||||
"012000": "1-99 workers, goods producing",
|
||||
"014000": "100 or more workers, goods producing",
|
||||
"016000": "100-499 workers, goods producing",
|
||||
"018000": "500 or more workers, goods producing",
|
||||
"022000": "1-99 workers, service producing",
|
||||
"024000": "100 or more workers, service producing",
|
||||
"026000": "100-499 workers, service producing",
|
||||
"028000": "500 or more workers, service producing",
|
||||
"032000": "1-99 workers, white collar",
|
||||
"034000": "100 or more workers, white collar",
|
||||
"036000": "100-499 workers, white collar",
|
||||
"038000": "500 or more workers, white collar",
|
||||
"042000": "1-99 workers, blue collar",
|
||||
"044000": "100 or more workers, blue collar",
|
||||
"046000": "100-499 workers, blue collar",
|
||||
"048000": "500 or more workers, blue collar",
|
||||
"100000": "All workers",
|
||||
"101000": "Production and nonsupervisory occupations",
|
||||
"106000": "Civilian workers, excluding sales",
|
||||
"107000": "Civilian white collar workers, excluding sales",
|
||||
"110000": "White collar workers",
|
||||
"111000": "Executive, administrative, and managerial",
|
||||
"112000": "Professional specialty and technical occupations",
|
||||
"113000": "Sales workers",
|
||||
"114000": "Administrative support, including clerical workers",
|
||||
"115000": "Professional specialty occupations",
|
||||
"116000": "Nurses",
|
||||
"117000": "Teachers",
|
||||
"118000": "Technical",
|
||||
"120000": "Blue collar occupations",
|
||||
"121000": "Precision production, craft, and repair occupation",
|
||||
"122000": "Machine operators, assemblers, and inspectors",
|
||||
"123000": "Transportation and material moving occupations",
|
||||
"124000": "Handlers, equipment cleaners, helpers, and laborer",
|
||||
"130000": "Service occupations",
|
||||
"131000": "Private industry workers, excluding sales",
|
||||
"132000": "Private industry white collar workers, excluding s",
|
||||
"137000": "Wholesale and retail trade occupations, excluding",
|
||||
"138000": "Finance, insurance, and real estate occupations, e",
|
||||
"140000": "Wholesale trade occupations, excluding sales",
|
||||
"151000": "White collar occupations, transportation equipment",
|
||||
"152000": "Professional and technical occupations, transporta",
|
||||
"153000": "Executive, administrative, and managerial occupati",
|
||||
"154000": "Blue collar occupations, transportation equipment",
|
||||
"155000": "Service occupations, transportation equipment",
|
||||
"161000": "White collar occupations, aicraft manufacturing",
|
||||
"164000": "Blue collar occupations, aircraft manufacturing",
|
||||
"171000": "White collar occupations, transportation and publi",
|
||||
"174000": "Blue collar occupations, transportation and public",
|
||||
"181000": "White collar occupations, communications",
|
||||
"184000": "Blue collar occupations, communications",
|
||||
"191000": "White collar occupations, utilities",
|
||||
"194000": "Blue collar occupations, utilities",
|
||||
"200000": "Goods producing industries",
|
||||
"201000": "Goods producing, excluding sales",
|
||||
"202000": "Goods producing, white collar occupations",
|
||||
"203000": "Goods producing, white collar occupations, excludi",
|
||||
"204000": "Goods producing, blue collar occupations",
|
||||
"206000": "Goods producing, service occupations",
|
||||
"210000": "Service producing industries",
|
||||
"211000": "Service producing, excluding sales",
|
||||
"212000": "Service producing, white collar occupations",
|
||||
"213000": "Service producing, white collar occupations, exclu",
|
||||
"214000": "Service producing, blue collar occupations",
|
||||
"216000": "Service producing, service occupations",
|
||||
"220000": "Nonmanufacturing",
|
||||
"221000": "Nonmanufacturing, white collar occupations",
|
||||
"222000": "Nonmanufacturing, white collar occupations, exclud",
|
||||
"223000": "Nonmanufacturing, blue collar occupations",
|
||||
"225000": "Nonmanufacturing, service occupations",
|
||||
"230000": "Construction",
|
||||
"237000": "Manufacturing, transportation equipment",
|
||||
"238000": "Manufacturing, aircraft",
|
||||
"240000": "Manufacturing",
|
||||
"241000": "Manufacturing, durable goods",
|
||||
"242000": "Manufacturing, nondurables",
|
||||
"243000": "Manufacturing, white collar occupations",
|
||||
"250000": "Transportation and public utilities",
|
||||
"251000": "Transportation",
|
||||
"252000": "Public utilities",
|
||||
"253000": "Communications",
|
||||
"254000": "Electric, gas, and sanitation",
|
||||
"260000": "Wholesale and retail trade",
|
||||
"261000": "Wholesale trade",
|
||||
"262000": "Retail trade",
|
||||
"263000": "General merchandise stores",
|
||||
"264000": "Food stores",
|
||||
"270000": "Finance, insurance, and real estate",
|
||||
"271000": "Banking",
|
||||
"272000": "Insurance",
|
||||
"273000": "Insurance, excluding sales",
|
||||
"280000": "Services",
|
||||
"281000": "Schools",
|
||||
"282000": "Elementary and secondary schools",
|
||||
"284000": "Health services",
|
||||
"285000": "Hospitals",
|
||||
"286000": "Nursing homes",
|
||||
"289000": "Educational services",
|
||||
"290000": "Public administration",
|
||||
"299000": "Higher education",
|
||||
"310000": "Northeast",
|
||||
"320000": "South",
|
||||
"330000": "Midwest",
|
||||
"340000": "West",
|
||||
"400000": "Union workers",
|
||||
"402000": "Union, blue collar",
|
||||
"406000": "Union, manufacturing, blue collar",
|
||||
"410000": "Union, manufacturing",
|
||||
"420000": "Union, nonmanufacturing",
|
||||
"430000": "Union, goods producing",
|
||||
"440000": "Union, service producing",
|
||||
"500000": "Nonunion workers",
|
||||
"502000": "Nonunion, blue collar",
|
||||
"506000": "Nonunion, manufacturing, blue collar",
|
||||
"510000": "Nonunion, manufacturing",
|
||||
"520000": "Nonunion, nonmanufacturing",
|
||||
"530000": "Nonunion, goods producing",
|
||||
"540000": "Nonunion, service producing",
|
||||
"600000": "Metropolitan areas",
|
||||
"700000": "Nonmetropolitan areas",
|
||||
"800000": "Aircraft engine parts",
|
||||
"801000": "White collar",
|
||||
"802000": "Professional, technical, and specialty",
|
||||
"805000": "Managers",
|
||||
"806000": "Clerical",
|
||||
"807000": "Blue collar",
|
||||
"808000": "Craft",
|
||||
"809000": "Operatives",
|
||||
"810000": "Aircraft",
|
||||
"811000": "White collar",
|
||||
"812000": "Blue collar",
|
||||
"820000": "Engines",
|
||||
"821000": "White collar",
|
||||
"822000": "Blue collar",
|
||||
"830000": "Parts",
|
||||
"831000": "White collar",
|
||||
"832000": "Blue collar",
|
||||
"840000": "Guided missiles",
|
||||
"841000": "White collar",
|
||||
"842000": "Blue collar",
|
||||
"910000": "All full-time workers",
|
||||
"911000": "Full-time, white collar",
|
||||
"912000": "Full-time, sales",
|
||||
"913000": "Full-time, administrative",
|
||||
"914000": "Full-time, blue collar",
|
||||
"915000": "Full-time, service",
|
||||
"921000": "Full-time, goods producing",
|
||||
"922000": "Full-time, construction",
|
||||
"923000": "Full-time, manufacturing",
|
||||
"924000": "Full-time, service producing",
|
||||
"925000": "Full-time, transportation",
|
||||
"926000": "Full-time, wholesale trade",
|
||||
"927000": "Full-time, retail trade",
|
||||
"928000": "Full-time, finance, insurance, and real estate",
|
||||
"929000": "Full-time, services",
|
||||
"950000": "All part-time workers",
|
||||
"951000": "Part-time, white collar",
|
||||
"952000": "Part-time, sales",
|
||||
"953000": "Part-time, administrative",
|
||||
"954000": "Part-time, blue collar",
|
||||
"955000": "Part-time, service",
|
||||
"961000": "Part-time, goods producing",
|
||||
"963000": "Part-time, manufacturing",
|
||||
"964000": "Part-time, service producing",
|
||||
"965000": "Part-time, transportation",
|
||||
"966000": "Part-time, wholesale trade",
|
||||
"967000": "Part-time, retail trade",
|
||||
"968000": "Part-time, finance, insurance, and real estate",
|
||||
"969000": "Part-time, services"
|
||||
},
|
||||
"costfactor_code": {
|
||||
"D": "Cost of compensation (Cost per hour worked)",
|
||||
"P": "Percent of total compensation"
|
||||
},
|
||||
"footnote_code": {
|
||||
"A": "Cost per hour worked is $0.01 or less.",
|
||||
"B": "Less than .05 percent."
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
openbb_platform/providers/bls/openbb_bls/assets/ec_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/ec_series.xz
vendored
Normal file
Binary file not shown.
1136
openbb_platform/providers/bls/openbb_bls/assets/ip_codes.json
vendored
Normal file
1136
openbb_platform/providers/bls/openbb_bls/assets/ip_codes.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
openbb_platform/providers/bls/openbb_bls/assets/ip_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/ip_series.xz
vendored
Normal file
Binary file not shown.
172
openbb_platform/providers/bls/openbb_bls/assets/jolts_codes.json
vendored
Normal file
172
openbb_platform/providers/bls/openbb_bls/assets/jolts_codes.json
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"jl": {
|
||||
"industry_code": {
|
||||
"000000": "Total Nonfarm",
|
||||
"010000": "Total Private",
|
||||
"100000": "Mining",
|
||||
"200000": "Construction",
|
||||
"300000": "Manufacturing",
|
||||
"310000": "Durable goods manufacturing",
|
||||
"320000": "Nondurable goods manufacturing",
|
||||
"400000": "Transportation and public utilities",
|
||||
"500000": "Wholesale trade",
|
||||
"600000": "Retail trade",
|
||||
"700000": "Finance, insurance, and real estate",
|
||||
"800000": "Services",
|
||||
"900000": "Government",
|
||||
"910000": "Federal",
|
||||
"930000": "State and local"
|
||||
},
|
||||
"region_code": {
|
||||
"00": "Total US",
|
||||
"MW": "Midwest (Only available for Total Nonfarm)",
|
||||
"NE": "Northeast (Only available for Total Nonfarm)",
|
||||
"SO": "South (Only available for Total Nonfarm)",
|
||||
"WE": "West (Only available for Total Nonfarm)"
|
||||
},
|
||||
"dataelement_code": {
|
||||
"HI": "Hires",
|
||||
"JO": "Job openings",
|
||||
"LD": "Layoffs and discharges",
|
||||
"OS": "Other separations",
|
||||
"QU": "Quits",
|
||||
"TS": "Total separations"
|
||||
},
|
||||
"ratelevel_code": {
|
||||
"L": "Level - In Thousands",
|
||||
"R": "Rate"
|
||||
},
|
||||
"footnote_code": {
|
||||
"p": "preliminary",
|
||||
"r": "revised",
|
||||
"1": "The job openings rate is the number of openings divided by (employment plus job openings).",
|
||||
"2": "The hires rate is the number of hires as a percent of total employment.",
|
||||
"3": "The separations rate is the number of total separations as a percent of total employment.",
|
||||
"4": "The quits rate is the number of quits as a percent of total employment.",
|
||||
"5": "The layoffs & discharges rate is the number of L&D as a percent of total employment.",
|
||||
"6": "The other separations rate is the number of other seps as a percent of total employment.",
|
||||
"7": "Does not meet BLS disclosure standards",
|
||||
"8": "Data round to zero",
|
||||
"9": "These estimates are not seasonally adjusted"
|
||||
}
|
||||
},
|
||||
"jt": {
|
||||
"industry_code": {
|
||||
"000000": "Total nonfarm",
|
||||
"100000": "Total private",
|
||||
"110099": "Mining and logging",
|
||||
"230000": "Construction",
|
||||
"300000": "Manufacturing",
|
||||
"320000": "Durable goods manufacturing",
|
||||
"340000": "Nondurable goods manufacturing",
|
||||
"400000": "Trade, transportation, and utilities",
|
||||
"420000": "Wholesale trade",
|
||||
"440000": "Retail trade",
|
||||
"480099": "Transportation, warehousing, and utilities",
|
||||
"510000": "Information",
|
||||
"510099": "Financial activities",
|
||||
"520000": "Finance and insurance",
|
||||
"530000": "Real estate and rental and leasing",
|
||||
"540099": "Professional and business services",
|
||||
"600000": "Private education and health services",
|
||||
"610000": "Private educational services",
|
||||
"620000": "Health care and social assistance",
|
||||
"700000": "Leisure and hospitality",
|
||||
"710000": "Arts, entertainment, and recreation",
|
||||
"720000": "Accommodation and food services",
|
||||
"810000": "Other services",
|
||||
"900000": "Government",
|
||||
"910000": "Federal",
|
||||
"920000": "State and local",
|
||||
"923000": "State and local government education",
|
||||
"929000": "State and local government, excluding education"
|
||||
},
|
||||
"state_code": {
|
||||
"00": "Total US",
|
||||
"01": "Alabama",
|
||||
"02": "Alaska",
|
||||
"04": "Arizona",
|
||||
"05": "Arkansas",
|
||||
"06": "California",
|
||||
"08": "Colorado",
|
||||
"09": "Connecticut",
|
||||
"10": "Delaware",
|
||||
"11": "District of Columbia",
|
||||
"12": "Florida",
|
||||
"13": "Georgia",
|
||||
"15": "Hawaii",
|
||||
"16": "Idaho",
|
||||
"17": "Illinois",
|
||||
"18": "Indiana",
|
||||
"19": "Iowa",
|
||||
"20": "Kansas",
|
||||
"21": "Kentucky",
|
||||
"22": "Louisiana",
|
||||
"23": "Maine",
|
||||
"24": "Maryland",
|
||||
"25": "Massachusetts",
|
||||
"26": "Michigan",
|
||||
"27": "Minnesota",
|
||||
"28": "Mississippi",
|
||||
"29": "Missouri",
|
||||
"30": "Montana",
|
||||
"31": "Nebraska",
|
||||
"32": "Nevada",
|
||||
"33": "New Hampshire",
|
||||
"34": "New Jersey",
|
||||
"35": "New Mexico",
|
||||
"36": "New York",
|
||||
"37": "North Carolina",
|
||||
"38": "North Dakota",
|
||||
"39": "Ohio",
|
||||
"40": "Oklahoma",
|
||||
"41": "Oregon",
|
||||
"42": "Pennsylvania",
|
||||
"44": "Rhode Island",
|
||||
"45": "South Carolina",
|
||||
"46": "South Dakota",
|
||||
"47": "Tennessee",
|
||||
"48": "Texas",
|
||||
"49": "Utah",
|
||||
"50": "Vermont",
|
||||
"51": "Virginia",
|
||||
"53": "Washington",
|
||||
"54": "West Virginia",
|
||||
"55": "Wisconsin",
|
||||
"56": "Wyoming",
|
||||
"MW": "Midwest region",
|
||||
"NE": "Northeast region",
|
||||
"SO": "South region",
|
||||
"WE": "West region"
|
||||
},
|
||||
"area_code": {
|
||||
"00000": "All areas"
|
||||
},
|
||||
"sizeclass_code": {
|
||||
"00": "All size classes",
|
||||
"01": "1 to 9 employees",
|
||||
"02": "10 to 49 employees",
|
||||
"03": "50 to 249 employees",
|
||||
"04": "250 to 999 employees",
|
||||
"05": "1,000 to 4,999 employees",
|
||||
"06": "5,000 or more employees"
|
||||
},
|
||||
"dataelement_code": {
|
||||
"HI": "Hires",
|
||||
"JO": "Job openings",
|
||||
"LD": "Layoffs and discharges",
|
||||
"OS": "Other separations",
|
||||
"QU": "Quits",
|
||||
"TS": "Total separations",
|
||||
"UN": "Unemployment rate",
|
||||
"UO": "Unemployed persons per job opening ratio"
|
||||
},
|
||||
"ratelevel_code": {
|
||||
"L": "Level - In Thousands",
|
||||
"R": "Rate"
|
||||
},
|
||||
"footnote_code": {
|
||||
"P": "preliminary"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
openbb_platform/providers/bls/openbb_bls/assets/jolts_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/jolts_series.xz
vendored
Normal file
Binary file not shown.
1985
openbb_platform/providers/bls/openbb_bls/assets/lfs_codes.json
vendored
Normal file
1985
openbb_platform/providers/bls/openbb_bls/assets/lfs_codes.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
openbb_platform/providers/bls/openbb_bls/assets/lfs_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/lfs_series.xz
vendored
Normal file
Binary file not shown.
920
openbb_platform/providers/bls/openbb_bls/assets/nfp_codes.json
vendored
Normal file
920
openbb_platform/providers/bls/openbb_bls/assets/nfp_codes.json
vendored
Normal file
@@ -0,0 +1,920 @@
|
||||
{
|
||||
"ce": {
|
||||
"supersector_code": {
|
||||
"00": "Total nonfarm",
|
||||
"05": "Total private",
|
||||
"06": "Goods-producing",
|
||||
"07": "Service-providing",
|
||||
"08": "Private service-providing",
|
||||
"10": "Mining and logging",
|
||||
"20": "Construction",
|
||||
"30": "Manufacturing",
|
||||
"31": "Durable Goods",
|
||||
"32": "Nondurable Goods",
|
||||
"40": "Trade, transportation, and utilities",
|
||||
"41": "Wholesale trade",
|
||||
"42": "Retail trade",
|
||||
"43": "Transportation and warehousing",
|
||||
"44": "Utilities",
|
||||
"50": "Information",
|
||||
"55": "Financial activities",
|
||||
"60": "Professional and business services",
|
||||
"65": "Private education and health services",
|
||||
"70": "Leisure and hospitality",
|
||||
"80": "Other services",
|
||||
"90": "Government"
|
||||
},
|
||||
"industry_code": {
|
||||
"00000000": "Total nonfarm",
|
||||
"05000000": "Total private",
|
||||
"06000000": "Goods-producing",
|
||||
"07000000": "Service-providing",
|
||||
"08000000": "Private service-providing",
|
||||
"10000000": "Mining and logging",
|
||||
"10113300": "Logging",
|
||||
"10210000": "Mining, quarrying, and oil and gas extraction",
|
||||
"10211000": "Oil and gas extraction",
|
||||
"10212000": "Mining (except oil and gas)",
|
||||
"10212100": "Coal mining",
|
||||
"10212114": "Surface coal mining",
|
||||
"10212115": "Underground coal mining",
|
||||
"10212200": "Metal ore mining",
|
||||
"10212300": "Nonmetallic mineral mining and quarrying",
|
||||
"10212310": "Stone mining and quarrying",
|
||||
"10212312": "Crushed and broken limestone mining and quarrying",
|
||||
"10212319": "Dimension stone, crushed and broken granite, and other crushed and broken stone mining and quarrying",
|
||||
"10212320": "Sand, gravel, clay, and ceramic and refractory minerals mining and quarrying",
|
||||
"10212321": "Construction sand and gravel mining",
|
||||
"10212390": "Other nonmetallic mineral mining and quarrying",
|
||||
"10213000": "Support activities for mining",
|
||||
"10213112": "Support activities for oil and gas operations",
|
||||
"20000000": "Construction",
|
||||
"20236000": "Construction of buildings",
|
||||
"20236100": "Residential building construction",
|
||||
"20236115": "New single-family housing construction (except for-sale builders)",
|
||||
"20236116": "New multifamily housing construction (except for-sale builders)",
|
||||
"20236117": "New housing for-sale builders",
|
||||
"20236118": "Residential remodelers",
|
||||
"20236200": "Nonresidential building construction",
|
||||
"20236210": "Industrial building construction",
|
||||
"20236220": "Commercial and institutional building construction",
|
||||
"20237000": "Heavy and civil engineering construction",
|
||||
"20237100": "Utility system construction",
|
||||
"20237110": "Water and sewer line and related structures construction",
|
||||
"20237120": "Oil and gas pipeline and related structures construction",
|
||||
"20237130": "Power and communication line and related structures construction",
|
||||
"20237200": "Land subdivision",
|
||||
"20237300": "Highway, street, and bridge construction",
|
||||
"20237900": "Other heavy and civil engineering construction",
|
||||
"20238000": "Specialty trade contractors",
|
||||
"20238001": "Residential specialty trade contractors",
|
||||
"20238002": "Nonresidential specialty trade contractors",
|
||||
"20238100": "Foundation, structure, and building exterior contractors",
|
||||
"20238101": "Residential building foundation and exterior contractors",
|
||||
"20238102": "Nonresidential building foundation and exterior contractors",
|
||||
"20238110": "Poured concrete foundation and structure contractors",
|
||||
"20238120": "Structural steel and precast concrete contractors",
|
||||
"20238130": "Framing contractors",
|
||||
"20238140": "Masonry contractors",
|
||||
"20238150": "Glass and glazing contractors",
|
||||
"20238160": "Roofing contractors",
|
||||
"20238170": "Siding contractors",
|
||||
"20238190": "Other foundation, structure, and building exterior contractors",
|
||||
"20238200": "Building equipment contractors",
|
||||
"20238201": "Residential building equipment contractors",
|
||||
"20238202": "Nonresidential building equipment contractors",
|
||||
"20238210": "Electrical contractors and other wiring installation contractors",
|
||||
"20238220": "Plumbing, heating, and air-conditioning contractors",
|
||||
"20238290": "Other building equipment contractors",
|
||||
"20238300": "Building finishing contractors",
|
||||
"20238301": "Residential building finishing contractors",
|
||||
"20238302": "Nonresidential building finishing contractors",
|
||||
"20238310": "Drywall and insulation contractors",
|
||||
"20238320": "Painting and wall covering contractors",
|
||||
"20238330": "Flooring contractors",
|
||||
"20238340": "Tile and terrazzo contractors",
|
||||
"20238350": "Finish carpentry contractors",
|
||||
"20238390": "Other building finishing contractors",
|
||||
"20238900": "Other specialty trade contractors",
|
||||
"20238901": "Other residential trade contractors",
|
||||
"20238902": "Other nonresidential trade contractors",
|
||||
"20238910": "Site preparation contractors",
|
||||
"20238990": "All other specialty trade contractors",
|
||||
"30000000": "Manufacturing",
|
||||
"31000000": "Durable goods",
|
||||
"31321000": "Wood product manufacturing",
|
||||
"31321100": "Sawmills and wood preservation",
|
||||
"31321200": "Veneer, plywood, and engineered wood product manufacturing",
|
||||
"31321900": "Other wood product manufacturing",
|
||||
"31321910": "Millwork",
|
||||
"31321911": "Wood window and door manufacturing",
|
||||
"31321918": "Cut stock, resawing lumber, planing, and other millwork (including flooring)",
|
||||
"31321920": "Wood container and pallet manufacturing",
|
||||
"31321990": "All other wood product manufacturing",
|
||||
"31327000": "Nonmetallic mineral product manufacturing",
|
||||
"31327100": "Clay product and refractory manufacturing",
|
||||
"31327200": "Glass and glass product manufacturing",
|
||||
"31327300": "Cement and concrete product manufacturing",
|
||||
"31327320": "Ready-mix concrete manufacturing",
|
||||
"31327390": "Cement and concrete pipe, brick, block, and other concrete product manufacturing",
|
||||
"31327900": "Lime, gypsum, and other nonmetallic mineral product manufacturing",
|
||||
"31331000": "Primary metal manufacturing",
|
||||
"31331100": "Iron and steel mills and ferroalloy manufacturing",
|
||||
"31331200": "Steel product manufacturing from purchased steel",
|
||||
"31331400": "Alumina, aluminum, and other nonferrous metal production and processing",
|
||||
"31331500": "Foundries",
|
||||
"31331510": "Ferrous metal foundries",
|
||||
"31331520": "Nonferrous metal foundries",
|
||||
"31332000": "Fabricated metal product manufacturing",
|
||||
"31332100": "Forging and stamping",
|
||||
"31332300": "Architectural and structural metals manufacturing",
|
||||
"31332310": "Plate work and fabricated structural product manufacturing",
|
||||
"31332312": "Fabricated structural metal manufacturing",
|
||||
"31332313": "Plate work and prefabricated metal building and component manufacturing",
|
||||
"31332320": "Ornamental and architectural metal products manufacturing",
|
||||
"31332321": "Metal window and door manufacturing",
|
||||
"31332322": "Sheet metal work manufacturing",
|
||||
"31332323": "Ornamental and architectural metal work manufacturing",
|
||||
"31332400": "Boiler, tank, and shipping container manufacturing",
|
||||
"31332600": "Hardware, spring, and wire product manufacturing",
|
||||
"31332700": "Machine shops; turned product; and screw, nut, and bolt manufacturing",
|
||||
"31332710": "Machine shops",
|
||||
"31332720": "Turned product and screw, nut, and bolt manufacturing",
|
||||
"31332800": "Coating, engraving, heat treating, and allied activities",
|
||||
"31332812": "Metal heat treating, coating, engraving (except jewelry and silverware), and allied services to manufacturers",
|
||||
"31332813": "Electroplating, plating, polishing, anodizing, and coloring",
|
||||
"31332900": "Cutlery, handtool, and other fabricated metal product manufacturing",
|
||||
"31332910": "Metal valve manufacturing",
|
||||
"31332912": "Fluid power valve and hose fitting manufacturing",
|
||||
"31332919": "Industrial valve, plumbing fixture fitting and trim, and other metal valve and pipe fitting manufacturing",
|
||||
"31332990": "Cutlery, handtool, and all other fabricated metal product manufacturing",
|
||||
"31332994": "Small arms, ammunition, and other ordnance and ordnance accessories manufacturing",
|
||||
"31332999": "Cutlery, handtool, ball and roller bearing, fabricated pipe, pipe fitting, and all other fabricated metal product manufacturing",
|
||||
"31333000": "Machinery manufacturing",
|
||||
"31333100": "Agriculture, construction, and mining machinery manufacturing",
|
||||
"31333110": "Agricultural implement manufacturing",
|
||||
"31333120": "Construction machinery manufacturing",
|
||||
"31333130": "Mining and oil and gas field machinery manufacturing",
|
||||
"31333200": "Industrial machinery manufacturing",
|
||||
"31333248": "All other industrial machinery manufacturing",
|
||||
"31333300": "Commercial and service industry machinery manufacturing",
|
||||
"31333400": "Ventilation, heating, air-conditioning, and commercial refrigeration equipment manufacturing",
|
||||
"31333415": "Air-conditioning and warm air heating equipment and commercial and industrial refrigeration equipment manufacturing",
|
||||
"31333500": "Metalworking machinery manufacturing",
|
||||
"31333514": "Special die and tool, die set, jig, and fixture manufacturing",
|
||||
"31333517": "Machine tool manufacturing",
|
||||
"31333519": "Industrial mold, cutting tool and machine tool accessory, rolling mill, and other metalworking machinery manufacturing",
|
||||
"31333600": "Engine, turbine, and power transmission equipment manufacturing",
|
||||
"31333900": "Other general purpose machinery manufacturing",
|
||||
"31333910": "Pump and compressor manufacturing",
|
||||
"31333920": "Material handling equipment manufacturing",
|
||||
"31333990": "All other general purpose machinery manufacturing",
|
||||
"31334000": "Computer and electronic product manufacturing",
|
||||
"31334100": "Computer and peripheral equipment manufacturing",
|
||||
"31334200": "Communications equipment manufacturing",
|
||||
"31334220": "Radio and television broadcasting and wireless communications equipment manufacturing",
|
||||
"31334400": "Semiconductor and other electronic component manufacturing",
|
||||
"31334412": "Bare printed circuit board manufacturing",
|
||||
"31334413": "Semiconductor and related device manufacturing",
|
||||
"31334418": "Printed electronic circuit assembly manufacturing",
|
||||
"31334419": "Capacitor, resistor, coil, transformer, other inductor, electronic connector, and other electronic component manufacturing",
|
||||
"31334500": "Navigational, measuring, electromedical, and control instruments manufacturing",
|
||||
"31334510": "Electromedical and electrotherapeutic apparatus manufacturing",
|
||||
"31334511": "Search, detection, navigation, guidance, aeronautical, and nautical system and instrument manufacturing",
|
||||
"31334513": "Instruments and related products manufacturing for measuring, displaying, and controlling industrial process variables",
|
||||
"31334515": "Instrument manufacturing for measuring and testing electricity and electrical signals",
|
||||
"31334519": "Miscellaneous electronic instruments manufacturing",
|
||||
"31334600": "Manufacturing and reproducing magnetic and optical media and audio and video equipment manufacturing",
|
||||
"31335000": "Electrical equipment, appliance, and component manufacturing",
|
||||
"31335100": "Electric lighting equipment manufacturing",
|
||||
"31335200": "Household appliance manufacturing",
|
||||
"31335300": "Electrical equipment manufacturing",
|
||||
"31335311": "Power, distribution, and specialty transformer manufacturing",
|
||||
"31335314": "Motor, generator, switchgear and switchboard apparatus, and relay and industrial control manufacturing",
|
||||
"31335900": "Other electrical equipment and component manufacturing",
|
||||
"31335910": "Battery manufacturing",
|
||||
"31335930": "Wiring device manufacturing",
|
||||
"31335990": "Communication and energy wire and cable and all other electrical equipment and component manufacturing",
|
||||
"31336000": "Transportation equipment manufacturing",
|
||||
"31336001": "Motor vehicles and parts",
|
||||
"31336100": "Motor vehicle manufacturing",
|
||||
"31336200": "Motor vehicle body and trailer manufacturing",
|
||||
"31336300": "Motor vehicle parts manufacturing",
|
||||
"31336310": "Motor vehicle gasoline engine and engine parts manufacturing",
|
||||
"31336320": "Motor vehicle electrical and electronic equipment manufacturing",
|
||||
"31336330": "Motor vehicle steering and suspension components, except spring, manufacturing",
|
||||
"31336350": "Motor vehicle transmission and power train parts manufacturing",
|
||||
"31336370": "Motor vehicle metal stamping",
|
||||
"31336390": "Motor vehicle brake system, seating, interior trim, and other motor vehicle parts manufacturing",
|
||||
"31336400": "Aerospace product and parts manufacturing",
|
||||
"31336411": "Aircraft manufacturing",
|
||||
"31336412": "Aircraft engine and engine parts manufacturing",
|
||||
"31336413": "Other aircraft parts and auxiliary equipment manufacturing",
|
||||
"31336419": "Guided missile; space vehicle; and guided missile and space vehicle propulsion unit, parts, and auxiliary equipment manufacturing",
|
||||
"31336600": "Ship and boat building",
|
||||
"31336611": "Ship building and repairing",
|
||||
"31336612": "Boat building",
|
||||
"31336900": "Railroad rolling stock and other transportation equipment manufacturing",
|
||||
"31337000": "Furniture and related product manufacturing",
|
||||
"31337100": "Household and institutional furniture and kitchen cabinet manufacturing",
|
||||
"31337110": "Wood kitchen cabinet and countertop manufacturing",
|
||||
"31337120": "Household and institutional furniture manufacturing",
|
||||
"31337121": "Upholstered household furniture manufacturing",
|
||||
"31337127": "Nonupholstered household furniture and institutional furniture manufacturing",
|
||||
"31337200": "Office furniture (including fixtures) and other furniture related product manufacturing",
|
||||
"31337214": "Office furniture and custom architectural woodwork and millwork manufacturing",
|
||||
"31337215": "Showcase, partition, shelving, locker, and other furniture related product manufacturing",
|
||||
"31339000": "Miscellaneous manufacturing",
|
||||
"31339100": "Medical equipment and supplies manufacturing",
|
||||
"31339112": "Surgical and medical instrument manufacturing",
|
||||
"31339113": "Surgical appliance and supplies manufacturing",
|
||||
"31339116": "Dental laboratories",
|
||||
"31339900": "Other miscellaneous manufacturing",
|
||||
"31339920": "Jewelry, silverware, and sporting and athletic goods manufacturing",
|
||||
"31339950": "Sign manufacturing",
|
||||
"31339990": "Doll, toy, game, office supplies (except paper), and all other miscellaneous manufacturing",
|
||||
"32000000": "Nondurable goods",
|
||||
"32311000": "Food manufacturing",
|
||||
"32311100": "Animal food manufacturing",
|
||||
"32311200": "Grain and oilseed milling",
|
||||
"32311220": "Flour milling, malt, starch, and vegetable fats and oils manufacturing",
|
||||
"32311230": "Breakfast cereal manufacturing",
|
||||
"32311300": "Sugar and confectionery product manufacturing",
|
||||
"32311350": "Chocolate and confectionery manufacturing",
|
||||
"32311400": "Fruit and vegetable preserving and specialty food manufacturing",
|
||||
"32311410": "Frozen food manufacturing",
|
||||
"32311411": "Frozen fruit, juice, and vegetable manufacturing",
|
||||
"32311412": "Frozen specialty food manufacturing",
|
||||
"32311420": "Fruit and vegetable canning, pickling, and drying",
|
||||
"32311500": "Dairy product manufacturing",
|
||||
"32311511": "Fluid milk manufacturing",
|
||||
"32311600": "Animal slaughtering and processing",
|
||||
"32311611": "Animal, except poultry, slaughtering",
|
||||
"32311613": "Meat processed from carcasses, rendering, and meat byproduct processing",
|
||||
"32311615": "Poultry processing",
|
||||
"32311700": "Seafood product preparation and packaging",
|
||||
"32311800": "Bakeries and tortilla manufacturing",
|
||||
"32311810": "Bread and bakery product manufacturing",
|
||||
"32311811": "Retail bakeries",
|
||||
"32311813": "Commercial bakeries and frozen cakes, pies, and other pastries manufacturing",
|
||||
"32311830": "Cookie, cracker, pasta, and tortilla manufacturing",
|
||||
"32311900": "Other food manufacturing",
|
||||
"32311910": "Snack food manufacturing",
|
||||
"32311990": "Coffee, tea, flavoring syrup and concentrate, seasoning, dressing, and other food manufacturing",
|
||||
"32313000": "Textile mills",
|
||||
"32313200": "Fabric mills",
|
||||
"32314000": "Textile product mills",
|
||||
"32314100": "Textile furnishings mills",
|
||||
"32314900": "Other textile product mills",
|
||||
"32314910": "Textile bag and canvas mills",
|
||||
"32314990": "All other textile product mills",
|
||||
"32315000": "Apparel manufacturing",
|
||||
"32315250": "Cut and sew apparel manufacturing (except contractors)",
|
||||
"32322000": "Paper manufacturing",
|
||||
"32322100": "Pulp, paper, and paperboard mills",
|
||||
"32322200": "Converted paper product manufacturing",
|
||||
"32322210": "Paperboard container manufacturing",
|
||||
"32322220": "Paper bag and coated and treated paper manufacturing",
|
||||
"32322290": "Stationery and other converted paper products",
|
||||
"32323000": "Printing and related support activities",
|
||||
"32323117": "Commercial and book printing (except screen)",
|
||||
"32324000": "Petroleum and coal products manufacturing",
|
||||
"32324110": "Petroleum refineries",
|
||||
"32324190": "Asphalt paving, roofing, saturated materials, and other petroleum and coal products manufacturing",
|
||||
"32325000": "Chemical manufacturing",
|
||||
"32325100": "Basic chemical manufacturing",
|
||||
"32325180": "Petrochemical, industrial gas, synthetic dye, pigment, and other basic inorganic chemical manufacturing",
|
||||
"32325190": "Other basic organic chemical manufacturing",
|
||||
"32325200": "Resin, synthetic rubber, and artificial and synthetic fibers and filaments manufacturing",
|
||||
"32325211": "Plastics material and resin manufacturing",
|
||||
"32325300": "Pesticide, fertilizer, and other agricultural chemical manufacturing",
|
||||
"32325400": "Pharmaceutical and medicine manufacturing",
|
||||
"32325412": "Pharmaceutical preparation manufacturing",
|
||||
"32325414": "Medicinal, botanical, in-vitro diagnostic substance, and biological product manufacturing",
|
||||
"32325500": "Paint, coating, and adhesive manufacturing",
|
||||
"32325600": "Soap, cleaning compound, and toilet preparation manufacturing",
|
||||
"32325610": "Soap and cleaning compound manufacturing",
|
||||
"32325620": "Toilet preparation manufacturing",
|
||||
"32325900": "Other chemical product and preparation manufacturing",
|
||||
"32326000": "Plastics and rubber products manufacturing",
|
||||
"32326100": "Plastics product manufacturing",
|
||||
"32326110": "Plastics packaging materials and unlaminated film and sheet manufacturing",
|
||||
"32326120": "Plastics pipe, pipe fitting, and unlaminated profile shape manufacturing",
|
||||
"32326150": "Polystyrene, urethane, and other foam product manufacturing",
|
||||
"32326160": "Laminated plastics plate, sheet (except packaging), shape, and plastics bottle manufacturing",
|
||||
"32326190": "Other plastics product manufacturing",
|
||||
"32326200": "Rubber product manufacturing",
|
||||
"32326210": "Tire manufacturing",
|
||||
"32326290": "Rubber and plastics hoses, belting, and other rubber product manufacturing",
|
||||
"32329000": "Beverage, tobacco, and leather and allied product manufacturing",
|
||||
"32329100": "Beverage manufacturing",
|
||||
"32329110": "Soft drinks and ice",
|
||||
"32329111": "Soft drinks",
|
||||
"32329140": "Breweries, wineries, and distilleries",
|
||||
"32329900": "Other miscellaneous nondurable goods manufacturing",
|
||||
"40000000": "Trade, transportation, and utilities",
|
||||
"41420000": "Wholesale trade",
|
||||
"41423000": "Merchant wholesalers, durable goods",
|
||||
"41423100": "Motor vehicle and motor vehicle parts and supplies merchant wholesalers",
|
||||
"41423110": "Automobile and other motor vehicle merchant wholesalers",
|
||||
"41423120": "Motor vehicle supplies and new parts merchant wholesalers",
|
||||
"41423200": "Furniture and home furnishing merchant wholesalers",
|
||||
"41423210": "Furniture merchant wholesalers",
|
||||
"41423220": "Home furnishing merchant wholesalers",
|
||||
"41423300": "Lumber and other construction materials merchant wholesalers",
|
||||
"41423310": "Lumber, plywood, millwork, and wood panel merchant wholesalers",
|
||||
"41423320": "Brick, stone, and related construction material merchant wholesalers",
|
||||
"41423390": "Roofing, siding, insulation, and other construction material merchant wholesalers",
|
||||
"41423400": "Professional and commercial equipment and supplies merchant wholesalers",
|
||||
"41423420": "Office equipment merchant wholesalers",
|
||||
"41423430": "Computer and computer peripheral equipment and software merchant wholesalers",
|
||||
"41423450": "Medical, dental, and hospital equipment and supplies merchant wholesalers",
|
||||
"41423490": "Ophthalmic goods and photographic, commercial, and professional equipment and supplies merchant wholesalers",
|
||||
"41423500": "Metal and mineral (except petroleum) merchant wholesalers",
|
||||
"41423600": "Household appliances and electrical and electronic goods merchant wholesalers",
|
||||
"41423610": "Electrical apparatus and equipment, wiring supplies, and related equipment merchant wholesalers",
|
||||
"41423690": "Household appliances, electric housewares, consumer electronics, and other electronic parts and equipment merchant wholesalers",
|
||||
"41423700": "Hardware, and plumbing and heating equipment and supplies merchant wholesalers",
|
||||
"41423710": "Hardware merchant wholesalers",
|
||||
"41423720": "Plumbing, heating, and hydronics equipment and supplies merchant wholesalers",
|
||||
"41423740": "Warm air heating, air-conditioning, and refrigeration equipment and supplies merchant wholesalers",
|
||||
"41423800": "Machinery, equipment, and supplies merchant wholesalers",
|
||||
"41423810": "Construction and mining (except oil well) machinery and equipment merchant wholesalers",
|
||||
"41423820": "Farm and garden machinery and equipment merchant wholesalers",
|
||||
"41423830": "Industrial machinery and equipment merchant wholesalers",
|
||||
"41423840": "Industrial supplies merchant wholesalers",
|
||||
"41423850": "Service establishment equipment and supplies merchant wholesalers",
|
||||
"41423860": "Transportation equipment and supplies (except motor vehicle) merchant wholesalers",
|
||||
"41423900": "Miscellaneous durable goods merchant wholesalers",
|
||||
"41423910": "Sporting and recreational goods and supplies merchant wholesalers",
|
||||
"41423930": "Recyclable material merchant wholesalers",
|
||||
"41423940": "Jewelry, watch, precious stone, and precious metal merchant wholesalers",
|
||||
"41423990": "Toy and hobby goods and supplies and other miscellaneous durable goods merchant wholesalers",
|
||||
"41424000": "Merchant wholesalers, nondurable goods",
|
||||
"41424100": "Paper and paper product merchant wholesalers",
|
||||
"41424120": "Printing and writing paper, stationery, and office supplies merchant wholesalers",
|
||||
"41424130": "Industrial and personal service paper merchant wholesalers",
|
||||
"41424200": "Drugs and druggists' sundries merchant wholesalers",
|
||||
"41424300": "Apparel, piece goods, and notions merchant wholesalers",
|
||||
"41424350": "Clothing and clothing accessories merchant wholesalers",
|
||||
"41424400": "Grocery and related product merchant wholesalers",
|
||||
"41424410": "General line grocery merchant wholesalers",
|
||||
"41424480": "Fresh fruit and vegetable merchant wholesalers",
|
||||
"41424500": "Farm product raw material merchant wholesalers",
|
||||
"41424510": "Grain and field bean merchant wholesalers",
|
||||
"41424600": "Chemical and allied products merchant wholesalers",
|
||||
"41424700": "Petroleum and petroleum products merchant wholesalers",
|
||||
"41424800": "Beer, wine, and distilled alcoholic beverage merchant wholesalers",
|
||||
"41424810": "Beer and ale merchant wholesalers",
|
||||
"41424820": "Wine and distilled alcoholic beverage merchant wholesalers",
|
||||
"41424900": "Miscellaneous nondurable goods merchant wholesalers",
|
||||
"41424910": "Farm supplies merchant wholesalers",
|
||||
"41424930": "Flower, nursery stock, and florists' supplies merchant wholesalers",
|
||||
"41424990": "All other nondurable goods merchant wholesalers",
|
||||
"41425000": "Wholesale trade agents and brokers",
|
||||
"42000000": "Retail trade",
|
||||
"42441000": "Motor vehicle and parts dealers",
|
||||
"42441100": "Automobile dealers",
|
||||
"42441110": "New car dealers",
|
||||
"42441120": "Used car dealers",
|
||||
"42441200": "Other motor vehicle dealers",
|
||||
"42441210": "Recreational vehicle dealers",
|
||||
"42441220": "Motorcycle, boat, and other motor vehicle dealers",
|
||||
"42441300": "Automotive parts, accessories, and tire retailers",
|
||||
"42441330": "Automotive parts and accessories retailers",
|
||||
"42441340": "Tire dealers",
|
||||
"42444000": "Building material and garden equipment and supplies dealers",
|
||||
"42444100": "Building material and supplies dealers",
|
||||
"42444140": "Hardware retailers",
|
||||
"42444180": "Home centers, paint, wallpaper, and other building material dealers",
|
||||
"42444200": "Lawn and garden equipment and supplies retailers",
|
||||
"42444230": "Outdoor power equipment retailers",
|
||||
"42444240": "Nursery, garden center, and farm supply retailers",
|
||||
"42445000": "Food and beverage retailers",
|
||||
"42445100": "Grocery and convenience retailers",
|
||||
"42445110": "Supermarkets and other grocery retailers (except convenience retailers)",
|
||||
"42445130": "Convenience retailers and vending machine operators",
|
||||
"42445131": "Convenience retailers",
|
||||
"42445132": "Vending machine operators",
|
||||
"42445200": "Specialty food retailers",
|
||||
"42445230": "Fruit and vegetable retailers",
|
||||
"42445250": "Meat, fish, and seafood retailers",
|
||||
"42445290": "Other specialty food retailers",
|
||||
"42445300": "Beer, wine, and liquor retailers",
|
||||
"42449000": "Furniture, home furnishings, electronics, and appliance retailers",
|
||||
"42449100": "Furniture and home furnishings retailers",
|
||||
"42449110": "Furniture retailers",
|
||||
"42449120": "Home furnishings retailers",
|
||||
"42449121": "Floor covering retailers",
|
||||
"42449129": "Window treatment and all other home furnishings retailers",
|
||||
"42449200": "Electronics and appliance retailers",
|
||||
"42455000": "General merchandise retailers",
|
||||
"42455100": "Department stores",
|
||||
"42455200": "Warehouse clubs, supercenters, and other general merchandise retailers",
|
||||
"42455211": "Warehouse clubs and supercenters",
|
||||
"42455219": "All other general merchandise retailers",
|
||||
"42456000": "Health and personal care retailers",
|
||||
"42456110": "Pharmacies and drug retailers",
|
||||
"42456120": "Cosmetics, beauty supplies, and perfume retailers",
|
||||
"42456130": "Optical goods retailers",
|
||||
"42456190": "Other health and personal care retailers",
|
||||
"42456191": "Food (health) supplement retailers",
|
||||
"42456199": "All other health and personal care retailers",
|
||||
"42457000": "Gasoline stations and fuel dealers",
|
||||
"42457100": "Gasoline stations",
|
||||
"42457110": "Gasoline stations with convenience stores",
|
||||
"42457120": "Other gasoline stations",
|
||||
"42457200": "Fuel dealers",
|
||||
"42458000": "Clothing, clothing accessories, shoe, and jewelry retailers",
|
||||
"42458100": "Clothing and clothing accessories retailers",
|
||||
"42458200": "Shoe retailers",
|
||||
"42458300": "Jewelry, luggage, and leather goods retailers",
|
||||
"42459000": "Sporting goods, hobby, musical instrument, book, and miscellaneous retailers",
|
||||
"42459100": "Sporting goods, hobby, and musical instrument retailers",
|
||||
"42459110": "Sporting goods retailers",
|
||||
"42459120": "Hobby, toy, and game retailers",
|
||||
"42459130": "Sewing, needlework, and piece goods retailers",
|
||||
"42459140": "Musical instrument and supplies retailers",
|
||||
"42459200": "Book retailers and news dealers",
|
||||
"42459300": "Florists",
|
||||
"42459400": "Office supplies, stationery, and gift retailers",
|
||||
"42459410": "Office supplies and stationery retailers",
|
||||
"42459420": "Gift, novelty, and souvenir retailers",
|
||||
"42459500": "Used merchandise retailers",
|
||||
"42459900": "Other miscellaneous retailers",
|
||||
"42459910": "Pet and pet supplies retailers",
|
||||
"42459920": "Art dealers",
|
||||
"42459990": "Manufactured (mobile) home dealers and all other miscellaneous retailers",
|
||||
"42459991": "Tobacco, electronic cigarette, and other smoking supplies retailers",
|
||||
"43000000": "Transportation and warehousing",
|
||||
"43481000": "Air transportation",
|
||||
"43481100": "Scheduled air transportation",
|
||||
"43481200": "Nonscheduled air transportation",
|
||||
"43482000": "Rail transportation",
|
||||
"43483000": "Water transportation",
|
||||
"43484000": "Truck transportation",
|
||||
"43484100": "General freight trucking",
|
||||
"43484110": "General freight trucking, local",
|
||||
"43484120": "General freight trucking, long-distance",
|
||||
"43484121": "General freight trucking, long-distance, truckload",
|
||||
"43484122": "General freight trucking, long-distance, less than truckload",
|
||||
"43484200": "Specialized freight trucking",
|
||||
"43484210": "Used household and office goods moving",
|
||||
"43484220": "Specialized freight (except used goods) trucking, local",
|
||||
"43484230": "Specialized freight (except used goods) trucking, long-distance",
|
||||
"43485000": "Transit and ground passenger transportation",
|
||||
"43485300": "Taxi and limousine service",
|
||||
"43485400": "School and employee bus transportation",
|
||||
"43485500": "Urban transit systems and interurban, rural, and charter bus transportation",
|
||||
"43485900": "Other transit and ground passenger transportation",
|
||||
"43486000": "Pipeline transportation",
|
||||
"43487000": "Scenic and sightseeing transportation",
|
||||
"43488000": "Support activities for transportation",
|
||||
"43488100": "Support activities for air transportation",
|
||||
"43488300": "Support activities for water transportation",
|
||||
"43488320": "Marine cargo handling",
|
||||
"43488400": "Support activities for road transportation",
|
||||
"43488500": "Freight transportation arrangement",
|
||||
"43488900": "Other support activities for transportation, including rail",
|
||||
"43492000": "Couriers and messengers",
|
||||
"43492100": "Couriers and express delivery services",
|
||||
"43492200": "Local messengers and delivery and private postal service",
|
||||
"43493000": "Warehousing and storage",
|
||||
"43493110": "General warehousing and storage",
|
||||
"43493120": "Refrigerated warehousing and storage",
|
||||
"43493190": "Other warehousing and storage, including farm product",
|
||||
"44220000": "Utilities",
|
||||
"44221100": "Electric power generation, transmission and distribution",
|
||||
"44221110": "Electric power generation",
|
||||
"44221112": "Fossil fuel electric power generation",
|
||||
"44221118": "Hydroelectric and nuclear, solar, wind, geothermal, biomass, and other electric power generation",
|
||||
"44221120": "Electric power transmission, control, and distribution",
|
||||
"44221121": "Electric bulk power transmission and control",
|
||||
"44221122": "Electric power distribution",
|
||||
"44221200": "Natural gas distribution",
|
||||
"44221300": "Water, sewage, and other systems",
|
||||
"50000000": "Information",
|
||||
"50512000": "Motion picture and sound recording industries",
|
||||
"50512110": "Motion picture and video production",
|
||||
"50512130": "Motion picture and video exhibition",
|
||||
"50513000": "Publishing industries",
|
||||
"50513100": "Newspaper, periodical, book, and directory publishers",
|
||||
"50513110": "Newspaper publishers",
|
||||
"50513120": "Periodical publishers",
|
||||
"50513130": "Book publishers",
|
||||
"50513190": "Directory, mailing list, and other publishers",
|
||||
"50513200": "Software publishers",
|
||||
"50516000": "Broadcasting and content providers",
|
||||
"50516100": "Radio and television broadcasting stations",
|
||||
"50516110": "Radio broadcasting stations",
|
||||
"50516120": "Television broadcasting stations",
|
||||
"50516200": "Media streaming distribution services, social networks, and other media networks and content providers",
|
||||
"50517000": "Telecommunications",
|
||||
"50517100": "Wired and wireless telecommunications (except satellite)",
|
||||
"50517110": "Wired and wireless telecommunications carriers (except satellite)",
|
||||
"50517111": "Wired telecommunications carriers",
|
||||
"50517112": "Wireless telecommunications carriers (except satellite)",
|
||||
"50517120": "Telecommunications resellers",
|
||||
"50517800": "All other telecommunications",
|
||||
"50518000": "Computing infrastructure providers, data processing, web hosting, and related services",
|
||||
"50519000": "Web search portals, libraries, archives, and other information services",
|
||||
"50519210": "Libraries and archives",
|
||||
"50519290": "Web search portals and all other information services",
|
||||
"55000000": "Financial activities",
|
||||
"55520000": "Finance and insurance",
|
||||
"55521000": "Monetary authorities-central bank",
|
||||
"55522000": "Credit intermediation and related activities",
|
||||
"55522100": "Depository credit intermediation",
|
||||
"55522110": "Commercial banking",
|
||||
"55522130": "Credit unions",
|
||||
"55522180": "Savings institutions and other depository credit intermediation",
|
||||
"55522200": "Nondepository credit intermediation",
|
||||
"55522210": "Credit card issuing",
|
||||
"55522220": "Sales financing",
|
||||
"55522290": "Other nondepository credit intermediation",
|
||||
"55522291": "Consumer lending",
|
||||
"55522292": "Real estate credit",
|
||||
"55522299": "International, secondary market, and all other nondepository credit intermediation",
|
||||
"55522300": "Activities related to credit intermediation",
|
||||
"55522310": "Mortgage and nonmortgage loan brokers",
|
||||
"55522320": "Financial transactions processing, reserve, and clearinghouse activities",
|
||||
"55522390": "Other activities related to credit intermediation",
|
||||
"55523000": "Securities, commodity contracts, funds, trusts, and other financial vehicles, investments, and related activities",
|
||||
"55523150": "Investment banking and securities intermediation",
|
||||
"55523200": "Securities and commodity contracts brokerage, intermediation, and exchanges",
|
||||
"55523900": "Funds, trusts, and other financial vehicles and investment activities",
|
||||
"55523910": "Miscellaneous intermediation",
|
||||
"55523940": "Portfolio management and investment advice",
|
||||
"55523990": "All other financial investment activities",
|
||||
"55524000": "Insurance carriers and related activities",
|
||||
"55524100": "Insurance carriers",
|
||||
"55524110": "Direct life, health, and medical insurance carriers",
|
||||
"55524120": "Direct insurance (except life, health, and medical) carriers",
|
||||
"55524126": "Direct property and casualty insurance carriers",
|
||||
"55524128": "Direct title insurance and other direct insurance (except life, health, and medical) carriers",
|
||||
"55524130": "Reinsurance carriers",
|
||||
"55524200": "Agencies, brokerages, and other insurance related activities",
|
||||
"55524210": "Insurance agencies and brokerages",
|
||||
"55524290": "Other insurance related activities",
|
||||
"55524291": "Claims adjusting",
|
||||
"55524292": "Pharmacy benefit management and other third party administration of insurance and pension funds",
|
||||
"55524298": "All other insurance related activities",
|
||||
"55530000": "Real estate and rental and leasing",
|
||||
"55531000": "Real estate",
|
||||
"55531100": "Lessors of real estate",
|
||||
"55531110": "Lessors of residential buildings and dwellings",
|
||||
"55531120": "Lessors of nonresidential buildings (except miniwarehouses)",
|
||||
"55531130": "Lessors of miniwarehouses and self-storage units",
|
||||
"55531190": "Lessors of other real estate property",
|
||||
"55531200": "Offices of real estate agents and brokers",
|
||||
"55531300": "Activities related to real estate",
|
||||
"55531310": "Real estate property managers",
|
||||
"55531311": "Residential property managers",
|
||||
"55531312": "Nonresidential property managers",
|
||||
"55531320": "Offices of real estate appraisers",
|
||||
"55531390": "Other activities related to real estate",
|
||||
"55532000": "Rental and leasing services",
|
||||
"55532100": "Automotive equipment rental and leasing",
|
||||
"55532110": "Passenger car rental and leasing",
|
||||
"55532120": "Truck, utility trailer, and recreational vehicle (RV) rental and leasing",
|
||||
"55532200": "Consumer goods rental",
|
||||
"55532283": "Home health equipment rental",
|
||||
"55532300": "General rental centers",
|
||||
"55532400": "Commercial and industrial machinery and equipment rental and leasing",
|
||||
"55532410": "Construction, transportation, mining, and forestry machinery and equipment rental and leasing",
|
||||
"55532490": "Office, commercial, and industrial machinery and equipment rental and leasing",
|
||||
"55533000": "Lessors of nonfinancial intangible assets (except copyrighted works)",
|
||||
"60000000": "Professional and business services",
|
||||
"60540000": "Professional, scientific, and technical services",
|
||||
"60541100": "Legal services",
|
||||
"60541110": "Offices of lawyers",
|
||||
"60541190": "Other legal services",
|
||||
"60541200": "Accounting, tax preparation, bookkeeping, and payroll services",
|
||||
"60541211": "Offices of certified public accountants",
|
||||
"60541213": "Tax preparation services",
|
||||
"60541214": "Payroll services",
|
||||
"60541219": "Other accounting services",
|
||||
"60541300": "Architectural, engineering, and related services",
|
||||
"60541310": "Architectural services",
|
||||
"60541320": "Landscape architectural services",
|
||||
"60541340": "Engineering and drafting services",
|
||||
"60541370": "Building inspection, surveying, and mapping services",
|
||||
"60541380": "Testing laboratories and services",
|
||||
"60541400": "Specialized design services",
|
||||
"60541410": "Interior design services",
|
||||
"60541430": "Graphic design services",
|
||||
"60541500": "Computer systems design and related services",
|
||||
"60541511": "Custom computer programming services",
|
||||
"60541512": "Computer systems design services",
|
||||
"60541513": "Computer facilities management services",
|
||||
"60541519": "Other computer related services",
|
||||
"60541600": "Management, scientific, and technical consulting services",
|
||||
"60541610": "Management consulting services",
|
||||
"60541611": "Administrative management and general management consulting services",
|
||||
"60541612": "Human resources consulting services",
|
||||
"60541613": "Marketing consulting services",
|
||||
"60541614": "Process, physical distribution, and logistics consulting services",
|
||||
"60541618": "Other management consulting services",
|
||||
"60541620": "Environmental consulting services",
|
||||
"60541690": "Other scientific and technical consulting services",
|
||||
"60541700": "Scientific research and development services",
|
||||
"60541710": "Research and development in the physical, engineering, and life sciences",
|
||||
"60541713": "Research and development in nanotechnology",
|
||||
"60541714": "Research and development in biotechnology, except nanobiotechnology",
|
||||
"60541715": "Research and development in the physical, engineering, and life sciences, except nanotechnology and biotechnology",
|
||||
"60541720": "Research and development in the social sciences and humanities",
|
||||
"60541800": "Advertising, public relations, and related services",
|
||||
"60541810": "Advertising agencies",
|
||||
"60541820": "Public relations agencies",
|
||||
"60541840": "Media buying agencies and media representatives",
|
||||
"60541850": "Indoor and outdoor display advertising",
|
||||
"60541860": "Direct mail advertising",
|
||||
"60541890": "Advertising material distribution and other services related to advertising",
|
||||
"60541900": "Other professional, scientific, and technical services",
|
||||
"60541910": "Marketing research and public opinion polling",
|
||||
"60541920": "Photographic services",
|
||||
"60541940": "Veterinary services",
|
||||
"60541990": "Translation, interpretation, and all other professional, scientific, and technical services",
|
||||
"60550000": "Management of companies and enterprises",
|
||||
"60551112": "Offices of bank and other holding companies",
|
||||
"60551114": "Corporate, subsidiary, and regional managing offices",
|
||||
"60560000": "Administrative and support and waste management and remediation services",
|
||||
"60561000": "Administrative and support services",
|
||||
"60561100": "Office administrative services",
|
||||
"60561200": "Facilities support services",
|
||||
"60561300": "Employment services",
|
||||
"60561310": "Employment placement agencies and executive search services",
|
||||
"60561311": "Employment placement agencies",
|
||||
"60561312": "Executive search services",
|
||||
"60561320": "Temporary help services",
|
||||
"60561330": "Professional employer organizations",
|
||||
"60561400": "Business support services",
|
||||
"60561410": "Document preparation services",
|
||||
"60561420": "Telephone call centers",
|
||||
"60561421": "Telephone answering services",
|
||||
"60561422": "Telemarketing bureaus and other contact centers",
|
||||
"60561430": "Business service centers",
|
||||
"60561440": "Collection agencies",
|
||||
"60561490": "Credit bureaus and other business support services",
|
||||
"60561500": "Travel arrangement and reservation services",
|
||||
"60561510": "Travel agencies",
|
||||
"60561520": "Tour operators",
|
||||
"60561590": "Other travel arrangement and reservation services",
|
||||
"60561600": "Investigation and security services",
|
||||
"60561610": "Investigation, guard, and armored car services",
|
||||
"60561611": "Investigation and personal background check services",
|
||||
"60561613": "Security guards, patrol services, and armored car services",
|
||||
"60561620": "Security systems services",
|
||||
"60561700": "Services to buildings and dwellings",
|
||||
"60561710": "Exterminating and pest control services",
|
||||
"60561720": "Janitorial services",
|
||||
"60561730": "Landscaping services",
|
||||
"60561740": "Carpet and upholstery cleaning services",
|
||||
"60561790": "Other services to buildings and dwellings",
|
||||
"60561900": "Other support services",
|
||||
"60561910": "Packaging and labeling services",
|
||||
"60561920": "Convention and trade show organizers",
|
||||
"60561990": "All other support services",
|
||||
"60562000": "Waste management and remediation services",
|
||||
"60562100": "Waste collection",
|
||||
"60562200": "Waste treatment and disposal",
|
||||
"60562211": "Hazardous waste treatment and disposal",
|
||||
"60562219": "Solid waste landfill, combustors, and incinerators and other nonhazardous waste treatment and disposal",
|
||||
"60562900": "Remediation and other waste management services",
|
||||
"60562910": "Remediation services",
|
||||
"60562990": "Materials recovery facilities and other waste management services",
|
||||
"65000000": "Private education and health services",
|
||||
"65610000": "Private educational services",
|
||||
"65611100": "Private elementary and secondary schools",
|
||||
"65611300": "Private junior colleges, colleges, universities, and professional schools",
|
||||
"65611400": "Private business schools and computer and management training",
|
||||
"65611420": "Private business and secretarial schools and private computer training",
|
||||
"65611430": "Private professional and management development training",
|
||||
"65611500": "Private technical and trade schools",
|
||||
"65611600": "Other private schools and instruction",
|
||||
"65611610": "Private fine arts schools",
|
||||
"65611620": "Private sports and recreation instruction",
|
||||
"65611690": "Private language schools and all other private schools and instruction",
|
||||
"65611700": "Private educational support services",
|
||||
"65620000": "Health care and social assistance",
|
||||
"65620001": "Health care",
|
||||
"65621000": "Ambulatory health care services",
|
||||
"65621100": "Offices of physicians",
|
||||
"65621111": "Offices of physicians (except mental health specialists)",
|
||||
"65621112": "Offices of physicians, mental health specialists",
|
||||
"65621200": "Offices of dentists",
|
||||
"65621300": "Offices of other health practitioners",
|
||||
"65621310": "Offices of chiropractors",
|
||||
"65621320": "Offices of optometrists",
|
||||
"65621330": "Offices of mental health practitioners (except physicians)",
|
||||
"65621340": "Offices of physical, occupational and speech therapists, and audiologists",
|
||||
"65621390": "Offices of all other health practitioners",
|
||||
"65621391": "Offices of podiatrists",
|
||||
"65621399": "Offices of all other miscellaneous health practitioners",
|
||||
"65621400": "Outpatient care centers",
|
||||
"65621420": "Outpatient mental health and substance abuse centers",
|
||||
"65621490": "Other outpatient care centers",
|
||||
"65621491": "HMO medical centers",
|
||||
"65621492": "Kidney dialysis centers",
|
||||
"65621493": "Freestanding ambulatory surgical and emergency centers",
|
||||
"65621498": "Family planning and all other outpatient care centers",
|
||||
"65621500": "Medical and diagnostic laboratories",
|
||||
"65621511": "Medical laboratories",
|
||||
"65621512": "Diagnostic imaging centers",
|
||||
"65621600": "Home health care services",
|
||||
"65621900": "Other ambulatory health care services",
|
||||
"65621910": "Ambulance services",
|
||||
"65621990": "All other ambulatory health care services",
|
||||
"65621991": "Blood and organ banks",
|
||||
"65621999": "All other miscellaneous ambulatory health care services",
|
||||
"65622000": "Hospitals",
|
||||
"65622100": "General medical and surgical hospitals",
|
||||
"65622200": "Psychiatric and substance abuse hospitals",
|
||||
"65622300": "Specialty, except psychiatric and substance abuse, hospitals",
|
||||
"65623000": "Nursing and residential care facilities",
|
||||
"65623100": "Skilled nursing care facilities",
|
||||
"65623200": "Residential intellectual and developmental disability, mental health, and substance abuse facilities",
|
||||
"65623210": "Residential intellectual and developmental disability facilities",
|
||||
"65623220": "Residential mental health and substance abuse facilities",
|
||||
"65623300": "Continuing care retirement communities and assisted living facilities for the elderly",
|
||||
"65623311": "Continuing care retirement communities",
|
||||
"65623312": "Assisted living facilities for the elderly",
|
||||
"65623900": "Other residential care facilities",
|
||||
"65624000": "Social assistance",
|
||||
"65624100": "Individual and family services",
|
||||
"65624110": "Child and youth services",
|
||||
"65624120": "Services for the elderly and persons with disabilities",
|
||||
"65624190": "Other individual and family services",
|
||||
"65624200": "Community food and housing, and emergency and other relief services",
|
||||
"65624210": "Community food services",
|
||||
"65624230": "Community housing, emergency, and relief services",
|
||||
"65624300": "Vocational rehabilitation services",
|
||||
"65624400": "Child care services",
|
||||
"70000000": "Leisure and hospitality",
|
||||
"70710000": "Arts, entertainment, and recreation",
|
||||
"70711000": "Performing arts, spectator sports, and related industries",
|
||||
"70711100": "Performing arts companies",
|
||||
"70711130": "Musical groups and artists",
|
||||
"70711190": "Theater, dance, and other performing arts companies and dinner theaters",
|
||||
"70711200": "Spectator sports",
|
||||
"70711211": "Sports teams and clubs",
|
||||
"70711219": "Racetracks and other spectator sports",
|
||||
"70711300": "Arts and sports promoters and agents and managers for public figures",
|
||||
"70711500": "Independent artists, writers, and performers",
|
||||
"70712000": "Museums, historical sites, and similar institutions",
|
||||
"70712110": "Museums",
|
||||
"70712190": "Historical sites, zoos, botanical gardens, nature parks, and other similar institutions",
|
||||
"70713000": "Amusement, gambling, and recreation industries",
|
||||
"70713100": "Amusement parks and arcades",
|
||||
"70713200": "Gambling industries",
|
||||
"70713210": "Casinos, except casino hotels",
|
||||
"70713290": "Other gambling industries",
|
||||
"70713900": "Other amusement and recreation industries",
|
||||
"70713910": "Golf courses and country clubs",
|
||||
"70713920": "Skiing facilities",
|
||||
"70713930": "Marinas",
|
||||
"70713940": "Fitness and recreational sports centers",
|
||||
"70713950": "Bowling centers",
|
||||
"70713990": "All other amusement and recreation industries",
|
||||
"70720000": "Accommodation and food services",
|
||||
"70721000": "Accommodation",
|
||||
"70721100": "Traveler accommodation",
|
||||
"70721110": "Hotels (except casino hotels) and motels",
|
||||
"70721120": "Casino hotels",
|
||||
"70721190": "Other traveler accommodation",
|
||||
"70721191": "Bed-and-breakfast inns",
|
||||
"70721199": "All other traveler accommodation and rooming and boarding houses, dormitories, and workers' camps",
|
||||
"70721200": "Recreational vehicle (RV) parks and recreational camps",
|
||||
"70722000": "Food services and drinking places",
|
||||
"70722300": "Special food services",
|
||||
"70722310": "Food service contractors",
|
||||
"70722330": "Caterers and mobile food services",
|
||||
"70722400": "Drinking places, alcoholic beverages",
|
||||
"70722500": "Restaurants and other eating places",
|
||||
"70722511": "Full-service restaurants",
|
||||
"70722513": "Limited-service restaurants",
|
||||
"70722514": "Cafeterias, grill buffets, and buffets",
|
||||
"70722515": "Snack and nonalcoholic beverage bars",
|
||||
"80000000": "Other services",
|
||||
"80811000": "Repair and maintenance",
|
||||
"80811100": "Automotive repair and maintenance",
|
||||
"80811110": "Automotive mechanical and electrical repair and maintenance",
|
||||
"80811111": "General automotive repair",
|
||||
"80811114": "Specialized automotive repair",
|
||||
"80811120": "Automotive body, paint, interior, and glass repair",
|
||||
"80811121": "Automotive body, paint, and interior repair and maintenance",
|
||||
"80811122": "Automotive glass replacement shops",
|
||||
"80811190": "Other automotive repair and maintenance",
|
||||
"80811192": "Car washes",
|
||||
"80811198": "Automotive oil change and lubrication shops and all other automotive repair and maintenance",
|
||||
"80811200": "Electronic and precision equipment repair and maintenance",
|
||||
"80811300": "Commercial and industrial machinery and equipment (except automotive and electronic) repair and maintenance",
|
||||
"80811400": "Personal and household goods repair and maintenance",
|
||||
"80812000": "Personal and laundry services",
|
||||
"80812100": "Personal care services",
|
||||
"80812110": "Hair, nail, and skin care services",
|
||||
"80812112": "Barber shops and beauty salons",
|
||||
"80812113": "Nail salons",
|
||||
"80812190": "Other personal care services",
|
||||
"80812200": "Death care services",
|
||||
"80812210": "Funeral homes and funeral services",
|
||||
"80812220": "Cemeteries and crematories",
|
||||
"80812300": "Drycleaning and laundry services",
|
||||
"80812310": "Coin-operated laundries and drycleaners",
|
||||
"80812320": "Drycleaning and laundry services, except coin-operated",
|
||||
"80812330": "Linen and uniform supply",
|
||||
"80812331": "Linen supply",
|
||||
"80812332": "Industrial launderers",
|
||||
"80812900": "Other personal services",
|
||||
"80812910": "Pet care (except veterinary) services",
|
||||
"80812930": "Parking lots and garages",
|
||||
"80812990": "Photofinishing and all other personal services",
|
||||
"80813000": "Religious, grantmaking, civic, professional, and similar organizations",
|
||||
"80813200": "Grantmaking and giving services",
|
||||
"80813211": "Grantmaking foundations",
|
||||
"80813212": "Voluntary health organizations",
|
||||
"80813219": "Other grantmaking and giving services",
|
||||
"80813300": "Social advocacy organizations",
|
||||
"80813311": "Human rights organizations",
|
||||
"80813319": "Environment, conservation, wildlife, and other social advocacy organizations",
|
||||
"80813400": "Civic and social organizations",
|
||||
"80813900": "Business, professional, labor, political, and similar organizations",
|
||||
"80813910": "Business associations",
|
||||
"80813920": "Professional organizations",
|
||||
"80813930": "Labor unions and similar labor organizations",
|
||||
"80813990": "Political and other similar organizations (except business, professional, and labor organizations)",
|
||||
"90000000": "Government",
|
||||
"90910000": "Federal",
|
||||
"90911000": "Federal, except U.S. Postal Service",
|
||||
"90916220": "Federal hospitals",
|
||||
"90919110": "Department of Defense",
|
||||
"90919120": "U.S. Postal Service",
|
||||
"90919999": "Other Federal government",
|
||||
"90920000": "State government",
|
||||
"90921611": "State government education",
|
||||
"90922000": "State government, excluding education",
|
||||
"90922622": "State hospitals",
|
||||
"90922920": "State government general administration",
|
||||
"90922999": "Other State government",
|
||||
"90930000": "Local government",
|
||||
"90931611": "Local government education",
|
||||
"90932000": "Local government, excluding education",
|
||||
"90932221": "Local government utilities",
|
||||
"90932480": "Local government transportation",
|
||||
"90932622": "Local hospitals",
|
||||
"90932920": "Local government general administration",
|
||||
"90932999": "Other local government"
|
||||
},
|
||||
"data_type_code": {
|
||||
"01": "ALL EMPLOYEES, THOUSANDS",
|
||||
"02": "AVERAGE WEEKLY HOURS OF ALL EMPLOYEES",
|
||||
"03": "AVERAGE HOURLY EARNINGS OF ALL EMPLOYEES",
|
||||
"04": "AVERAGE WEEKLY OVERTIME HOURS OF ALL EMPLOYEES",
|
||||
"06": "PRODUCTION AND NONSUPERVISORY EMPLOYEES, THOUSANDS",
|
||||
"07": "AVERAGE WEEKLY HOURS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES",
|
||||
"08": "AVERAGE HOURLY EARNINGS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES",
|
||||
"09": "AVERAGE WEEKLY OVERTIME HOURS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES",
|
||||
"10": "WOMEN EMPLOYEES, THOUSANDS",
|
||||
"11": "AVERAGE WEEKLY EARNINGS OF ALL EMPLOYEES",
|
||||
"12": "AVERAGE WEEKLY EARNINGS OF ALL EMPLOYEES, 1982-1984 DOLLARS",
|
||||
"13": "AVERAGE HOURLY EARNINGS OF ALL EMPLOYEES, 1982-1984 DOLLARS",
|
||||
"15": "AVERAGE HOURLY EARNINGS OF ALL EMPLOYEES, EXCLUDING OVERTIME",
|
||||
"16": "INDEXES OF AGGREGATE WEEKLY HOURS OF ALL EMPLOYEES, 2007=100",
|
||||
"17": "INDEXES OF AGGREGATE WEEKLY PAYROLLS OF ALL EMPLOYEES, 2007=100",
|
||||
"19": "AVERAGE WEEKLY HOURS OF ALL EMPLOYEES, QUARTERLY AVERAGES, SEASONALLY ADJUSTED",
|
||||
"20": "AVERAGE WEEKLY OVERTIME HOURS OF ALL EMPLOYEES, QUARTERLY AVERAGES, SEASONALLY ADJUSTED",
|
||||
"21": "DIFFUSION INDEXES, 1-MONTH SPAN, SEASONALLY ADJUSTED",
|
||||
"22": "DIFFUSION INDEXES, 3-MONTH SPAN, SEASONALLY ADJUSTED",
|
||||
"23": "DIFFUSION INDEXES, 6-MONTH SPAN, SEASONALLY ADJUSTED",
|
||||
"24": "DIFFUSION INDEXES, 12-MONTH SPAN, NOT SEASONALLY ADJUSTED",
|
||||
"25": "ALL EMPLOYEES, QUARTERLY AVERAGES, SEASONALLY ADJUSTED, THOUSANDS",
|
||||
"26": "ALL EMPLOYEES, 3-MONTH AVERAGE CHANGE, SEASONALLY ADJUSTED, THOUSANDS",
|
||||
"30": "AVERAGE WEEKLY EARNINGS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES",
|
||||
"31": "AVERAGE WEEKLY EARNINGS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES, 1982-84 DOLLARS",
|
||||
"32": "AVERAGE HOURLY EARNINGS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES, 1982-84 DOLLARS",
|
||||
"33": "AVERAGE HOURLY EARNINGS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES, EXCLUDING OVERTIME",
|
||||
"34": "INDEXES OF AGGREGATE WEEKLY HOURS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES, 2002=100",
|
||||
"35": "INDEXES OF AGGREGATE WEEKLY PAYROLLS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES, 2002=100",
|
||||
"36": "AVERAGE WEEKLY HOURS, PRODUCTION/NONSUPERVISORY EMPLOYEES, QUARTERLY AVERAGES, SEASONALLY ADJUSTED",
|
||||
"37": "AVERAGE WEEKLY OVERTIME HOURS,PRODUCTION/NONSUPERVISORY EMPLOYEES,QUARTERLY AVG,SEASONALLY ADJUSTED",
|
||||
"38": "PRODUCTION AND NONSUPERVISORY EMPLOYEES-TO-ALL EMPLOYEES RATIO",
|
||||
"39": "WOMEN EMPLOYEES-TO-ALL EMPLOYEES RATIO",
|
||||
"56": "AGGREGATE WEEKLY HOURS OF ALL EMPLOYEES, THOUSANDS",
|
||||
"57": "AGGREGATE WEEKLY PAYROLLS OF ALL EMPLOYEES, THOUSANDS",
|
||||
"58": "AGGREGATE WEEKLY OVERTIME HOURS OF ALL EMPLOYEES, THOUSANDS",
|
||||
"81": "AGGREGATE WEEKLY HOURS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES, THOUSANDS",
|
||||
"82": "AGGREGATE WEEKLY PAYROLLS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES, THOUSANDS",
|
||||
"83": "AGGREGATE WEEKLY OVERTIME HOURS OF PRODUCTION AND NONSUPERVISORY EMPLOYEES, THOUSANDS",
|
||||
"86": "1-MONTH CONFIDENCE INTERVAL, ALL EMPLOYEES",
|
||||
"87": "3-MONTH CONFIDENCE INTERVAL, ALL EMPLOYEES",
|
||||
"88": "6-MONTH CONFIDENCE INTERVAL, ALL EMPLOYEES",
|
||||
"89": "12-MONTH CONFIDENCE INTERVAL, ALL EMPLOYEES",
|
||||
"98": "CPI-U 1982-84",
|
||||
"99": "CPI-W 1982-84"
|
||||
},
|
||||
"footnote_code": {
|
||||
"I": "Seasonally Adjusted Independently. See https://www.bls.gov/web/empsit/cestn.htm#SA_ind for details.",
|
||||
"P": "preliminary"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
openbb_platform/providers/bls/openbb_bls/assets/nfp_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/nfp_series.xz
vendored
Normal file
Binary file not shown.
1249
openbb_platform/providers/bls/openbb_bls/assets/pce_codes.json
vendored
Normal file
1249
openbb_platform/providers/bls/openbb_bls/assets/pce_codes.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
openbb_platform/providers/bls/openbb_bls/assets/pce_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/pce_series.xz
vendored
Normal file
Binary file not shown.
8712
openbb_platform/providers/bls/openbb_bls/assets/ppi_codes.json
vendored
Normal file
8712
openbb_platform/providers/bls/openbb_bls/assets/ppi_codes.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
openbb_platform/providers/bls/openbb_bls/assets/ppi_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/ppi_series.xz
vendored
Normal file
Binary file not shown.
9299
openbb_platform/providers/bls/openbb_bls/assets/sla_codes.json
vendored
Normal file
9299
openbb_platform/providers/bls/openbb_bls/assets/sla_codes.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
openbb_platform/providers/bls/openbb_bls/assets/sla_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/sla_series.xz
vendored
Normal file
Binary file not shown.
400
openbb_platform/providers/bls/openbb_bls/assets/tu_codes.json
vendored
Normal file
400
openbb_platform/providers/bls/openbb_bls/assets/tu_codes.json
vendored
Normal file
@@ -0,0 +1,400 @@
|
||||
{
|
||||
"tu": {
|
||||
"stattype_code": {
|
||||
"10100": "Number of persons (in thousands)",
|
||||
"10101": "Average hours per day",
|
||||
"20100": "Number of participants in an activity on an average day (in thousands)",
|
||||
"20101": "Average hours per day for participants in an activity",
|
||||
"30105": "Percent of population engaged in activity on an average day",
|
||||
"30107": "Number of participants in an activity on an average day (in thousands)",
|
||||
"50212": "Percent - Preprocessing response rate",
|
||||
"50213": "Percent - Postprocessing response rate"
|
||||
},
|
||||
"datays_code": {
|
||||
"01": "1 year of ATUS data"
|
||||
},
|
||||
"sex_code": {
|
||||
"0": "Both sexes",
|
||||
"1": "Men",
|
||||
"2": "Women"
|
||||
},
|
||||
"region_code": {
|
||||
"00": null
|
||||
},
|
||||
"lfstat_code": {
|
||||
"00": null,
|
||||
"01": "Employed",
|
||||
"04": "Employed full time",
|
||||
"07": "Employed part time",
|
||||
"20": "Not Employed"
|
||||
},
|
||||
"educ_code": {
|
||||
"00": "All education levels",
|
||||
"30": "Less than a high school diploma",
|
||||
"31": "High school graduates, no college",
|
||||
"33": "Bachelor's degree and higher",
|
||||
"35": "Some college or associate degree",
|
||||
"37": "Bachelor's degree only",
|
||||
"38": "Advanced degree"
|
||||
},
|
||||
"maritlstat_code": {
|
||||
"00": null,
|
||||
"01": "Married, spouse present in household",
|
||||
"04": "Other marital statuses (not married or married with a spouse living elsewhere)",
|
||||
"07": "Spouse or unmarried partner present in household",
|
||||
"08": "Lives alone"
|
||||
},
|
||||
"age_code": {
|
||||
"000": "15 years and over",
|
||||
"015": "18 years and over",
|
||||
"020": "20 to 24 years",
|
||||
"028": "25 years and over",
|
||||
"031": "25 to 34 years",
|
||||
"033": "25 to 54 years",
|
||||
"038": "35 to 44 years",
|
||||
"042": "45 to 54 years",
|
||||
"049": "55 to 64 years",
|
||||
"065": "65 years and over",
|
||||
"078": "75 years and over",
|
||||
"102": "15 to 19 years",
|
||||
"103": "15 to 24 years",
|
||||
"113": "65 to 74 years"
|
||||
},
|
||||
"orig_code": {
|
||||
"00": null,
|
||||
"01": "Hispanic or Latino"
|
||||
},
|
||||
"race_code": {
|
||||
"00": "All races",
|
||||
"01": "White",
|
||||
"03": "Black or African American",
|
||||
"04": "Asian"
|
||||
},
|
||||
"mjcow_code": {
|
||||
"00": null,
|
||||
"01": "Wage and salary workers",
|
||||
"20": "Self-employed, unincorporated"
|
||||
},
|
||||
"nmet_code": {
|
||||
"0": null
|
||||
},
|
||||
"where_code": {
|
||||
"00": null,
|
||||
"01": "Home or yard",
|
||||
"02": "Workplace"
|
||||
},
|
||||
"sjmj_code": {
|
||||
"0": null,
|
||||
"1": "Multiple jobholders",
|
||||
"6": "Single jobholders"
|
||||
},
|
||||
"timeday_code": {
|
||||
"00": null,
|
||||
"01": "4 AM to 5 AM",
|
||||
"02": "5 AM to 6 AM",
|
||||
"03": "6 AM to 7 AM",
|
||||
"04": "7 AM to 8 AM",
|
||||
"05": "8 AM to 9 AM",
|
||||
"06": "9 AM to 10 AM",
|
||||
"07": "10 AM to 11 AM",
|
||||
"08": "11 AM to 12 Noon",
|
||||
"09": "12 Noon to 1 PM",
|
||||
"10": "1 PM to 2 PM",
|
||||
"11": "2 PM to 3 PM",
|
||||
"12": "3 PM to 4 PM",
|
||||
"13": "4 PM to 5 PM",
|
||||
"14": "5 PM to 6 PM",
|
||||
"15": "6 PM to 7 PM",
|
||||
"16": "7 PM to 8 PM",
|
||||
"17": "8 PM to 9 PM",
|
||||
"18": "9 PM to 10 PM",
|
||||
"19": "10 PM to 11 PM",
|
||||
"20": "11 PM to 12 Midnight",
|
||||
"21": "12 Midnight to 1 AM",
|
||||
"22": "1 AM to 2 AM",
|
||||
"23": "2 AM to 3 AM",
|
||||
"24": "3 AM to 4 AM",
|
||||
"41": "4 AM",
|
||||
"42": "5 AM",
|
||||
"43": "6 AM",
|
||||
"44": "7 AM",
|
||||
"45": "8 AM",
|
||||
"46": "9 AM",
|
||||
"47": "10 AM",
|
||||
"48": "11 AM",
|
||||
"49": "12 PM",
|
||||
"50": "1 PM",
|
||||
"51": "2 PM",
|
||||
"52": "3 PM",
|
||||
"53": "4 PM",
|
||||
"54": "5 PM",
|
||||
"55": "6 PM",
|
||||
"56": "7 PM",
|
||||
"57": "8 PM",
|
||||
"58": "9 PM",
|
||||
"59": "10 PM",
|
||||
"60": "11 PM",
|
||||
"61": "12 AM",
|
||||
"62": "1 AM",
|
||||
"63": "2 AM",
|
||||
"64": "3 AM"
|
||||
},
|
||||
"actcode_code": {
|
||||
"000000": "Total, all activities",
|
||||
"010100": "Sleeping",
|
||||
"010200": "Grooming",
|
||||
"010300": "Health-related self care",
|
||||
"010400": "Personal activities",
|
||||
"020100": "Housework",
|
||||
"020101": "Interior cleaning",
|
||||
"020102": "Laundry",
|
||||
"020104": "Storing interior household items, including food",
|
||||
"020200": "Food preparation and cleanup",
|
||||
"020201": "Food and drink preparation",
|
||||
"020203": "Kitchen and food cleanup",
|
||||
"020300": "Interior maintenance, repair, and decoration",
|
||||
"020400": "Exterior maintenance, repair, and decoration",
|
||||
"020500": "Lawn and garden care",
|
||||
"020600": "Animal and pet care",
|
||||
"020601": "Care for animals and pets (not veterinary care)",
|
||||
"020602": "Walking, exercising, and playing with animals",
|
||||
"020700": "Vehicle care (by self)",
|
||||
"020800": "Appliance, tool, and toy maintenance (by self)",
|
||||
"020901": "Financial management",
|
||||
"020902": "Household and personal organization and planning",
|
||||
"020903": "Household and personal mail and messages",
|
||||
"020904": "Household and personal e-mail and messages",
|
||||
"030100": "Caring for and helping household children (except activities related to education and health)",
|
||||
"030101": "Physical care for household children",
|
||||
"030102": "Reading to/with household children",
|
||||
"030103": "Playing with household children, not sports",
|
||||
"030106": "Talking with/listening to household children",
|
||||
"030109": "Looking after household children (as a primary activity)",
|
||||
"030110": "Attending household children's events",
|
||||
"030200": "Activities related to household children's education",
|
||||
"030201": "Helping household children with homework",
|
||||
"030300": "Activities related to household children's health",
|
||||
"030400": "Caring for household adults",
|
||||
"030401": "Physical care for household adults",
|
||||
"030500": "Helping household adults",
|
||||
"040400": "Caring for nonhousehold adults",
|
||||
"040500": "Helping nonhousehold adults",
|
||||
"050100": "Working",
|
||||
"050101": "Working, main job",
|
||||
"050200": "Work-related activities",
|
||||
"050300": "Other income-generating activities",
|
||||
"050400": "Job search and interviewing",
|
||||
"060100": "Attending class",
|
||||
"060101": "Taking class for degree, certification, or licensure",
|
||||
"060300": "Homework and research",
|
||||
"070000": "Consumer goods purchases",
|
||||
"070101": "Grocery shopping",
|
||||
"080000": "Professional and personal care services",
|
||||
"080200": "Financial services and banking",
|
||||
"080400": "Medical and care services",
|
||||
"080500": "Personal care services",
|
||||
"090000": "Household services",
|
||||
"090200": "Home maintenance, repair, decoration, and construction (not done by self)",
|
||||
"090500": "Vehicle maintenance and repair services (not done by self)",
|
||||
"100200": "Civic obligations and participation",
|
||||
"110100": "Eating and drinking",
|
||||
"120000": "Socializing, relaxing, and leisure",
|
||||
"120100": "Socializing and communicating (except social events)",
|
||||
"120200": "Attending or hosting social events",
|
||||
"120300": "Relaxing and leisure",
|
||||
"120301": "Relaxing and thinking",
|
||||
"120307": "Playing games",
|
||||
"120308": "Computer use for leisure (excluding games)",
|
||||
"120312": "Reading for personal interest",
|
||||
"120400": "Arts and entertainment (other than sports)",
|
||||
"130000": "Sports, exercise, and recreation",
|
||||
"130100": "Participating in sports, exercise, or recreation",
|
||||
"130131": "Walking",
|
||||
"130200": "Attending sporting or recreational events",
|
||||
"140000": "Religious and spiritual activities",
|
||||
"140101": "Attending religious services",
|
||||
"140102": "Participation in religious practices",
|
||||
"150000": "Volunteer activities",
|
||||
"150100": "Administrative and support activities (volunteering)",
|
||||
"150200": "Social service and care activities (volunteering)",
|
||||
"150300": "Indoor and outdoor maintenance, building, and cleanup activities (volunteering)",
|
||||
"150400": "Participating in performance and cultural activities (volunteering)",
|
||||
"150500": "Attending meetings, conferences, and training (volunteering)",
|
||||
"160100": "Telephone calls (to or from)",
|
||||
"180000": "Traveling",
|
||||
"180100": "Travel related to personal care",
|
||||
"180200": "Travel related to household activities",
|
||||
"180300": "Travel related to caring for and helping household members",
|
||||
"180400": "Travel related to caring for and helping nonhousehold members",
|
||||
"180500": "Travel related to work",
|
||||
"180600": "Travel related to education",
|
||||
"181100": "Travel related to eating and drinking",
|
||||
"181600": "Travel related to telephone calls",
|
||||
"600001": "Personal care activities (includes travel)",
|
||||
"600003": "Household activities (includes travel)",
|
||||
"600005": "Household management",
|
||||
"600007": "Caring for and helping household members (includes travel)",
|
||||
"600008": "Caring for and helping household children under 18",
|
||||
"600009": "Caring for and helping household adults",
|
||||
"600010": "Caring for and helping nonhousehold members (includes travel)",
|
||||
"600011": "Caring for and helping nonhousehold children",
|
||||
"600012": "Caring for and helping nonhousehold adults",
|
||||
"600013": "Working and work-related activities (includes travel)",
|
||||
"600016": "Educational activities (includes travel)",
|
||||
"600018": "Purchasing goods and services (includes travel)",
|
||||
"600021": "Travel related to purchasing goods and services",
|
||||
"600022": "Eating and drinking (includes travel)",
|
||||
"600023": "Leisure and sports (includes travel)",
|
||||
"600024": "Socializing and communicating",
|
||||
"600025": "Watching TV",
|
||||
"600027": "Participating in sports, exercise, and recreation (includes related waiting and security)",
|
||||
"600029": "Travel related to leisure and sports",
|
||||
"600030": "Organizational, civic, and religious activities",
|
||||
"600032": "Volunteering (organizational and civic activities)",
|
||||
"600033": "Telephone calls, mail, and e-mail (includes travel)",
|
||||
"600034": "Other activities, not elsewhere classified (includes misc. travel and data codes)",
|
||||
"600039": "Doing hobbies or playing with household children",
|
||||
"600043": "Caring for household children as a primary activity (includes travel)",
|
||||
"600057": "Caring for household children under 13 as a secondary activity, total",
|
||||
"600058": "Playing games and computer use for leisure",
|
||||
"600059": "Other leisure and sports activities, including travel",
|
||||
"600060": "Other activities",
|
||||
"600066": "Travel related to organizational, civic, and religious activities",
|
||||
"600067": "Travel related to care of household children",
|
||||
"600069": "Government services",
|
||||
"600072": "Household and personal messages",
|
||||
"600083": "Caring for and helping others",
|
||||
"600085": "Awake time",
|
||||
"700001": "Talking with/listening to household children",
|
||||
"700171": "Other childcare activities"
|
||||
},
|
||||
"industry_code": {
|
||||
"0000": null
|
||||
},
|
||||
"occ_code": {
|
||||
"0000": null,
|
||||
"0008": "Management, business, and financial operations occupations",
|
||||
"0998": "Professional and related occupations",
|
||||
"3597": "Service occupations",
|
||||
"4699": "Sales and related occupations",
|
||||
"4999": "Office and administrative support occupations",
|
||||
"5999": "Farming, fishing, and forestry occupations",
|
||||
"6199": "Construction and extraction occupations",
|
||||
"6999": "Installation, maintenance, and repair occupations",
|
||||
"7699": "Production occupations",
|
||||
"8999": "Transportation and material moving occupations"
|
||||
},
|
||||
"prhhchild_code": {
|
||||
"00": "All persons",
|
||||
"01": "No household children under age 18",
|
||||
"05": "Youngest household child age 6-12",
|
||||
"10": "Youngest household child age 13-17",
|
||||
"12": "Household child under age 13",
|
||||
"13": "Household child under age 18",
|
||||
"14": "Household child under age 6",
|
||||
"15": "Youngest household child age 6-17"
|
||||
},
|
||||
"earn_code": {
|
||||
"00": "All persons",
|
||||
"01": "Weekly earnings less than or equal to the 25th percentile",
|
||||
"02": "Weekly earnings greater than 25th percentile and less than or equal to 50th percentile",
|
||||
"03": "Weekly earnings greater than 50th percentile and less than or equal to 75th percentile",
|
||||
"04": "Weekly earnings greater than the 75th percentile"
|
||||
},
|
||||
"disability_code": {
|
||||
"00": null
|
||||
},
|
||||
"who_code": {
|
||||
"00": null,
|
||||
"01": "Alone",
|
||||
"02": "Others present (not alone)",
|
||||
"03": "Spouse only",
|
||||
"24": "Family (living in HH)",
|
||||
"29": "WHO data not available",
|
||||
"35": "Co-workers, colleagues, clients",
|
||||
"36": "Own household child under age 18",
|
||||
"40": "Household members",
|
||||
"41": "Nonhousehold members",
|
||||
"42": "Family (not living in household)",
|
||||
"43": "Friends, neighbors, or acquaintances",
|
||||
"44": "Other, nonhousehold members",
|
||||
"45": "Nonfamily (living in household)"
|
||||
},
|
||||
"hhnscc03_code": {
|
||||
"00": null,
|
||||
"06": "Secondary childcare of household child under 13"
|
||||
},
|
||||
"schenr_code": {
|
||||
"0": null
|
||||
},
|
||||
"prownhhchild_code": {
|
||||
"00": "All persons",
|
||||
"01": "No own household children under age 18",
|
||||
"05": "Youngest own household child age 6-12",
|
||||
"10": "Youngest own household child age 13-17",
|
||||
"12": "Own household child under age 13",
|
||||
"13": "Own household child under age 18",
|
||||
"14": "Own household child under age 6",
|
||||
"15": "Youngest own household child age 6-17"
|
||||
},
|
||||
"work_code": {
|
||||
"0": null,
|
||||
"1": "On days worked",
|
||||
"3": "On days worked at main job"
|
||||
},
|
||||
"elnum_code": {
|
||||
"00": "All"
|
||||
},
|
||||
"ecage_code": {
|
||||
"000": "Persons of all ages"
|
||||
},
|
||||
"elfreq_code": {
|
||||
"0": "All frequencies"
|
||||
},
|
||||
"eldur_code": {
|
||||
"00": "All durations of care"
|
||||
},
|
||||
"elwho_code": {
|
||||
"00": null
|
||||
},
|
||||
"ecytd_code": {
|
||||
"0": "All days"
|
||||
},
|
||||
"elder_code": {
|
||||
"0": "All persons"
|
||||
},
|
||||
"lfstatw_code": {
|
||||
"000": "All persons",
|
||||
"010": "Employed",
|
||||
"011": "Employed and on days worked",
|
||||
"013": "Employed and on days worked at main job",
|
||||
"040": "Employed full time",
|
||||
"041": "Employed full time and on days worked",
|
||||
"070": "Employed part time",
|
||||
"071": "Employed part time and on days worked",
|
||||
"200": "Not Employed"
|
||||
},
|
||||
"pertype_code": {
|
||||
"00": "All days",
|
||||
"16": "Weekend days and holidays",
|
||||
"18": "Weekdays",
|
||||
"19": "Nonholiday weekdays"
|
||||
},
|
||||
"footnote_code": {
|
||||
"A": "Includes naps and spells of sleeplessness.",
|
||||
"B": "Individuals may have worked at more than one location.",
|
||||
"C": "See Footnote C on <a href=\"/tus/footnote.htm#c\" target=\"new\">www.bls.gov/tus/footnote.htm</a>.",
|
||||
"D": "See Footnote D on <a href=\"/tus/footnote.htm#d\" target=\"new\">www.bls.gov/tus/footnote.htm</a>.",
|
||||
"F": "See Footnote F on <a href=\"/tus/footnote.htm#f\" target=\"new\">www.bls.gov/tus/footnote.htm</a>.",
|
||||
"G": "See Footnote G on <a href=\"/tus/footnote.htm#g\" target=\"new\">www.bls.gov/tus/footnote.htm</a>.",
|
||||
"H": "Persons of Hispanic or Latino ethnicity may be of any race.",
|
||||
"I": "Includes persons with a high school diploma or equivalent.",
|
||||
"J": "Includes persons with bachelor's, master's, professional, and doctoral degrees.",
|
||||
"K": "Excludes household and personal mail, e-mail, and messages.",
|
||||
"M": "See Footnote M on <a href=\"/tus/footnote.htm#m\" target=\"new\">www.bls.gov/tus/footnote.htm</a>.",
|
||||
"N": "See Footnote N on <a href=\"/tus/footnote.htm#n\" target=\"new\">www.bls.gov/tus/footnote.htm</a>.",
|
||||
"S": "Estimate is suppressed because it does not meet the American Time Use Survey publication standards.",
|
||||
"Z": "Estimate is approximately zero."
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
openbb_platform/providers/bls/openbb_bls/assets/tu_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/tu_series.xz
vendored
Normal file
Binary file not shown.
1417
openbb_platform/providers/bls/openbb_bls/assets/wages_codes.json
vendored
Normal file
1417
openbb_platform/providers/bls/openbb_bls/assets/wages_codes.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
openbb_platform/providers/bls/openbb_bls/assets/wages_series.xz
vendored
Normal file
BIN
openbb_platform/providers/bls/openbb_bls/assets/wages_series.xz
vendored
Normal file
Binary file not shown.
@@ -0,0 +1 @@
|
||||
"""BLS Provider Models."""
|
||||
152
openbb_platform/providers/bls/openbb_bls/models/search.py
Normal file
152
openbb_platform/providers/bls/openbb_bls/models/search.py
Normal file
@@ -0,0 +1,152 @@
|
||||
"""BLS Search Model."""
|
||||
|
||||
# pylint: disable=unused-argument
|
||||
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from openbb_bls.utils.constants import SURVEY_CATEGORIES, SURVEY_CATEGORY_NAMES
|
||||
from openbb_core.app.model.abstract.error import OpenBBError
|
||||
from openbb_core.provider.abstract.annotated_result import AnnotatedResult
|
||||
from openbb_core.provider.abstract.fetcher import Fetcher
|
||||
from openbb_core.provider.standard_models.bls_search import (
|
||||
SearchData,
|
||||
SearchQueryParams,
|
||||
)
|
||||
from openbb_core.provider.utils.errors import EmptyDataError
|
||||
from pydantic import Field
|
||||
|
||||
|
||||
class BlsSearchQueryParams(SearchQueryParams):
|
||||
"""BLS Search Query Parameters."""
|
||||
|
||||
__json_schema_extra__ = {
|
||||
"category": {
|
||||
"multiple_items_allowed": False,
|
||||
"choices": list(SURVEY_CATEGORY_NAMES),
|
||||
},
|
||||
}
|
||||
|
||||
category: SURVEY_CATEGORIES = Field(
|
||||
description="""The category of BLS survey to search within.
|
||||
An empty search query will return all series within the category. Options are:
|
||||
\n cpi - Consumer Price Index
|
||||
\n pce - Personal Consumption Expenditure
|
||||
\n ppi - Producer Price Index
|
||||
\n ip - Industry Productivity
|
||||
\n jolts - Job Openings and Labor Turnover Survey
|
||||
\n nfp - Nonfarm Payrolls
|
||||
\n cps - Current Population Survey
|
||||
\n lfs - Labor Force Statistics
|
||||
\n wages - Wages
|
||||
\n ec - Employer Costs
|
||||
\n sla - State and Local Area Employment
|
||||
\n bed - Business Employment Dynamics
|
||||
\n tu - Time Use
|
||||
""",
|
||||
)
|
||||
include_extras: bool = Field(
|
||||
default=False,
|
||||
description="Include additional information in the search results."
|
||||
+ " Extra fields returned are metadata and vary by survey."
|
||||
+ " Fields are undefined strings that typically have names ending with '_code'.",
|
||||
)
|
||||
include_code_map: bool = Field(
|
||||
default=False,
|
||||
description="When True, includes the complete code map for eaçh survey in the category,"
|
||||
+ " returned separately as a nested JSON to the `extras['results_metadata']` property of the response."
|
||||
+ " Example content is the NAICS industry map for PPI surveys."
|
||||
+ " Each code is a value within the 'symbol' of the time series.",
|
||||
)
|
||||
|
||||
|
||||
class BlsSearchData(SearchData):
|
||||
"""BLS Search Data."""
|
||||
|
||||
__alias_dict__ = {
|
||||
"symbol": "series_id",
|
||||
"title": "series_title",
|
||||
}
|
||||
|
||||
|
||||
class BlsSearchFetcher(Fetcher[BlsSearchQueryParams, List[BlsSearchData]]):
|
||||
"""BLS Search Fetcher."""
|
||||
|
||||
require_credentials = False
|
||||
|
||||
@staticmethod
|
||||
def transform_query(params: Dict[str, Any]) -> BlsSearchQueryParams:
|
||||
"""Transform query parameters."""
|
||||
return BlsSearchQueryParams(**params)
|
||||
|
||||
@staticmethod
|
||||
def extract_data(
|
||||
query: BlsSearchQueryParams,
|
||||
credentials: Optional[Dict[str, str]],
|
||||
**kwargs: Any,
|
||||
) -> List[Dict]:
|
||||
"""Extract the data."""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
from openbb_bls.utils.helpers import open_asset
|
||||
from pandas import Series
|
||||
|
||||
try:
|
||||
df = open_asset(f"{query.category}_series")
|
||||
except OpenBBError as e:
|
||||
raise e from e
|
||||
|
||||
terms = [term.strip() for term in query.query.split(";")] if query.query else []
|
||||
|
||||
if not terms:
|
||||
records = (
|
||||
df.to_dict(orient="records")
|
||||
if query.include_extras is True
|
||||
else df.filter(
|
||||
items=["series_id", "series_title", "survey_name"], axis=1
|
||||
).to_dict(orient="records")
|
||||
)
|
||||
else:
|
||||
combined_mask = Series([True] * len(df))
|
||||
for term in terms:
|
||||
mask = df.apply(
|
||||
lambda row, term=term: row.astype(str).str.contains(
|
||||
term, case=False, regex=True, na=False
|
||||
)
|
||||
).any(axis=1)
|
||||
combined_mask &= mask
|
||||
|
||||
matches = df[combined_mask]
|
||||
|
||||
if matches.empty:
|
||||
raise EmptyDataError("No results found for the provided query.")
|
||||
|
||||
records = (
|
||||
matches.to_dict(orient="records")
|
||||
if query.include_extras is True
|
||||
else matches.filter(
|
||||
items=["series_id", "series_title", "survey_name"], axis=1
|
||||
).to_dict(orient="records")
|
||||
)
|
||||
|
||||
return records
|
||||
|
||||
@staticmethod
|
||||
def transform_data(
|
||||
query: BlsSearchQueryParams,
|
||||
data: List[Dict],
|
||||
**kwargs: Any,
|
||||
) -> AnnotatedResult[List[BlsSearchData]]:
|
||||
"""Transform the data."""
|
||||
metadata: Dict = {}
|
||||
if query.include_code_map is True:
|
||||
# pylint: disable=import-outside-toplevel
|
||||
from openbb_bls.utils.helpers import open_asset
|
||||
|
||||
try:
|
||||
metadata = open_asset(f"{query.category}_codes")
|
||||
except OpenBBError as e:
|
||||
raise e from e
|
||||
|
||||
return AnnotatedResult(
|
||||
result=[BlsSearchData.model_validate(d) for d in data],
|
||||
metadata=metadata,
|
||||
)
|
||||
218
openbb_platform/providers/bls/openbb_bls/models/series.py
Normal file
218
openbb_platform/providers/bls/openbb_bls/models/series.py
Normal file
@@ -0,0 +1,218 @@
|
||||
"""BLS Series Model."""
|
||||
|
||||
# pylint: disable=unused-argument
|
||||
|
||||
from typing import Any, Dict, List, Optional
|
||||
from warnings import warn
|
||||
|
||||
from openbb_core.app.model.abstract.error import OpenBBError
|
||||
from openbb_core.provider.abstract.annotated_result import AnnotatedResult
|
||||
from openbb_core.provider.abstract.fetcher import Fetcher
|
||||
from openbb_core.provider.standard_models.bls_series import (
|
||||
SeriesData,
|
||||
SeriesQueryParams,
|
||||
)
|
||||
from openbb_core.provider.utils.errors import EmptyDataError
|
||||
from pydantic import Field
|
||||
|
||||
|
||||
class BlsSeriesQueryParams(SeriesQueryParams):
|
||||
"""BLS Series Query Parameters."""
|
||||
|
||||
__json_schema_extra__ = {
|
||||
"symbol": {"multiple_items_allowed": True},
|
||||
}
|
||||
|
||||
calculations: bool = Field(
|
||||
default=True,
|
||||
description="Include calculations in the response, if available. Default is True.",
|
||||
)
|
||||
annual_average: bool = Field(
|
||||
default=False,
|
||||
description="Include annual averages in the response, if available. Default is False.",
|
||||
)
|
||||
aspects: bool = Field(
|
||||
default=False,
|
||||
description="Include all aspects associated with a data point for a given BLS series ID, if available."
|
||||
+ " Returned with the series metadata, under `extras` of the response object. Default is False.",
|
||||
)
|
||||
|
||||
|
||||
class BlsSeriesData(SeriesData):
|
||||
"""BLS Series Data."""
|
||||
|
||||
change_1M: Optional[float] = Field(
|
||||
default=None,
|
||||
description="One month change in value.",
|
||||
)
|
||||
change_3M: Optional[float] = Field(
|
||||
default=None,
|
||||
description="Three month change in value.",
|
||||
)
|
||||
change_6M: Optional[float] = Field(
|
||||
default=None,
|
||||
description="Six month change in value.",
|
||||
)
|
||||
change_12M: Optional[float] = Field(
|
||||
default=None,
|
||||
description="One year change in value.",
|
||||
)
|
||||
change_percent_1M: Optional[float] = Field(
|
||||
default=None,
|
||||
description="One month change in percent.",
|
||||
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
|
||||
)
|
||||
change_percent_3M: Optional[float] = Field(
|
||||
default=None,
|
||||
description="Three month change in percent.",
|
||||
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
|
||||
)
|
||||
change_percent_6M: Optional[float] = Field(
|
||||
default=None,
|
||||
description="Six month change in percent.",
|
||||
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
|
||||
)
|
||||
change_percent_12M: Optional[float] = Field(
|
||||
default=None,
|
||||
description="One year change in percent.",
|
||||
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
|
||||
)
|
||||
latest: Optional[bool] = Field(
|
||||
default=None,
|
||||
description="Latest value indicator.",
|
||||
)
|
||||
footnotes: Optional[str] = Field(
|
||||
default=None,
|
||||
description="Footnotes accompanying the value.",
|
||||
)
|
||||
|
||||
|
||||
class BlsSeriesFetcher(Fetcher[BlsSeriesQueryParams, List[BlsSeriesData]]):
|
||||
"""BLS Series Fetcher."""
|
||||
|
||||
@staticmethod
|
||||
def transform_query(params: Dict[str, Any]) -> BlsSeriesQueryParams:
|
||||
"""Transform query parameters."""
|
||||
return BlsSeriesQueryParams(**params)
|
||||
|
||||
@staticmethod
|
||||
async def aextract_data(
|
||||
query: BlsSeriesQueryParams,
|
||||
credentials: Optional[Dict[str, str]],
|
||||
**kwargs: Any,
|
||||
) -> Dict:
|
||||
"""Extract the data from the BLS API."""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
import asyncio # noqa
|
||||
from datetime import datetime, timedelta
|
||||
from openbb_bls.utils.helpers import get_bls_timeseries
|
||||
|
||||
api_key = credentials.get("bls_api_key") if credentials else ""
|
||||
symbols = (
|
||||
query.symbol.split(",") if isinstance(query.symbol, str) else query.symbol
|
||||
)
|
||||
now = datetime.now()
|
||||
start_year = (
|
||||
query.start_date.year
|
||||
if query.start_date
|
||||
else (now - timedelta(weeks=52 * 3)).year
|
||||
)
|
||||
end_year = query.end_date.year if query.end_date else now.year
|
||||
results: Dict = {"data": [], "messages": [], "metadata": {}}
|
||||
messages: List = []
|
||||
|
||||
# The max number of symbols per request is 50.
|
||||
# The max year range is 20.
|
||||
# We chunk the request to handle the provided start/end date by the user.
|
||||
def chunk_list(lst, chunk_size):
|
||||
"""Yield successive chunks from lst of size chunk_size."""
|
||||
for i in range(0, len(lst), chunk_size):
|
||||
yield lst[i : i + chunk_size]
|
||||
|
||||
def chunk_years(start_year, end_year, chunk_size):
|
||||
"""Yield successive year ranges of size chunk_size."""
|
||||
for year in range(start_year, end_year + 1, chunk_size):
|
||||
yield (year, min(year + chunk_size - 1, end_year))
|
||||
|
||||
# Define a function to wrap as a coroutine.
|
||||
async def make_query(symbol, start, end):
|
||||
"""Make a query to the BLS API."""
|
||||
data = await get_bls_timeseries(
|
||||
api_key=api_key,
|
||||
series_ids=symbol,
|
||||
start_year=start,
|
||||
end_year=end,
|
||||
calculations=query.calculations,
|
||||
catalog=True,
|
||||
annual_average=query.annual_average,
|
||||
aspects=query.aspects,
|
||||
)
|
||||
if isinstance(data, dict):
|
||||
results.update(
|
||||
{
|
||||
"data": results.get("data", []) + data.get("data", []),
|
||||
"messages": list(
|
||||
set(results.get("messages", []) + data.get("messages", []))
|
||||
),
|
||||
"metadata": {
|
||||
**results.get("metadata", {}),
|
||||
**data.get("metadata", {}),
|
||||
},
|
||||
}
|
||||
)
|
||||
elif isinstance(data, EmptyDataError) and data.message:
|
||||
messages.append(data.__dict__.get("message", ""))
|
||||
|
||||
# Create a list of tasks to run based on the API query limitations.
|
||||
tasks: List = []
|
||||
|
||||
for symbol_chunk in chunk_list(symbols, 50):
|
||||
for year_range in chunk_years(start_year, end_year, 20):
|
||||
tasks.append(
|
||||
asyncio.create_task(
|
||||
make_query(
|
||||
symbol_chunk,
|
||||
year_range[0],
|
||||
year_range[1],
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
await asyncio.gather(*tasks)
|
||||
|
||||
if not results.get("data"):
|
||||
if messages:
|
||||
raise OpenBBError(",".join(set(messages)))
|
||||
raise EmptyDataError("The request was returned empty.")
|
||||
|
||||
return results
|
||||
|
||||
@staticmethod
|
||||
def transform_data(
|
||||
query: BlsSeriesQueryParams,
|
||||
data: Dict,
|
||||
**kwargs: Any,
|
||||
) -> AnnotatedResult[List[BlsSeriesData]]:
|
||||
"""Transform the data."""
|
||||
series_data = data.get("data", [])
|
||||
messages = data.get("messages", [])
|
||||
metadata = data.get("metadata", {})
|
||||
if messages:
|
||||
for message in messages:
|
||||
warn(message)
|
||||
|
||||
results = sorted(
|
||||
[BlsSeriesData.model_validate(series) for series in series_data],
|
||||
key=lambda x: (x.date, x.symbol),
|
||||
)
|
||||
|
||||
if query.start_date is not None:
|
||||
results = [r for r in results if r.date >= query.start_date]
|
||||
|
||||
if query.end_date is not None:
|
||||
results = [r for r in results if r.date <= query.end_date]
|
||||
|
||||
return AnnotatedResult(
|
||||
result=results,
|
||||
metadata=metadata,
|
||||
)
|
||||
@@ -0,0 +1 @@
|
||||
"""BLS Provider Utilities."""
|
||||
442
openbb_platform/providers/bls/openbb_bls/utils/constants.py
Normal file
442
openbb_platform/providers/bls/openbb_bls/utils/constants.py
Normal file
@@ -0,0 +1,442 @@
|
||||
"""BLS Provider Constants."""
|
||||
|
||||
from typing import Literal
|
||||
|
||||
PPI_SURVEYS = ["WP", "PC"]
|
||||
PCE_SURVEYS = ["CX"]
|
||||
CPI_SURVEYS = ["AP", "CU", "CW", "LI", "SU", "EI"]
|
||||
PRODUCTIVITY_SURVEYS = ["IP", "PR", "MP"]
|
||||
LABOR_FORCE_STATISTICS = ["LN", "FM", "IN", "WS"]
|
||||
CURRENT_POPULATION_SURVEY = ["LE", "LU"]
|
||||
LOCAL_EMPLOYMENT_SURVEYS = ["LA", "SM"]
|
||||
JOLTS_SURVEYS = ["JL", "JT"]
|
||||
NFP_SURVEYS = ["CE"]
|
||||
WAGES_SURVEYS = ["CI", "WM"]
|
||||
EMPLOYER_COSTS = ["CM", "CC"]
|
||||
BUSINESS_EMPLOYMENT_DYNAMICS = ["BD"]
|
||||
TIME_USE_SURVEYS = ["TU"]
|
||||
|
||||
SUPPORTED_SURVEYS = sorted(
|
||||
list(
|
||||
PPI_SURVEYS
|
||||
+ PCE_SURVEYS
|
||||
+ CPI_SURVEYS
|
||||
+ PRODUCTIVITY_SURVEYS
|
||||
+ LABOR_FORCE_STATISTICS
|
||||
+ LOCAL_EMPLOYMENT_SURVEYS
|
||||
+ CURRENT_POPULATION_SURVEY
|
||||
+ JOLTS_SURVEYS
|
||||
+ NFP_SURVEYS
|
||||
+ WAGES_SURVEYS
|
||||
+ EMPLOYER_COSTS
|
||||
+ BUSINESS_EMPLOYMENT_DYNAMICS
|
||||
+ TIME_USE_SURVEYS
|
||||
)
|
||||
)
|
||||
|
||||
SURVEY_CATEGORY_MAP = {
|
||||
"cpi": [d.lower() for d in CPI_SURVEYS],
|
||||
"pce": [d.lower() for d in PCE_SURVEYS],
|
||||
"ppi": [d.lower() for d in PPI_SURVEYS],
|
||||
"ip": [d.lower() for d in PRODUCTIVITY_SURVEYS],
|
||||
"jolts": [d.lower() for d in JOLTS_SURVEYS],
|
||||
"nfp": [d.lower() for d in NFP_SURVEYS],
|
||||
"cps": [d.lower() for d in CURRENT_POPULATION_SURVEY],
|
||||
"lfs": [d.lower() for d in LABOR_FORCE_STATISTICS],
|
||||
"wages": [d.lower() for d in WAGES_SURVEYS],
|
||||
"ec": [d.lower() for d in EMPLOYER_COSTS],
|
||||
"sla": [d.lower() for d in LOCAL_EMPLOYMENT_SURVEYS],
|
||||
"bed": [d.lower() for d in BUSINESS_EMPLOYMENT_DYNAMICS],
|
||||
"tu": [d.lower() for d in TIME_USE_SURVEYS],
|
||||
}
|
||||
|
||||
SURVEY_CATEGORY_NAMES = {
|
||||
"cpi": "Consumer Price Index",
|
||||
"pce": "Personal Consumption Expenditure",
|
||||
"ppi": "Producer Price Index",
|
||||
"ip": "Industry Productivity",
|
||||
"jolts": "Job Openings and Labor Turnover Survey",
|
||||
"nfp": "Nonfarm Payrolls",
|
||||
"cps": "Current Population Survey",
|
||||
"lfs": "Labor Force Statistics",
|
||||
"wages": "Wages",
|
||||
"ec": "Employer Costs",
|
||||
"sla": "State and Local Area Employment",
|
||||
"bed": "Business Employment Dynamics",
|
||||
"tu": "Time Use",
|
||||
}
|
||||
|
||||
SURVEY_CATEGORIES = Literal[
|
||||
"cpi",
|
||||
"pce",
|
||||
"ppi",
|
||||
"ip",
|
||||
"jolts",
|
||||
"nfp",
|
||||
"cps",
|
||||
"lfs",
|
||||
"wages",
|
||||
"ec",
|
||||
"sla",
|
||||
"bed",
|
||||
"tu",
|
||||
]
|
||||
|
||||
ALL_SURVEYS = [
|
||||
{
|
||||
"survey_name": "Consumer Price Index - Average Price Data",
|
||||
"survey_abbreviation": "AP",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Business Employment Dynamics",
|
||||
"survey_abbreviation": "BD",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Collective Bargaining Agreements-State and Local Government",
|
||||
"survey_abbreviation": "BG",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Collective Bargaining Agreements-Private Sector",
|
||||
"survey_abbreviation": "BP",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Biennial Nonfatal Case and Demographic numbers and rates: selected characteristics",
|
||||
"survey_abbreviation": "CB",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Employer Costs for Employee Compensation",
|
||||
"survey_abbreviation": "CC",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Nonfatal cases involving days away from work: selected characteristics",
|
||||
"survey_abbreviation": "CD",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Employment, Hours, and Earnings from the Current Employment Statistics survey (National)",
|
||||
"survey_abbreviation": "CE",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Census of Fatal Occupational Injuries",
|
||||
"survey_abbreviation": "CF",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Nonfatal cases involving days away from work: selected characteristics (2003 - 2010)",
|
||||
"survey_abbreviation": "CH",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Employment Cost Index",
|
||||
"survey_abbreviation": "CI",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Employer Costs for Employee Compensation",
|
||||
"survey_abbreviation": "CM",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Nonfatal cases involving days away from work: selected characteristics (2011 forward)",
|
||||
"survey_abbreviation": "CS",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Consumer Price Index - All Urban Consumers",
|
||||
"survey_abbreviation": "CU",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Consumer Price Index - Urban Wage Earners and Clerical Workers",
|
||||
"survey_abbreviation": "CW",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Consumer Expenditure Survey",
|
||||
"survey_abbreviation": "CX",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Import/Export Price Indexes",
|
||||
"survey_abbreviation": "EI",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Quarterly Census of Employment and Wages (SIC)",
|
||||
"survey_abbreviation": "EW",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Census of Fatal Occupational Injuries (2003 - 2010)",
|
||||
"survey_abbreviation": "FI",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Marital and family labor force statistics from the Current Population Survey",
|
||||
"survey_abbreviation": "FM",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Census of Fatal Occupational Injuries (2011 forward)",
|
||||
"survey_abbreviation": "FW",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Nonfatal cases involving days away from work: Selected Characteristics (2002)",
|
||||
"survey_abbreviation": "HC",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Occupational injuries and illnesses: industry data (pre-1989)",
|
||||
"survey_abbreviation": "HS",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Occupational injuries and illnesses: industry data",
|
||||
"survey_abbreviation": "II",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "International Labor Comparison",
|
||||
"survey_abbreviation": "IN",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Industry Productivity",
|
||||
"survey_abbreviation": "IP",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Occupational injuries and illnesses industry data",
|
||||
"survey_abbreviation": "IS",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Job Openings and Labor Turnover Survey",
|
||||
"survey_abbreviation": "JL",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Job Openings and Labor Turnover Survey",
|
||||
"survey_abbreviation": "JT",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Local Area Unemployment Statistics",
|
||||
"survey_abbreviation": "LA",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Weekly and hourly earnings data from the Current Population Survey",
|
||||
"survey_abbreviation": "LE",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Consumer Price Index - Department Store Inventory Price Index",
|
||||
"survey_abbreviation": "LI",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Labor Force Statistics from the Current Population Survey",
|
||||
"survey_abbreviation": "LN",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Union affiliation data from the Current Population Survey",
|
||||
"survey_abbreviation": "LU",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Major Sector Total Factor Productivity",
|
||||
"survey_abbreviation": "MP",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "National Compensation Survey-Benefits",
|
||||
"survey_abbreviation": "NB",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "National Compensation Survey",
|
||||
"survey_abbreviation": "NC",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "National Compensation Survey",
|
||||
"survey_abbreviation": "NW",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Occupational Employment and Wage Statistics",
|
||||
"survey_abbreviation": "OE",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Occupational Requirements",
|
||||
"survey_abbreviation": "OR",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Producer Price Index Industry Data",
|
||||
"survey_abbreviation": "PC",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Major Sector Productivity and Costs",
|
||||
"survey_abbreviation": "PR",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Occupational injuries and illnesses: industry data (1989-2001)",
|
||||
"survey_abbreviation": "SH",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Occupational injuries and illnesses: industry data (2002)",
|
||||
"survey_abbreviation": "SI",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "State and Area Employment, Hours, and Earnings",
|
||||
"survey_abbreviation": "SM",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Consumer Price Index - Chained Consumer Price Index",
|
||||
"survey_abbreviation": "SU",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "American Time Use",
|
||||
"survey_abbreviation": "TU",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "false",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Wage Modeling",
|
||||
"survey_abbreviation": "WM",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "false",
|
||||
},
|
||||
{
|
||||
"survey_name": "Producer Price Index-Commodities",
|
||||
"survey_abbreviation": "WP",
|
||||
"allowsNetChange": "false",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
{
|
||||
"survey_name": "Work Stoppage Data",
|
||||
"survey_abbreviation": "WS",
|
||||
"allowsNetChange": "true",
|
||||
"allowsPercentChange": "true",
|
||||
"hasAnnualAverages": "true",
|
||||
},
|
||||
]
|
||||
|
||||
SURVEY_NAMES = {
|
||||
d["survey_abbreviation"].lower(): d["survey_name"]
|
||||
for d in ALL_SURVEYS
|
||||
if d["survey_abbreviation"] in SUPPORTED_SURVEYS
|
||||
}
|
||||
423
openbb_platform/providers/bls/openbb_bls/utils/helpers.py
Normal file
423
openbb_platform/providers/bls/openbb_bls/utils/helpers.py
Normal file
@@ -0,0 +1,423 @@
|
||||
"""BLS Helpers."""
|
||||
|
||||
from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Union
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from pandas import DataFrame
|
||||
|
||||
|
||||
# We need to wrap this as a helper to accommodate requests for historical data
|
||||
# greater than 20 years in length, or containing more than 50 symbols.
|
||||
async def get_bls_timeseries( # pylint: disable=too-many-branches # noqa: PLR0912
|
||||
api_key: str,
|
||||
series_ids: Union[str, List[str]],
|
||||
start_year: Optional[int] = None,
|
||||
end_year: Optional[int] = None,
|
||||
calculations: bool = True,
|
||||
catalog: bool = True,
|
||||
annual_average: bool = True,
|
||||
aspects: bool = False,
|
||||
) -> Dict:
|
||||
"""Get BLS timeseries data. Max 50 symbols per request, and a 20 year historical window.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
api_key : str
|
||||
BLS API key.
|
||||
series_ids : List[str]
|
||||
List of BLS series IDs. Max 50 symbols per request.
|
||||
start_year : Optional[int]
|
||||
Start year for the data. Max history per-request may span 20 years.
|
||||
end_year : Optional[int]
|
||||
End year for the data. Max history per-request may span 20 years.
|
||||
calculations : bool
|
||||
Include calculations in the response, if available. Default is True.
|
||||
catalog : bool
|
||||
Include catalog information in the response. Default is True.
|
||||
annual_average : bool
|
||||
Include annual averages in the response, if available. Default is True.
|
||||
aspects : bool
|
||||
Include aspects in the response, if available. Default is False.
|
||||
|
||||
Returns
|
||||
-------
|
||||
Dict
|
||||
Returns a dictionary with the following keys: data, metadata, messages.
|
||||
EmptyDataError
|
||||
If no data is found, an EmptyDataError is returned and not raised.
|
||||
"""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
import json # noqa
|
||||
from warnings import warn
|
||||
from openbb_core.provider.utils.errors import EmptyDataError
|
||||
from openbb_core.provider.utils.helpers import amake_request
|
||||
|
||||
symbols = series_ids.split(",") if isinstance(series_ids, str) else series_ids
|
||||
if len(symbols) > 50:
|
||||
warn(
|
||||
"Max 50 symbols per request. Truncating to 50 symbols."
|
||||
"Break the request into multiple queries to get more data."
|
||||
)
|
||||
symbols = symbols[:50]
|
||||
|
||||
headers = {"Content-type": "application/json"}
|
||||
url = "https://api.bls.gov/publicAPI/v2/timeseries/data/"
|
||||
payload = json.dumps(
|
||||
{
|
||||
k: v
|
||||
for k, v in {
|
||||
"seriesid": symbols,
|
||||
"startyear": start_year,
|
||||
"endyear": end_year,
|
||||
"catalog": catalog,
|
||||
"calculations": calculations,
|
||||
"annualaverage": annual_average,
|
||||
"aspects": aspects,
|
||||
"registrationkey": api_key,
|
||||
}.items()
|
||||
if v
|
||||
}
|
||||
)
|
||||
res = await amake_request(url=url, method="POST", headers=headers, data=payload)
|
||||
results = res.get("Results", {}).get("series", []) # type: ignore
|
||||
messages = res.get("message", []) # type: ignore
|
||||
metadata: Dict = {}
|
||||
data: List = []
|
||||
for result in results:
|
||||
seriesID = result.get("seriesID")
|
||||
if not seriesID:
|
||||
continue
|
||||
catalog = result.get("catalog")
|
||||
if catalog:
|
||||
metadata.update({seriesID: catalog})
|
||||
_data = result.get("data", [])
|
||||
for _d in _data:
|
||||
new_d: Dict = {}
|
||||
year = _d.get("year", "")
|
||||
month = _d.get("period", "").replace("M", "")
|
||||
if month.startswith("A") or month in ("S01", "Q01"):
|
||||
_date = year + "-01-01"
|
||||
elif month == "S02":
|
||||
_date = year + "-07-01"
|
||||
elif month in ("S03", "Q05"):
|
||||
_date = year + "-12-31"
|
||||
month = "13"
|
||||
elif month == "Q02":
|
||||
_date = year + "-04-01"
|
||||
elif month == "Q03":
|
||||
_date = year + "-07-01"
|
||||
elif month == "Q04":
|
||||
_date = year + "-10-01"
|
||||
else:
|
||||
_date = year + "-12-31" if month == "13" else year + "-" + month + "-01"
|
||||
new_d["symbol"] = seriesID
|
||||
title = metadata[seriesID].get("series_title") if catalog else None
|
||||
title = title + (" (Annual Average)" if month == "13" else "")
|
||||
if title:
|
||||
new_d["title"] = title
|
||||
new_d["date"] = _date
|
||||
value = _d.get("value")
|
||||
if value and value != "-":
|
||||
new_d["value"] = float(value)
|
||||
else:
|
||||
new_d["value"] = None
|
||||
new_d["latest"] = _d.get("latest") == "true"
|
||||
footnotes = _d.get("footnotes")
|
||||
if footnotes:
|
||||
new_d["footnotes"] = "; ".join(
|
||||
[
|
||||
f.get("text") if isinstance(f, dict) else str(f) # type: ignore
|
||||
for f in footnotes
|
||||
if f
|
||||
]
|
||||
)
|
||||
if not new_d.get("footnotes"):
|
||||
new_d.pop("footnotes")
|
||||
|
||||
calcs = _d.get("calculations")
|
||||
if calcs:
|
||||
changes = calcs.get("net_changes")
|
||||
pct_changes = calcs.get("pct_changes")
|
||||
if changes:
|
||||
new_d["change_1M"] = (
|
||||
float(changes.get("1")) if changes.get("1") else None
|
||||
)
|
||||
new_d["change_3M"] = (
|
||||
float(changes.get("3")) if changes.get("3") else None
|
||||
)
|
||||
new_d["change_6M"] = (
|
||||
float(changes.get("6")) if changes.get("6") else None
|
||||
)
|
||||
new_d["change_12M"] = (
|
||||
float(changes.get("12")) if changes.get("12") else None
|
||||
)
|
||||
|
||||
if pct_changes:
|
||||
new_d["change_percent_1M"] = (
|
||||
float(pct_changes.get("1")) / 100
|
||||
if pct_changes.get("1")
|
||||
else None
|
||||
)
|
||||
new_d["change_percent_3M"] = (
|
||||
float(pct_changes.get("3")) / 100
|
||||
if pct_changes.get("3")
|
||||
else None
|
||||
)
|
||||
new_d["change_percent_6M"] = (
|
||||
float(pct_changes.get("6")) / 100
|
||||
if pct_changes.get("6")
|
||||
else None
|
||||
)
|
||||
new_d["change_percent_12M"] = (
|
||||
float(pct_changes.get("12")) / 100
|
||||
if pct_changes.get("12")
|
||||
else None
|
||||
)
|
||||
if aspects is True:
|
||||
# If there are aspects returned, we want to separate them from the main data.
|
||||
# We will store the aspects in the metadata dictionary.
|
||||
_aspects = _d.get("aspects")
|
||||
if _aspects:
|
||||
for aspect in _aspects:
|
||||
aspect.update(
|
||||
{
|
||||
"date": _date,
|
||||
"footnotes": " ".join(
|
||||
[f.get("text", "") for f in footnotes] # type: ignore
|
||||
if footnotes
|
||||
else None
|
||||
).strip(),
|
||||
}
|
||||
)
|
||||
new_aspects = [
|
||||
d for d in _aspects if d.get("value") and d.get("value") != "-"
|
||||
]
|
||||
if new_aspects:
|
||||
metadata[seriesID]["aspects"] = new_aspects
|
||||
else:
|
||||
messages.append(f"No Aspect Available for Series {seriesID}")
|
||||
|
||||
if new_d:
|
||||
data.append(new_d)
|
||||
|
||||
if not data:
|
||||
# Return EmptyDataError if no data is found instead of raising.
|
||||
# If we raise here, the API key can be exposed in the traceback.
|
||||
return EmptyDataError(f"No data found -> {messages}") # type: ignore
|
||||
|
||||
return {"data": data, "metadata": metadata, "messages": messages}
|
||||
|
||||
|
||||
async def get_survey_asset(survey: str, asset: str) -> "DataFrame":
|
||||
"""Get an asset in the FTP download folder of the two-letter survey code."""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
from io import StringIO # noqa
|
||||
from openbb_core.provider.utils.helpers import make_request
|
||||
from numpy import nan
|
||||
from pandas import read_csv, NA
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE16.2) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" # noqa # pylint: disable=line-too-long
|
||||
}
|
||||
url = f"https://download.bls.gov/pub/time.series/{survey.lower()}/{survey.lower()}.{asset.lower()}"
|
||||
res = make_request(url=url, method="GET", headers=headers)
|
||||
if res.status_code != 200:
|
||||
return
|
||||
df = read_csv(StringIO(res.text), sep="\t", low_memory=False, dtype="object")
|
||||
df.columns = [d.strip() for d in df.columns]
|
||||
df = df.apply(lambda x: x.str.strip() if x.dtype == "object" else x)
|
||||
|
||||
return df.replace({"''": None, '""': None, NA: None, "nan": None, nan: None})
|
||||
|
||||
|
||||
async def download_category_series_ids(category) -> Tuple[List, Dict]:
|
||||
"""Download all series ids for a category of survey, along with the code maps.
|
||||
This should only be required for updating static files.
|
||||
"""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
from numpy import nan # noqa
|
||||
from openbb_core.provider.utils.errors import EmptyDataError
|
||||
from openbb_bls.utils.constants import SURVEY_CATEGORY_MAP, SURVEY_NAMES
|
||||
|
||||
series_ids: List = []
|
||||
series_codes: Dict = {}
|
||||
|
||||
if category not in SURVEY_CATEGORY_MAP:
|
||||
raise EmptyDataError(
|
||||
f"Category {category} is not a supported choice. Choose from {list(SURVEY_CATEGORY_MAP)}"
|
||||
)
|
||||
|
||||
async def get_all_series_ids(survey):
|
||||
"""Get an asset in the FTP download folder of the two-letter survey code."""
|
||||
if survey in ["ch", "cs", "fw", "is", "nw", "oe", "yy"]:
|
||||
return
|
||||
data = await get_survey_asset(survey, "series")
|
||||
for col in ["series_title", "survey_name"]:
|
||||
if col not in data.columns:
|
||||
data.loc[:, col] = None
|
||||
codes = [d for d in data.columns if "code" in d and "periodicity" not in d]
|
||||
ids = data.get(["series_id", "series_title"] + codes).copy()
|
||||
|
||||
if ids is None or ids.empty:
|
||||
return
|
||||
|
||||
ids = ids.rename(columns={"footnote_codes": "footnote_code"})
|
||||
ids = ids.astype(str).replace({"nan": None, "''": None, "": None})
|
||||
|
||||
ids.loc[:, "survey_name"] = SURVEY_NAMES.get(survey.upper(), None)
|
||||
ids = ids[ids.series_id.astype(str).str.startswith(survey.upper())]
|
||||
|
||||
if ids is None or ids.empty:
|
||||
return
|
||||
|
||||
# Get the code maps for the survey and convert the codes in the series table.
|
||||
code_map: Dict = {}
|
||||
new_codes = [d.split("_")[0] for d in codes]
|
||||
|
||||
for code in new_codes:
|
||||
code = "datatype" if code == "data" else code # noqa
|
||||
code_dict: Dict = {}
|
||||
code_data = await get_survey_asset(survey, code)
|
||||
if code_data is None or code_data.empty:
|
||||
continue
|
||||
code = ( # noqa
|
||||
"data_type" if code == "datatype" and survey == "ce" else code
|
||||
)
|
||||
code_data = code_data.rename(
|
||||
columns={
|
||||
col: f"{code}_name"
|
||||
for col in code_data.columns
|
||||
if col in [f"{code}_text", f"{code}_title"]
|
||||
}
|
||||
)
|
||||
if f"{code}_code" in code_data.columns:
|
||||
if (
|
||||
code_data.index.dtype == "object"
|
||||
and code_data.get(f"{code}_name").isnull().all()
|
||||
):
|
||||
code_data.loc[:, f"{code}_name"] = code_data.loc[
|
||||
:, f"{code}_code"
|
||||
].copy()
|
||||
code_data.loc[:, f"{code}_code"] = code_data.index.copy()
|
||||
code_data = code_data.reset_index(drop=True)
|
||||
code_dict = (
|
||||
code_data.set_index(f"{code}_code")[[f"{code}_name"]]
|
||||
.to_dict()
|
||||
.get(f"{code}_name", code_dict)
|
||||
)
|
||||
else:
|
||||
code_dict = code_data.to_dict(orient="series")
|
||||
|
||||
code_map[f"{code}_code"] = code_dict
|
||||
ids[f"{code}_code"] = [code_dict.get(d, d) for d in ids[f"{code}_code"]]
|
||||
|
||||
# Footnotes may be comma-separated, so we need to expand them.
|
||||
if "footnote_code" in ids.columns:
|
||||
expanded_data = []
|
||||
for item in ids["footnote_code"]:
|
||||
if (
|
||||
item
|
||||
and isinstance(item, str)
|
||||
and "," in item
|
||||
and any(char.isdigit() for char in item)
|
||||
):
|
||||
expanded_data.append(
|
||||
" ".join(
|
||||
[
|
||||
code_map["footnote_code"].get(sub_item, sub_item)
|
||||
for sub_item in item.split(",")
|
||||
if code_map["footnote_code"].get(sub_item) is not None
|
||||
]
|
||||
)
|
||||
)
|
||||
else:
|
||||
expanded_data.append(item)
|
||||
ids["footnote_code"] = expanded_data
|
||||
|
||||
ids = ids.replace({nan: None, "nan": None, "''": None}).to_dict(
|
||||
orient="records"
|
||||
)
|
||||
series_ids.extend(ids)
|
||||
series_codes.update({survey: code_map})
|
||||
|
||||
# Iterate over the all the surveys in the category and generate the tables and code maps.
|
||||
# The FTP doesn't seem to like a flood of requests, so we do this operation in series.
|
||||
for survey in SURVEY_CATEGORY_MAP[category]:
|
||||
await get_all_series_ids(survey.lower())
|
||||
|
||||
return series_ids, series_codes
|
||||
|
||||
|
||||
def open_asset(asset: str) -> Union["DataFrame", Dict]:
|
||||
"""Open a static file asset for series IDs or code maps."""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
import os # noqa
|
||||
import json
|
||||
from importlib.resources import files
|
||||
from pathlib import Path
|
||||
from numpy import nan
|
||||
from openbb_core.app.model.abstract.error import OpenBBError
|
||||
from pandas import read_csv
|
||||
|
||||
if ".xz" not in asset and "series" in asset:
|
||||
asset = asset + ".xz"
|
||||
elif ".json" not in asset and "codes" in asset:
|
||||
asset = asset + ".json"
|
||||
elif ".json" in asset or ".xz" in asset:
|
||||
pass
|
||||
else:
|
||||
raise OpenBBError(f"Asset '{asset}' not supported. Expected .json or .xz file.")
|
||||
|
||||
assets_path = Path(str(files("openbb_bls").joinpath("assets")))
|
||||
|
||||
if not os.path.exists(assets_path.joinpath(asset)):
|
||||
raise OpenBBError(f"Asset '{asset}' not found.")
|
||||
|
||||
if asset.endswith(".json"):
|
||||
with open(assets_path.joinpath(asset)) as f:
|
||||
return json.load(f)
|
||||
else:
|
||||
with open(assets_path.joinpath(asset), "rb") as f:
|
||||
df = read_csv(f, compression="xz", low_memory=False, dtype="str")
|
||||
return df.replace({nan: None, "nan": None, "''": None}).dropna(
|
||||
how="all", axis=1
|
||||
)
|
||||
|
||||
|
||||
async def update_static_asset(category: str) -> None:
|
||||
"""Update a static file assets with series IDs and code maps for a given category.
|
||||
Do not use unless the static files in the assets folder require updating.
|
||||
"""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
import json # noqa
|
||||
from importlib.resources import files
|
||||
from pathlib import Path
|
||||
from openbb_core.app.model.abstract.error import OpenBBError
|
||||
from openbb_bls.utils.constants import SURVEY_CATEGORY_NAMES
|
||||
from numpy import nan
|
||||
from pandas import DataFrame
|
||||
|
||||
if category not in SURVEY_CATEGORY_NAMES:
|
||||
raise OpenBBError(
|
||||
f"Category '{category}' not found. Choose from {list(SURVEY_CATEGORY_NAMES)}"
|
||||
)
|
||||
|
||||
try:
|
||||
ids, codes = await download_category_series_ids(category)
|
||||
except Exception as e: # pylint: disable=broad-except
|
||||
raise OpenBBError(f"Failed to download {category} -> {e}") from e
|
||||
|
||||
assets_path = Path(str(files("openbb_bls").joinpath("assets")))
|
||||
|
||||
# Save the code map to a JSON file.
|
||||
if codes:
|
||||
with open(assets_path.joinpath(f"{category}_codes.json"), "w") as f:
|
||||
json.dump(codes, f, indent=4)
|
||||
|
||||
# Save the series IDs to a CSV file.
|
||||
if ids:
|
||||
df = DataFrame(ids)
|
||||
df = df.replace({nan: None, "nan": None, "''": None}).dropna(how="all", axis=1)
|
||||
df.to_csv(
|
||||
assets_path.joinpath(f"{category}_series.xz"), index=False, compression="xz"
|
||||
)
|
||||
1987
openbb_platform/providers/bls/poetry.lock
generated
vendored
Normal file
1987
openbb_platform/providers/bls/poetry.lock
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
19
openbb_platform/providers/bls/pyproject.toml
vendored
Normal file
19
openbb_platform/providers/bls/pyproject.toml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
[tool.poetry]
|
||||
name = "openbb-bls"
|
||||
version = "1.0.0b"
|
||||
description = "The Bureau of Labor Statistics' (BLS) Public Data Application Programming Interface (API) gives the public access to economic data from all BLS programs. It is the Bureau's hope that talented developers and programmers will use the BLS Public Data API to create original, inventive applications with published BLS data."
|
||||
authors = ["OpenBB Team <hello@openbb.co>"]
|
||||
license = "AGPL-3.0-only"
|
||||
readme = "README.md"
|
||||
packages = [{ include = "openbb_bls" }]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.9"
|
||||
openbb-core = "^1.3.1"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
|
||||
[tool.poetry.plugins."openbb_provider_extension"]
|
||||
bls = "openbb_bls:bls_provider"
|
||||
1
openbb_platform/providers/bls/tests/__init__.py
Normal file
1
openbb_platform/providers/bls/tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
"""BLS Provider Unit Tests."""
|
||||
@@ -0,0 +1,69 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: '{"seriesid": ["APU0000701111"], "startyear": 2022, "endyear": 2022, "catalog":
|
||||
true, "calculations": true, "annualaverage": true, "registrationkey": "MOCK_API_KEY"}'
|
||||
headers:
|
||||
Content-type:
|
||||
- application/json
|
||||
method: POST
|
||||
uri: https://api.bls.gov/publicAPI/v2/timeseries/data/
|
||||
response:
|
||||
body:
|
||||
string: !!binary |
|
||||
H4sIAAAAAAAEA6pWKi5JLCktVrJSCnINDHUNDokPDnV2dnV1cXVR0lEqSi0uyM8rTg3JzE1VsjI0
|
||||
NNBRyk0tLk5MB/KiY3WUglKLS3NKgLqruZSKU4syU4FMruhqKNvTBWisY0CoARCYGxgCAdDI5MSS
|
||||
xJz8dKAWqKr4ksySHKB5Sm45+aVFOgrlGZklqToKiTk5CgWlRQX5xUBOQWqRQk6SnoKGiamxnplC
|
||||
eq6mQmaeQqhesJ5CcmZJpUJiWWoR0FE6MIZCQVFmMpCbl1+iUJyaWJyfBzQOqCwlq7S4JDUF6Ayo
|
||||
3ZkpSuhOBMqVFpWlVsbnJYI8reQMDIDSXKADAkBmKnjmpaRWKDhC7YGIuQD9hNCXmJRUlFqWmViS
|
||||
mZ+nBDJdCRRqiUDZ1PgUoMr4ksoCkMEk+RdoRmJRaiJQG7qvU4FSQBNylUg1sVZHCeQcYExWK1Wm
|
||||
JhYBDTAyMDICGgdUnJkPChlfQwTXDxIcLqnJqblJqUVA8bLEnFKQkIGeKVhbWn5+CTDEU4tBRtbG
|
||||
guI6J7k0BxwQxaAIz0stiU/OSMxLTwVzDYF6dQ30DAxAmo2hHGMTIMdMCWSqgRGIDXQCiGMIlAC6
|
||||
uCAZ3QiQLpA6sAFmeqAIBGk30bNQgmo2NtEzVaqtrdVB9yfEY0ogfxrCuVB/+uWXYfMnyCZS/Ql1
|
||||
pIGhgRLUmUCOkakSxKFAthncqSB/WqD7E2aEoZ6lEtQAEz0zJYh2QxOwKFi3sSnQ0wQ8agDnQj3q
|
||||
n1ySj+5PU2NC/iwGuQrdn0C9YK+BrAQ5E8g2AAWsGYRtDncoujdRTDDRA7kRoh9kEki3oTk4jsGa
|
||||
jU0I+dLXwBLOhfoyOLWgBD0+gf40BQUjqf40BOsFFhhKMGcamIJi0AzMNjQAscEuBXLM0VMtzABD
|
||||
PWMliHZDQ3hkGpmA0y9Ys4kpeqpF96Yv2CYIF+pNx9J0YAmnhOJHE1BgkOpHQ7BeA0OQy4whbEuQ
|
||||
g83AbEMjuDOBHHMLdD9CDTCGx6QRJI+CdBtZgH0O1mxiAVRBwI/mcC7Uj16lOZVKKD40BhlIqg8N
|
||||
wXoNjEH50BjCNgeFpxmYbQhOQmBHAjlmpug+hBpgrgfzITCFgsIEpNvIVA/kaLBmE/TEqoTuQ18D
|
||||
MzgX7sM8UKleBvehiSXIZaT60BCs18AEZJ0xhG0Kcq4ZmG0ILgrAjgRygIrQfQgxwFIPph2YTkFM
|
||||
kG5gHIKiE6zZ2BJYAKH7EKQQ4iUlkA9N4VyoD30TUaPQBD0jEvIgmGsI1gspY4whbCNQQJlB2OZI
|
||||
HjQwNEf3INwAkGNB2s30QO4EaTa0AEcmWK8xIe/5GpjAuVDvOQLbHzlKqB4EmU2qByHuQylpjEEO
|
||||
M4OwTZHSqIGhBboHoQZAiheQdnNwzgNpRq41QGUOAQ8aw7lQD/omFiVnKKF40AQU8qR60BCs18AI
|
||||
FFPGELYZiG0GZYNcDnYkkGOInkRhBpjowcLH0BQRhRDPGoI0G6HnQXQf+hoguFAfuqUmFZUmFqEl
|
||||
UyNCniwGOQrdk2C9BuBkYgxhm4DsM4OwTUGuB7sTVHkaovsSYQIoxkD6DSFMkHagh0GmGoJ1GwHD
|
||||
Ad2bIHsg/lICedMQzoV60ysxD4svQWaS6kuIGw2MQVFmDGGDQ8sMwgZncIg7gTwjdF/CTLAExxpI
|
||||
P6I8BXoS5A2IZhM9S6Xa2trY2liu2lpAAAAA//+wIMsLvwwAAA==
|
||||
headers:
|
||||
APC-Route-id:
|
||||
- _01_05v
|
||||
Access-Control-Allow-Headers:
|
||||
- origin,x-requested-with,access-control-request-headers,content-type,access-control-request-method,accept
|
||||
Access-Control-Allow-Origin:
|
||||
- '*'
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Security-Policy:
|
||||
- frame-ancestors https://*.bls.gov
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Mon, 19 Aug 2024 20:32:39 GMT
|
||||
Pool-Info:
|
||||
- AP01
|
||||
Route-Id:
|
||||
- '_t8_07v; '
|
||||
Set-Cookie:
|
||||
- JSESSIONID=476E2A9FA75C51D71F59205B52395DA6; Path=/publicAPI; Version=1; Secure;
|
||||
Httponly
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; Preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Vary:
|
||||
- Origin, Accept-Encoding
|
||||
X-Frame-Options:
|
||||
- ALLOW-FROM https://www.bls.gov
|
||||
status:
|
||||
code: 200
|
||||
message: '200'
|
||||
version: 1
|
||||
@@ -0,0 +1,69 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: '{"seriesid": ["APU0000701111"], "startyear": 2022, "endyear": 2022, "catalog":
|
||||
true, "calculations": true, "annualaverage": true, "registrationkey": "MOCK_API_KEY"}'
|
||||
headers:
|
||||
Content-type:
|
||||
- application/json
|
||||
method: POST
|
||||
uri: https://api.bls.gov/publicAPI/v2/timeseries/data/
|
||||
response:
|
||||
body:
|
||||
string: !!binary |
|
||||
H4sIAAAAAAAEA6pWKi5JLCktVrJSCnINDHUNDokPDnV2dnV1cXVR0lEqSi0uyM8rTg3JzE1VsjIy
|
||||
NtZRyk0tLk5MB/KiY3WUglKLS3NKgLqruZSKU4syU4FMruhqKNvTBWisY0CoARCYGxgCAdDI5MSS
|
||||
xJz8dKAWqKr4ksySHKB5Sm45+aVFOgrlGZklqToKiTk5CgWlRQX5xUBOQWqRQk6SnoKGiamxnplC
|
||||
eq6mQmaeQqhesJ5CcmZJpUJiWWoR0FE6MIZCQVFmMpCbl1+iUJyaWJyfBzQOqCwlq7S4JDUF6Ayo
|
||||
3ZkpSuhOBMqVFpWlVsbnJYI8reQMDIDSXKADAkBmKnjmpaRWKDhC7YGIuQD9hNCXmJRUlFqWmViS
|
||||
mZ+nBDJdCRRqiUDZ1PgUoMr4ksoCkMEk+RdoRmJRaiJQG7qvU4FSQBNylUg1sVZHCeQcYExWK1Wm
|
||||
JhYBDTAyMDICGgdUnJkPChlfQwTXDxIcLqnJqblJqUVA8bLEnFKQkIGeKVhbWn5+CTDEU4tBRtbG
|
||||
guI6J7k0BxwQxaAIz0stiU/OSMxLTwVzDYF6dQ30DAxAmo2hHGMTIMdMCWSqgRGIDXQCiGMIlAC6
|
||||
uCAZ3QiQLpA6sAFmeqAIBGk30bNQgmo2NtEzVaqtrdVB9yfEY0ogfxrCuVB/+uWXYfMnyCZS/Ql1
|
||||
pIGhgRLUmUCOkakSxKFAthncqSB/WqD7E2aEoZ6lEtQAEz0zJYh2QxOwKFi3sSnQ0wQ8agDnQj3q
|
||||
n1ySj+5PU2NC/iwGuQrdn0C9YK+BrAQ5E8g2AAWsGYRtDncoujdRTDDRA7kRoh9kEki3oTk4jsGa
|
||||
jU0I+dLXwBLOhfoyOLWgBD0+gf40BQUjqf40BOsFFhhKMGcamIJi0AzMNjQAscEuBXLM0VMtzABD
|
||||
PWMliHZDQ3hkGpmA0y9Ys4kpeqpF96Yv2CYIF+pNx9J0YAmnhOJHE1BgkOpHQ7BeA0OQy4whbEuQ
|
||||
g83AbEMjuDOBHHMLdD9CDTCGx6QRJI+CdBtZgH0O1mxiAVRBwI/mcC7Uj16lOZVKKD40BhlIqg8N
|
||||
wXoNjEH50BjCNgeFpxmYbQhOQmBHAjlmpug+hBpgrgfzITCFgsIEpNvIVA/kaLBmE/TEqoTuQ18D
|
||||
MzgX7sM8UKleBvehiSXIZaT60BCs18AEZJ0xhG0Kcq4ZmG0ILgrAjgRygIrQfQgxwFIPph2YTkFM
|
||||
kG5gHIKiE6zZ2BJYAKH7EKQQ4iUlkA9N4VyoD30TUaPQBD0jEvIgmGsI1gspY4whbCNQQJlB2OZI
|
||||
HjQwNEf3INwAkGNB2s30QO4EaTa0AEcmWK8xIe/5GpjAuVDvOQLbHzlKqB4EmU2qByHuQylpjEEO
|
||||
M4OwTZHSqIGhBboHoQZAiheQdnNwzgNpRq41QGUOAQ8aw7lQD/omFiVnKKF40AQU8qR60BCs18AI
|
||||
FFPGELYZiG0GZYNcDnYkkGOInkRhBpjowcLH0BQRhRDPGoI0G6HnQXQf+hoguFAfuqUmFZUmFqEl
|
||||
UyNCniwGOQrdk2C9BuBkYgxhm4DsM4OwTUGuB7sTVHkaovsSYQIoxkD6DSFMkHagh0GmGoJ1GwHD
|
||||
Ad2bIHsg/lICedMQzoV60ysxD4svQWaS6kuIGw2MQVFmDGGDQ8sMwgZncIg7gTwjdF/CTLAExxpI
|
||||
P6I8BXoS5A2IZhM9S6Xa2trY2liu2lpAAAAA///sqKQSvwwAAA==
|
||||
headers:
|
||||
APC-Route-id:
|
||||
- _02_09v
|
||||
Access-Control-Allow-Headers:
|
||||
- origin,x-requested-with,access-control-request-headers,content-type,access-control-request-method,accept
|
||||
Access-Control-Allow-Origin:
|
||||
- '*'
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Security-Policy:
|
||||
- frame-ancestors https://*.bls.gov
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Mon, 19 Aug 2024 15:39:20 GMT
|
||||
Pool-Info:
|
||||
- AP02
|
||||
Route-Id:
|
||||
- '_t8_06v; '
|
||||
Set-Cookie:
|
||||
- JSESSIONID=A39A78404EF1212730033FB03DE77D91; Path=/publicAPI; Version=1; Secure;
|
||||
Httponly
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; Preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Vary:
|
||||
- Origin, Accept-Encoding
|
||||
X-Frame-Options:
|
||||
- ALLOW-FROM https://www.bls.gov
|
||||
status:
|
||||
code: 200
|
||||
message: '200'
|
||||
version: 1
|
||||
48
openbb_platform/providers/bls/tests/test_bls_fetchers.py
Normal file
48
openbb_platform/providers/bls/tests/test_bls_fetchers.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""Test the BLS fetchers."""
|
||||
|
||||
from datetime import date
|
||||
|
||||
import pytest
|
||||
from openbb_bls.models.series import BlsSeriesFetcher
|
||||
from openbb_bls.models.search import BlsSearchFetcher
|
||||
from openbb_core.app.service.user_service import UserService
|
||||
|
||||
test_credentials = UserService().default_user_settings.credentials.model_dump(
|
||||
mode="json"
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def vcr_config():
|
||||
"""VCR configuration."""
|
||||
return {
|
||||
"filter_headers": [("User-Agent", None)],
|
||||
"filter_post_data_parameters": [("registrationkey", "MOCK_API_KEY")],
|
||||
"filter_query_parameters": [
|
||||
("registrationkey", "MOCK_API_KEY"),
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.record_http
|
||||
def test_bls_series_fetcher(credentials=test_credentials):
|
||||
"""Test the BLS Series fetcher."""
|
||||
params = {
|
||||
"symbol": "APU0000701111",
|
||||
"start_date": date(2022, 1, 1),
|
||||
"end_date": date(2022, 12, 1),
|
||||
}
|
||||
|
||||
fetcher = BlsSeriesFetcher()
|
||||
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_bls_search_fetcher(credentials=test_credentials):
|
||||
"""Test the BLS Search fetcher."""
|
||||
params = {"category": "cpi", "query": "average price;flour"}
|
||||
|
||||
fetcher = BlsSearchFetcher()
|
||||
result = fetcher.test(params, credentials)
|
||||
assert result is None
|
||||
@@ -51,7 +51,7 @@ def get_subclasses_w_keys(module: object, cls: Type) -> Dict[Type, List[str]]:
|
||||
|
||||
for _, obj in module_members:
|
||||
if inspect.isclass(obj) and issubclass(obj, cls) and obj != cls:
|
||||
subclasses[obj] = list(obj.__fields__.keys())
|
||||
subclasses[obj] = list(obj.model_fields.keys())
|
||||
return subclasses
|
||||
|
||||
|
||||
|
||||
1
openbb_platform/pyproject.toml
vendored
1
openbb_platform/pyproject.toml
vendored
@@ -12,6 +12,7 @@ python = ">=3.9,<3.13"
|
||||
openbb-core = "^1.3.1"
|
||||
|
||||
openbb-benzinga = "^1.3.1"
|
||||
openbb-bls = "^1.0.0b"
|
||||
openbb-econdb = "^1.2.1"
|
||||
openbb-federal-reserve = "^1.3.1"
|
||||
openbb-fmp = "^1.3.1"
|
||||
|
||||
Reference in New Issue
Block a user