a
    !fY                     @  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mZ d	dlmZ d	dlmZ e	eedee df  edeef f ZddddddddZdS )z
Call loop machinery
    )annotations)cast)	Generator)Mapping)Sequence)Tuple)Union   )HookImpl)_raise_wrapfail)HookCallError)ResultNstrzSequence[HookImpl]zMapping[str, object]boolzobject | list[object])	hook_name
hook_implscaller_kwargsfirstresultreturnc                   s8  d}g }d}d}zg }zJt |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y6   t|d Y n0 q$|	j|
 }|dur$|| |r$ qbq$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yb } z|}W Y d}~qW Y d}~n
d}~0 0 t|d	 q|dur||jn|S q4|rt|r|d nd|}n
t||}t |D ]}t|trz |d | t|d d	 W n ty
   Y n0 nz2|jdur*||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|r|r|d nd}n|}t |D ]}z,|dur || n
|| |  W nt tyr } 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 nN|rt|r|d nd|}n
t||}t |D ]}t|tr`z |d | t|d d	 W n ty\   Y n0 nz2|jdur|||j n||j |  W n| ty } z&||j W Y d}~qW Y d}~nFd}~0  ty } z$|| W Y d}~qW Y d}~n
d}~0 0 t|d	 q|      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   ).0argnamer   r   P/var/www/html/python-backend/venv/lib/python3.9/site-packages/pluggy/_callers.py
<listcomp>/       z_multicall.<locals>.<listcomp>z hook call must provide argument Fzdid not yieldr   zhas second yield)reversedargnamesKeyErrorr   Zhookwrapperfunctionr   r   r   objectnextappendStopIterationr   wrapperBaseExceptionthrowsendclosevaluewith_traceback__traceback__
isinstancetuple
_exception_resultZforce_resultZforce_exceptionZ
get_result)r   r   r   r   Z__tracebackhide__results	exceptionZonly_new_style_wrappersZ	teardownsZ	hook_implargsr   resZwrapper_genZfunction_genexcresultZteardownsieoutcomer   r   r   
_multicall   s   






"$

"
$

"$

"
$r9   )__doc__
__future__r   typingr   r   r   r   r   r   Z_hooksr
   r/   r   r   r   r    ZTeardownr9   r   r   r   r   <module>   s"   