diff --git a/oxrlib/errors.py b/oxrlib/errors.py new file mode 100644 index 0000000000000000000000000000000000000000..242d553f7a65a4dd3f87133c609607f2c09aef7f --- /dev/null +++ b/oxrlib/errors.py @@ -0,0 +1,5 @@ +class LoaderError(Exception): pass +class LoaderNoDataError(LoaderError): pass +class LoaderBadRequestError(LoaderError): pass +class LoaderSourceError(LoaderError): pass +class NoLoadersError(Exception): pass diff --git a/oxrlib/loaders.py b/oxrlib/loaders.py index 5213a40df3b28e6172015d89f62a2ee4b624249d..5c802b185725b325e1cc71bc1ed9843bf4abd35c 100644 --- a/oxrlib/loaders.py +++ b/oxrlib/loaders.py @@ -4,25 +4,7 @@ import io import urllib.request import urllib.parse -class LoaderError(Exception): - pass - - -class LoaderNoDataError(LoaderError): - pass - - -class LoaderBadRequestError(LoaderError): - pass - - -class LoaderSourceError(LoaderError): - pass - - -class NoLoadersError(Exception): - pass - +from . import errors class FileCache: def __init__(self, dir_path, filename_pattern): @@ -34,7 +16,7 @@ class FileCache: try: return path.open() except FileNotFoundError as error: - raise LoaderNoDataError(path) from error + raise errors.LoaderNoDataError(path) from error class OXRAPIRequest: @@ -67,11 +49,11 @@ class OXRAPIRequest: if 200 <= status_code < 203: return response_body elif status_code == 404 or status_code == 410: - exc_class = LoaderNoDataError + exc_class = errors.LoaderNoDataError elif status_code >= 500: - exc_class = LoaderSourceError + exc_class = errors.LoaderSourceError else: - exc_class = LoaderBadRequestError + exc_class = errors.LoaderBadRequestError with response_body: raise exc_class(url, response_body.read(64 * 1024)) @@ -97,13 +79,13 @@ class LoaderChain: for loader in self.loaders: try: response = getattr(loader, orig_func.__name__)(*args, **kwargs) - except LoaderError as this_error: + except errors.LoaderError as this_error: error = this_error else: self.used_loader = loader return response else: - raise NoLoadersError() if error is None else error + raise errors.NoLoadersError() if error is None else error return load_wrapper @_wrap_load_method diff --git a/tests/test_FileCache.py b/tests/test_FileCache.py index 76f20965be31b794df7e41e2ef27304c193a40f7..d4e3ed651c7bbc16f66530e82f3ca2a04f459a65 100644 --- a/tests/test_FileCache.py +++ b/tests/test_FileCache.py @@ -4,6 +4,7 @@ import pathlib import pytest from . import relpath +import oxrlib.errors import oxrlib.loaders CACHE_PATH = relpath('filecache') @@ -29,7 +30,7 @@ def test_cache_success(dummycache, date, base): def test_cache_not_found(dummycache, date, base): try: cache_file = dummycache.historical(date, base) - except oxrlib.loaders.LoaderNoDataError: + except oxrlib.errors.LoaderNoDataError: pass else: cache_file.close() diff --git a/tests/test_LoaderChain.py b/tests/test_LoaderChain.py index 80dcdb2e828bb4b85b2f420a7b4ef3b08f46bfb9..13279341e65e01eb6e04e68e11dcfc0b1e28377c 100644 --- a/tests/test_LoaderChain.py +++ b/tests/test_LoaderChain.py @@ -2,12 +2,13 @@ import io import pytest +import oxrlib.errors import oxrlib.loaders from . import any_date SUCCESS_S = '"success"\n' -ERROR = oxrlib.loaders.LoaderNoDataError("test") +ERROR = oxrlib.errors.LoaderNoDataError("test") class FakeLoader: def __init__(self, result): @@ -43,7 +44,7 @@ def error_loader(): def test_no_loaders(lchain, any_date): try: lchain.historical(any_date, 'USD') - except oxrlib.loaders.NoLoadersError: + except oxrlib.errors.NoLoadersError: pass else: assert False, "expected NoLoadersError not raised" diff --git a/tests/test_OXRAPIRequest.py b/tests/test_OXRAPIRequest.py index fbfdc50ba95229c29e53918ba23f008664c2f1c4..290a8aacbc5b0e01e839ea55d1a92fe197453e1c 100644 --- a/tests/test_OXRAPIRequest.py +++ b/tests/test_OXRAPIRequest.py @@ -7,6 +7,7 @@ import string import urllib.parse import pytest +import oxrlib.errors import oxrlib.loaders from . import any_date @@ -82,11 +83,11 @@ def test_success(api_client, any_date, base): assert response.read() == (json.dumps(body) + "\n") @pytest.mark.parametrize('status_code,expect_exctype', [ - (400, oxrlib.loaders.LoaderBadRequestError), - (403, oxrlib.loaders.LoaderBadRequestError), - (404, oxrlib.loaders.LoaderNoDataError), - (410, oxrlib.loaders.LoaderNoDataError), - (500, oxrlib.loaders.LoaderSourceError), + (400, oxrlib.errors.LoaderBadRequestError), + (403, oxrlib.errors.LoaderBadRequestError), + (404, oxrlib.errors.LoaderNoDataError), + (410, oxrlib.errors.LoaderNoDataError), + (500, oxrlib.errors.LoaderSourceError), ]) def test_failure(api_client, any_date, status_code, expect_exctype): opener = FakeOpener(FakeResponse(status_code))