U
    ^»{jH  ã                   @  s¦   d dl mZ d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZmZ ejdk rndd	lmZ er„eee gef ZG d
d„ dƒZdddœdd„ZdS )é    )ÚannotationsN)ÚCallableÚIterableÚMapping)ÚAbstractContextManager)ÚTracebackType)ÚTYPE_CHECKINGÚAny)é   é   é   )ÚBaseExceptionGroupc                   @  sL   e Zd Zddœdd„Zddœdd„Zd	d
dddœdd„Zdd
dœdd„ZdS )Ú_Catcherz2Mapping[tuple[type[BaseException], ...], _Handler])Úhandler_mapc                 C  s
   || _ d S ©N)Ú_handler_map)Úselfr   © r   úT/var/www/html/bwave/python/venv/lib/python3.8/site-packages/exceptiongroup/_catch.pyÚ__init__   s    z_Catcher.__init__ÚNone)Úreturnc                 C  s   d S r   r   )r   r   r   r   Ú	__enter__   s    z_Catcher.__enter__ztype[BaseException] | NonezBaseException | NonezTracebackType | NoneÚbool)ÚetypeÚexcÚtbr   c                 C  sj   |d k	rf|   |¡}||krdS |d kr*dS t|tƒr`z||j‚W n tk
r^   |j|_‚ Y nX ||‚dS )NFT)Úhandle_exceptionÚ
isinstancer   Ú	__cause__Ú__context__)r   r   r   r   Z	unhandledr   r   r   Ú__exit__   s    

z_Catcher.__exit__ÚBaseException)r   r   c           	      C  sb  t |tƒr|}ntd|gƒ}g }| j ¡ D ]Þ\}}| |¡\}}|rþz*z|‚W n tk
rj   ||ƒ}Y nX W nl tk
r° } z$||kr”| |¡ n| |j¡ W 5 d }~X Y nN tk
rÚ } z| |¡ W 5 d }~X Y n$X t	 
|¡rþtd|›d|›d�ƒ|‚|s* �q
q*|�r0t|ƒdk�r&|d S td|ƒS |�rZt|jƒdk�rZ|jd |k�rZ|S |S d S )NÚ zError trying to handle z with z,. Exception handler must be a sync function.r   r   )r   r   r   ÚitemsÚsplitÚappendÚextendÚ
exceptionsr"   ÚinspectÚiscoroutineÚ	TypeErrorÚlen)	r   r   ZexcgroupZnew_exceptionsZ	exc_typesÚhandlerZmatchedÚresultÚnew_excr   r   r   r   2   sL    

ÿý
ÿÿÿz_Catcher.handle_exceptionN)Ú__name__Ú
__module__Ú__qualname__r   r   r!   r   r   r   r   r   r      s   r   zFMapping[type[BaseException] | Iterable[type[BaseException]], _Handler]zAbstractContextManager[None])Ú
__handlersr   c                 C  s¸   t | tƒstdƒ‚i }|  ¡ D ]�\}}t |tƒrBt|tƒrB|f}nt |tƒrVt|ƒ}ntdƒ‚t	|ƒsntdƒ‚|D ]2}t |tƒrŠt|tƒs’tdƒ‚t|t
ƒrrtdƒ‚qr|||< qt|ƒS )Nzthe argument must be a mappingzCeach key must be either an exception classes or an iterable thereofzhandlers must be callablezHcatching ExceptionGroup with catch() is not allowed. Use except instead.)r   r   r+   r$   ÚtypeÚ
issubclassr"   r   ÚtupleÚcallabler   r   )r3   r   Ztype_or_iterabler-   ÚiterableÚexc_typer   r   r   Úcatch`   s>    
þ ÿ

ÿ ÿÿ
ÿ
r:   )Ú
__future__r   r)   ÚsysÚcollections.abcr   r   r   Ú
contextlibr   Útypesr   Útypingr   r	   Úversion_infoÚ_exceptionsr   Z_Handlerr   r:   r   r   r   r   Ú<module>   s   
O