a
    qJhg                     @  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"   A/var/www/shaz/venv/lib/python3.9/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}zg }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rt|| |	}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 qn W Y d}~n
d}~0 0 n
|| |  W nt tyZ } z$|j}d}W Y d}~qW Y d}~n@d}~0  ty }
 z|
}W Y d}
~
qW 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 qn W Y d}~n
d}~0 0 n
|| |  W nt ty } z$|j}d}W Y d}~qW Y d}~n@d}~0  ty }
 z|
}W Y d}
~
qW Y d}
~
n
d}
~
0 0 t|d q0 |dur|n|S 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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    

