o
    "“iH  ã                   @  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 r7dd	lmZ erBeee gef ZG d
d„ dƒZddd„ZdS )é    )ÚannotationsN)ÚCallableÚIterableÚMapping)ÚAbstractContextManager)ÚTracebackType)ÚTYPE_CHECKINGÚAny)é   é   é   )ÚBaseExceptionGroupc                   @  s4   e Zd Zddd„Zddd„Zddd„Zddd„ZdS )Ú_CatcherÚhandler_mapú2Mapping[tuple[type[BaseException], ...], _Handler]c                 C  s
   || _ d S ©N)Ú_handler_map)Úselfr   © r   úU/var/www/html/premium_crap/venv/lib/python3.10/site-packages/exceptiongroup/_catch.pyÚ__init__   s   
z_Catcher.__init__ÚreturnÚNonec                 C  s   d S r   r   )r   r   r   r   Ú	__enter__   s   z_Catcher.__enter__Úetypeútype[BaseException] | NoneÚexcúBaseException | NoneÚtbúTracebackType | NoneÚboolc                 C  s`   |d ur.|   |¡}||u rdS |d u rdS t|tƒr+z||j‚ ty*   |j|_‚ w ||‚dS )NFT)Úhandle_exceptionÚ
isinstancer   Ú	__cause__Ú__context__)r   r   r   r   Ú	unhandledr   r   r   Ú__exit__   s   

üz_Catcher.__exit__ÚBaseExceptionc           	      C  sP  t |tƒr|}ntd|gƒ}g }| j ¡ D ]m\}}| |¡\}}|r~zz|‚ ty2   ||ƒ}Y nw W n8 tyV } z||u rF| |¡ n| |j¡ W Y d }~n,d }~w tyl } z| |¡ W Y d }~nd }~ww t	 
|¡r~td|›d|›d�ƒ|‚|s‚ nq|r”t|ƒdkr�|d S td|ƒS |r¦t|jƒdkr¦|jd |u r¦|S |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   ÚexcgroupÚnew_exceptionsÚ	exc_typesÚhandlerÚmatchedÚresultÚnew_excr   r   r   r!   2   sR   
ÿ€€ÿ
ÿýÿ
ÿz_Catcher.handle_exceptionN)r   r   )r   r   )r   r   r   r   r   r   r   r    )r   r'   r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r&   r!   r   r   r   r   r      s
    


r   Ú
__handlersúFMapping[type[BaseException] | Iterable[type[BaseException]], _Handler]r   úAbstractContextManager[None]c                 C  s¸   t | tƒs	tdƒ‚i }|  ¡ D ]H\}}t |tƒr!t|tƒr!|f}nt |tƒr+t|ƒ}ntdƒ‚t	|ƒs7tdƒ‚|D ]}t |tƒrEt|tƒsItdƒ‚t|t
ƒrRtdƒ‚q9|||< 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   r0   r)   ÚtypeÚ
issubclassr'   r   ÚtupleÚcallabler   r   )r<   r   Útype_or_iterabler5   ÚiterableÚexc_typer   r   r   Úcatch`   s<   
þÿ

ÿÿÿ
ÿÿ
rF   )r<   r=   r   r>   )Ú
__future__r   r.   ÚsysÚcollections.abcr   r   r   Ú
contextlibr   Útypesr   Útypingr   r	   Úversion_infoÚ_exceptionsr   Ú_Handlerr   rF   r   r   r   r   Ú<module>   s    
O