diff options
author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
---|---|---|
committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/marshmallow/exceptions.py | |
parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
download | gn-ai-master.tar.gz |
Diffstat (limited to '.venv/lib/python3.12/site-packages/marshmallow/exceptions.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/marshmallow/exceptions.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/marshmallow/exceptions.py b/.venv/lib/python3.12/site-packages/marshmallow/exceptions.py new file mode 100644 index 00000000..096b6bd0 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/marshmallow/exceptions.py @@ -0,0 +1,71 @@ +"""Exception classes for marshmallow-related errors.""" + +from __future__ import annotations + +import typing + +# Key used for schema-level validation errors +SCHEMA = "_schema" + + +class MarshmallowError(Exception): + """Base class for all marshmallow-related errors.""" + + +class ValidationError(MarshmallowError): + """Raised when validation fails on a field or schema. + + Validators and custom fields should raise this exception. + + :param message: An error message, list of error messages, or dict of + error messages. If a dict, the keys are subitems and the values are error messages. + :param field_name: Field name to store the error on. + If `None`, the error is stored as schema-level error. + :param data: Raw input data. + :param valid_data: Valid (de)serialized data. + """ + + def __init__( + self, + message: str | list | dict, + field_name: str = SCHEMA, + data: typing.Mapping[str, typing.Any] + | typing.Iterable[typing.Mapping[str, typing.Any]] + | None = None, + valid_data: list[dict[str, typing.Any]] | dict[str, typing.Any] | None = None, + **kwargs, + ): + self.messages = [message] if isinstance(message, (str, bytes)) else message + self.field_name = field_name + self.data = data + self.valid_data = valid_data + self.kwargs = kwargs + super().__init__(message) + + def normalized_messages(self): + if self.field_name == SCHEMA and isinstance(self.messages, dict): + return self.messages + return {self.field_name: self.messages} + + @property + def messages_dict(self) -> dict[str, typing.Any]: + if not isinstance(self.messages, dict): + raise TypeError( + "cannot access 'messages_dict' when 'messages' is of type " + + type(self.messages).__name__ + ) + return self.messages + + +class RegistryError(NameError): + """Raised when an invalid operation is performed on the serializer + class registry. + """ + + +class StringNotCollectionError(MarshmallowError, TypeError): + """Raised when a string is passed when a list of strings is expected.""" + + +class FieldInstanceResolutionError(MarshmallowError, TypeError): + """Raised when schema to instantiate is neither a Schema class nor an instance.""" |