o
    Ưhg                     @  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Zd-ddZd.d!d"Zd/d*d+ZdS )0z
Call loop machinery
    )annotations)	Generator)Mapping)Sequence)cast)NoReturnN   )HookImpl)HookCallError)Result)PluggyTeardownRaisedWarning	hook_implr	   	hook_namestrargsSequence[object]returnTeardownc              
   c  s    t t| j| }zt| W n ty   t|d Y nw z
dV }t|d}W n ty? } ztd|}W Y d}~nd}~ww z:z|| W n tyQ   Y n! tyc } zt	|| |  d}~ww t|d W |
  | S W |
  | S |
  w )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close
get_result)r   r   r   teardownresresultexce r$   L/var/www/Befach/backend/venv/lib/python3.10/site-packages/pluggy/_callers.pyrun_old_style_hookwrapper   s<   
r&   wrap_controllerGenerator[None, object, object]msgr   c              	   C  s,   | j }td|jd|j d|j d| )Nzwrap_controller at  :)gi_codeRuntimeErrorco_nameco_filenameco_firstlineno)r'   r)   cor$   r$   r%   r   8   s    r   r#   r   Nonec                 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)plugin_nametype__name__warningswarnr   )r   r   r#   r)   r$   r$   r%   r   B   s
   r   
hook_implsSequence[HookImpl]caller_kwargsMapping[str, object]firstresultboolobject | list[object]c                   s|  d}g }d}z#g }zt |D ]}z fdd|jD }	W n$ tyA }
 z|jD ]}| vr6td||
q(W Y d}
~
nd}
~
ww |jrUt|| |	}t| || q|jrz|j	|	 }t
tdttf |}t| || W q ty   t|d Y qw |j	|	 }|dur|| |r nqW n ty } z|}W Y d}~nd}~ww W |r|r|d nd}n|}t |D ]m}z9|durz|| W n' ty } zt|tr|j|u r|  W Y d}~W q d}~ww || |  W n, ty } z|j}d}W Y d}~qd}~w ty# }
 z|
}W Y d}
~
qd}
~
ww t|d qn|r8|r5|d nd}n|}t |D ]u}z>|durtz|| W n+ tys } zt|trn|j|u rn|  W Y d}~W q> d}~ww || |  W n. ty } z|j}d}W Y d}~q>d}~w ty }
 z	|
}W Y d}
~
q>d}
~
ww t|d q>w |dur||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>_   s    z_multicall.<locals>.<listcomp>z hook call must provide argument r   r   r   )reversedargnamesKeyErrorr
   hookwrapperr&   r   appendwrapperr   r   r   objectr   r   r   throwr-   
isinstance	__cause__r   r   value)r   r;   r=   r?   __tracebackhide__results	exception	teardownsr   r   r#   rC   function_genr    r"   r!   r   resir$   rD   r%   
_multicallL   s   








rX   )r   r	   r   r   r   r   r   r   )r'   r(   r)   r   r   r   )r   r   r   r	   r#   r   r   r2   )
r   r   r;   r<   r=   r>   r?   r@   r   rA   )__doc__
__future__r   collections.abcr   r   r   typingr   r   r9   _hooksr	   _resultr
   r   	_warningsr   rL   r   r&   r   r   rX   r$   r$   r$   r%   <module>   s"    




