mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2025-12-31 20:36:24 +00:00
* Implemented multi-error handling in MultiError() class * Added newsfragement file and test * updated doc-string and list-struct * updating docstring
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
from collections.abc import (
|
|
Sequence,
|
|
)
|
|
|
|
|
|
class BaseLibp2pError(Exception):
|
|
pass
|
|
|
|
|
|
class ValidationError(BaseLibp2pError):
|
|
"""Raised when something does not pass a validation check."""
|
|
|
|
|
|
class ParseError(BaseLibp2pError):
|
|
pass
|
|
|
|
|
|
class MultiError(BaseLibp2pError):
|
|
r"""
|
|
A combined error that wraps multiple exceptions into a single error object.
|
|
This error is raised when multiple exceptions need to be reported together,
|
|
typically in scenarios where parallel operations or multiple validations fail.
|
|
|
|
Example\:
|
|
---------
|
|
>>> from libp2p.exceptions import MultiError
|
|
>>> errors = [
|
|
... ValueError("Invalid input"),
|
|
... TypeError("Wrong type"),
|
|
... RuntimeError("Operation failed")
|
|
... ]
|
|
>>> multi_error = MultiError(errors)
|
|
>>> print(multi_error)
|
|
Error 1: Invalid input
|
|
Error 2: Wrong type
|
|
Error 3: Operation failed
|
|
|
|
Note\:
|
|
------
|
|
The string representation of this error will number and list all contained
|
|
errors sequentially, making it easier to identify individual issues in
|
|
complex error scenarios.
|
|
|
|
"""
|
|
|
|
def __init__(self, errors: Sequence[Exception]) -> None:
|
|
super().__init__(errors)
|
|
self.errors = errors # Storing list of errors
|
|
|
|
def __str__(self) -> str:
|
|
return "\n".join(
|
|
f"Error {i + 1}: {error}" for i, error in enumerate(self.errors)
|
|
)
|