[Feature] Replace Nasdaq SP500 Multiples With Direct Source (#6609)

* replace nasdaq sp500 multiples with direct source

* black

* filter for start/end date

* linting

* didn't commit the changes

* docstring

* black

* docstring

* unused argument

* ruff

* markdown in description

* UPPER

---------

Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com>
This commit is contained in:
Danglewood
2024-08-08 08:32:23 -07:00
committed by GitHub
parent 972874b9dc
commit 3a25aa83a1
19 changed files with 3055 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
"""SP500 Multiples Standard Model."""
from datetime import date as dateType
from typing import Literal, Optional
from typing import Literal, Optional, Union
from pydantic import Field
@@ -12,7 +12,7 @@ from openbb_core.provider.utils.descriptions import (
QUERY_DESCRIPTIONS,
)
SERIES_NAMES = Literal[
SERIES_NAME = Literal[
"shiller_pe_month",
"shiller_pe_year",
"pe_year",
@@ -55,7 +55,7 @@ SERIES_NAMES = Literal[
class SP500MultiplesQueryParams(QueryParams):
"""SP500 Multiples Query."""
series_name: SERIES_NAMES = Field(
series_name: Union[SERIES_NAME, str] = Field(
description="The name of the series. Defaults to 'pe_month'.",
default="pe_month",
)
@@ -71,3 +71,9 @@ class SP500MultiplesData(Data):
"""SP500 Multiples Data."""
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
name: str = Field(
description="Name of the series.",
)
value: Union[int, float] = Field(
description="Value of the series.",
)

View File

@@ -1,5 +1,7 @@
"""Install for development script."""
# flake8: noqa: S603
import subprocess
import sys
from pathlib import Path
@@ -52,6 +54,7 @@ openbb-ecb = { path = "./providers/ecb", optional = true, develop = true }
openbb-finra = { path = "./providers/finra", optional = true, develop = true }
openbb-finviz = { path = "./providers/finviz", optional = true, develop = true }
openbb-government-us = { path = "./providers/government_us", optional = true, develop = true }
openbb-multpl = { path = "./providers/multpl", optional = true, develop = true }
openbb-nasdaq = { path = "./providers/nasdaq", optional = true, develop = true }
openbb-seeking-alpha = { path = "./providers/seeking_alpha", optional = true, develop = true }
openbb-stockgrid = { path = "./providers/stockgrid" , optional = true, develop = true }
@@ -138,10 +141,14 @@ def install_platform_local(_extras: bool = False):
extras_args = ["-E", "all"] if _extras else []
subprocess.run(
CMD + ["lock", "--no-update"], cwd=PLATFORM_PATH, check=True # noqa: S603
CMD + ["lock", "--no-update"],
cwd=PLATFORM_PATH,
check=True,
)
subprocess.run(
CMD + ["install"] + extras_args, cwd=PLATFORM_PATH, check=True # noqa: S603
CMD + ["install"] + extras_args,
cwd=PLATFORM_PATH,
check=True,
)
except (Exception, KeyboardInterrupt) as e:
@@ -179,7 +186,9 @@ def install_platform_cli():
CMD = [sys.executable, "-m", "poetry"]
subprocess.run(
CMD + ["lock", "--no-update"], cwd=CLI_PATH, check=True # noqa: S603
CMD + ["lock", "--no-update"],
cwd=CLI_PATH,
check=True, # noqa: S603
)
subprocess.run(CMD + ["install"], cwd=CLI_PATH, check=True) # noqa: S603

View File

@@ -197,7 +197,15 @@ def test_index_snapshots(params, headers):
"transform": "diff",
"provider": "nasdaq",
}
)
),
(
{
"series_name": "pe_month",
"start_date": None,
"end_date": None,
"provider": "multpl",
}
),
],
)
@pytest.mark.integration

View File

@@ -187,6 +187,14 @@ def test_index_snapshots(params, obb):
"provider": "nasdaq",
}
),
(
{
"series_name": "pe_month",
"start_date": None,
"end_date": None,
"provider": "multpl",
}
),
],
)
@pytest.mark.integration

View File

