U
    ?hP                     @  s   d Z ddlmZ ddlmZmZ ddlZddlmZ erPddl	m
Z
 ddlmZ eG dd	 d	eZeG d
d deZeG dd deZeG dd deZejG dd deZeG dd deZeG dd deZeG dd deZdS )z
Errors, oh no!
    )annotations)TYPE_CHECKINGAnyN)frozen)Resource)URIc                   @  s8   e Zd ZU dZded< dddddZd	d
ddZdS )NoSuchResourcez
    The given URI is not present in a registry.

    Unlike most exceptions, this class *is* intended to be publicly
    instantiable and *is* part of the public API of the package.
    r   refobjectboolotherreturnc                 C  s$   | j |j k	rtS t| t|kS N	__class__NotImplementedattrsastupleselfr    r   H/var/www/html/venv/lib/python3.8/site-packages/referencing/exceptions.py__eq__   s    zNoSuchResource.__eq__intr   c                 C  s   t t| S r   hashr   r   r   r   r   r   __hash__"   s    zNoSuchResource.__hash__N__name__
__module____qualname____doc____annotations__r   r   r   r   r   r   r      s   
r   c                   @  s8   e Zd ZU dZded< dddddZd	d
ddZdS )NoInternalIDa  
    A resource has no internal ID, but one is needed.

    E.g. in modern JSON Schema drafts, this is the :kw:`$id` keyword.

    One might be needed if a resource was to-be added to a registry but no
    other URI is available, and the resource doesn't declare its canonical URI.
    Resource[Any]resourcer
   r   r   c                 C  s$   | j |j k	rtS t| t|kS r   r   r   r   r   r   r   3   s    zNoInternalID.__eq__r   r   c                 C  s   t t| S r   r   r   r   r   r   r   8   s    zNoInternalID.__hash__Nr    r   r   r   r   r&   &   s   
	r&   c                   @  s8   e Zd ZU dZded< dddddZd	d
ddZdS )UnretrievablezO
    The given URI is not present in a registry, and retrieving it failed.
    r   r	   r
   r   r   c                 C  s$   | j |j k	rtS t| t|kS r   r   r   r   r   r   r   D   s    zUnretrievable.__eq__r   r   c                 C  s   t t| S r   r   r   r   r   r   r   I   s    zUnretrievable.__hash__Nr    r   r   r   r   r)   <   s   
r)   c                   @  s8   e Zd ZU dZded< dddddZd	d
ddZdS )CannotDetermineSpecificationz
    Attempting to detect the appropriate `Specification` failed.

    This happens if no discernible information is found in the contents of the
    new resource which would help identify it.
    r   contentsr
   r   r   c                 C  s$   | j |j k	rtS t| t|kS r   r   r   r   r   r   r   X   s    z#CannotDetermineSpecification.__eq__r   r   c                 C  s   t t| S r   r   r   r   r   r   r   ]   s    z%CannotDetermineSpecification.__hash__Nr    r   r   r   r   r*   M   s   
r*   c                   @  s8   e Zd ZU dZded< dddddZd	d
ddZdS )Unresolvablez'
    A reference was unresolvable.
    r   r	   r
   r   r   c                 C  s$   | j |j k	rtS t| t|kS r   r   r   r   r   r   r   i   s    zUnresolvable.__eq__r   r   c                 C  s   t t| S r   r   r   r   r   r   r   n   s    zUnresolvable.__hash__Nr    r   r   r   r   r,   a   s   
r,   c                   @  s(   e Zd ZU dZded< ddddZdS )	PointerToNowherezK
    A JSON Pointer leads to a part of a document that does not exist.
    r'   r(   strr   c                 C  s*   | j d| jj}| j dkr&|d7 }|S )N does not exist within /z. The pointer '/' is a valid JSON Pointer but it points to an empty string property ''. If you intended to point to the entire resource, you should use '#'.)r	   r(   r+   )r   msgr   r   r   __str__z   s    
zPointerToNowhere.__str__Nr!   r"   r#   r$   r%   r2   r   r   r   r   r-   r   s   
r-   c                   @  s0   e Zd ZU dZded< ded< ddddZd	S )
NoSuchAnchorz@
    An anchor does not exist within a particular resource.
    r'   r(   r.   anchorr   c                 C  s   | j d| jjS )Nr/   )r5   r(   r+   r   r   r   r   r2      s    zNoSuchAnchor.__str__Nr3   r   r   r   r   r4      s   
r4   c                   @  s0   e Zd ZU dZded< ded< ddddZd	S )
InvalidAnchorzu
    An anchor which could never exist in a resource was dereferenced.

    It is somehow syntactically invalid.
    r'   r(   r.   r5   r   c                 C  s   d| j  d| j  dS )Nz'#zo' is not a valid anchor, neither as a plain name anchor nor as a JSON Pointer. You may have intended to use '#/zD', as the slash is required *before each segment* of a JSON pointer.)r5   r   r   r   r   r2      s    zInvalidAnchor.__str__Nr3   r   r   r   r   r6      s   
r6   )r$   
__future__r   typingr   r   r   Zreferencing._attrsr   Zreferencingr   Zreferencing.typingr   KeyErrorr   	Exceptionr&   r)   r*   r,   r-   r4   r6   r   r   r   r   <module>   s.   