usse/funda-scraper/venv/lib/python3.10/site-packages/rfc3986/exceptions.py

121 lines
3.5 KiB
Python
Raw Normal View History

2023-02-20 22:38:24 +00:00
"""Exceptions module for rfc3986."""
from . import compat
class RFC3986Exception(Exception):
"""Base class for all rfc3986 exception classes."""
pass
class InvalidAuthority(RFC3986Exception):
"""Exception when the authority string is invalid."""
def __init__(self, authority):
"""Initialize the exception with the invalid authority."""
super().__init__(
f"The authority ({compat.to_str(authority)}) is not valid."
)
class InvalidPort(RFC3986Exception):
"""Exception when the port is invalid."""
def __init__(self, port):
"""Initialize the exception with the invalid port."""
super().__init__(f'The port ("{port}") is not valid.')
class ResolutionError(RFC3986Exception):
"""Exception to indicate a failure to resolve a URI."""
def __init__(self, uri):
"""Initialize the error with the failed URI."""
super().__init__(
"{} does not meet the requirements for resolution.".format(
uri.unsplit()
)
)
class ValidationError(RFC3986Exception):
"""Exception raised during Validation of a URI."""
pass
class MissingComponentError(ValidationError):
"""Exception raised when a required component is missing."""
def __init__(self, uri, *component_names):
"""Initialize the error with the missing component name."""
verb = "was"
if len(component_names) > 1:
verb = "were"
self.uri = uri
self.components = sorted(component_names)
components = ", ".join(self.components)
super().__init__(
f"{components} {verb} required but missing",
uri,
self.components,
)
class UnpermittedComponentError(ValidationError):
"""Exception raised when a component has an unpermitted value."""
def __init__(self, component_name, component_value, allowed_values):
"""Initialize the error with the unpermitted component."""
super().__init__(
"{} was required to be one of {!r} but was {!r}".format(
component_name,
list(sorted(allowed_values)),
component_value,
),
component_name,
component_value,
allowed_values,
)
self.component_name = component_name
self.component_value = component_value
self.allowed_values = allowed_values
class PasswordForbidden(ValidationError):
"""Exception raised when a URL has a password in the userinfo section."""
def __init__(self, uri):
"""Initialize the error with the URI that failed validation."""
unsplit = getattr(uri, "unsplit", lambda: uri)
super().__init__(
'"{}" contained a password when validation forbade it'.format(
unsplit()
)
)
self.uri = uri
class InvalidComponentsError(ValidationError):
"""Exception raised when one or more components are invalid."""
def __init__(self, uri, *component_names):
"""Initialize the error with the invalid component name(s)."""
verb = "was"
if len(component_names) > 1:
verb = "were"
self.uri = uri
self.components = sorted(component_names)
components = ", ".join(self.components)
super().__init__(
f"{components} {verb} found to be invalid",
uri,
self.components,
)
class MissingDependencyError(RFC3986Exception):
"""Exception raised when an IRI is encoded without the 'idna' module."""