From f27da08ed519766b684a9398f72107d7ddf5d99d Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 14:12:25 -0400 Subject: [PATCH 01/20] add tickers file --- polygon/rest/models/tickers.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 polygon/rest/models/tickers.py diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py new file mode 100644 index 00000000..e69de29b From e99ecc687b603b03938edf2ccdc78d3430fd5961 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 14:44:06 -0400 Subject: [PATCH 02/20] added Locale and Market Enums --- polygon/rest/models/__init__.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/polygon/rest/models/__init__.py b/polygon/rest/models/__init__.py index c86fb398..1a347d1d 100644 --- a/polygon/rest/models/__init__.py +++ b/polygon/rest/models/__init__.py @@ -14,3 +14,12 @@ class Sort(Enum): class Order(Enum): ASC = "asc" DESC = "desc" + +class Locale(Enum): + US = "us" + GLOBAL = "global" + +class Market(Enum): + STOCKS = "stocks" + CRYPTO = "crypto" + FX = "fx" \ No newline at end of file From c192c9e842def7dd4e8d20ccd9fe03fbd47c20a9 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 14:46:32 -0400 Subject: [PATCH 03/20] add tickers import statement --- polygon/rest/models/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polygon/rest/models/__init__.py b/polygon/rest/models/__init__.py index 1a347d1d..a17226f6 100644 --- a/polygon/rest/models/__init__.py +++ b/polygon/rest/models/__init__.py @@ -2,6 +2,7 @@ from .trades import * from .quotes import * from .markets import * +from .tickers import * from enum import Enum @@ -10,7 +11,6 @@ class Sort(Enum): ASC = "asc" DESC = "desc" - class Order(Enum): ASC = "asc" DESC = "desc" From 6d8b802340ace9b4832c903eadfc71bbdf2bbc47 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 15:01:37 -0400 Subject: [PATCH 04/20] add tickers dataclass --- polygon/rest/models/tickers.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index e69de29b..98b1e1a3 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -0,0 +1,26 @@ +from re import LOCALE +from typing import Optional, List +from models import Locale, Market +from dataclasses import dataclass + + +@dataclass +class Ticker: + "Ticker contains data for a specified ticker symbol." + active: Optional[bool] = None + cik: Optional[str] = None + composite_figi: Optional[str] = None + currency_name: Optional[str] = None + delisted_utc: Optional[str] = None + last_updated_utc: Optional[str] = None + locale: Optional[Locale] = None + market: Optional[Market] = None + name: Optional[str] = None + primary_exchange: Optional[str] = None + share_class_figi: Optional[str] = None + ticker: Optional[str] = None + type: Optional[str] = None + + @staticmethod + def from_dict(d): + return Ticker(**d) From 49eab14dd38799c3c7b3a1427bc87307d1d26436 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 15:02:22 -0400 Subject: [PATCH 05/20] remove unused imports --- polygon/rest/models/tickers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 98b1e1a3..5ded47c5 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -1,5 +1,4 @@ -from re import LOCALE -from typing import Optional, List +from typing import Optional from models import Locale, Market from dataclasses import dataclass From 92af4cebe6a674199bbe694dbd35808c64bdf77c Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 15:32:51 -0400 Subject: [PATCH 06/20] add TickersClient and list_tickers function --- polygon/rest/reference.py | 61 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/polygon/rest/reference.py b/polygon/rest/reference.py index 10a6702f..9312512c 100644 --- a/polygon/rest/reference.py +++ b/polygon/rest/reference.py @@ -1,6 +1,6 @@ from .base import BaseClient -from typing import Optional, Any, Dict, List, Union -from .models import MarketHoliday, MarketStatus +from typing import Optional, Any, Dict, List, Union, Iterator +from .models import MarketHoliday, MarketStatus, Ticker, Sort, Order from urllib3 import HTTPResponse # https://polygon.io/docs/stocks @@ -37,4 +37,59 @@ def get_market_status( """ url = "/v1/marketstatus/now" - return self._get(path=url, params=params, deserializer=MarketStatus.from_dict, raw=raw) \ No newline at end of file + return self._get(path=url, params=params, deserializer=MarketStatus.from_dict, raw=raw) + +class TickersClient(BaseClient): + def list_tickers( + self, + ticker: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + type: Optional[str] = None, + market: Optional[str] = None, + exchange: Optional[str] = None, + cusip: Optional[int] = None, + cik: Optional[int] = None, + date: Optional[str] = None, + active: Optional[bool] = None, + search: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + order: Optional[Union[str, Order]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + ) -> Union[Iterator[Ticker], HTTPResponse]: + """ + Query all ticker symbols which are supported by Polygon.io. This API currently includes Stocks/Equities, Crypto, and Forex. + + :param ticker: Specify a ticker symbol. Defaults to empty string which queries all tickers. + :param ticker_lt: Timestamp less than + :param ticker_lte: Ticker less than or equal to + :param ticker_gt: Ticker greater than + :param ticker_gte: Ticker greater than or equal to + :param type: Specify the type of the tickers. Find the types that we support via our Ticker Types API. Defaults to empty string which queries all types. + :param market: Filter by market type. By default all markets are included. + :param exchange: Specify the primary exchange of the asset in the ISO code format. Find more information about the ISO codes at the ISO org website. Defaults to empty string which queries all exchanges. + :param cusip: Specify the CUSIP code of the asset you want to search for. Find more information about CUSIP codes at their website. Defaults to empty string which queries all CUSIPs. + :param cik: Specify the CIK of the asset you want to search for. Find more information about CIK codes at their website. Defaults to empty string which queries all CIKs. + :param date: Specify a point in time to retrieve tickers available on that date. Defaults to the most recent available date. + :param search: Search for terms within the ticker and/or company name. + :param active: Specify if the tickers returned should be actively traded on the queried date. Default is true. + :param limit: Limit the size of the response, default is 100 and max is 1000. + :param sort: The field to sort the results on. Default is ticker. If the search query parameter is present, sort is ignored and results are ordered by relevance. + :param order: The order to sort the results on. Default is asc (ascending). + :param params: Any additional query params + :param raw: Return raw object instead of results object + :return: List of aggregates + :rtype: List[Agg] + """ + url = "/v3/reference/tickers" + + return self._paginate( + path=url, + params=self._get_params(self.list_tickers, locals()), + raw=raw, + deserializer=Ticker.from_dict, + ) \ No newline at end of file From 59c69d5659951179db7c8589c3d29cb90d8f2473 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 15:33:43 -0400 Subject: [PATCH 07/20] modify list_tickers comment --- polygon/rest/reference.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polygon/rest/reference.py b/polygon/rest/reference.py index 9312512c..8f4b7e22 100644 --- a/polygon/rest/reference.py +++ b/polygon/rest/reference.py @@ -82,8 +82,8 @@ def list_tickers( :param order: The order to sort the results on. Default is asc (ascending). :param params: Any additional query params :param raw: Return raw object instead of results object - :return: List of aggregates - :rtype: List[Agg] + :return: List of tickers + :rtype: List[Ticker] """ url = "/v3/reference/tickers" From 9e3b394f6bbc03351eed0505df80efa3f961253a Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 15:49:10 -0400 Subject: [PATCH 08/20] add TickerDetails dataclass --- polygon/rest/models/tickers.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 5ded47c5..fa5ac42c 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import Optional, Dict from models import Locale, Market from dataclasses import dataclass @@ -23,3 +23,31 @@ class Ticker: @staticmethod def from_dict(d): return Ticker(**d) + +@dataclass +class TickerDetails: + "TickerDetails contains data for a specified ticker symbol." + active: Optional[bool] = None + address: Optional[Dict[str,str]] = None + branding: Optional[Dict[str,str]] = None + cik: Optional[str] = None + composite_figi: Optional[str] = None + currency_name: Optional[str] = None + delisted_utc: Optional[str] = None + description: Optional[str] = None + homepage_url: Optional[str] = None + list_date: Optional[str] = None + locale: Optional[Locale] = None + market: Optional[Market] = None + market_cap: Optional[float] = None + name: Optional[str] = None + phone_number: Optional[str] = None + primary_exchange: Optional[str] = None + share_class_figi: Optional[str] = None + share_class_shares_outstanding: Optional[int] = None + sic_code: Optional[str] = None + sic_description: Optional[str] = None + ticker: Optional[str] = None + total_employees: Optional[int] = None + type: Optional[str] = None + weighted_shares_outstanding: Optional[int] = None From 6fc7b17e3ead7a3daeab07a98e151d4081b60adf Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 15:55:44 -0400 Subject: [PATCH 09/20] add get_ticker_details function --- polygon/rest/reference.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/polygon/rest/reference.py b/polygon/rest/reference.py index 8f4b7e22..4495e266 100644 --- a/polygon/rest/reference.py +++ b/polygon/rest/reference.py @@ -1,6 +1,6 @@ from .base import BaseClient from typing import Optional, Any, Dict, List, Union, Iterator -from .models import MarketHoliday, MarketStatus, Ticker, Sort, Order +from .models import MarketHoliday, MarketStatus, Ticker, TickerDetails, Sort, Order from urllib3 import HTTPResponse # https://polygon.io/docs/stocks @@ -92,4 +92,25 @@ def list_tickers( params=self._get_params(self.list_tickers, locals()), raw=raw, deserializer=Ticker.from_dict, - ) \ No newline at end of file + ) + + def get_ticker_details( + self, + ticker: Optional[str] = None, + date: Optional[str] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + ) -> Union[TickerDetails, HTTPResponse]: + """ + Get a single ticker supported by Polygon.io. This response will have detailed information about the ticker and the company behind it. + + :param ticker: The ticker symbol of the asset. + :param date: Specify a point in time to get information about the ticker available on that date. When retrieving information from SEC filings, we compare this date with the period of report date on the SEC filing. + :param params: Any additional query params + :param raw: Return raw object instead of results object + :return: Ticker Details V3 + :rtype: TickerDetail + """ + url = f"/v3/reference/tickers/{ticker}" + + return self._get(path=url, params=params, deserializer=TickerDetails.from_dict, raw=raw) \ No newline at end of file From 6f47e79c903c2e08b33a3c45142edc9ba81160a0 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 15:58:41 -0400 Subject: [PATCH 10/20] add static method to TickerDetails --- polygon/rest/models/tickers.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index fa5ac42c..30671a34 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -51,3 +51,7 @@ class TickerDetails: total_employees: Optional[int] = None type: Optional[str] = None weighted_shares_outstanding: Optional[int] = None + + @staticmethod + def from_dict(d): + return TickerDetails(**d) From 50b7d984d4987f0c9959ddb33fbbf77b4f1e5692 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 16:07:55 -0400 Subject: [PATCH 11/20] add TickerNews dataclass --- polygon/rest/models/tickers.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 30671a34..976e01dd 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -1,4 +1,4 @@ -from typing import Optional, Dict +from typing import Optional, Dict, List from models import Locale, Market from dataclasses import dataclass @@ -55,3 +55,22 @@ class TickerDetails: @staticmethod def from_dict(d): return TickerDetails(**d) + +@dataclass +class TickerNews: + "TickerDetails contains data for news articles relating to a stock ticker symbol." + amp_url: Optional[str] = None + article_url: Optional[str] = None + author: Optional[str] = None + description: Optional[str] = None + id: Optional[str] = None + image_url: Optional[str] = None + keywords: Optional[List[str]] = None + published_utc: Optional[str] = None + publisher: Optional[Dict[str,str]] = None + tickers: Optional[List[str]] = None + title: Optional[str] = None + + @staticmethod + def from_dict(d): + return TickerNews(**d) From 90cd4f31d3a86614a0e72a9dc335be65ec57bc19 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 16:14:24 -0400 Subject: [PATCH 12/20] add get_ticker_news function --- polygon/rest/reference.py | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/polygon/rest/reference.py b/polygon/rest/reference.py index 4495e266..4424ebe3 100644 --- a/polygon/rest/reference.py +++ b/polygon/rest/reference.py @@ -1,6 +1,6 @@ from .base import BaseClient from typing import Optional, Any, Dict, List, Union, Iterator -from .models import MarketHoliday, MarketStatus, Ticker, TickerDetails, Sort, Order +from .models import MarketHoliday, MarketStatus, Ticker, TickerDetails, TickerNews, Sort, Order from urllib3 import HTTPResponse # https://polygon.io/docs/stocks @@ -113,4 +113,36 @@ def get_ticker_details( """ url = f"/v3/reference/tickers/{ticker}" - return self._get(path=url, params=params, deserializer=TickerDetails.from_dict, raw=raw) \ No newline at end of file + return self._get(path=url, params=params, deserializer=TickerDetails.from_dict, raw=raw) + + def get_ticker_news( + self, + ticker: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + published_utc: Optional[str] = None, + published_utc_lt: Optional[str] = None, + published_utc_lte: Optional[str] = None, + published_utc_gt: Optional[str] = None, + published_utc_gte: Optional[str] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + ) -> Union[TickerDetails, HTTPResponse]: + """ + Get the most recent news articles relating to a stock ticker symbol, including a summary of the article and a link to the original source. + + :param ticker: Return results that contain this ticker. + :param published_utc: Return results published on, before, or after this date. + :param limit: Limit the number of results returned, default is 10 and max is 1000. + :param sort: Sort field used for ordering. + :param order: Order results based on the sort field. + :param params: Any additional query params + :param raw: Return raw object instead of results object + :return: Ticker News + :rtype: TickerNews + """ + url = "/v2/reference/news" + + return self._get(path=url, params=params, deserializer=TickerNews.from_dict, raw=raw) \ No newline at end of file From eef348c3f5d43a67cd8c81eab4560879017a20f5 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 16:28:03 -0400 Subject: [PATCH 13/20] add AssetClass Enum --- polygon/rest/models/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/polygon/rest/models/__init__.py b/polygon/rest/models/__init__.py index a17226f6..4514940e 100644 --- a/polygon/rest/models/__init__.py +++ b/polygon/rest/models/__init__.py @@ -22,4 +22,10 @@ class Locale(Enum): class Market(Enum): STOCKS = "stocks" CRYPTO = "crypto" + FX = "fx" + +class AssetClass(Enum): + STOCKS = "stocks" + OPTIONS = "options" + CRYPTO = "crypto" FX = "fx" \ No newline at end of file From ca7ec940d5d30ede0019b369ff128bd5d2947cd3 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 16:29:02 -0400 Subject: [PATCH 14/20] commented as reminder to add dataclasses for nested data --- polygon/rest/models/tickers.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 976e01dd..500773df 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -74,3 +74,26 @@ class TickerNews: @staticmethod def from_dict(d): return TickerNews(**d) + +# @dataclass +# class Publisher: + + +@dataclass +class TickerTypes: + "TickerDetails contains data for news articles relating to a stock ticker symbol." + amp_url: Optional[str] = None + article_url: Optional[str] = None + author: Optional[str] = None + description: Optional[str] = None + id: Optional[str] = None + image_url: Optional[str] = None + keywords: Optional[List[str]] = None + published_utc: Optional[str] = None + publisher: Optional[Dict[str,str]] = None + tickers: Optional[List[str]] = None + title: Optional[str] = None + + @staticmethod + def from_dict(d): + return TickerNews(**d) \ No newline at end of file From 35839b198013f65b26a9f52c1ff1c06e250329da Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Tue, 26 Apr 2022 16:33:44 -0400 Subject: [PATCH 15/20] add TickerTypes dataclass --- polygon/rest/models/tickers.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 500773df..beefd45e 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -1,5 +1,5 @@ from typing import Optional, Dict, List -from models import Locale, Market +from models import Locale, Market, AssetClass, Locale from dataclasses import dataclass @@ -81,18 +81,11 @@ def from_dict(d): @dataclass class TickerTypes: - "TickerDetails contains data for news articles relating to a stock ticker symbol." - amp_url: Optional[str] = None - article_url: Optional[str] = None - author: Optional[str] = None + "TickerTypes contains data ticker types." + asset_class: Optional[AssetClass] = None + code: Optional[str] = None description: Optional[str] = None - id: Optional[str] = None - image_url: Optional[str] = None - keywords: Optional[List[str]] = None - published_utc: Optional[str] = None - publisher: Optional[Dict[str,str]] = None - tickers: Optional[List[str]] = None - title: Optional[str] = None + locale: Optional[Locale] = None @staticmethod def from_dict(d): From 0d20f7ffa48b8ab7d76c1fe4ca4505dac9dd0da7 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Wed, 27 Apr 2022 10:02:10 -0400 Subject: [PATCH 16/20] add get_ticker_types function --- polygon/rest/reference.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/polygon/rest/reference.py b/polygon/rest/reference.py index 4424ebe3..bfe5899f 100644 --- a/polygon/rest/reference.py +++ b/polygon/rest/reference.py @@ -1,6 +1,6 @@ from .base import BaseClient from typing import Optional, Any, Dict, List, Union, Iterator -from .models import MarketHoliday, MarketStatus, Ticker, TickerDetails, TickerNews, Sort, Order +from .models import MarketHoliday, MarketStatus, Ticker, TickerDetails, TickerNews, TickerTypes, Sort, Order, AssetClass, Locale from urllib3 import HTTPResponse # https://polygon.io/docs/stocks @@ -145,4 +145,25 @@ def get_ticker_news( """ url = "/v2/reference/news" - return self._get(path=url, params=params, deserializer=TickerNews.from_dict, raw=raw) \ No newline at end of file + return self._get(path=url, params=params, deserializer=TickerNews.from_dict, raw=raw) + + def get_ticker_types( + self, + asset_class: Optional[AssetClass] = None, + locale: Optional[Locale] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + ) -> Union[TickerTypes, HTTPResponse]: + """ + List all ticker types that Polygon.io has. + + :param asset_class: Filter by asset class. + :param locale: Filter by locale. + :param params: Any additional query params + :param raw: Return raw object instead of results object + :return: Ticker Types + :rtype: TickerTypes + """ + url = "/v3/reference/tickers/types" + + return self._get(path=url, params=params, deserializer=TickerTypes.from_dict, raw=raw) \ No newline at end of file From 37d2fc334e2bd7d343a87050c7c55bede7e2d0f9 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Wed, 27 Apr 2022 10:26:58 -0400 Subject: [PATCH 17/20] add dataclasses for nested objects --- polygon/rest/models/tickers.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index beefd45e..bfcfcd1a 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -1,7 +1,25 @@ -from typing import Optional, Dict, List +from typing import Optional, List from models import Locale, Market, AssetClass, Locale from dataclasses import dataclass +@dataclass +class Address: + address1: Optional[str] = None + city: Optional[str] = None + state: Optional[str] = None + +@dataclass +class Branding: + icon_url: Optional[str] = None + logo_url: Optional[str] = None + +@dataclass +class Publisher: + favicon_url: Optional[str] = None + homepage_url: Optional[str] = None + logo_url: Optional[str] = None + name: Optional[str] = None + @dataclass class Ticker: @@ -28,8 +46,8 @@ def from_dict(d): class TickerDetails: "TickerDetails contains data for a specified ticker symbol." active: Optional[bool] = None - address: Optional[Dict[str,str]] = None - branding: Optional[Dict[str,str]] = None + address: Optional[Address] = None + branding: Optional[Branding] = None cik: Optional[str] = None composite_figi: Optional[str] = None currency_name: Optional[str] = None @@ -67,7 +85,7 @@ class TickerNews: image_url: Optional[str] = None keywords: Optional[List[str]] = None published_utc: Optional[str] = None - publisher: Optional[Dict[str,str]] = None + publisher: Optional[Publisher] = None tickers: Optional[List[str]] = None title: Optional[str] = None @@ -75,10 +93,6 @@ class TickerNews: def from_dict(d): return TickerNews(**d) -# @dataclass -# class Publisher: - - @dataclass class TickerTypes: "TickerTypes contains data ticker types." @@ -89,4 +103,4 @@ class TickerTypes: @staticmethod def from_dict(d): - return TickerNews(**d) \ No newline at end of file + return TickerNews(**d) From a278f7dd44c49689ea965454cb1f47b92258c7c9 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Wed, 27 Apr 2022 10:31:21 -0400 Subject: [PATCH 18/20] added TickersClient import --- polygon/rest/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polygon/rest/__init__.py b/polygon/rest/__init__.py index 3bc193dd..849443f1 100644 --- a/polygon/rest/__init__.py +++ b/polygon/rest/__init__.py @@ -1,8 +1,8 @@ from .aggs import AggsClient from .trades import TradesClient from .quotes import QuotesClient -from .reference import MarketsClient +from .reference import MarketsClient, TickersClient -class RESTClient(AggsClient, TradesClient, QuotesClient, MarketsClient): +class RESTClient(AggsClient, TradesClient, QuotesClient, MarketsClient, TickersClient): pass From 751c43d99b4b744e94bcf54f1987d2c6912e0dc8 Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Wed, 27 Apr 2022 10:41:13 -0400 Subject: [PATCH 19/20] moved enum definitions from __init__ to tickers --- polygon/rest/models/__init__.py | 15 --------------- polygon/rest/models/tickers.py | 17 ++++++++++++++++- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/polygon/rest/models/__init__.py b/polygon/rest/models/__init__.py index 4514940e..13bc71ea 100644 --- a/polygon/rest/models/__init__.py +++ b/polygon/rest/models/__init__.py @@ -14,18 +14,3 @@ class Sort(Enum): class Order(Enum): ASC = "asc" DESC = "desc" - -class Locale(Enum): - US = "us" - GLOBAL = "global" - -class Market(Enum): - STOCKS = "stocks" - CRYPTO = "crypto" - FX = "fx" - -class AssetClass(Enum): - STOCKS = "stocks" - OPTIONS = "options" - CRYPTO = "crypto" - FX = "fx" \ No newline at end of file diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index bfcfcd1a..5cc6cf75 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -1,7 +1,22 @@ from typing import Optional, List -from models import Locale, Market, AssetClass, Locale +from enum import Enum from dataclasses import dataclass +class Locale(Enum): + US = "us" + GLOBAL = "global" + +class Market(Enum): + STOCKS = "stocks" + CRYPTO = "crypto" + FX = "fx" + +class AssetClass(Enum): + STOCKS = "stocks" + OPTIONS = "options" + CRYPTO = "crypto" + FX = "fx" + @dataclass class Address: address1: Optional[str] = None From cbeeeaebad13bd86a1841ee765c3240b8fe91d4b Mon Sep 17 00:00:00 2001 From: Darcy Linde <{47221647+Darcy-Linde@users.noreply.github.com}> Date: Wed, 27 Apr 2022 10:47:42 -0400 Subject: [PATCH 20/20] fix typo in ticker types description --- polygon/rest/models/tickers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 5cc6cf75..105a8a30 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -110,7 +110,7 @@ def from_dict(d): @dataclass class TickerTypes: - "TickerTypes contains data ticker types." + "TickerTypes contains data for ticker types." asset_class: Optional[AssetClass] = None code: Optional[str] = None description: Optional[str] = None