Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions docs/source/Exceptions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,21 @@ Exceptions
==============================================================
AuthError
==============================================================
.. autoclass:: polygon.websocket.__init__.AuthError
.. autoclass:: polygon.exceptions.AuthError
:members:
:undoc-members:

==============================================================
BadResponse
==============================================================
.. autoclass:: polygon.exceptions.BadResponse
:members:
:undoc-members:

==============================================================
NoResultsError
==============================================================
.. autoclass:: polygon.rest.base.NoResultsError
.. autoclass:: polygon.exceptions.NoResultsError
:members:
:undoc-members:
:undoc-members:

5 changes: 3 additions & 2 deletions polygon/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from .rest import RESTClient
from .rest.base import NoResultsError, version
from .websocket import WebSocketClient, AuthError
from .rest.base import version
from .websocket import WebSocketClient
from .exceptions import *

__version__ = version
22 changes: 22 additions & 0 deletions polygon/exceptions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
class AuthError(Exception):
"""
Empty or invalid API key
"""

pass


class BadResponse(Exception):
"""
Non-200 response from API
"""

pass


class NoResultsError(Exception):
"""
Missing results key
"""

pass
9 changes: 3 additions & 6 deletions polygon/rest/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import pkg_resources # part of setuptools
from ..logging import get_logger
import logging
from ..exceptions import AuthError, BadResponse, NoResultsError

logger = get_logger("RESTClient")
version = "unknown"
Expand All @@ -17,10 +18,6 @@
pass


class NoResultsError(Exception):
pass


class BaseClient:
def __init__(
self,
Expand All @@ -33,7 +30,7 @@ def __init__(
verbose: bool,
):
if api_key is None:
raise Exception(
raise AuthError(
f"Must specify env var POLYGON_API_KEY or pass api_key in constructor"
)
self.API_KEY = api_key
Expand Down Expand Up @@ -78,7 +75,7 @@ def _get(
)

if resp.status != 200:
raise Exception(resp.data.decode("utf-8"))
raise BadResponse(resp.data.decode("utf-8"))

if raw:
return resp
Expand Down
7 changes: 2 additions & 5 deletions polygon/websocket/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,12 @@
from websockets.exceptions import ConnectionClosedOK, ConnectionClosedError
from ..logging import get_logger
import logging
from ..exceptions import AuthError

env_key = "POLYGON_API_KEY"
logger = get_logger("WebSocketClient")


class AuthError(Exception):
pass


class WebSocketClient:
def __init__(
self,
Expand All @@ -45,7 +42,7 @@ def __init__(
:return: A client.
"""
if api_key is None:
raise Exception(
raise AuthError(
f"Must specify env var {env_key} or pass api_key in constructor"
)
self.api_key = api_key
Expand Down