[Feature] Deprecate etf.holdings_performance endpoint (#6441)

* ignore the env created on the dev container (which lives inside the project folder)

* broken urls

* remove endpoint

* empty file

* deprecate

* ruff
This commit is contained in:
Henrique Joaquim
2024-05-20 19:05:32 +01:00
committed by GitHub
parent 6fd00e7876
commit e292237374
12 changed files with 5 additions and 488 deletions

3
.gitignore vendored
View File

@@ -52,3 +52,6 @@ cli/openbb_cli/assets/styles/user/hub.richstyle.json
# Platform
openbb_platform/openbb/package/*
# Dev Container env
obb/*

4
cli/README.md vendored
View File

@@ -14,7 +14,7 @@ The OpenBB Platform CLI is a command line interface that wraps [OpenBB Platform]
It offers a convenient way to interact with the OpenBB Platform and its extensions, as well as automate data collection via OpenBB Routine Scripts.
Find the most complete documentation, examples, and usage guides for the OpenBB Platform CLI [here](https://my.openbb.co/app/cli).
Find the most complete documentation, examples, and usage guides for the OpenBB Platform CLI [here](https://docs.openbb.co/cli).
## Installation
@@ -24,7 +24,7 @@ The command below provides access to the all the available OpenBB extensions beh
pip install openbb-cli
```
> Note: Find the most complete installation hints and tips [here](https://my.openbb.co/app/cli/installation).
> Note: Find the most complete installation hints and tips [here](https://docs.openbb.co/cli/installation).
After the installation is complete, you can deploy the OpenBB Platform CLI by running the following command:

View File

@@ -1,14 +0,0 @@
"""ETF Holdings Performance Standard Model."""
from .recent_performance import (
RecentPerformanceData,
RecentPerformanceQueryParams,
)
class ETFHoldingsPerformanceQueryParams(RecentPerformanceQueryParams):
"""ETF Holdings Performance Query."""
class ETFHoldingsPerformanceData(RecentPerformanceData):
"""ETF Holdings Performance Data."""

View File

@@ -1 +0,0 @@
"""Test ChartingManager."""

View File

@@ -2,7 +2,6 @@
import unittest
import pytest
from openbb_core.app.static.package_builder import PathHandler
from openbb_core.app.version import VERSION, get_major_minor
@@ -10,9 +9,6 @@ from openbb_core.app.version import VERSION, get_major_minor
class DeprecatedCommandsTest(unittest.TestCase):
"""Test deprecated commands."""
@pytest.mark.skip(
"We forgot to deprecate /etf/holdings_performance. Check this endpoint next release."
)
def test_deprecated_commands(self):
"""Test deprecated commands."""
current_major_minor = get_major_minor(VERSION)

View File

@@ -463,25 +463,6 @@ def test_etf_discovery_active(params, headers):
assert result.status_code == 200
@parametrize(
"params",
[
({"symbol": "SPY", "provider": "fmp"}),
({"symbol": "QQQ", "provider": "fmp"}),
],
)
@pytest.mark.integration
def test_etf_holdings_performance(params, headers):
"""Test the ETF holdings performance 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/etf/holdings_performance?{query_str}"
result = requests.get(url, headers=headers, timeout=10)
assert isinstance(result, requests.Response)
assert result.status_code == 200
@parametrize(
"params",
[

View File

@@ -446,24 +446,6 @@ def test_etf_discovery_active(params, obb):
assert len(result.results) > 0
@parametrize(
"params",
[
({"symbol": "SPY", "provider": "fmp"}),
({"symbol": "QQQ", "provider": "fmp"}),
],
)
@pytest.mark.integration
def test_etf_holdings_performance(params, obb):
"""Test the ETF holdings performance endpoint."""
params = {p: v for p, v in params.items() if v}
result = obb.etf.holdings_performance(**params)
assert result
assert isinstance(result, OBBject)
assert len(result.results) > 0
@parametrize(
"params",
[

View File

@@ -1,6 +1,5 @@
"""ETF Router."""
from openbb_core.app.deprecation import OpenBBDeprecationWarning
from openbb_core.app.model.command_context import CommandContext
from openbb_core.app.model.example import APIEx
from openbb_core.app.model.obbject import OBBject
@@ -171,27 +170,6 @@ async def holdings_date(
return await OBBject.from_query(Query(**locals()))
@router.command(
model="EtfHoldingsPerformance",
deprecated=True,
deprecation=OpenBBDeprecationWarning(
message="This endpoint is deprecated; pass a list of holdings symbols directly to"
+ " `/equity/price/performance` instead.",
since=(4, 1),
expected_removal=(4, 2),
),
examples=[APIEx(parameters={"symbol": "XLK", "provider": "fmp"})],
)
async def holdings_performance(
cc: CommandContext,
provider_choices: ProviderChoices,
standard_params: StandardParams,
extra_params: ExtraParams,
) -> OBBject:
"""Get the recent price performance of each ticker held in the ETF."""
return await OBBject.from_query(Query(**locals()))
@router.command(
model="EtfEquityExposure",
examples=[

View File

@@ -34,7 +34,6 @@ from openbb_fmp.models.etf_countries import FMPEtfCountriesFetcher
from openbb_fmp.models.etf_equity_exposure import FMPEtfEquityExposureFetcher
from openbb_fmp.models.etf_holdings import FMPEtfHoldingsFetcher
from openbb_fmp.models.etf_holdings_date import FMPEtfHoldingsDateFetcher
from openbb_fmp.models.etf_holdings_performance import FMPEtfHoldingsPerformanceFetcher
from openbb_fmp.models.etf_info import FMPEtfInfoFetcher
from openbb_fmp.models.etf_search import FMPEtfSearchFetcher
from openbb_fmp.models.etf_sectors import FMPEtfSectorsFetcher
@@ -102,7 +101,6 @@ stock market information (news, currencies, and stock prices).""",
"EtfEquityExposure": FMPEtfEquityExposureFetcher,
"EtfHoldings": FMPEtfHoldingsFetcher,
"EtfHoldingsDate": FMPEtfHoldingsDateFetcher,
"EtfHoldingsPerformance": FMPEtfHoldingsPerformanceFetcher,
"EtfInfo": FMPEtfInfoFetcher,
"EtfPricePerformance": FMPPricePerformanceFetcher,
"EtfSearch": FMPEtfSearchFetcher,

View File

@@ -1,77 +0,0 @@
"""FMP ETF Holdings Performance Model."""
# pylint: disable=unused-argument
from typing import Any, Dict, List, Optional
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_fmp.models.etf_holdings import FMPEtfHoldingsFetcher
from openbb_fmp.models.price_performance import (
FMPPricePerformanceData,
FMPPricePerformanceFetcher,
FMPPricePerformanceQueryParams,
)
from pandas import DataFrame
class FMPEtfHoldingsPerformanceQueryParams(FMPPricePerformanceQueryParams):
"""FMP ETF Holdings Performance Query."""
class FMPEtfHoldingsPerformanceData(FMPPricePerformanceData):
"""FMP ETF Holdings Performance Data."""
class FMPEtfHoldingsPerformanceFetcher(
Fetcher[
FMPEtfHoldingsPerformanceQueryParams,
List[FMPEtfHoldingsPerformanceData],
]
):
"""Transform the query, extract and transform the data from the FMP endpoints."""
@staticmethod
def transform_query(params: Dict[str, Any]) -> FMPEtfHoldingsPerformanceQueryParams:
"""Transform the query."""
return FMPEtfHoldingsPerformanceQueryParams(**params)
@staticmethod
async def aextract_data(
query: FMPEtfHoldingsPerformanceQueryParams,
credentials: Optional[Dict[str, str]],
**kwargs: Any,
) -> List[Dict]:
"""Return the raw data from the FMP endpoint."""
# Get the holdings data
holdings = await FMPEtfHoldingsFetcher().aextract_data(
FMPEtfHoldingsFetcher.transform_query({"symbol": query.symbol}),
credentials,
**kwargs,
)
if holdings is None:
raise RuntimeError(f"No holdings data found for {query.symbol}.")
holdings_list = DataFrame(holdings).asset.unique().tolist()
# Split into chunks of 500
chunks = [holdings_list[i : i + 500] for i in range(0, len(holdings_list), 500)]
# Get price performance for the holdings
holdings_performance: List[Dict] = []
for holding_chunk in chunks:
holdings_str = (
",".join(holding_chunk) if len(holding_chunk) > 1 else holding_chunk[0]
)
_performance = await FMPPricePerformanceFetcher().aextract_data(
FMPPricePerformanceFetcher.transform_query({"symbol": holdings_str}),
credentials,
**kwargs,
)
holdings_performance.extend(_performance)
return holdings_performance
@staticmethod
def transform_data(
query: FMPEtfHoldingsPerformanceQueryParams,
data: List[Dict],
**kwargs: Any,
) -> List[FMPEtfHoldingsPerformanceData]:
"""Return the transformed data."""
return [FMPEtfHoldingsPerformanceData.model_validate(d) for d in data]

View File

@@ -1,318 +0,0 @@
interactions:
- request:
body: null
headers:
Accept:
- application/json
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
method: GET
uri: https://financialmodelingprep.com/api/v3/etf-holder/QQQ?apikey=MOCK_API_KEY
response:
body:
string: !!binary |
H4sIAAAAAAAAA51cW3PbRpN9/34Fyi/78hmZ+2XfQJC6rEmKIWlJ9tY+wBQsoQwRKpC0rWztf98e
2oQTzfQomSROUmyb4mHfzunpwX//K8v+F35l2Ztqt6v3b/4zezNbna3f/PvHi9vqsT6+1mz6btd9
3mdl1z+drM2u2Trr+5W0wlJDiZAn2+awa56ccTCdLLuHqq9388Pjp7qH3yC5MkIZ9tP6rW7uH/aL
ut/U23117366yY0+mR+r/ku9v67ag7MwxoiinBrFcmF+/pbD0121r+/cz2aEibdEvKX6Ddj+798B
tEWxmL5EWzw9tXV2ud34QAnXhnNKiA90MCFAKaVSaaI4jlTnypogUmqZUpIqSmwudBLS+fW4eIl0
fn05viwQp7oPq87Bc8TDOpgwrIYoxlXEqSoH14WhSsm5odQKng/v8M+gFrOPc8+pj9Uf3TbfdI+I
ZxmnXFKitO/ZkwlBqyURRlCFo5W5xNBC1BBuCRUyt2loZ5O159hZva+yRVvtP3f94y6MmBP4e0YJ
8xEPJgQxk8xoTSKhLHMiRRgxU8IqpZWmEO5JiIvr86uXiEd9V92h3oXk4/KMEso8rIMJwWqU0JZa
HKrIJbNhqJRzoQWxUuSUJkE9v7o69wtU+/RQfar3WCQTbd9xIm0gkn+aEKyCSfCL1DhYlise9quS
lguupLE5SQtkhzUFKoV/IVDBhEElVjOtaAyqlGG/KkEk0xT+fE55EtTyauU12bLb7TdddvPQtfWu
gg4ULsuMUUUAmKQe5sGEhTIzRMSqMsu5DtcpaONaWQAmc66SIK9XU69MretdW4VdawxgWUJaCg/m
YEJgcmGY5VTGcLKhi77AqZhgXGsDDSoJ5vxseuu12Xr/uW2+h4EqQSmZQnfx/TmYMH8SyFUTwUlz
i4SwsIQzyhxz0jIJaDEbe8l697Xabuq77MgXs3H9tdnUSPchkJ4E6JI2fuqeTJh/CZXgo0hJBtyc
hnEbLgizgtCcpTHGxWTxEveifto1ZRcGqikXAgiw8f07mNA2q+DzDn00CFRTBCgz1FqmCcnTStT0
0uNQ02Z7V2eLafkS5eWEELKyH1Za+Q1WQilmETJhrFHKRtgTzaUNZyu3VgHphqKWBLEYjyZ+DHef
MPJPNBNhEjGYMIwCipKIZqo04b7KrZJO53DgGUkoy1XpsaWy2UGrWT3v9jVGD117k1BlGffQDiYE
rZZQRiH0YnCFDDcaroSkDBixyNPycz17v/L6zNtZ96mBlvp+hXQbzSSQ8JDWGUxYkjIK/YZHuDCA
pYhvJbfaMTWTk7QQ/r28mr1E+/v7Ygovz5B6JLRkoGa48qAOJgwqMUAQRYQeOqgcg6oJVDtNUqX6
5Xz9/iXUy+3+0CDkUCgK7wpofAYxmBCgkHBC82i6Mh1W6pxaoCdCG5NIIIpZ4VFDN5FoXF+F9+mb
qsV6KjcMwjFEDQcTghhUNwg2Hm01TCNRTI2lIByUzGka5nJWrjxyWHaPm2qHjZwYAY06h4rrU//B
hJUnbgWzKoqVKhnEygCp1MBNCKi+JKwQxuVLqBDGdYsAFdJQoCuE+E4dTBhQY6wrXVGgAgEKuhfK
GpE8T1Ou61uPP6zr75UL3d2+PzzCZ0DC2ECVISZcjE8mLIyBSIDKiVJDysKZyyBDlIYKBWGc1mmL
2Xlg7nRfb7F0pVRBTpKAej2ZMJzAt4gxJoaTqDAzZMpN2KTWLDdplXjm1eEj4d9m63rzsO3a7v45
jFhaSamruz7pH0xo71GQAjrSe0hubVjsQMwAKCcLc5E2cbpcLb3RxI/e03yts9Whv282VRvpQxMV
IlKDCQGtoNsaEclfhxnx8g/NATwsF0mQL668WL7otvXzt7p1QKERbat9021R2NwcB9bK5xmDCYtu
RoEr8DhuEW5GjCvXy0AfJvbf6bL0BPy0esyW9a6u+s0DdgQCZYVAYzABAXQyYaEtBDg6HtkMqdIc
yKfWWpGcpEX26N3ci+xR131ptvfZRdfewX8xtmGN1FOAFShfJxMW11yDbosB/lXbvCMfppmyVuYs
DfD1cu3597ru9/X3bAGf8rHa1Ie9y2YENriCM5B6xE/nwYTAhgIEzCQa1hrhHRR4B9AWQdIqdjH2
hhbFYd89QgZvsnHlDgv6blPvds7tYW9LN3YJyobBhMB2zNDE6BbAFmF3U+PyBlAnU8vlxO/Jyxp6
cu0a1t/yuJbGKHCr9g/9BhPatajgMjJxBegsLJjcoSmBKsl5KvTV6L0X6at91X86bL7skDJmpIRy
RIkNjF1PJgwrdXXuFbA03KGptm7ATEE1mbR2VYwvvQiH3tTdvzKG5ECHBCKZfpoQvJDtIHajZRu6
GAJXEausZjbXadO5d9PCUxHwGqYhDNABEmSagwnzqmRcxpNXIZMrqilITma5ST0zmI2nH1+inHXb
u7qt//g7HAS+ZeY6r/T55mBCcVNQAyzCsAE4wrBBPEpitdQ8FfiimN+8BL6AaM6Kdt9l83r/reu/
ICENcSXccbX0z3UHE9aX3Wg8Nt8BzMjcjipBLKhRAsIjTT2dX069E4Xzpq2ru2y1aeotmsNcSwlK
ONSaBhPmZc6E+y1RxNjprtTAMylQ2ZylIV7NF96ocvW87Z52z5g01lS5qNU+1MGEQTUC4jXuW6w6
S2E44UKy1OWTYjXzT7HhtRPFzObXPtg50UTaP6vgAexgQsBC36Q6Ns1yYBGmJbkbZwGBTZXH5Xju
ubWs7lwEQzPaNffbVybvTPMj7/ETeDAhuCUxhMWZtRrYhIcb2ArwFZo6oF2MvfyFl/6iIrJivPQB
a8Y4gU7L/DI9mDBHM6EEs9EElgoJa8GEFIJpmcu0BJ4Vy5eIZ1XfN91+77en334dmP5JNgIjAqJB
WEA2nkyYrwVhxEbpluRIseaCWs4VNCidxi1nk6nHt2bww6u7btp86pETNGk05+EzpcGEoLXCVbc4
WCShObdAYgjRqYFdrjweDS8hXMvtN7kRJffVwmBCMHLgDRa+iChK5HwFuLfQhBujc5qGshjNR16N
bvpP20/Ycagl0FEI9cvzYEKAGqqBXsW9SRBFCPKfCGOYztOoVbm88cpU2Xff7nb7vvlSvzL0YEwb
UwKD8iN4MCGgodpoI6KEMgba1UGdBnnxwV9yXVTPQChfQQv6RZIPwXntYMIKs4W/jHwFbvhYH+AS
qH3WuFPxJMTluvBbcAM/GdO9FLSYS83A0txgwpACXYCYjANFeq47TnVbPiZxSHu1nH54ifPqP5Z1
07bP2XHC0x0n1GGhAESCXwBjDAiFkwnDDLmtSdS5QiPiiGrgKJxTntPEcC79trsoSngVE0Rcu2mK
CajAkwnrOloDKY7jxEQgECptlCvINg3n/Hbh9Vh4LVvVj80GVPBhs+/6XYA6z6cEKjDwWKg3HuS5
klbd4mMcKFJSDwcpYciI3nerMcotXuYmbTZbTrxZdNltgSq37ZFIZZNt3d8/Y0fCELN6Dcj8eB5M
CGgJ1YbrKJcSHKnN8E1LEPvKJC6szJbXXnUGFvnVnbO8eqDm5ADQY+GPrwYTlsKKgvi1UbIRw0zg
/a1KHXAsr7yB9LJ7qvtfiBtM7kNKKquCC5ODCW9KTiVHITOkVBMpoSnBN5rIO2Zzf+V3dgzuPhvV
X+sePgF2EwNqpnApG7iJcTKhiB3Tt69AxhATbTi1LE/L5ptx4TWnm67/clch0QwNn5uL4M7vYEJw
AkTwTmSJEGASRB8cq5Z2hTpVHyyWgW3up6pHNpOY4wsiGMGDCfOndg4VUerMbdih1jC386ts6srv
+Lb0ls3G9Xf01gWTjHLoCtr352BCcGoHUkQHONyE2aNVhghBqMpVGqkaF6sLD2bX9eNq94ABNcQi
O/knEwYUpL+1caA6LPlAwXNoPYQlVqSz9dwL27Ou3zdb7L4FF1baCVQbH+dgwgJXMOgXsaVtAKrC
7cYyqoBkU5KrxPHjePXuJVLHju/q3RfsuJNpZSEPA4fbJxNaiiyU3Ghf5So8l7FUKWbcuYFNC92r
8ZnHJa7au2zcPTZbR6DO+uPnyabgZEwVWImcFQ0mBLkgCshflC1zGU5aY7mQUKFV4rbZrLzwCMVx
KWnz0Dy9TqOAzlCQPCIwhTuZsLgmxAgW17kc2bEzCtgGJBNJTOBl4BbRstvtshUIA5w+GeY4UkjT
n0wIVohN9muYGoaKDOEMt0pJLlRu0nrPovjgDeEW1fPmoUbu1bgNIqaCd8MGE4bT3dmLSyAeLsnw
/QguOdOpE+V3F/6xbl993mcXdbP9A/jhb+uHOhDAhGh3Vq38TjuYELCMKXcHNap9OLIyaRgwYgMt
KPmmrn+Zpnis+2ZTgdZr680e/jdbdN+AI2P3awiTILTdPMKv1CcTAh1IpbubHkVOw/UKaJhQFopW
rtMK1jt/I+ddfeib+2zcZ4v6yWmh8F6dZZpeu7Lj4R1MmKsllFn7CqtCjsW0geIPb598TflyfOsl
8OV4cnubTatPXV9ByUIln5BAAMZQhAO7hCcTVp/dYnvsdgZARrY0tKLwD3SsXKbRjun7qbcpOz20
h7Z+hFZc7B/a2u0dIT3JLa3SoOgbTGhKSyAgcQaCTCS1VMDkgD+nrrcXgav3u31ffay3NUBdTMvw
GSD4FgpneJvwZEJbsFGuhsXwMuTBClq4x09QaVMZ11nh9+CzClS9O/UrOx8oqB6nVeEr9oAOJhSo
0kbEj/yYDVNL19IMAbmQeqo9W879xwwAg+63SACDptYkfDl7MCFANQVNRF9xKIpTUuhXPFXMn0/8
Fnw+gf5btfuHEj7m3xhRccWOz8cIrGkgiMGtbjUnjhhJWU6NEfCzUjnHeOzfux9X++quQ3ZBQckR
MQ0ecQ4mBKeEDmLig1aG6HoNzdo1c5mTtFQtL9beuUEJH29/ZBePj4ctFGM3Zsb2MhTk58Lto3qw
BxNWkfVRJ0RhIxfKlFUgEqS2iSLhrPAXvMdNBR3o7lO1+XIaqWMDHG3Cg8fBhCDmnBMio3NHhsw1
lOHm+CCKxAuvk1svgSff6xZabni8yt2abfgq2WDCKrJRkgkVbbUsHM5Kuz8K9Dl1c3+99s6x1311
d9wxOk41wlLBGM7tfwVnVYMJK1LAlGTseQMAFtm1URrIp3v71LtV5ercI8xl59aZs/O+Ozxhx/VU
uauAoQA+mbAepJi7XBcHi7jWHZ9Sxmwu07Z7y7U/gSy7+23zR7Xd/3maseraw4+KhRxrW3e5JHyJ
+2RC8Ftm3X5RFD/yiB+ga4orkNC5TuvBE49p/BCDHVTorOixi4PMSLdWAj/Y9/bJhKAV1ljCo+cH
TCLlinMjNXzFied/o3deVxpVX6AnXRzuH+pdkERCP2AMCAbxW9FgwkuW1jL27CaAihwJKaKIYyos
54lZPPbWmuGlY/D+Np74OCmTVAAYE1qm+mnCWq4E3SATYQoJrEq427FJMK+X/rz5uu4bqMvuUsIz
qD70dhEX8kNwkDOYMMBKS8PigJHzXGlBRgP9FKmAy9If5JTdpnpbdm2VTQ5991Rtms9umAN8CxjH
LvQYkfMRIaNxuZgT4WfwOTQQbnFxZKCbUhuHj4yxgJS6tVmlfm02/DP460nhHYwV+xbsTYWxDsAI
2jO8PncyYZ627hzvFajhMY57vpE1AsQCT9P3txPvgOF2U7dRGmmB0NlRcGQ1mLBqBSLDvjKdRE7s
pSRAWJQrVmleLeYrb4kMXvuAPEME2odivwcvmwwmDKWCzNRxYoXsfUrQupaYYf/sn0EcXV56O5+j
psOvrFui2K1bpvExnkxY0Gq37RZnyihGbrikkidKIP8m89X8r1tU2OKFYW67L3iV5mRC4Gqn5+Pb
Nb/Y1Qu4UOi5O+bPE297jqe+0B13bQtced3XyLkfk0o7PmhCWu+nCcEqiHIlNI41TBUlsW6mRUzy
uObMy9Hz6dWomJ5dvZ+Pl5eTYLa++3DO7Y+bFD6zGExoTQLtoGWUGv/qRH/F6y7SGALaOLUoffTg
ftxtqhY7LQBaa8g5Dd0vGExowirzyswigtJaK9xGTRLI2dirSrNue9+NR9io0XK9CD5rYDBhznSL
C6/4EhlIQY+WTHH38KY0mbde33hP5loD9X+7/uYOu/Z1X21+PGCi+7z/VmG3KoybeSJ3dk8mBD2n
7pnF0cZDTZhJCAWCSCplE6c0NyNvfHFT9Vu3Ddd3u2zsnlD2te4xSsGFYDy4+DiYsGolJdMsflxA
ZZhTcOMUkDseSSzNl9OZ14wu2/bw2GBjdAHtwI0PAyOMwYRlsHt0XPx5AxTZ5QXWBaGtEknizcgT
8DdVew+9Z7vLRl0HAr5o28Y9LBJzLxVMB0etgwlLaHez19J43UKIBoNOBJWLs8QtlNXl0tvYXjV9
c9hlt7NX7lq41QszCg7VBxMCWdPjbYxoRBPsOTEM2DU0JPl3tM+//uf/AaS/SugyXgAA
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- X-Requested-With, content-type, auth-token, Authorization, stripe-signature,
APPS, publicauthkey, privateauthkey
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Access-Control-Max-Age:
- '3600'
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json; charset=utf-8
Date:
- Wed, 17 Apr 2024 16:43:17 GMT
Etag:
- W/"5e32-2V5eXB4F7xydvsbJCpdYbUQZt7g"
Server:
- nginx/1.18.0 (Ubuntu)
Transfer-Encoding:
- chunked
Vary:
- Accept-Encoding
X-Frame-Options:
- SAMEORIGIN
X-Powered-By:
- Express
status:
code: 200
message: OK
- request:
body: null
headers:
Accept:
- application/json
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
method: GET
uri: https://financialmodelingprep.com/api/v3/stock-price-change/MSFT,AAPL,NVDA,AMZN,META,AVGO,GOOGL,GOOG,COST,TSLA,NFLX,AMD,PEP,LIN,ADBE,CSCO,TMUS,QCOM,INTU,AMAT,CMCSA,INTC,TXN,AMGN,MU,ISRG,HON,LRCX,BKNG,VRTX,ADP,REGN,SBUX,ADI,KLAC,MDLZ,PANW,GILD,SNPS,ASML,CDNS,PDD,MAR,MELI,CSX,ABNB,CRWD,PYPL,CTAS,ORLY,PCAR,NXPI,CEG,MRVL,ROP,MNST,WDAY,CPRT,DXCM,DASH,FTNT,ADSK,ODFL,MCHP,ROST,PAYX,KHC,AEP,KDP,IDXX,LULU,AZN,FAST,MRNA,GEHC,DDOG,CHTR,FANG,EXC,TTD,CSGP,CTSH,EA,BKR,CDW,VRSK,CCEP,TEAM,XEL,ANSS,BIIB,ON,DLTR,GFS,ZS,MDB,TTWO,WBD,ILMN,WBA,SIRI?apikey=MOCK_API_KEY
response:
body:
string: !!binary |
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
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- X-Requested-With, content-type, auth-token, Authorization, stripe-signature,
APPS, publicauthkey, privateauthkey
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Access-Control-Max-Age:
- '3600'
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json; charset=utf-8
Date:
- Wed, 17 Apr 2024 16:43:18 GMT
Etag:
- W/"648e-k76Hijq+oGLG6HSSxeTTBMtZTLg"
Server:
- nginx/1.18.0 (Ubuntu)
Transfer-Encoding:
- chunked
Vary:
- Accept-Encoding
X-Frame-Options:
- SAMEORIGIN
X-Powered-By:
- Express
status:
code: 200
message: OK
version: 1

View File

@@ -38,7 +38,6 @@ from openbb_fmp.models.etf_countries import FMPEtfCountriesFetcher
from openbb_fmp.models.etf_equity_exposure import FMPEtfEquityExposureFetcher
from openbb_fmp.models.etf_holdings import FMPEtfHoldingsFetcher
from openbb_fmp.models.etf_holdings_date import FMPEtfHoldingsDateFetcher
from openbb_fmp.models.etf_holdings_performance import FMPEtfHoldingsPerformanceFetcher
from openbb_fmp.models.etf_info import FMPEtfInfoFetcher
from openbb_fmp.models.etf_search import FMPEtfSearchFetcher
from openbb_fmp.models.etf_sectors import FMPEtfSectorsFetcher
@@ -649,16 +648,6 @@ def test_fmp_etf_countries_fetcher(credentials=test_credentials):
assert result is None
@pytest.mark.record_http
def test_fmp_etf_holdings_performance_fetcher(credentials=test_credentials):
"""Test FMP ETF holdings performance fetcher."""
params = {"symbol": "QQQ"}
fetcher = FMPEtfHoldingsPerformanceFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_http
def test_fmp_discovery_filings_fetcher(credentials=test_credentials):
"""Test FMP discovery filings fetcher."""