@@ -4,25 +4,7 @@ import io
import urllib.request
import urllib.parse
class LoaderError(Exception):
pass
class LoaderNoDataError(LoaderError):
class LoaderBadRequestError(LoaderError):
class LoaderSourceError(LoaderError):
class NoLoadersError(Exception):
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:
response = getattr(loader, orig_func.__name__)(*args, **kwargs)
except LoaderError as this_error:
except errors.LoaderError as this_error:
error = this_error
self.used_loader = loader
return response
raise NoLoadersError() if error is None else error
raise errors.NoLoadersError() if error is None else error
return load_wrapper
@_wrap_load_method