@@ -93,8 +93,8 @@ async def search(
@router.command(
model="SP500Multiples",
examples=[
APIEx(parameters={"provider": "nasdaq"}),
APIEx(parameters={"series_name": "shiller_pe_year", "provider": "nasdaq"}),
APIEx(parameters={"provider": "multpl"}),
APIEx(parameters={"series_name": "shiller_pe_year", "provider": "multpl"}),
],
)
async def sp500_multiples(

View File

@@ -0,0 +1,13 @@
# Multpl Provider Extension
This is an implementation of the data published to (https://multpl.com)[https;//multpl.com]
## Installation
```
pip install openbb-multpl
```
## Endpoints
- `obb.index.sp500_multiples`

View File

@@ -0,0 +1 @@
"""Multpl Provider Extension."""

View File

@@ -0,0 +1,13 @@
"""Multpl Provider Module."""
from openbb_core.provider.abstract.provider import Provider
from openbb_multpl.models.sp500_multiples import MultplSP500MultiplesFetcher
multpl_provider = Provider(
name="multpl",
website="https://www.multpl.com/",
description="""Public broad-market data published to https://multpl.com.""",
fetcher_dict={
"SP500Multiples": MultplSP500MultiplesFetcher,
},
)

View File

@@ -0,0 +1 @@
"""Multpl Provider Models."""

View File

@@ -0,0 +1,179 @@
"""Multpl S&P 500 Multiples 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.fetcher import Fetcher
from openbb_core.provider.standard_models.sp500_multiples import (
SP500MultiplesData,
SP500MultiplesQueryParams,
)
from openbb_core.provider.utils.errors import EmptyDataError
from pydantic import field_validator
BASE_URL = "https://www.multpl.com/"
URL_DICT = {
"shiller_pe_month": "shiller-pe/table/by-month",
"shiller_pe_year": "shiller-pe/table/by-year",
"pe_year": "s-p-500-pe-ratio/table/by-year",
"pe_month": "s-p-500-pe-ratio/table/by-month",
"dividend_year": "s-p-500-dividend/table/by-year",
"dividend_month": "s-p-500-dividend/table/by-month",
"dividend_growth_quarter": "s-p-500-dividend-growth/table/by-quarter",
"dividend_growth_year": "s-p-500-dividend-growth/table/by-year",
"dividend_yield_year": "s-p-500-dividend-yield/table/by-year",
"dividend_yield_month": "s-p-500-dividend-yield/table/by-month",
"earnings_year": "s-p-500-earnings/table/by-year",
"earnings_month": "s-p-500-earnings/table/by-month",
"earnings_growth_year": "s-p-500-earnings-growth/table/by-year",
"earnings_growth_quarter": "s-p-500-earnings-growth/table/by-quarter",
"real_earnings_growth_year": "s-p-500-real-earnings-growth/table/by-year",
"real_earnings_growth_quarter": "s-p-500-real-earnings-growth/table/by-quarter",
"earnings_yield_year": "s-p-500-earnings-yield/table/by-year",
"earnings_yield_month": "s-p-500-earnings-yield/table/by-month",
"real_price_year": "s-p-500-historical-prices/table/by-year",
"real_price_month": "s-p-500-historical-prices/table/by-month",
"inflation_adjusted_price_year": "inflation-adjusted-s-p-500/table/by-year",
"inflation_adjusted_price_month": "inflation-adjusted-s-p-500/table/by-month",
"sales_year": "s-p-500-sales/table/by-year",
"sales_quarter": "s-p-500-sales/table/by-quarter",
"sales_growth_year": "s-p-500-sales-growth/table/by-year",
"sales_growth_quarter": "s-p-500-sales-growth/table/by-quarter",
"real_sales_year": "s-p-500-real-sales/table/by-year",
"real_sales_quarter": "s-p-500-real-sales/table/by-quarter",
"real_sales_growth_year": "s-p-500-real-sales-growth/table/by-year",
"real_sales_growth_quarter": "s-p-500-real-sales-growth/table/by-quarter",
"price_to_sales_year": "s-p-500-price-to-sales/table/by-year",
"price_to_sales_quarter": "s-p-500-price-to-sales/table/by-quarter",
"price_to_book_value_year": "s-p-500-price-to-book/table/by-year",
"price_to_book_value_quarter": "s-p-500-price-to-book/table/by-quarter",
"book_value_year": "s-p-500-book-value/table/by-year",
"book_value_quarter": "s-p-500-book-value/table/by-quarter",
}
class MultplSP500MultiplesQueryParams(SP500MultiplesQueryParams):
"""Multpl S&P 500 Multiples Query Params."""
__json_schema_extra__ = {
"series_name": {
"multiple_items_allowed": True,
"choices": sorted(list(URL_DICT)),
}
}
@field_validator("series_name", mode="before", check_fields=False)
@classmethod
def validate_series_name(cls, v):
"""Validate series_name."""
series = v.split(",")
new_values: List = []
for s in series:
if s not in URL_DICT:
raise OpenBBError(
f"{s} is not a valid `series_name`. Choices are: \n{sorted(list(URL_DICT))}\n"
)
new_values.append(s)
if not new_values:
raise OpenBBError(
f"No valid series names provided. Choices are: \n{sorted(list(URL_DICT))}\n"
)
return ",".join(new_values)
class MultplSP500MultiplesData(SP500MultiplesData):
"""Multpl S&P 500 Multiples Data."""
__alias_dict__ = {
"date": "Date",
"value": "Value",
}
class MultplSP500MultiplesFetcher(
Fetcher[
MultplSP500MultiplesQueryParams,
List[MultplSP500MultiplesData],
]
):
"""Multpl S&P 500 Multiples Fetcher."""
@staticmethod
def transform_query(params: Dict[str, Any]) -> MultplSP500MultiplesQueryParams:
"""Transform the query params."""
return MultplSP500MultiplesQueryParams(**params)
@staticmethod
async def aextract_data(
query: MultplSP500MultiplesQueryParams,
credentials: Optional[Dict[str, str]],
**kwargs: Any,
) -> List[Dict]:
"""Extract data."""
# pylint: disable=import-outside-toplevel
import asyncio # noqa
from io import StringIO
from openbb_core.provider.utils.helpers import amake_request
from numpy import nan
from pandas import read_html, to_datetime
series = query.series_name.split(",")
urls = {s: f"{BASE_URL}{URL_DICT[s]}" for s in series}
results: List = []
async def response_callback(response, _):
"""Response callback."""
return await response.text()
async def get_one(url, series):
"""Get data for one series."""
res = await amake_request(url, response_callback=response_callback)
if res:
df = read_html(StringIO(res))[0] # type: ignore
if not df.empty:
df["Date"] = to_datetime(df["Date"]).dt.date
df = df.sort_values("Date").reset_index(drop=True)
if query.start_date:
df = df[df["Date"] >= query.start_date]
if query.end_date:
df = df[df["Date"] <= query.end_date]
df["Value"] = df["Value"].apply(
lambda x: (
x.strip().replace("† ", "").replace("%", "")
if isinstance(x, str)
else x
)
)
df["name"] = series
if "growth" in series or "yield" in series:
df["Value"] = df["Value"].astype(float) / 100
results.extend(df.replace({nan: None}).to_dict(orient="records"))
else:
warn(f"Failed to get data for {series}.")
await asyncio.gather(*[get_one(url, series) for series, url in urls.items()])
if not results:
raise EmptyDataError("The request was returned empty.")
return results
@staticmethod
def transform_data(
query: MultplSP500MultiplesQueryParams,
data: List[Dict],
**kwargs: Any,
) -> List[MultplSP500MultiplesData]:
"""Transform and validate the data."""
return [
MultplSP500MultiplesData.model_validate(d)
for d in sorted(
data,
key=lambda x: (x["Date"], x["name"]),
)
]

View File

@@ -0,0 +1 @@
"""Utilities and Helpers."""

1894
openbb_platform/providers/multpl/poetry.lock generated vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,19 @@
[tool.poetry]
name = "openbb-multpl"
version = "1.0.0"
description = "Public data on historical S&P Multiples."
authors = ["OpenBB Team <hello@openbb.co>"]
readme = "README.md"
packages = [{ include = "openbb_multpl" }]
[tool.poetry.dependencies]
python = "^3.9,<3.13"
openbb-core = "^1.3.0"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.poetry.plugins."openbb_provider_extension"]
multpl = "openbb_multpl:multpl_provider"

View File

@@ -0,0 +1 @@
"""Multpl Provider Module Tests."""

View File

@@ -0,0 +1,427 @@
interactions:
- request:
body: null
headers:
Accept:
- application/json
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
method: GET
uri: https://www.multpl.com/s-p-500-pe-ratio/table/by-month
response:
body:
string: !!binary |
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
+nbtUFGK41ovpaIUxrdAyVilOGeuCJpl5llqV13UVFSUicGtGp6xmIoyKdi5eGYKaGLQ4onqiiUp
G4PDYHT/i3xDTSmO6+H1FJXE6AATmUNVKU4iHYi808hKYs6cXClOIv7SHMpKYaa+xqpLWBPJOS8F
tGvM/bMnV4qTKKPSOxSWwvjOg2SsUpxEmKE5DFY2ZuAckqksxUlkJzSHylIY35YdKktxXDNhpoAK
kziU4UTo9UK74rhOHqOyFCaRukXmMGBJjifRYQpo16oxKXKNO4xYiuNaRaGyFMZXpKGybA7mjJ7M
i8qyMSid6xXpuLGaZQvFce2YprJsDITuaiwqS3FcNSMqy8Z4+w5TQcVxFfioLIXxrU9SWYrzRd+5
OM5v1vm7F28vlqsP+At/Zov1/HC4bu0X23Xr3YvytdXyurXMD4v9andcbTd4Pcve7t79ab9a5Nlx
m+Xz/Wa1uTtk+zl+385u5od8mW032XE/X63xm+z4MV9/yLOH7eZ4n71cL//6uH0zP7zc3Bx2b/b5
brs/5suX++Ll8sW38+x+n99et+6Px93VxcXHjx+7D4/r427dXWwfLg6dXWfc63Xqb75ovat/fHsx
f9ctDfz2cb/PN8fsT99lq0OWH46rhzm+KLvdbx+yNX48HLP623kR880yW1SffJjvf8qPpUm7cLkV
Gfws+377uF/kV5lla77YbrpP83XezZePF//jcL9ar/P9xXJ+nHfvjw+FC7Psz9ubfH/Mvi9/GyzP
wrffw9qb7fanQD7O93f58br1/mY93/zUgr3r69Zmu93lm3zfipx0qLw0f5j/O747eOlud7Hbb5eP
i+NF73LW70+G/cH4Irh1fni/Xr0/rn+1yq//+Z/+dvpyMX/YXfcn09nLxT5HK37Ir2fDwbj516+/
/8M/XBPyEq3607fbZQ7S4OVxfnddNk5n0Ct+9YfldT4aLW/z4XixmE57t/3l7XhxedMf9Oa3o+Fw
2c9b7/6wL/rLZr7Ovvv5EZ6YbxZ5cMLb1cNddtgvrlsXF6t9ZzPvlhfVmS8PT4dj/lBcXY7f/eoY
f/H1/GHwcnvdfzmPTG1lH1fL4/11qw9v5au7ezgTP95s98t8f93qtbL5Gi+1ssPxaZ2jo68Ou/X8
6SpbbXCR+ZvqnVeb7SbPfrF6CJ11vjm+ydA37labq97u5/jlVnbxLrvd7kMjHrfoMtn3L+HbN3/K
0F9DT/xz0Ei31hwFVmgxXCH6xttSa9n88LRZlJ4IOghNvJvf5fPloHu33d6tc/x+uVoEYtni5W8v
fjxcAHTzVL6p++PhV4v1Ckq4Xsw7u8ebzmA2Hgyno9lwNL6cDfvT1ovFfns4wFxc0XVrjmt9etg+
wpS3F6UpsOkXnQ56IwaM4c3TIOt08NJqc6gHjOj7Wi8+c2Xpyc7Nerv46U3RGlfDHvz2pmyPq8EY
/2i9COKAAzqVrS1pbP3Gw3qLlptdDobD8WTWGwZzYVLjv3cvXkVmZdfoCZvl9mM3fvE//iP71397
3d09Hu5ffXp+/QYN01xxOSy+eIswWA2LhzzvzNeHbWij++G77/McveewfXuBf7zAaLlevWtGg4tK
9J0d+nol8aYDhG7+5QeqUa0YaTrHbScMAvjsy6rz1OPtb8LY8MN8/VioRWLqEbHztMrXS3K+q4fr
v4TXfZYcMJShO3xhyvfh9bJPm6DV5hYDLbonGvbHR2h32anGbui//l326+p30EpxqSbq8zGf1tQX
VH/s4nEdQlcV1Yq/sji6LdZwDfpKGfXq31d/U5G32+0RY+y7FzB0u0fowGWEQIIx9cNqiTjycn0o
Axlefbkvfi7G78N2na+filEA119/dL5+sXvc77aH/NDONttj8XtEyGUIkPVvMowc8+UHRJp2gXqY
P2U3ebbMMSTlSwwbNzAc/3/xl+1jdrjfPq6X2WF1t8kedwUPIQkDUxl01xiBEEJelIH0onq5E15u
vbvP90XviZBF/A+xvrxwjLsfQj8Pzgwd+9vt7gkDxP0xe7nAj2+yQW+AVSf85rTfh+85bq8QAI/z
xfFvGLVb7758LTQZGXEjtZbbDUJ057CbLyCgKi2o2iw4tdZk+T4M44vQQGXGUAfD3fxpNy9ThsXd
qnOz2lx8zG8g8NaLh/x4v8XFokHgjjCW7R6P2fFphxhwv1ou800r28wf8K/Fw7KVfQhyQxg+dH7G
+LSALFMfuQc0X76/eTwet5v3K37+h19/N/3b6Z/+++9/+7vffUdGNbzUl1JagWzlLsdgWgTCwxH9
b3Fxc9y8L9/1/u9/191t7k4iWWnv4fHmYVVc00XwEwwtG6mQxUmvP/F3oYowhBayoAwwWsLQ/39j
UtlbkRgddtvNAZnLWbGpCEpfHXum495oiOdi9AdElIJHFH08bqtXbx/X604R+Do087p13D+iZ/+/
iVmVUOK/MAbWoa31eMiR8CCgHFtvXlRhEQnOfr/dX98+bgopvZq3b9qL159ebfKP2R9CZ3zdDZ3x
X1tIMPJffUCi9XDdauebBRLBf/7zH77dIjnaIM14NX/dbr1E8m797ib8DjK1frd4/W/dH7erzatW
6zXmBcfH/eYX/ec3YSyvLQ8/I4Fev/s/KefmOxZBAgA=
headers:
Cache-Control:
- public
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- text/html; charset=utf-8
Date:
- Sat, 03 Aug 2024 20:11:14 GMT
Etag:
- W/"05dada163616fcb30bb864f819dc05df68416e4b"
Expires:
- Sat, 03 Aug 2024 20:11:21 GMT
Server:
- nginx/1.18.0 (Ubuntu)
Transfer-Encoding:
- chunked
Vary:
- Accept-Encoding
status:
code: 200
message: OK
version: 1

View File

@@ -0,0 +1,427 @@
interactions:
- request:
body: null
headers:
Accept:
- application/json
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
method: GET
uri: https://www.multpl.com/s-p-500-pe-ratio/table/by-month
response:
body:
string: !!binary |
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
+nbtUFGK41ovpaIUxrdAyVilOGeuCJpl5llqV13UVFSUicGtGp6xmIoyKdi5eGYKaGLQ4onqiiUp
G4PDYHT/i3xDTSmO6+H1FJXE6AATmUNVKU4iHYi808hKYs6cXClOIv7SHMpKYaa+xqpLWBPJOS8F
tGvM/bMnV4qTKKPSOxSWwvjOg2SsUpxEmKE5DFY2ZuAckqksxUlkJzSHylIY35YdKktxXDNhpoAK
kziU4UTo9UK74rhOHqOyFCaRukXmMGBJjifRYQpo16oxKXKNO4xYiuNaRaGyFMZXpKGybA7mjJ7M
i8qyMSid6xXpuLGaZQvFce2YprJsDITuaiwqS3FcNSMqy8Z4+w5TQcVxFfioLIXxrU9SWYrzRd+5
OM5v1vm7F28vlqsP+At/Zov1/HC4bu0X23Xr3YvytdXyurXMD4v9andcbTd4Pcve7t79ab9a5Nlx
m+Xz/Wa1uTtk+zl+385u5od8mW032XE/X63xm+z4MV9/yLOH7eZ4n71cL//6uH0zP7zc3Bx2b/b5
brs/5suX++Ll8sW38+x+n99et+6Px93VxcXHjx+7D4/r427dXWwfLg6dXWfc63Xqb75ovat/fHsx
f9ctDfz2cb/PN8fsT99lq0OWH46rhzm+KLvdbx+yNX48HLP623kR880yW1SffJjvf8qPpUm7cLkV
Gfws+377uF/kV5lla77YbrpP83XezZePF//jcL9ar/P9xXJ+nHfvjw+FC7Psz9ubfH/Mvi9/GyzP
wrffw9qb7fanQD7O93f58br1/mY93/zUgr3r69Zmu93lm3zfipx0qLw0f5j/O747eOlud7Hbb5eP
i+NF73LW70+G/cH4Irh1fni/Xr0/rn+1yq//+Z/+dvpyMX/YXfcn09nLxT5HK37Ir2fDwbj516+/
/8M/XBPyEq3607fbZQ7S4OVxfnddNk5n0Ct+9YfldT4aLW/z4XixmE57t/3l7XhxedMf9Oa3o+Fw
2c9b7/6wL/rLZr7Ovvv5EZ6YbxZ5cMLb1cNddtgvrlsXF6t9ZzPvlhfVmS8PT4dj/lBcXY7f/eoY
f/H1/GHwcnvdfzmPTG1lH1fL4/11qw9v5au7ezgTP95s98t8f93qtbL5Gi+1ssPxaZ2jo68Ou/X8
6SpbbXCR+ZvqnVeb7SbPfrF6CJ11vjm+ydA37labq97u5/jlVnbxLrvd7kMjHrfoMtn3L+HbN3/K
0F9DT/xz0Ei31hwFVmgxXCH6xttSa9n88LRZlJ4IOghNvJvf5fPloHu33d6tc/x+uVoEYtni5W8v
fjxcAHTzVL6p++PhV4v1Ckq4Xsw7u8ebzmA2Hgyno9lwNL6cDfvT1ovFfns4wFxc0XVrjmt9etg+
wpS3F6UpsOkXnQ56IwaM4c3TIOt08NJqc6gHjOj7Wi8+c2Xpyc7Nerv46U3RGlfDHvz2pmyPq8EY
/2i9COKAAzqVrS1pbP3Gw3qLlptdDobD8WTWGwZzYVLjv3cvXkVmZdfoCZvl9mM3fvE//iP71397
3d09Hu5ffXp+/QYN01xxOSy+eIswWA2LhzzvzNeHbWij++G77/McveewfXuBf7zAaLlevWtGg4tK
9J0d+nol8aYDhG7+5QeqUa0YaTrHbScMAvjsy6rz1OPtb8LY8MN8/VioRWLqEbHztMrXS3K+q4fr
v4TXfZYcMJShO3xhyvfh9bJPm6DV5hYDLbonGvbHR2h32anGbui//l326+p30EpxqSbq8zGf1tQX
VH/s4nEdQlcV1Yq/sji6LdZwDfpKGfXq31d/U5G32+0RY+y7FzB0u0fowGWEQIIx9cNqiTjycn0o
Axlefbkvfi7G78N2na+filEA119/dL5+sXvc77aH/NDONttj8XtEyGUIkPVvMowc8+UHRJp2gXqY
P2U3ebbMMSTlSwwbNzAc/3/xl+1jdrjfPq6X2WF1t8kedwUPIQkDUxl01xiBEEJelIH0onq5E15u
vbvP90XviZBF/A+xvrxwjLsfQj8Pzgwd+9vt7gkDxP0xe7nAj2+yQW+AVSf85rTfh+85bq8QAI/z
xfFvGLVb7758LTQZGXEjtZbbDUJ057CbLyCgKi2o2iw4tdZk+T4M44vQQGXGUAfD3fxpNy9ThsXd
qnOz2lx8zG8g8NaLh/x4v8XFokHgjjCW7R6P2fFphxhwv1ou800r28wf8K/Fw7KVfQhyQxg+dH7G
+LSALFMfuQc0X76/eTwet5v3K37+h19/N/3b6Z/+++9/+7vffUdGNbzUl1JagWzlLsdgWgTCwxH9
b3Fxc9y8L9/1/u9/191t7k4iWWnv4fHmYVVc00XwEwwtG6mQxUmvP/F3oYowhBayoAwwWsLQ/39j
UtlbkRgddtvNAZnLWbGpCEpfHXum495oiOdi9AdElIJHFH08bqtXbx/X604R+Do087p13D+iZ/+/
iVmVUOK/MAbWoa31eMiR8CCgHFtvXlRhEQnOfr/dX98+bgopvZq3b9qL159ebfKP2R9CZ3zdDZ3x
X1tIMPJffUCi9XDdauebBRLBf/7zH77dIjnaIM14NX/dbr1E8m797ib8DjK1frd4/W/dH7erzatW
6zXmBcfH/eYX/ec3YSyvLQ8/I4Fev/s/KefmOxZBAgA=
headers:
Cache-Control:
- public
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- text/html; charset=utf-8
Date:
- Sat, 03 Aug 2024 20:10:21 GMT
Etag:
- W/"05dada163616fcb30bb864f819dc05df68416e4b"
Expires:
- Sat, 03 Aug 2024 20:11:21 GMT
Server:
- nginx/1.18.0 (Ubuntu)
Transfer-Encoding:
- chunked
Vary:
- Accept-Encoding
status:
code: 200
message: OK
version: 1

View File

@@ -0,0 +1,27 @@
"""Multpl Fetcher Tests."""
import pytest
from openbb_core.app.service.user_service import UserService
from openbb_multpl.models.sp500_multiples import MultplSP500MultiplesFetcher
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)],
}
@pytest.mark.record_http
def test_multpl_sp500_multiples_fetcher(credentials=None):
"""Test multpl sp500 multiples fetcher."""
params = {}
fetcher = MultplSP500MultiplesFetcher()
result = fetcher.test(params, credentials)
assert result is None

View File

@@ -3,6 +3,7 @@
# pylint: disable=unused-argument
from typing import Any, Dict, List, Optional
from warnings import warn
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.sp500_multiples import (
@@ -50,6 +51,12 @@ class NasdaqSP500MultiplesFetcher(
"""Get the raw Nasdaq Data."""
import nasdaqdatalink # pylint: disable=import-outside-toplevel
# TODO: Remove this warning when removing from the fetcher_dict.
warn(
"This data set is no longer updated. Install `openbb-multpl` for replacement source of the same data."
+ " This provider fetcher will be removed in a future version.",
category=FutureWarning,
)
api_key = credentials.get("nasdaq_api_key") if credentials else ""
if "Year" in query.series_name:
@@ -68,9 +75,10 @@ class NasdaqSP500MultiplesFetcher(
**kwargs,
)
.reset_index()
.rename(columns={"Date": "date", "Value": query.series_name})
.rename(columns={"Date": "date", "Value": "value"})
)
data["date"] = data["date"].dt.strftime("%Y-%m-%d")
data.loc[:, "name"] = query.series_name
return data.to_dict("records")

View File

@@ -44,6 +44,7 @@ openbb-ecb = { version = "^1.3.0", optional = true }
openbb-finra = { version = "^1.3.0", optional = true }
openbb-finviz = { version = "^1.2.0", optional = true }
openbb-government-us = { version = "^1.3.0", optional = true }
openbb-multpl = { version = "1.0.0", optional = true }
openbb-nasdaq = { version = "^1.3.0", optional = true }
openbb-seeking-alpha = { version = "^1.3.0", optional = true }
openbb-stockgrid = { version = "^1.3.0", optional = true }
@@ -67,6 +68,7 @@ finra = ["openbb-finra"]
finviz = ["openbb-finviz"]
government_us = ["openbb-government-us"]
nasdaq = ["openbb-nasdaq"]
multpl = ["openbb-multpl"]
quantitative = ["openbb-quantitative"]
seeking_alpha = ["openbb-seeking-alpha"]
stockgrid = ["openbb-stockgrid"]
@@ -86,6 +88,7 @@ all = [
"openbb-finra",
"openbb-finviz",
"openbb-government-us",
"openbb-multpl",
"openbb-nasdaq",
"openbb-quantitative",
"openbb-seeking-alpha",