You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
from typing import Any, Dict
class FileImportException(Exception): def dict(self) -> Dict[str, Any]: raise NotImplementedError()
class FileParseException(FileImportException): def __init__(self, filename: str, line_num: int, message: str): self.filename = filename self.line_num = line_num self.message = message
def __str__(self): return f"ParseError: You cannot parse line {self.line_num} in {self.filename}: {self.message}"
def dict(self): return {"filename": self.filename, "line": self.line_num, "message": self.message}
class MaximumFileSizeException(FileImportException): def __init__(self, filename: str, max_size: int): self.filename = filename self.max_size = max_size
def __str__(self): return f"The maximum file size that can be uploaded is {self.max_size/1024/1024} MB"
def dict(self): return {"filename": self.filename, "line": -1, "message": str(self)}
class FileTypeException(FileImportException): def __init__(self, filename: str, filetype: str, allowed_types=None): self.filename = filename self.filetype = filetype self.allowed_types = allowed_types
def __str__(self): return f"The file type {self.filetype} is unexpected. Expected: {self.allowed_types}"
def dict(self): return {"filename": self.filename, "line": -1, "message": str(self)}
class FileFormatException(FileImportException): def __init__(self, file_format: str): self.file_format = file_format
def dict(self): message = f"Unknown file format: {self.file_format}" return {"message": message}
|