Spaces:
Sleeping
Sleeping
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) | |