meme / meme_generator /exception.py
CikeyQi's picture
Upload 964 files (#1)
346533a
from typing import Optional
class MemeGeneratorException(Exception):
status_code: int = 520
def __init__(self, message: str):
self.message = message
def __str__(self) -> str:
return self.__repr__()
def __repr__(self) -> str:
return f"Error in meme_generator: {self.message}"
class NoSuchMeme(MemeGeneratorException):
status_code: int = 531
def __init__(self, meme_key: str):
self.meme_key = meme_key
message = f'No such meme with key="{self.meme_key}"'
super().__init__(message)
class TextOverLength(MemeGeneratorException):
status_code: int = 532
def __init__(self, text: str):
self.text = text
message = f'Text "{self.text}" is too long!'
super().__init__(message)
class OpenImageFailed(MemeGeneratorException):
status_code: int = 533
def __init__(self, error_message: str):
self.error_message = error_message
message = f'Error opening images: "{self.error_message}"'
super().__init__(message)
class ParserExit(MemeGeneratorException):
status_code: int = 534
def __init__(self, status: int = 0, error_message: Optional[str] = None):
self.status = status
self.error_message = error_message or ""
message = (
f"Argument parser failed to parse. (status={self.status}"
+ (f", message={self.error_message!r}" if self.error_message else "")
+ ")"
)
super().__init__(message)
class ParamsMismatch(MemeGeneratorException):
status_code: int = 540
def __init__(self, meme_key: str, message: str):
self.meme_key = meme_key
self.message = message
def __repr__(self) -> str:
return f'ParamsMismatch(key="{self.meme_key}", message="{self.message}")'
class ImageNumberMismatch(ParamsMismatch):
status_code: int = 541
def __init__(self, meme_key: str, min_images: int = 0, max_images: int = 0):
message = (
"The number of images is incorrect, "
f"it should be no less than {min_images} and no more than {max_images}"
)
super().__init__(meme_key, message)
class TextNumberMismatch(ParamsMismatch):
status_code: int = 542
def __init__(self, meme_key: str, min_texts: int = 0, max_texts: int = 0):
message = (
"The number of texts is incorrect, "
f"it should be no less than {min_texts} and no more than {max_texts}"
)
super().__init__(meme_key, message)
class TextOrNameNotEnough(ParamsMismatch):
status_code: int = 543
def __init__(self, meme_key: str, message: Optional[str] = None):
message = message or "The number of texts or user names is not enough"
super().__init__(meme_key, message)
class ArgMismatch(ParamsMismatch):
status_code: int = 550
pass
class ArgParserExit(ArgMismatch):
status_code: int = 551
def __init__(self, meme_key: str, error_message: str):
self.error_message = error_message
message = f"Argument parser failed to parse: {self.error_message}"
super().__init__(meme_key, message)
class ArgModelMismatch(ArgMismatch):
status_code: int = 552
def __init__(self, meme_key: str, error_message: str):
self.error_message = error_message
message = f"Argument model validation failed: {self.error_message}"
super().__init__(meme_key, message)