Source code for mimesis.exceptions

"""Custom exceptions used by Mimesis."""

import typing as t

from mimesis.enums import Locale


[docs] class LocaleError(ValueError): """Raised when a locale isn't supported.""" def __init__(self, locale: Locale | str) -> None: """Initialize attributes for informative output. :param locale: Locale. """ self.locale = locale def __str__(self) -> str: return f"Invalid locale «{self.locale}»"
[docs] class SchemaError(ValueError): """Raised when a schema is invalid.""" def __str__(self) -> str: return ( "The schema must be a callable object that returns a dict. " "See https://mimesis.name/en/master/schema.html for more details." )
[docs] class NonEnumerableError(TypeError): """Raised when an object is not a member of the expected Enum.""" def __init__(self, enum_obj: t.Any) -> None: """Initialize attributes for informative output. :param enum_obj: Enum object. """ if enum_obj: self.name = enum_obj self.items = ", ".join(map(str, enum_obj)) else: self.name = None self.items = "" def __str__(self) -> str: if not self.name: return "Expected a member of an Enum." return ( f"Argument must be a member of mimesis.enums.{self.name.__name__}: " f{self.items}»" )
[docs] class FieldError(ValueError): """Raised when a field is missing or invalid.""" def __init__(self, name: str | None = None) -> None: """Initialize attributes for more informative output. :param name: Name of the field. """ self.name = name def __str__(self) -> str: if self.name is None: return "A field name is required." return f"Field «{self.name}» is not supported."
[docs] class FieldsetError(ValueError): """Raised when the fieldset iteration count is invalid.""" def __str__(self) -> str: return "The «i» parameter must be at least 1."
[docs] class FieldNameError(ValueError): """Raised when a field name is invalid.""" def __init__(self, name: str | None = None) -> None: """Initialize attributes for more informative output. :param name: Name of the field. """ self.name = name def __str__(self) -> str: return f"The field name «{self.name}» is not a valid Python identifier."
[docs] class FieldArityError(ValueError): """Raised when a registered field handler has incompatible arity.""" def __str__(self) -> str: return ( "The custom handler must accept at least two arguments: " "'random' and '**kwargs'" )
[docs] class AliasesTypeError(TypeError): """Raised when aliases is not a flat dictionary.""" def __str__(self) -> str: return ( "The 'aliases' attribute must be a non-nested dictionary where " "keys are aliases and values are the corresponding field names." )