Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add OECD unemployment (+more) + data cache idea #5917

Merged
merged 26 commits into from
Jan 31, 2024
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
40a3b0d
Add OECD unemployment + data cache idea
jmaslek Jan 3, 2024
208bc12
Merge branch 'develop' into feature/oecd-sdmx
jmaslek Jan 3, 2024
86abb44
Docstring edits
jmaslek Jan 3, 2024
e6c6011
Tests
jmaslek Jan 3, 2024
529b7a0
Merge branch 'develop' into feature/oecd-sdmx
jmaslek Jan 12, 2024
02c8abf
Add composite leading indicator
jmaslek Jan 12, 2024
47f58da
i truested ruff --fix too much
jmaslek Jan 12, 2024
86d8d70
Add short + long term interest rates
jmaslek Jan 13, 2024
6f3275a
pylint
jmaslek Jan 13, 2024
e72844a
pylint2
jmaslek Jan 13, 2024
0f461fd
was not committing. my b
jmaslek Jan 13, 2024
b17c11a
Merge branch 'develop' into feature/oecd-sdmx
IgorWounds Jan 16, 2024
dbb7826
add csv cache + make it default. remove pyarrow from poetry
jmaslek Jan 16, 2024
b787356
Merge remote-tracking branch 'upstream/feature/oecd-sdmx' into featur…
jmaslek Jan 16, 2024
2a01d65
Merge branch 'develop' into feature/oecd-sdmx
jmaslek Jan 16, 2024
b803532
Merge branch 'develop' into feature/oecd-sdmx
jmaslek Jan 24, 2024
ff3bf53
Merge branch 'develop' into feature/oecd-sdmx
jmaslek Jan 26, 2024
e9e4939
Merge branch 'develop' into feature/oecd-sdmx
jmaslek Jan 26, 2024
c25c7b1
Clean up
jmaslek Jan 26, 2024
fa120f9
Didnt run on this file. My bad
jmaslek Jan 26, 2024
a173f29
Why was this ignored /shrug
jmaslek Jan 26, 2024
34736dc
Merge branch 'develop' into feature/oecd-sdmx
IgorWounds Jan 29, 2024
03ecc05
Merge branch 'develop' into feature/oecd-sdmx
jmaslek Jan 29, 2024
c8307a5
Merge branch 'develop' into feature/oecd-sdmx
IgorWounds Jan 30, 2024
3c1ecba
Merge branch 'develop' into feature/oecd-sdmx
jmaslek Jan 30, 2024
a67d24d
pylint
jmaslek Jan 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
"""Composite Leading Indicator Standard Model."""
from datetime import date as dateType
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,
QUERY_DESCRIPTIONS,
)


class CLIQueryParams(QueryParams):
"""Real GDP Query."""

start_date: Optional[dateType] = Field(
default=None, description=QUERY_DESCRIPTIONS.get("start_date")
)
end_date: Optional[dateType] = Field(
default=None, description=QUERY_DESCRIPTIONS.get("end_date")
)


class CLIData(Data):
"""CLI Data."""

date: Optional[dateType] = Field(
default=None, description=DATA_DESCRIPTIONS.get("date")
)
value: Optional[float] = Field(default=None, description="CLI value")
country: Optional[str] = Field(
default=None,
description="Country for which CLI is given",
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
"""Long Term Interest Rates Standard Model."""
from datetime import date as dateType
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,
QUERY_DESCRIPTIONS,
)


class LTIRQueryParams(QueryParams):
"""Long Term Interest Rates Query."""

start_date: Optional[dateType] = Field(
default=None, description=QUERY_DESCRIPTIONS.get("start_date")
)
end_date: Optional[dateType] = Field(
default=None, description=QUERY_DESCRIPTIONS.get("end_date")
)


class LTIRData(Data):
"""Long Term Interest Rates Data."""

date: Optional[dateType] = Field(
default=None, description=DATA_DESCRIPTIONS.get("date")
)
value: Optional[float] = Field(
default=None,
description="Interest rate (given as a whole number, i.e 10=10%)",
)
country: Optional[str] = Field(
default=None,
description="Country for which interest rate is given",
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
"""Short Term Interest Rates Standard Model."""
from datetime import date as dateType
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,
QUERY_DESCRIPTIONS,
)


class STIRQueryParams(QueryParams):
"""Short Term Interest Rates Query."""

start_date: Optional[dateType] = Field(
default=None, description=QUERY_DESCRIPTIONS.get("start_date")
)
end_date: Optional[dateType] = Field(
default=None, description=QUERY_DESCRIPTIONS.get("end_date")
)


class STIRData(Data):
"""Short Term Interest Rates Data."""

date: Optional[dateType] = Field(
default=None, description=DATA_DESCRIPTIONS.get("date")
)
value: Optional[float] = Field(
default=None,
description="Interest rate (given as a whole number, i.e 10=10%)",
)
country: Optional[str] = Field(
default=None,
description="Country for which interest rate is given",
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
"""Unemployment Standard Model."""
from datetime import date as dateType
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,
QUERY_DESCRIPTIONS,
)


class UnemploymentQueryParams(QueryParams):
"""Real GDP Query."""

start_date: Optional[dateType] = Field(
default=None, description=QUERY_DESCRIPTIONS.get("start_date")
)
end_date: Optional[dateType] = Field(
default=None, description=QUERY_DESCRIPTIONS.get("end_date")
)


