a
    e	g                     @  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   R/var/www/html/llm_bihealth/app/venv/lib/python3.9/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}zg }zLt |D ]<}	z fdd|	jD }
W n4 tyv   |	jD ]}| vrVtd|qVY n0 |	jrd}z<|	j|
 }ttdtt	 df |}t
| |||	f W n ty   t|d Y n0 q$|	jr<z4|	j|
 }ttdt	t	f |}t
| || W n ty8   t|d Y n0 q$|	j|
 }|dur$|| |r$ qdq$W n* ty } z|}W Y d}~n
d}~0 0 W |r|r|r|d nd}n|}t |D ]}z,|dur|| n
|| |  W nt ty. } z$|j}d}W Y d}~qW Y d}~n@d}~0  tyd } z|}W Y d}~qW Y d}~n
d}~0 0 t|d	 q|dur||jn|S q|rt|r|d nd|}n
t||}t |D ]:}t|trFz|d | W nJ ty   Y nF ty4 } zt| |d
 |  W Y d}~nd}~0 0 t|d d	 nz2|jdurb||j n||j |  W n| ty } z&||j W Y d}~qW Y d}~nFd}~0  ty } z$|| W Y d}~qW Y d}~n
d}~0 0 t|d	 q| S n|r|r0|r*|d nd}n|}t |D ]}z,|durX|| 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<|dur||jn|     Y S n|r<t|r2|d nd|}n
t||}t |D ]:}t|trz|d | W nJ ty   Y nF ty } zt| |d
 |  W Y d}~nd}~0 0 t|d d	 nz2|jdur||j n||j |  W n| ty@ } z&||j W Y d}~qNW Y d}~nFd}~0  ty| } z$|| W Y d}~qNW Y d}~n
d}~0 0 t|d	 qN|      Y S 0 dS )zExecute 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r+   r   r   
<listcomp>I       z_multicall.<locals>.<listcomp>z hook call must provide argument Fzdid not yieldr   zhas second yieldr
   )reversedargnamesKeyErrorr   Zhookwrapperfunctionr   r   r   objectnextappendStopIterationr   wrapperr   throwsendclosevaluewith_traceback__traceback__
isinstancetupler(   
_exception_resultZforce_resultZforce_exceptionZ
get_result)r   r*   r+   r,   Z__tracebackhide__results	exceptionZonly_new_style_wrappersZ	teardownsr   argsr.   resZwrapper_genZfunction_genexcresultZteardownsir    outcomer   r/   r   
_multicall5   s   






"$

"
$

"$

"
$rM   )__doc__
__future__r   typingr   r   r   r   r   r   r	   r&   Z_hooksr   rD   r   r   	_warningsr   r6   ZTeardownr   r(   rM   r   r   r   r   <module>   s*   
