Skip to content

Commit ebeefba

Browse files
author
clickingbuttons
authored
Specific exceptions (#204)
* add more exceptions * no breaking changes * update docs * alphabetize * fix comment * lint
1 parent f1c31b5 commit ebeefba

File tree

5 files changed

+41
-16
lines changed

5 files changed

+41
-16
lines changed

docs/source/Exceptions.rst

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,21 @@ Exceptions
66
==============================================================
77
AuthError
88
==============================================================
9-
.. autoclass:: polygon.websocket.__init__.AuthError
9+
.. autoclass:: polygon.exceptions.AuthError
10+
:members:
11+
:undoc-members:
12+
13+
==============================================================
14+
BadResponse
15+
==============================================================
16+
.. autoclass:: polygon.exceptions.BadResponse
1017
:members:
1118
:undoc-members:
1219

1320
==============================================================
1421
NoResultsError
1522
==============================================================
16-
.. autoclass:: polygon.rest.base.NoResultsError
23+
.. autoclass:: polygon.exceptions.NoResultsError
1724
:members:
18-
:undoc-members:
25+
:undoc-members:
26+

polygon/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from .rest import RESTClient
2-
from .rest.base import NoResultsError, version
3-
from .websocket import WebSocketClient, AuthError
2+
from .rest.base import version
3+
from .websocket import WebSocketClient
4+
from .exceptions import *
45

56
__version__ = version

polygon/exceptions.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class AuthError(Exception):
2+
"""
3+
Empty or invalid API key
4+
"""
5+
6+
pass
7+
8+
9+
class BadResponse(Exception):
10+
"""
11+
Non-200 response from API
12+
"""
13+
14+
pass
15+
16+
17+
class NoResultsError(Exception):
18+
"""
19+
Missing results key
20+
"""
21+
22+
pass

polygon/rest/base.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import pkg_resources # part of setuptools
99
from ..logging import get_logger
1010
import logging
11+
from ..exceptions import AuthError, BadResponse, NoResultsError
1112

1213
logger = get_logger("RESTClient")
1314
version = "unknown"
@@ -17,10 +18,6 @@
1718
pass
1819

1920

20-
class NoResultsError(Exception):
21-
pass
22-
23-
2421
class BaseClient:
2522
def __init__(
2623
self,
@@ -33,7 +30,7 @@ def __init__(
3330
verbose: bool,
3431
):
3532
if api_key is None:
36-
raise Exception(
33+
raise AuthError(
3734
f"Must specify env var POLYGON_API_KEY or pass api_key in constructor"
3835
)
3936
self.API_KEY = api_key
@@ -78,7 +75,7 @@ def _get(
7875
)
7976

8077
if resp.status != 200:
81-
raise Exception(resp.data.decode("utf-8"))
78+
raise BadResponse(resp.data.decode("utf-8"))
8279

8380
if raw:
8481
return resp

polygon/websocket/__init__.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,12 @@
1111
from websockets.exceptions import ConnectionClosedOK, ConnectionClosedError
1212
from ..logging import get_logger
1313
import logging
14+
from ..exceptions import AuthError
1415

1516
env_key = "POLYGON_API_KEY"
1617
logger = get_logger("WebSocketClient")
1718

1819

19-
class AuthError(Exception):
20-
pass
21-
22-
2320
class WebSocketClient:
2421
def __init__(
2522
self,
@@ -45,7 +42,7 @@ def __init__(
4542
:return: A client.
4643
"""
4744
if api_key is None:
48-
raise Exception(
45+
raise AuthError(
4946
f"Must specify env var {env_key} or pass api_key in constructor"
5047
)
5148
self.api_key = api_key

0 commit comments

Comments
 (0)