U
    ^»{jÇ,  ã                   @  s   d dl mZ d dl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jdk rvd dlmZ ed	ed
ed�Zeded�Zeded
ed�Zeded�Zeddd�Zeddd�Zddddœdd„Zdddœdd„Zdd „ ZG d!d„ deee ƒZG d"d„ dee eƒZ dS )#é    )ÚannotationsN)ÚCallableÚSequence)Úpartial)ÚgetmroÚisclass)ÚTYPE_CHECKINGÚGenericÚTypeÚTypeVarÚcastÚoverload)é   é   )r   Ú_BaseExceptionT_coT)ÚboundÚ	covariantÚdefaultÚ_BaseExceptionT)r   Ú_ExceptionT_coÚ_ExceptionTÚ_ExceptionGroupSelfÚExceptionGroupÚ_BaseExceptionGroupSelfÚBaseExceptionGroupÚBaseExceptionztuple[type[BaseException]]Úbool)ÚexcÚparentsÚreturnc                 C  s*   t | jƒd d… D ]}||kr dS qdS )NéÿÿÿÿTF)r   Ú	__class__)r   r   Úcls© r#   úY/var/www/html/bwave/python/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    
 ÿ

r2   c                 C  s<   |   |¡}| j|_| j|_| j|_t| dƒr8t| jƒ|_|S )NÚ	__notes__)ÚderiveÚ	__cause__Ú__context__Ú__traceback__ÚhasattrÚlistr3   )ÚselfZexcsÚegr#   r#   r$   Ú_derive_and_copy_attributes5   s    

