o
    Ñ­jg  ã                   @  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/html/CropPilot/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 }z‹t |ƒ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r�z|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ríz| |¡ 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}~q¼d}~w t�y# }
 z|
}W Y d}
~
q¼d}
~
ww t|dƒ q¼nŠ|�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 )	z‘Execute 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"    