class UnemploymentData(Data):
"""Unemployment Data."""

date: Optional[dateType] = Field(
default=None, description=DATA_DESCRIPTIONS.get("date")
)
value: Optional[float] = Field(
default=None,
description="Unemployment rate (given as a whole number, i.e 10=10%)",
)
country: Optional[str] = Field(
default=None,
description="Country for which unemployment rate is given",
)
106 changes: 106 additions & 0 deletions openbb_platform/extensions/economy/integration/test_economy_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -372,3 +372,109 @@ def test_economy_money_measures(params, headers):
result = requests.get(url, headers=headers, timeout=10)
assert isinstance(result, requests.Response)
assert result.status_code == 200


@parametrize(
"params",
[
({"start_date": "2023-01-01", "end_date": "2023-06-06"}),
(
{
"country": "united_states",
"sex": "total",
"frequency": "monthly",
"age": "total",
"seasonal_adjustment": True,
"provider": "oecd",
"start_date": "2023-01-01",
"end_date": "2023-06-06",
}
),
],
)
@pytest.mark.integration
def test_economy_unemployment(params, headers):
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/unemployment?{query_str}"
result = requests.get(url, headers=headers, timeout=10)
assert isinstance(result, requests.Response)
assert result.status_code == 200


@parametrize(
"params",
[
({"start_date": "2023-01-01", "end_date": "2023-06-06"}),
(
{
"country": "united_states",
"provider": "oecd",
"start_date": "2023-01-01",
"end_date": "2023-06-06",
}
),
],
)
@pytest.mark.integration
def test_economy_composite_leading_indicator(params, headers):
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/composite_leading_indicator?{query_str}"
result = requests.get(url, headers=headers, timeout=10)
assert isinstance(result, requests.Response)
assert result.status_code == 200


@parametrize(
"params",
[
({"start_date": "2023-01-01", "end_date": "2023-06-06"}),
(
{
"country": "united_states",
"frequency": "monthly",
"provider": "oecd",
"start_date": "2023-01-01",
"end_date": "2023-06-06",
}
),
],
)
@pytest.mark.integration
def test_economy_short_term_interest_rate(params, headers):
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/short_term_interest_rate?{query_str}"
result = requests.get(url, headers=headers, timeout=10)
assert isinstance(result, requests.Response)
assert result.status_code == 200


@parametrize(
"params",
[
({"start_date": "2023-01-01", "end_date": "2023-06-06"}),
(
{
"country": "united_states",
"frequency": "monthly",
"provider": "oecd",
"start_date": "2023-01-01",
"end_date": "2023-06-06",
}
),
],
)
@pytest.mark.integration
def test_economy_long_term_interest_rate(params, headers):
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/long_term_interest_rate?{query_str}"
result = requests.get(url, headers=headers, timeout=10)
assert isinstance(result, requests.Response)
assert result.status_code == 200
102 changes: 102 additions & 0 deletions openbb_platform/extensions/economy/integration/test_economy_python.py
Original file line number Diff line number Diff line change
Expand Up @@ -328,3 +328,105 @@ def test_economy_money_measures(params, obb):
assert result
assert isinstance(result, OBBject)
assert len(result.results) > 0


@parametrize(
"params",
[
({"start_date": "2023-01-01", "end_date": "2023-06-06"}),
(
{
"country": "united_states",
"sex": "total",
"frequency": "monthly",
"age": "total",
"seasonal_adjustment": True,
"provider": "oecd",
"start_date": "2023-01-01",
"end_date": "2023-06-06",
}
),
],
)
@pytest.mark.integration
def test_economy_unemployment(params, obb):
params = {p: v for p, v in params.items() if v}

result = obb.economy.unemployment(**params)
assert result
assert isinstance(result, OBBject)
assert len(result.results) > 0


@parametrize(
"params",
[
({"start_date": "2023-01-01", "end_date": "2023-06-06"}),
(
{
"country": "united_states",
"provider": "oecd",
"start_date": "2023-01-01",
"end_date": "2023-06-06",
}
),
],
)
@pytest.mark.integration
def test_economy_composite_leading_indicator(params, obb):
params = {p: v for p, v in params.items() if v}

result = obb.economy.composite_leading_indicator(**params)
assert result
assert isinstance(result, OBBject)
assert len(result.results) > 0


@parametrize(
"params",
[
({"start_date": "2023-01-01", "end_date": "2023-06-06"}),
(
{
"country": "united_states",
"frequency": "monthly",
"provider": "oecd",
"start_date": "2023-01-01",
"end_date": "2023-06-06",
}
),
],
)
@pytest.mark.integration
def test_economy_short_term_interest_rate(params, obb):
params = {p: v for p, v in params.items() if v}

result = obb.economy.short_term_interest_rate(**params)
assert result
assert isinstance(result, OBBject)
assert len(result.results) > 0


@parametrize(
"params",
[
({"start_date": "2023-01-01", "end_date": "2023-06-06"}),
(
{
"country": "united_states",
"frequency": "monthly",
"provider": "oecd",
"start_date": "2023-01-01",
"end_date": "2023-06-06",
}
),
],
)
@pytest.mark.integration
def test_economy_long_term_interest_rate(params, obb):
params = {p: v for p, v in params.items() if v}

result = obb.economy.long_term_interest_rate(**params)
assert result
assert isinstance(result, OBBject)
assert len(result.results) > 0
Loading
Loading