U
    M»{j”  ã                   @  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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
e	ed
ee d
f ef ed
eef f 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)Úcast)Ú	Generator)ÚMapping)ÚNoReturn)ÚSequence)ÚTuple)ÚUnionNé   )ÚHookImpl)ÚHookCallError)ÚResult)ÚPluggyTeardownRaisedWarningzGGenerator[None, Result[object], None] | Generator[None, object, object]Ústrr   )Úwrap_controllerÚmsgÚreturnc                 C  s$   | j }td|j|j|j|f ƒ‚d S )Nzwrap_controller at %r %s:%d %s)Úgi_codeÚRuntimeErrorÚco_nameÚco_filenameÚco_firstlineno)r   r   Úco© r   úN/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pluggy/_callers.pyÚ_raise_wrapfail   s    ÿÿr   r   ÚBaseExceptionÚNone)Ú	hook_nameÚ	hook_implÚer   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   Ú_warn_teardown_exception+   s
    r(   zSequence[HookImpl]zMapping[str, object]Úboolzobject | list[object])r   Ú
hook_implsÚcaller_kwargsÚfirstresultr   c                   s  d}g }d}d}d�z†g }	�zRt |ƒD �]B}z‡ fdd„|jD ƒ}W n6 tk
rz   |jD ]}|ˆ krZtd|›�ƒ‚qZY nX |jräd	}z<|j|Ž }ttdt
t df |ƒ}t|ƒ |	 ||f¡ W n tk
rà   t|d
ƒ Y nX q&|j�rDz4|j|Ž }ttdttf |ƒ}t|ƒ |	 |¡ W n  tk
�r@   t|d
ƒ Y nX q&|j|Ž }|dk	r&| |¡ |r& �qlq&W n( tk
�r– } z|}W 5 d}~X Y nX W 5 |�r–|�r¼|�r¶|d nd}n|}t |	ƒD ]¦}
z,|dk	�rä|
 |¡ n
|
 |¡ |
 ¡  W nh tk
�r0 } z|j}d}W Y ¢�qÈW 5 d}~X Y n2 tk
�r` } z|}W Y ¢�qÈW 5 d}~X Y nX t|
dƒ �qÈ|dk	�rˆ| |j	¡‚n
|£  S �nr|�r¶t
|�r¬|d nd|ƒ}n
t
||ƒ}t |	ƒD �].}
t|
tƒ�rHz|
d  |¡ W nJ tk
�r   Y nD tk
�r6 } zt| |
d |ƒ ‚ W 5 d}~X Y nX t|
d dƒ n®z2|jdk	�rd|
 |j¡ n|
 |j¡ |
 ¡  W np tk
�r´ } z| |j¡ W Y ¢�qÈW 5 d}~X Y n8 tk
�rê } z| |¡ W Y ¢�qÈW 5 d}~X Y nX t|
dƒ �qÈ| ¡ £  S X  dS )z‘Execute a call into multiple python functions/methods and return the
    result(s).

    ``caller_kwargs`` comes from HookCaller.__call__().
    TNr   zhas second yieldr
   c                   s   g | ]}ˆ | ‘qS r   r   )Ú.0Úargname©r+   r   r   Ú
<listcomp>I   s     z_multicall.<locals>.<listcomp>z hook call must provide argument Fzdid not yield)ÚreversedÚthrowÚsendÚcloseÚStopIterationÚvaluer   r   Úwith_tracebackÚ__traceback__r   Ú
isinstanceÚtupler(   Z
_exceptionÚ_resultZforce_resultZforce_exceptionZ
get_resultÚargnamesÚKeyErrorr   ZhookwrapperÚfunctionr   r   ÚobjectÚnextÚappendÚwrapper)r   r*   r+   r,   Z__tracebackhide__ÚresultsÚ	exceptionZonly_new_style_wrappersÚresultZ	teardownsZteardownÚsir    Zoutcomer   Úargsr.   ÚresZwrapper_genZfunction_genÚexcr   r/   r   Ú
_multicall5   s´    
ÿ






 ÿ

rJ   )Ú__doc__Ú
__future__r   Útypingr   r   r   r   r   r   r	   r&   Z_hooksr   r;   r   r   Ú	_warningsr   r?   ZTeardownr   r(   rJ   r   r   r   r   Ú<module>   s*   ÿÿ