r<   c                      s`  e Zd ZdZdddddœ‡ fdd„Zddd	d
dœ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/d0œd1d2„ƒZe
d3d4d0œd5d2„ƒZd3d4d0œd6d2„Zddœd7d8„Zddœd9d:„Z‡  ZS );r   z/A combination of multiple unrelated exceptions.ztype[_BaseExceptionGroupSelf]ÚstrzSequence[_BaseExceptionT_co]r   )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r„t	dd„ |D ƒƒr„t
} t| tƒrÄ|D ]0}t |tƒs’| t
kr²tdƒ‚q’td	| j›�ƒ‚q’tƒ  | ||¡}t|ƒ|_|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,   X   s     z-BaseExceptionGroup.__new__.<locals>.<genexpr>z/Cannot nest BaseExceptions in an ExceptionGroupzCannot nest BaseExceptions in )r-   r=   r1   Útyper   Ú
ValueErrorÚ	enumerater   r   r/   r   r)   r@   Ú__name__ÚsuperÚ__new__r.   Ú_exceptions)r"   r>   r?   Úir   Úinstance©r!   r#   r$   rF   C   s:    

ÿ

ÿ

ÿ
ÿ
zBaseExceptionGroup.__new__ÚobjectÚNone)r>   r?   Úargsr   c                 G  s   t j| ||f|žŽ  d S r(   )r   Ú__init__)r:   r>   r?   rM   r#   r#   r$   rN   k   s    zBaseExceptionGroup.__init__)Ú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 ú)r3   )r-   r=   r1   rA   rD   r8   r3   Úappend)r:   rO   r#   r#   r$   Úadd_notes   s    
ÿ
zBaseExceptionGroup.add_note©r   c                 C  s
   | j d S )Nr   )rM   ©r:   r#   r#   r$   Úmessage~   s    zBaseExceptionGroup.messagezGtuple[_BaseExceptionT_co | BaseExceptionGroup[_BaseExceptionT_co], ...]c                 C  s
   t | jƒS r(   )r.   rG   rT   r#   r#   r$   Ú
exceptions‚   s    zBaseExceptionGroup.exceptionsú1type[_ExceptionT] | tuple[type[_ExceptionT], ...]ú"ExceptionGroup[_ExceptionT] | None)Ú_BaseExceptionGroup__conditionr   c                 C  s   d S r(   r#   ©r:   rY   r#   r#   r$   Úsubgroupˆ   s    zBaseExceptionGroup.subgroupz9type[_BaseExceptionT] | tuple[type[_BaseExceptionT], ...]z*BaseExceptionGroup[_BaseExceptionT] | Nonec                 C  s   d S r(   r#   rZ   r#   r#   r$   r[   �   s    z>Callable[[_BaseExceptionT_co | _BaseExceptionGroupSelf], bool]z-BaseExceptionGroup[_BaseExceptionT_co] | Nonec                 C  s   d S r(   r#   rZ   r#   r#   r$   r[   ’   s    zztype[_BaseExceptionT] | tuple[type[_BaseExceptionT], ...] | Callable[[_BaseExceptionT_co | _BaseExceptionGroupSelf], 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Žt| |ƒ}|S d S d S )NFT)r2   rV   r-   r   r[   rQ   r<   )r:   rY   r'   ÚmodifiedrV   r   r[   Úgroupr#   r#   r$   r[   ˜   s*    




zXtuple[ExceptionGroup[_ExceptionT] | None, BaseExceptionGroup[_BaseExceptionT_co] | None]c                 C  s   d S r(   r#   rZ   r#   r#   r$   Úsplit¹   s    zBaseExceptionGroup.splitz`tuple[BaseExceptionGroup[_BaseExceptionT] | None, BaseExceptionGroup[_BaseExceptionT_co] | None]c                 C  s   d S r(   r#   rZ   r#   r#   r$   r^   Á   s    zctuple[BaseExceptionGroup[_BaseExceptionT_co] | None, BaseExceptionGroup[_BaseExceptionT_co] | None]c                 C  s   d S r(   r#   rZ   r#   r#   r$   r^   É   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št| |ƒ}d }	|r¬t| |ƒ}	||	fS r(   )r2   rV   r-   r   r^   rQ   r<   )
r:   rY   r'   Zmatching_exceptionsZnonmatching_exceptionsr   ZmatchingZnonmatchingZmatching_groupZnonmatching_groupr#   r#   r$   r^   Ò   s2    



 ÿzSequence[_ExceptionT]zExceptionGroup[_ExceptionT])Ú_BaseExceptionGroup__excsr   c                 C  s   d S r(   r#   ©r:   r_   r#   r#   r$   r4     s    zBaseExceptionGroup.derivezSequence[_BaseExceptionT]z#BaseExceptionGroup[_BaseExceptionT]c                 C  s   d S r(   r#   r`   r#   r#   r$   r4     s    c                 C  s   t | j|ƒS r(   )r   rU   r`   r#   r#   r$   r4     s    c                 C  s4   t | jƒdkrdnd}| j› dt | jƒ› d|› d�S )Né   Ú Úsz (z sub-exceptionrP   )ÚlenrG   rU   )r:   Úsuffixr#   r#   r$   Ú__str__  s    zBaseExceptionGroup.__str__c                 C  s&   | j j› d| jd ›d| jd ›d�S )Nú(r   z, ra   rP   )r!   rD   rM   rT   r#   r#   r$   Ú__repr__  s    zBaseExceptionGroup.__repr__)rD   Ú
__module__Ú__qualname__Ú__doc__rF   rN   rR   ÚpropertyrU   rV   r   r[   r^   r4   rf   rh   Ú__classcell__r#   r#   rJ   r$   r   @   s:   (!2c                      s¸   e Zd Zdddddœ‡ fdd„Zer°e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 )r   ztype[_ExceptionGroupSelf]r=   zSequence[_ExceptionT_co]r   )r"   Ú_ExceptionGroup__messageÚ_ExceptionGroup__exceptionsr   c                   s   t ƒ  | ||¡S r(   )rE   rF   )r"   rn   ro   rJ   r#   r$   rF     s    zExceptionGroup.__new__z;tuple[_ExceptionT_co | ExceptionGroup[_ExceptionT_co], ...]rS   c                 C  s   d S r(   r#   rT   r#   r#   r$   rV   #  s    zExceptionGroup.exceptionsrW   rX   )Ú_ExceptionGroup__conditionr   c                 C  s   d S r(   r#   ©r:   rp   r#   r#   r$   r[   (  s    zExceptionGroup.subgroupz6Callable[[_ExceptionT_co | _ExceptionGroupSelf], bool]z%ExceptionGroup[_ExceptionT_co] | Nonec                 C  s   d S r(   r#   rq   r#   r#   r$   r[   -  s    zTtype[_ExceptionT] | tuple[type[_ExceptionT], ...] | Callable[[_ExceptionT_co], bool]c                   s   t ƒ  |¡S r(   )rE   r[   rq   rJ   r#   r$   r[   2  s    zPtuple[ExceptionGroup[_ExceptionT] | None, ExceptionGroup[_ExceptionT_co] | None]c                 C  s   d S r(   r#   rq   r#   r#   r$   r^   :  s    zExceptionGroup.splitzStuple[ExceptionGroup[_ExceptionT_co] | None, ExceptionGroup[_ExceptionT_co] | None]c                 C  s   d S r(   r#   rq   r#   r#   r$   r^   A  s    )r:   rp   r   c                   s   t ƒ  |¡S r(   )rE   r^   rq   rJ   r#   r$   r^   H  s    )rD   ri   rj   rF   r   rl   rV   r   r[   r^   rm   r#   r#   rJ   r$   r     s   )!Ú
__future__r   ÚsysÚcollections.abcr   r   Ú	functoolsr   Úinspectr   r   Útypingr   r	   r
   r   r   r   Úversion_infoÚtyping_extensionsr   r   r   r@   r   r   r   r   r%   r2   r<   r   r   r#   r#   r#   r$   Ú<module>   s:    
   ÿ   ÿ
 Z