27 lines
598 B
Python
27 lines
598 B
Python
class LoaderError(Exception):
|
|
pass
|
|
|
|
|
|
class LoaderNoDataError(LoaderError):
|
|
pass
|
|
|
|
|
|
class LoaderBadRequestError(LoaderError):
|
|
pass
|
|
|
|
|
|
class LoaderSourceError(LoaderError):
|
|
pass
|
|
|
|
|
|
class FileCache:
|
|
def __init__(self, dir_path, filename_pattern):
|
|
self.dir_path = dir_path
|
|
self.pattern = filename_pattern
|
|
|
|
def historical(self, date, base):
|
|
path = self.dir_path / self.pattern.format(date=date.isoformat(), base=base)
|
|
try:
|
|
return path.open()
|
|
except FileNotFoundError as error:
|
|
raise LoaderNoDataError(path) from error
|