Spaces:
Runtime error
Runtime error
# -*- coding: utf-8 -*- | |
"""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(InvalidAuthority, self).__init__( | |
u"The authority ({0}) is not valid.".format( | |
compat.to_str(authority) | |
) | |
) | |
class InvalidPort(RFC3986Exception): | |
"""Exception when the port is invalid.""" | |
def __init__(self, port): | |
"""Initialize the exception with the invalid port.""" | |
super(InvalidPort, self).__init__( | |
'The port ("{0}") is not valid.'.format(port) | |
) | |
class ResolutionError(RFC3986Exception): | |
"""Exception to indicate a failure to resolve a URI.""" | |
def __init__(self, uri): | |
"""Initialize the error with the failed URI.""" | |
super(ResolutionError, self).__init__( | |
"{0} is not an absolute URI.".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(MissingComponentError, self).__init__( | |
"{} {} required but missing".format(components, verb), | |
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(UnpermittedComponentError, self).__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(PasswordForbidden, self).__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(InvalidComponentsError, self).__init__( | |
"{} {} found to be invalid".format(components, verb), | |
uri, | |
self.components, | |
) | |
class MissingDependencyError(RFC3986Exception): | |
"""Exception raised when an IRI is encoded without the 'idna' module.""" | |