a
    (ñ»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   ú;E:\soccer\ml_env\Lib\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  sh   |d urd|   |¡}||u rdS |d u r*dS t|tƒr^z||j‚W n ty\   |j|_‚ Y n0 ||‚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  sh  t |tƒr|}ntd|gƒ}g }| j ¡ D ]ä\}}| |¡\}}|�rz(z|‚W n tyj   ||ƒ}Y n0 W np ty² } z,||u r’| |¡ n| |j¡ W Y d }~nZd }~0  tyÞ } z| |¡ W Y d }~n.d }~0 0 t	 
|¡�rtd|›d|›d�ƒ|‚|s* �qq*|�r6t|ƒdk�r,|d S td|ƒS |�r`t|jƒdk�r`|jd |u �r`|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