U
    e+                     @  s   d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZmZmZmZmZmZ erhd dl
mZ ededd	Zed
edZededd	ZededZddddddZdddddZG dd deee ZG dd dee eZdS )    )annotations)CallableSequence)partial)getmroisclass)TYPE_CHECKINGGenericTypeTypeVarcastoverload)Self_BaseExceptionT_coT)bound	covariant_BaseExceptionT)r   _ExceptionT_co_ExceptionTBaseExceptionztuple[type[BaseException]]bool)excparentsreturnc                 C  s*   t | jd d D ]}||kr dS qdS )NTF)r   	__class__)r   r   cls r   [/var/www/html/assets/scripts/venv/lib/python3.8/site-packages/exceptiongroup/_exceptions.pycheck_direct_subclass   s    r   `type[_BaseExceptionT] | tuple[type[_BaseExceptionT], ...] | Callable[[_BaseExceptionT_co], bool]z$Callable[[_BaseExceptionT_co], bool])	conditionr   c                 C  sr   t | r*tttt | tr*tt| fdS t| trTt	dd | D rftt| dS nt
| rftd| S tdd S )N)r   c                 s  s    | ]}t |ot|tV  qd S N)r   
issubclassr   ).0xr   r   r   	<genexpr>%   s     z'get_condition_filter.<locals>.<genexpr>zCallable[[BaseException], bool]z?expected a function, exception type or tuple of exception types)r   r#   r   r
   r   r   r   
isinstancetupleallcallable	TypeError)r!   r   r   r   get_condition_filter   s    
 

r,   c                      sJ  e Zd ZdZdddd fddZddd	d
dZeddddZeddddZe	dddddZ
e	dddddZ
e	dddddZ
dddddZ
e	dddd d!Ze	dd"dd#d!Ze	dd$dd%d!Zd&d'dd(d!Ze	d)d*d+d,d-Ze	d.d/d+d0d-Zd.d/d+d1d-Zddd2d3Zddd4d5Z  ZS )6BaseExceptionGroupz/A combination of multiple unrelated exceptions.strzSequence[_BaseExceptionT_co]r   )_BaseExceptionGroup__message_BaseExceptionGroup__exceptionsr   c                   s   t |tstdt| t |ts.td|s:tdt|D ]"\}}t |tsBtd| dqB| tkrt	dd |D rt
} t| tr|D ]0}t |ts| t
krtdqtd	| jqt | ||}||_||_|S )
Nzargument 1 must be str, not z/second argument (exceptions) must be a sequencez9second argument (exceptions) must be a non-empty sequencezItem z4 of second argument (exceptions) is not an exceptionc                 s  s   | ]}t |tV  qd S r"   )r'   	Exception)r$   r   r   r   r   r&   C   s     z-BaseExceptionGroup.__new__.<locals>.<genexpr>z/Cannot nest BaseExceptions in an ExceptionGroupzCannot nest BaseExceptions in )r'   r.   r+   typer   
ValueError	enumerater   r-   r)   ExceptionGroupr#   r1   __name__super__new___message_exceptions)r   r/   r0   ir   instancer   r   r   r8   0   s<    






zBaseExceptionGroup.__new__None)noter   c                 C  sF   t |ts&td|dt|j dt| ds6g | _| j| d S )NzExpected a string, got note=z (type )	__notes__)r'   r.   r+   r2   r6   hasattrrA   append)selfr?   r   r   r   add_noteW   s    

zBaseExceptionGroup.add_noter   c                 C  s   | j S r"   )r9   rD   r   r   r   messageb   s    zBaseExceptionGroup.messagezGtuple[_BaseExceptionT_co | BaseExceptionGroup[_BaseExceptionT_co], ...]c                 C  s
   t | jS r"   )r(   r:   rG   r   r   r   
exceptionsf   s    zBaseExceptionGroup.exceptions1type[_ExceptionT] | tuple[type[_ExceptionT], ...]"ExceptionGroup[_ExceptionT] | None)_BaseExceptionGroup__conditionr   c                 C  s   d S r"   r   rD   rL   r   r   r   subgroupl   s    zBaseExceptionGroup.subgroupz9type[_BaseExceptionT] | tuple[type[_BaseExceptionT], ...]z*BaseExceptionGroup[_BaseExceptionT] | Nonec                 C  s   d S r"   r   rM   r   r   r   rN   r   s    z+Callable[[_BaseExceptionT_co | Self], bool]z-BaseExceptionGroup[_BaseExceptionT_co] | Nonec                 C  s   d S r"   r   rM   r   r   r   rN   x   s    zgtype[_BaseExceptionT] | tuple[type[_BaseExceptionT], ...] | Callable[[_BaseExceptionT_co | Self], bool]c                 C  s   t |}d}|| r| S g }| jD ]P}t|trZ||}|d k	rL|| ||k	rrd}q"||rn|| q"d}q"|s|| S |r| |}| j|_| j|_| j	|_	|S d S d S )NFT)
r,   rI   r'   r-   rN   rC   derive	__cause____context____traceback__)rD   rL   r!   modifiedrI   r   rN   groupr   r   r   rN   ~   s0    




zXtuple[ExceptionGroup[_ExceptionT] | None, BaseExceptionGroup[_BaseExceptionT_co] | None]c                 C  s   d S r"   r   rM   r   r   r   split   s    zBaseExceptionGroup.splitz`tuple[BaseExceptionGroup[_BaseExceptionT] | None, BaseExceptionGroup[_BaseExceptionT_co] | None]c                 C  s   d S r"   r   rM   r   r   r   rU      s    zctuple[BaseExceptionGroup[_BaseExceptionT_co] | None, BaseExceptionGroup[_BaseExceptionT_co] | None]c                 C  s   d S r"   r   rM   r   r   r   rU      s    r    a!  tuple[ExceptionGroup[_ExceptionT] | None, BaseExceptionGroup[_BaseExceptionT_co] | None] | tuple[BaseExceptionGroup[_BaseExceptionT] | None, BaseExceptionGroup[_BaseExceptionT_co] | None] | tuple[BaseExceptionGroup[_BaseExceptionT_co] | None, BaseExceptionGroup[_BaseExceptionT_co] | None]c           
      C  s   t |}|| r| d fS g }g }| jD ]`}t|trh||\}}|d k	rT|| |d k	r|| q&||r||| q&|| q&d }|r| |}| j|_| j|_| j	|_	d }	|r| |}	| j|	_| j|	_| j	|	_	||	fS r"   )
r,   rI   r'   r-   rU   rC   rO   rP   rQ   rR   )
rD   rL   r!   Zmatching_exceptionsZnonmatching_exceptionsr   ZmatchingZnonmatchingZmatching_groupZnonmatching_groupr   r   r   rU      s8    




zSequence[_ExceptionT]zExceptionGroup[_ExceptionT])_BaseExceptionGroup__excsr   c                 C  s   d S r"   r   rD   rV   r   r   r   rO      s    zBaseExceptionGroup.derivezSequence[_BaseExceptionT]z#BaseExceptionGroup[_BaseExceptionT]c                 C  s   d S r"   r   rW   r   r   r   rO      s    c                 C  s&   t | j|}t| dr"t| j|_|S )NrA   )r-   rH   rB   listrA   )rD   rV   egr   r   r   rO      s    
c                 C  s4   t | jdkrdnd}| j dt | j d| dS )N    sz (z sub-exceptionr@   )lenr:   rH   )rD   suffixr   r   r   __str__  s    zBaseExceptionGroup.__str__c                 C  s   | j j d| jd| jdS )N(z, r@   )r   r6   rH   r:   rG   r   r   r   __repr__  s    zBaseExceptionGroup.__repr__)r6   
__module____qualname____doc__r8   rE   propertyrH   rI   r   rN   rU   rO   r_   ra   __classcell__r   r   r=   r   r-   -   s8   '$6
r-   c                      s   e Zd Zdddd fddZereddd	d
ZedddddZedddddZddd fddZedddddZ	edddddZ	dddd fddZ	  Z
S )r5   r.   zSequence[_ExceptionT_co]r   )_ExceptionGroup__message_ExceptionGroup__exceptionsr   c                   s   t  | ||S r"   )r7   r8   )r   rg   rh   r=   r   r   r8     s    zExceptionGroup.__new__z;tuple[_ExceptionT_co | ExceptionGroup[_ExceptionT_co], ...]rF   c                 C  s   d S r"   r   rG   r   r   r   rI     s    zExceptionGroup.exceptionsrJ   rK   )_ExceptionGroup__conditionr   c                 C  s   d S r"   r   rD   ri   r   r   r   rN     s    zExceptionGroup.subgroupz'Callable[[_ExceptionT_co | Self], bool]z%ExceptionGroup[_ExceptionT_co] | Nonec                 C  s   d S r"   r   rj   r   r   r   rN   !  s    zTtype[_ExceptionT] | tuple[type[_ExceptionT], ...] | Callable[[_ExceptionT_co], bool]c                   s   t  |S r"   )r7   rN   rj   r=   r   r   rN   '  s    zPtuple[ExceptionGroup[_ExceptionT] | None, ExceptionGroup[_ExceptionT_co] | None]c                 C  s   d S r"   r   rj   r   r   r   rU   /  s    zExceptionGroup.splitzStuple[ExceptionGroup[_ExceptionT_co] | None, ExceptionGroup[_ExceptionT_co] | None]c                 C  s   d S r"   r   rj   r   r   r   rU   7  s    )rD   ri   r   c                   s   t  |S r"   )r7   rU   rj   r=   r   r   rU   ?  s    )r6   rb   rc   r8   r   re   rI   r   rN   rU   rf   r   r   r=   r   r5     s   r5   N)
__future__r   collections.abcr   r   	functoolsr   inspectr   r   typingr   r	   r
   r   r   r   r   r   r   r   r1   r   r   r   r,   r-   r5   r   r   r   r   <module>   s    
 c