a
     ñ»jg  ã                   @  sæ   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
Z
d	d
lmZ d	dlmZ d	dlmZ d	dlmZ edeef Zdddddœdd„Zddddœdd„Zdddddœdd„Zddd d!d"d#œd$d%„ZdS )&z
Call loop machinery
é    )Úannotations)Ú	Generator)ÚMapping)ÚSequence)Úcast)ÚNoReturnNé   )ÚHookImpl)ÚHookCallError)ÚResult)ÚPluggyTeardownRaisedWarningr	   ÚstrzSequence[object]ÚTeardown)Ú	hook_implÚ	hook_nameÚargsÚreturnc              
   c  sú   t t| j|Ž ƒ}zt|ƒ W n ty8   t|dƒ Y n0 zdV }t|dƒ}W n. ty| } ztd|ƒ}W Y d}~n
d}~0 0 zhz| |¡ W nB ty    Y n< tyÐ } zt	|| |ƒ ‚ W Y d}~nd}~0 0 t|dƒ W | 
¡  n
| 
¡  0 | ¡ S )zT
    backward compatibility wrapper to run a old style hookwrapper as a wrapper
    údid not yieldNúhas second yield)r   r   ÚfunctionÚnextÚStopIterationÚ_raise_wrapfailr   ÚBaseExceptionÚsendÚ_warn_teardown_exceptionÚcloseZ
get_result)r   r   r   ÚteardownÚresÚresultÚexcÚe© r"   ú5E:\soccer\ml_env\Lib\site-packages\pluggy/_callers.pyÚrun_old_style_hookwrapper   s(     r$   zGenerator[None, object, object]r   )Úwrap_controllerÚmsgr   c              	   C  s0   | j }td|j›d|j› d|j› d|› �ƒ‚d S )Nzwrap_controller at ú ú:)Úgi_codeÚRuntimeErrorÚco_nameÚco_filenameÚco_firstlineno)r%   r&   Úcor"   r"   r#   r   8   s     ÿr   r   ÚNone)r   r   r!   r   c                 C  sT   d}|d|j › d| › d�7 }|t|ƒj› d|› d�7 }|d7 }tjt|ƒdd� d S )	NzGA plugin raised an exception during an old-style hookwrapper teardown.
zPlugin: z, Hook: Ú
z: zvFor more information see https://pluggy.readthedocs.io/en/stable/api_reference.html#pluggy.PluggyTeardownRaisedWarningé   )Ú
stacklevel)Zplugin_nameÚtypeÚ__name__ÚwarningsÚwarnr   )r   r   r!   r&   r"   r"   r#   r   B   s
    r   zSequence[HookImpl]zMapping[str, object]Úboolzobject | list[object])r   Ú
hook_implsÚcaller_kwargsÚfirstresultr   c                   sú  d}g }d}�z”g }�z t |ƒD �]}z‡ fdd„|jD ƒ}	W nH ty† }
 z0|jD ]}|ˆ vrTtd|›�ƒ|
‚qTW Y d}
~
n
d}
~
0 0 |jr®t|| |	ƒ}t|ƒ | |¡ q |j�rz4|j	|	Ž }t
tdttf |ƒ}t|ƒ | |¡ W n t�y   t|dƒ Y n0 q |j	|	Ž }|dur | |¡ |r  �q4q W n* t�y` } z|}W Y d}~n
d}~0 0 W |�r~|�rx|d nd}n|}t |ƒD �]}zŒ|du�rz| |¡ W nZ t�y } z@t|tƒ�rî|j|u �rî| ¡  W Y d}~W �qŠn‚ W Y d}~n
d}~0 0 n
| |¡ | ¡  W nt t�yZ } z$|j}d}W Y d}~�qŠW Y d}~n@d}~0  t�y� }
 z|
}W Y d}
~
�qŠW Y d}
~
n
d}
~
0 0 t|dƒ �qŠ�n>|�r¾|�r¸|d nd}n|}t |ƒD �]}zŒ|du�rHz| |¡ W nZ t�yD } z@t|tƒ�r.|j|u �r.| ¡  W Y d}~W �qÊn‚ W Y d}~n
d}~0 0 n
| |¡ | ¡  W nt t�yš } z$|j}d}W Y d}~�qÊW Y d}~n@d}~0  t�yÐ }
 z|
}W Y d}
~
�qÊW Y d}
~
n
d}
~
0 0 t|dƒ �qÊ0 |du�rò|‚n|S dS )	z‘Execute a call into multiple python functions/methods and return the
    result(s).

    ``caller_kwargs`` comes from HookCaller.__call__().
    TNc                   s   g | ]}ˆ | ‘qS r"   r"   )Ú.0Úargname©r9   r"   r#   Ú
<listcomp>_   ó    z_multicall.<locals>.<listcomp>z hook call must provide argument r   r   r   )ÚreversedÚargnamesÚKeyErrorr
   Zhookwrapperr$   r   ÚappendÚwrapperr   r   r   Úobjectr   r   r   Úthrowr*   Ú
isinstanceÚ	__cause__r   r   Úvalue)r   r8   r9   r:   Z__tracebackhide__ÚresultsÚ	exceptionZ	teardownsr   r   r!   r<   Zfunction_genr   r    r   r   ÚreÚsir"   r=   r#   Ú
_multicallL   s¶    
ÿþ



ÿþ
"$Ý
ÿþ
"$
rN   )Ú__doc__Ú
__future__r   Úcollections.abcr   r   r   Útypingr   r   r5   Z_hooksr	   Ú_resultr
   r   Ú	_warningsr   rE   r   r$   r   r   rN   r"   r"   r"   r#   Ú<module>   s    

