fix a bunch o polygon models

This commit is contained in:
Diogo Sousa
2023-07-29 16:31:23 +01:00
parent b6fa2fe6ef
commit 37262fbce2
9 changed files with 67 additions and 93 deletions

View File

@@ -56,8 +56,7 @@ class PolygonBalanceSheetFetcher(
def extract_data(
query: PolygonBalanceSheetQueryParams, credentials: Optional[Dict[str, str]]
) -> List[PolygonBalanceSheetData]:
if credentials:
api_key = credentials.get("polygon_api_key")
api_key = credentials.get("polygon_api_key") if credentials else ""
base_url = "https://api.polygon.io/vX/reference/financials"
query_string = get_querystring(query.dict(), [])

View File

@@ -62,8 +62,8 @@ class PolygonCashFlowStatementFetcher(
query: PolygonCashFlowStatementQueryParams,
credentials: Optional[Dict[str, str]],
) -> List[PolygonCashFlowStatementData]:
if credentials:
api_key = credentials.get("polygon_api_key")
api_key = credentials.get("polygon_api_key") if credentials else ""
base_url = "https://api.polygon.io/vX/reference/financials"
query_string = get_querystring(query.dict(), [])

View File

@@ -2,7 +2,7 @@
from datetime import datetime, timedelta
from typing import Dict, List, Literal, Optional
from typing import Any, Dict, List, Literal, Optional
from openbb_provider.abstract.fetcher import Fetcher
from openbb_provider.helpers import data_transformer
@@ -68,25 +68,23 @@ class PolygonCryptoEODFetcher(
]
):
@staticmethod
def transform_query(
query: CryptoEODQueryParams, extra_params: Optional[Dict] = None
) -> PolygonCryptoEODQueryParams:
def transform_query(params: Dict[str, Any]) -> PolygonCryptoEODQueryParams:
now = datetime.now().date()
start_date = query.start_date or (now - timedelta(days=7))
end_date = query.end_date or now
return PolygonCryptoEODQueryParams(
symbol=query.symbol,
start_date=start_date,
end_date=end_date,
**extra_params or {},
)
transformed_params = params
if params.get("start_date") is None:
transformed_params["start_date"] = now - timedelta(days=7)
if params.get("end_date") is None:
transformed_params["end_date"] = now
return PolygonCryptoEODQueryParams(**transformed_params)
@staticmethod
def extract_data(
query: PolygonCryptoEODQueryParams, credentials: Optional[Dict[str, str]]
) -> List[PolygonCryptoEODData]:
if credentials:
api_key = credentials.get("polygon_api_key")
api_key = credentials.get("polygon_api_key") if credentials else ""
request_url = (
f"https://api.polygon.io/v2/aggs/ticker/"
@@ -107,5 +105,5 @@ class PolygonCryptoEODFetcher(
return [PolygonCryptoEODData(**d) for d in data]
@staticmethod
def transform_data(data: List[PolygonCryptoEODData]) -> List[CryptoEODData]:
return data_transformer(data, CryptoEODData)
def transform_data(data: List[PolygonCryptoEODData]) -> List[PolygonCryptoEODData]:
return data

View File

@@ -2,7 +2,7 @@
from datetime import datetime, timedelta
from typing import Dict, List, Literal, Optional
from typing import Any, Dict, List, Literal, Optional
from openbb_provider.abstract.fetcher import Fetcher
from openbb_provider.helpers import data_transformer
@@ -68,28 +68,26 @@ class PolygonForexEODFetcher(
]
):
@staticmethod
def transform_query(
query: ForexEODQueryParams, extra_params: Optional[Dict] = None
) -> PolygonForexEODQueryParams:
return PolygonForexEODQueryParams(
symbol=query.symbol,
**extra_params or {},
)
def transform_query(params: Dict[str, Any]) -> PolygonForexEODQueryParams:
now = datetime.now().date()
transformed_params = params
if params.get("start_date") is None:
transformed_params["start_date"] = now - timedelta(days=7)
if params.get("end_date") is None:
transformed_params["end_date"] = now
return PolygonForexEODQueryParams(**transformed_params)
@staticmethod
def extract_data(
query: PolygonForexEODQueryParams, credentials: Optional[Dict[str, str]]
) -> List[PolygonForexEODData]:
if credentials:
api_key = credentials.get("polygon_api_key")
api_key = credentials.get("polygon_api_key") if credentials else ""
now = datetime.now()
start_date = query.start_date or (now - timedelta(days=7)).date()
end_date = query.end_date or now.date()
request_url = (
f"https://api.polygon.io/v2/aggs/ticker/"
f"C:{query.symbol}/range/1/{query.timespan}/"
f"{start_date}/{end_date}?adjusted={query.adjusted}"
f"{query.start_date}/{query.end_date}?adjusted={query.adjusted}"
f"&sort={query.sort}&limit={query.limit}&multiplier={query.multiplier}"
f"&apiKey={api_key}"
)
@@ -105,5 +103,5 @@ class PolygonForexEODFetcher(
return [PolygonForexEODData(**d) for d in data]
@staticmethod
def transform_data(data: List[PolygonForexEODData]) -> List[ForexEODData]:
return data_transformer(data, ForexEODData)
def transform_data(data: List[PolygonForexEODData]) -> List[PolygonForexEODData]:
return data

View File

@@ -5,7 +5,7 @@ from datetime import (
date as dateType,
datetime,
)
from typing import Dict, List, Literal, Optional
from typing import Any, Dict, List, Literal, Optional
from openbb_provider.abstract.fetcher import Fetcher
from openbb_provider.helpers import data_transformer
@@ -88,19 +88,14 @@ class PolygonForexPairsFetcher(
]
):
@staticmethod
def transform_query(
query: ForexPairsQueryParams, extra_params: Optional[Dict] = None
) -> PolygonForexPairsQueryParams:
return PolygonForexPairsQueryParams(
**extra_params or {},
)
def transform_query(params: Dict[str, Any]) -> PolygonForexPairsQueryParams:
return PolygonForexPairsQueryParams(**params)
@staticmethod
def extract_data(
query: PolygonForexPairsQueryParams, credentials: Optional[Dict[str, str]]
) -> List[PolygonForexPairsData]:
if credentials:
api_key = credentials.get("polygon_api_key")
api_key = credentials.get("polygon_api_key") if credentials else ""
tickers = f"ticker=C:{query.symbol}" if query.symbol else ""
request_url = (
@@ -135,5 +130,5 @@ class PolygonForexPairsFetcher(
return all_data
@staticmethod
def transform_data(data: List[PolygonForexPairsData]) -> List[ForexPairsData]:
return data_transformer(data, ForexPairsData)
def transform_data(data: List[PolygonForexPairsData]) -> List[PolygonForexPairsData]:
return data

View File

@@ -73,8 +73,7 @@ class PolygonIncomeStatementFetcher(
def extract_data(
query: PolygonIncomeStatementQueryParams, credentials: Optional[Dict[str, str]]
) -> List[PolygonIncomeStatementData]:
if credentials:
api_key = credentials.get("polygon_api_key")
api_key = credentials.get("polygon_api_key") if credentials else ""
base_url = "https://api.polygon.io/vX/reference/financials"
query_string = get_querystring(query.dict(), [])

View File

@@ -2,7 +2,7 @@
from datetime import datetime, timedelta
from typing import Dict, List, Literal, Optional
from typing import Any, Dict, List, Literal, Optional
from openbb_provider.abstract.fetcher import Fetcher
from openbb_provider.helpers import data_transformer
@@ -71,25 +71,21 @@ class PolygonMajorIndicesEODFetcher(
]
):
@staticmethod
def transform_query(
query: MajorIndicesEODQueryParams, extra_params: Optional[Dict] = None
) -> PolygonMajorIndicesEODQueryParams:
def transform_query(params: Dict[str, Any]) -> PolygonMajorIndicesEODQueryParams:
now = datetime.now().date()
start_date = query.start_date or (now - timedelta(days=7))
end_date = query.end_date or now
return PolygonMajorIndicesEODQueryParams(
symbol=query.symbol,
start_date=start_date,
end_date=end_date,
**extra_params or {},
)
transformed_params = params
if params.get("start_date") is None:
transformed_params["start_date"] = now - timedelta(days=7)
if params.get("end_date") is None:
transformed_params["end_date"] = now
return PolygonMajorIndicesEODQueryParams(**transformed_params)
@staticmethod
def extract_data(
query: PolygonMajorIndicesEODQueryParams, credentials: Optional[Dict[str, str]]
) -> List[PolygonMajorIndicesEODData]:
if credentials:
api_key = credentials.get("polygon_api_key")
api_key = credentials.get("polygon_api_key") if credentials else ""
request_url = (
f"https://api.polygon.io/v2/aggs/ticker/"
@@ -112,5 +108,5 @@ class PolygonMajorIndicesEODFetcher(
@staticmethod
def transform_data(
data: List[PolygonMajorIndicesEODData],
) -> List[MajorIndicesEODData]:
return data_transformer(data, MajorIndicesEODData)
) -> List[PolygonMajorIndicesEODData]:
return data

View File

@@ -2,7 +2,7 @@
from datetime import datetime, timedelta
from typing import Dict, List, Literal, Optional
from typing import Any, Dict, List, Literal, Optional
from openbb_provider.abstract.fetcher import Fetcher
from openbb_provider.helpers import data_transformer
@@ -68,25 +68,21 @@ class PolygonStockEODFetcher(
]
):
@staticmethod
def transform_query(
query: StockEODQueryParams, extra_params: Optional[Dict] = None
) -> PolygonStockEODQueryParams:
def transform_query(params: Dict[str, Any]) -> PolygonStockEODQueryParams:
now = datetime.now().date()
start_date = query.start_date or (now - timedelta(days=7))
end_date = query.end_date or now
return PolygonStockEODQueryParams(
symbol=query.symbol,
start_date=start_date,
end_date=end_date,
**extra_params or {},
)
transformed_params = params
if params.get("start_date") is None:
transformed_params["start_date"] = now - timedelta(days=7)
if params.get("end_date") is None:
transformed_params["end_date"] = now
return PolygonStockEODQueryParams(**transformed_params)
@staticmethod
def extract_data(
query: PolygonStockEODQueryParams, credentials: Optional[Dict[str, str]]
) -> List[PolygonStockEODData]:
if credentials:
api_key = credentials.get("polygon_api_key")
api_key = credentials.get("polygon_api_key") if credentials else ""
request_url = (
f"https://api.polygon.io/v2/aggs/ticker/"
@@ -107,5 +103,5 @@ class PolygonStockEODFetcher(
return [PolygonStockEODData(**d) for d in data]
@staticmethod
def transform_data(data: List[PolygonStockEODData]) -> List[StockEODData]:
return data_transformer(data, StockEODData)
def transform_data(data: List[PolygonStockEODData]) -> List[PolygonStockEODData]:
return data

View File

@@ -2,7 +2,7 @@
from datetime import datetime
from typing import Dict, List, Literal, Optional
from typing import Any, Dict, List, Literal, Optional
from openbb_provider.abstract.data import Data
from openbb_provider.abstract.fetcher import Fetcher
@@ -90,22 +90,15 @@ class PolygonStockNewsFetcher(
]
):
@staticmethod
def transform_query(
query: StockNewsQueryParams, extra_params: Optional[Dict] = None
) -> PolygonStockNewsQueryParams:
return PolygonStockNewsQueryParams(
ticker=query.symbols,
page=query.page,
limit=query.limit,
**extra_params if extra_params else {},
)
def transform_query(params: Dict[str, Any]) -> PolygonStockNewsQueryParams:
return PolygonStockNewsQueryParams(**params)
@staticmethod
def extract_data(
query: PolygonStockNewsQueryParams, credentials: Optional[Dict[str, str]]
) -> List[PolygonStockNewsData]:
if credentials:
api_key = credentials.get("polygon_api_key")
api_key = credentials.get("polygon_api_key") if credentials else ""
base_url = "https://api.polygon.io/v2/reference/news"
querystring = get_querystring(query.dict(by_alias=True), [])