B
    `J
                 @   sJ   G d d de ZG dd deeZG dd deeZG dd deeZdS )	c               @   s   e Zd ZdZdS )PlasterErrorz>
    A base exception for any error generated by plaster.
    N)__name__
__module____qualname____doc__ r   r   Z/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/plaster/exceptions.pyr      s   r   c                   s"   e Zd ZdZd fdd	Z  ZS )
InvalidURIz
    Raised by :func:`plaster.parse_uri` when failing to parse a ``config_uri``.

    :ivar uri: The user-supplied ``config_uri`` string.

    Nc                s2   |d krd |}tt| | || _|| _d S )Nz!Unable to parse config_uri "{0}".)formatsuperr   __init__messageuri)selfr   r   )	__class__r   r   r      s
    
zInvalidURI.__init__)N)r   r   r   r   r   __classcell__r   r   )r   r   r      s   r   c                   s"   e Zd ZdZd fdd	Z  ZS )LoaderNotFounda	  
    Raised by :func:`plaster.get_loader` when no loaders match the requested
    ``scheme``.

    :ivar scheme: The scheme being matched.
    :ivar protocols: Zero or more :term:`loader protocol` identifiers that
        were requested when finding a loader.

    Nc                s^   |d kr8d |}|d k	r.|d d|7 }d |}tt| | || _|| _|| _d S )Nzscheme "{0}"z, protocol "{0}"z, z-Could not find a matching loader for the {0}.)r	   joinr
   r   r   r   scheme	protocols)r   r   r   r   
scheme_msg)r   r   r   r       s    
zLoaderNotFound.__init__)NN)r   r   r   r   r   r   r   r   )r   r   r      s   	r   c                   s"   e Zd ZdZd fdd	Z  ZS )MultipleLoadersFoundaX  
    Raised by :func:`plaster.get_loader` when more than one loader matches the
    requested ``scheme``.

    :ivar scheme: The scheme being matched.
    :ivar protocols: Zero or more :term:`loader protocol` identifiers that
        were requested when finding a loader.
    :ivar loaders: A list of :class:`plaster.ILoaderInfo` objects.

    Nc                s   |d krZd |}|d k	r.|d d|7 }ddd t|dd dD }d	 ||}tt| | || _|| _|| _|| _	d S )
Nzscheme "{0}"z, protocol "{0}"z, c             s   s   | ]}|j V  qd S )N)r   ).0loaderr   r   r   	<genexpr>>   s    z0MultipleLoadersFound.__init__.<locals>.<genexpr>c             S   s   | j S )N)r   )vr   r   r   <lambda>?       z/MultipleLoadersFound.__init__.<locals>.<lambda>)keyzlMultiple plaster loaders were found for {0}. Please specify a more specific config_uri. Matched loaders: {1})
r	   r   sortedr
   r   r   r   r   r   loaders)r   r   r   r   r   r   Zloader_list)r   r   r   r   9   s    
zMultipleLoadersFound.__init__)NN)r   r   r   r   r   r   r   r   )r   r   r   .   s   
r   N)	Exceptionr   
ValueErrorr   r   r   r   r   r   r   <module>   s   