o
    "i                     @   s   d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 G dd de
ZG dd de	ZG d	d
 d
eZG dd deZG dd deZG dd deZG dd de
ZdS )    )Sequence)AnyOptionalUnion)Self)ExceptionGroupc                       s<   e Zd ZdZdededdf fddZdefdd	Z  ZS )
StructureHandlerNotFoundErrorzk
    Error raised when structuring cannot find a handler for converting inputs into
    :attr:`type_`.
    messagetype_returnNc                    s   t  || || _|| _d S N)super__init__r	   r
   )selfr	   r
   	__class__ M/var/www/html/premium_crap/venv/lib/python3.10/site-packages/cattrs/errors.pyr      s   
z&StructureHandlerNotFoundError.__init__c                 C   s   | j S r   )r	   r   r   r   r   __str__   s   z%StructureHandlerNotFoundError.__str__)	__name__
__module____qualname____doc__strtyper   r   __classcell__r   r   r   r   r   	   s    r   c                       sR   e Zd ZU eed< dedee dedef fddZ	dee defddZ
  ZS )	BaseValidationErrorclr	   excsr   c                    s   t  | ||}||_|S r   )r   __new__r   )clsr	   r   r   objr   r   r   r       s   zBaseValidationError.__new__c                 C   s   |  | j|| jS r   )r   r	   r   )r   r   r   r   r   derive       zBaseValidationError.derive)r   r   r   r   __annotations__r   r   	Exceptionr   r    r#   r   r   r   r   r   r      s   
 "r   c                   @   sl   e Zd ZU dZeeef ed< eed< dedeeef dede	fddZ
deeeeef ef fdd	Zd
S )IterableValidationNotezNAttached as a note to an exception when an iterable element fails structuring.indexr   stringr   c                 C      t | |}||_||_|S r   )r   r    r(   r   )r!   r)   r(   r   instancer   r   r   r    *      zIterableValidationNote.__new__c                 C      t | | j| jfS r   )r   r(   r   r   r   r   r   __getnewargs__0   r$   z%IterableValidationNote.__getnewargs__N)r   r   r   r   r   intr   r%   r   r   r    tupler.   r   r   r   r   r'   $   s   
 "$r'   c                   @   6   e Zd ZdZdeeeeef  ee f fddZdS )IterableValidationErrorz$Raised when structuring an iterable.r   c                 C   d   g }g }| j D ]&}t|dr(|jD ]}|jtu r!|||f  nq|| q|| q||fS zHSplit the exceptions into two groups: with and without validation notes.	__notes__)
exceptionshasattrr5   r   r'   appendr   excs_with_notes
other_excssubexcnoter   r   r   group_exceptions7      




z(IterableValidationError.group_exceptionsN)	r   r   r   r   r0   listr&   r'   r>   r   r   r   r   r2   4   
    r2   c                   @   sT   e Zd ZU dZeed< eed< dedededefddZde	eeef fdd	Z
d
S )AttributeValidationNotezGAttached as a note to an exception when an attribute fails structuring.namer   r)   r   c                 C   r*   r   )r   r    rC   r   )r!   r)   rC   r   r+   r   r   r   r    Q   r,   zAttributeValidationNote.__new__c                 C   r-   r   )r   rC   r   r   r   r   r   r.   W   r$   z&AttributeValidationNote.__getnewargs__N)r   r   r   r   r   r%   r   r   r    r0   r.   r   r   r   r   rB   K   s   
 rB   c                   @   r1   )ClassValidationErrorz=Raised when validating a class if any attributes are invalid.r   c                 C   r3   r4   )r6   r7   r5   r   rB   r8   r9   r   r   r   r>   ^   r?   z%ClassValidationError.group_exceptionsN)	r   r   r   r   r0   r@   r&   rB   r>   r   r   r   r   rD   [   rA   rD   c                       sH   e Zd ZdZdee dedee ddf fddZdefd	d
Z	  Z
S )ForbiddenExtraKeysErrora"  
    Raised when `forbid_extra_keys` is activated and such extra keys are detected
    during structuring.

    The attribute `extra_fields` is a sequence of those extra keys, which were the
    cause of this error, and `cl` is the class which was structured with those extra
    keys.
    r	   r   extra_fieldsr   Nc                    s&   || _ || _|| _t ||| d S r   )r	   r   rF   r   r   )r   r	   r   rF   r   r   r   r   |   s   z ForbiddenExtraKeysError.__init__c                 C   s&   | j pd| jj ddt| j S )Nz Extra fields in constructor for z: z, )r	   r   r   joinsortedrF   r   r   r   r   r      s
   zForbiddenExtraKeysError.__str__)r   r   r   r   r   r   r   setr   r   r   r   r   r   r   rE   r   s    		rE   N)collections.abcr   typingr   r   r   typing_extensionsr   cattrs._compatr   r&   r   r   r   r'   r2   rB   rD   rE   r   r   r   r   <module>   s    