§
    öyIfÌ,  ã            	      óH  — U d Z ddlmZ ddlZddlZddlZddlZddlmZ ddlmZ ddl	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 ddlZej        j        ZdEd„Z G d„ dej        ¦  «        Zej        Zded<   dFd„ZdFd„ZdFd„ZdGdHd„ZdId„Z d dd!œdJd(„Z!dKd*„Z"d+„  e#d,¦  «        D ¦   «         Z$e$ %                     e&d-¦  «        d. e&d/¦  «        d0 e&d1¦  «        d2i¦  «         dLd5„Z'ej(         G d6„ d7¦  «        ¦   «         Z)d8„ Z*d9„ Z+d:„ Z,dMd=„Z-dNd?„Z.dOdA„Z/dPdD„Z0dS )Qz"Python version compatibility code.é    )ÚannotationsN)Ú	Parameter)Ú	signature)ÚPath)ÚAny)ÚCallable)ÚFinal)ÚNoReturnÚpathústr | os.PathLike[str]ÚreturnÚLEGACY_PATHc                ó    — t          | ¦  «        S )zBInternal wrapper to prepare lazy proxies for legacy_path instances)r   )r   s    úB/var/www/piapp/venv/lib/python3.11/site-packages/_pytest/compat.pyÚlegacy_pathr       s   € å�tÑÔÐó    c                  ó   — e Zd ZdZdS )Ú
NotSetTyper   N)Ú__name__Ú
__module__Ú__qualname__Útoken© r   r   r   r   (   s   € € € € € Ø€E€E€Er   r   r	   ÚNOTSETÚfuncÚobjectÚboolc                óN   — t          j        | ¦  «        }|ot          | ¦  «         S ©N)ÚinspectÚisgeneratorfunctionÚiscoroutinefunction)r   Úgenfuncs     r   Úis_generatorr$   .   s)   € ÝÔ)¨$Ñ/Ô/€GØÐ4Õ.¨tÑ4Ô4Ð4Ð4r   c                óL   — t          j        | ¦  «        pt          | dd¦  «        S )a{  Return True if func is a coroutine function (a function defined with async
    def syntax, and doesn't contain yield), or a function decorated with
    @asyncio.coroutine.

    Note: copied and modified from Python 3.5's builtin couroutines.py to avoid
    importing asyncio directly, which in turns also initializes the "logging"
    module as a side-effect (see issue #8).
    Ú_is_coroutineF)r    r"   Úgetattr©r   s    r   r"   r"   3   s&   € õ Ô& tÑ,Ô,ÐUµ¸¸oÈuÑ0UÔ0UÐUr   c                óH   — t          | ¦  «        pt          j        | ¦  «        S )zZReturn True if the given function seems to be an async function or
    an async generator.)r"   r    Úisasyncgenfunctionr(   s    r   Úis_async_functionr+   ?   s"   € õ ˜tÑ$Ô$ÐH­Ô(BÀ4Ñ(HÔ(HÐHr   Úcurdirústr | os.PathLike[str] | NoneÚstrc                óò   — t          | ¦  «        } t          t          j        | ¦  «        ¦  «        }| j        j        }|�0	 |                     |¦  «        }d||dz   fz  S # t          $ r Y nw xY wd||dz   fz  S )Nz%s:%dé   )Úget_real_funcr   r    ÚgetfileÚ__code__Úco_firstlinenoÚrelative_toÚ
ValueError)Úfunctionr,   ÚfnÚlinenoÚrelfns        r   Úgetlocationr;   E   s›   € Ý˜XÑ&Ô&€HÝ	�gŒo˜hÑ'Ô'Ñ	(Ô	(€BØÔÔ-€FØÐð	1Ø—N’N 6Ñ*Ô*ˆEð ˜e V¨a¡ZÐ0Ñ0Ð0øõ ð 	ð 	ð 	ØˆDð	øøøð �b˜& 1™*Ð%Ñ%Ð%s   Á A Á
A,Á+A,Úintc                óP  ‡‡— t          | dd¦  «        }|sdS t          t          j                             d¦  «        dt	          ¦   «         ¦  «        Št          t          j                             d¦  «        dt	          ¦   «         ¦  «        Št          ˆˆfd„|D ¦   «         ¦  «        S )z>Return number of arguments used up by mock arguments (if any).Ú	patchingsNr   ÚmockÚDEFAULTzunittest.mockc                óF   •— g | ]}|j         s|j        ‰u s	|j        ‰u ¯|‘ŒS r   )Úattribute_nameÚnew)Ú.0ÚpÚmock_sentinelÚut_mock_sentinels     €€r   ú
<listcomp>z'num_mock_patch_args.<locals>.<listcomp>]   sM   ø€ ð 	
ð 	
ð 	
àØÔ#ð	
ð ”˜-Ð'Ð'¨1¬5Ð4DÐ+DÐ+Dð ð ,EÐ+DÐ+Dr   )r'   ÚsysÚmodulesÚgetr   Úlen)r7   r>   rF   rG   s     @@r   Únum_mock_patch_argsrM   S   s¦   øø€ å˜ +¨tÑ4Ô4€IØð Øˆqå�CœKŸOšO¨FÑ3Ô3°YÅÁÄÑIÔI€MÝ�sœ{Ÿš¨Ñ?Ô?ÀÍFÉHÌHÑUÔUÐåð	
ð 	
ð 	
ð 	
ð 	
àð	
ñ 	
ô 	
ñô ð r   Ú )ÚnameÚclsr7   úCallable[..., object]rO   rP   útype | Noneútuple[str, ...]c               óÂ  — 	 t          | ¦  «        j        }n7# t          t          f$ r#}ddlm}  |d| ›d|› �d¬¦  «         Y d}~nd}~ww xY wt          d„ |                     ¦   «         D ¦   «         ¦  «        }|s| j        }|r4t          t          j        ||d¬	¦  «        t          ¦  «        s
|d
d…         }t          | d¦  «        r|t          | ¦  «        d…         }|S )a   Return the names of a function's mandatory arguments.

    Should return the names of all function arguments that:
    * Aren't bound to an instance or type as in instance or class methods.
    * Don't have default values.
    * Aren't bound with functools.partial.
    * Aren't replaced with mocks.

    The cls arguments indicate that the function should be treated as a bound
    method even though it's not unless the function is a static method.

    The name parameter should be the original name in which the function was collected.
    r   )Úfailz!Could not determine arguments of z: F)ÚpytraceNc              3  ó–   K  — | ]D}|j         t          j        u s|j         t          j        u r|j        t          j        u ¯;|j        V — ŒEd S r   ©Úkindr   ÚPOSITIONAL_OR_KEYWORDÚKEYWORD_ONLYÚdefaultÚemptyrO   ©rD   rE   s     r   ú	<genexpr>z"getfuncargnames.<locals>.<genexpr>Œ   sa   è è € ð ð ààŒF•iÔ5Ð5Ð5ØŒv�Ô/Ð/Ð/àŒI�œÐ(Ð(ð 	
Œð )Ð(Ð(Ð(ðð r   )r\   r0   Ú__wrapped__)r   Ú
parametersr6   Ú	TypeErrorÚ_pytest.outcomesrU   ÚtupleÚvaluesr   Ú
isinstancer    Úgetattr_staticÚstaticmethodÚhasattrrM   )r7   rO   rP   ra   ÚerU   Ú	arg_namess          r   Úgetfuncargnamesrl   f   sW  € ð8
Ý˜xÑ(Ô(Ô3ˆ
ˆ
øÝ�	Ð"ð 
ð 
ð 
Ø)Ð)Ð)Ð)Ð)Ð)àˆØA°ÐAÐA¸aÐAÐAØð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøøð
øøøõ ð ð à×"Ò"Ñ$Ô$ðñ ô ñ ô €Ið ð !ØÔ ˆð 	ð"õ ÝÔ" 3¨°dÐ;Ñ;Ô;½\ñ
ô 
ð	"ð ˜a˜b˜b”Mˆ	åˆx˜Ñ'Ô'ð ?ØÕ1°(Ñ;Ô;Ð=Ð=Ô>ˆ	ØÐs   ‚ —A¨AÁAúCallable[..., Any]c                ó|   — t          d„ t          | ¦  «        j                             ¦   «         D ¦   «         ¦  «        S )Nc              3  óˆ   K  — | ]=}|j         t          j        t          j        fv r|j        t          j        u¯4|j        V — Œ>d S r   rX   r^   s     r   r_   z(get_default_arg_names.<locals>.<genexpr>®   sY   è è € ð ð àØŒ6•iÔ5µyÔ7MÐNÐNÐNØŒI�Yœ_Ð,Ð,ð 	
Œð -Ð,Ð,Ð,ð	ð r   )rd   r   ra   re   )r7   s    r   Úget_default_arg_namesrp   ª   sI   € õ ð ð å˜8Ñ$Ô$Ô/×6Ò6Ñ8Ô8ðñ ô ñ ô ð r   c                ó@   — i | ]}|t          d d¦  «        v¯|d|d›�“ŒS )é    é   z\xÚ02x)Úrange)rD   Úis     r   ú
<dictcomp>rw   ¶   s;   € ð (ð (ð (Ø¨AµU¸2¸s±^´^Ð,CÐ,C€A€}ˆQ€}€}€}Ð,CÐ,CÐ,Cr   é€   ú	z\túz\rú
z\nÚvalúbytes | strc                óÞ   — t          | t          ¦  «        r|                      dd¦  «        }n(|                      d¦  «                             d¦  «        }|                     t
          ¦  «        S )a	  If val is pure ASCII, return it as an str, otherwise, escape
    bytes objects into a sequence of escaped bytes:

    b'\xc3\xb4\xc5\xd6' -> r'\xc3\xb4\xc5\xd6'

    and escapes strings into a sequence of escaped unicode ids, e.g.:

    r'4\nV\U00043efa\x0eMXWB\x1e\u3028\u15fd\xcd\U0007d944'

    Note:
       The obvious "v.decode('unicode-escape')" will return
       valid UTF-8 unicode if it finds them in bytes, but we
       want to return escaped bytes for any byte, even if they match
       a UTF-8 string.
    ÚasciiÚbackslashreplaceÚunicode_escape)rf   ÚbytesÚdecodeÚencodeÚ	translateÚ$_non_printable_ascii_translate_table)r|   Úrets     r   Úascii_escapedrˆ   ¾   s_   € õ  �#•uÑÔð ;Ø�jŠj˜Ð"4Ñ5Ô5ˆˆà�jŠjÐ)Ñ*Ô*×1Ò1°'Ñ:Ô:ˆØ�=Š=Õ=Ñ>Ô>Ð>r   c                  ó   — e Zd ZU dZded<   dS )Ú_PytestWrappera%  Dummy wrapper around a function object for internal use only.

    Used to correctly unwrap the underlying function object when we are
    creating fixtures, because we wrap the function object ourselves with a
    decorator to issue warnings when the fixture function is called directly.
    r   ÚobjN)r   r   r   Ú__doc__Ú__annotations__r   r   r   rŠ   rŠ   Õ   s%   € € € € € € ðð ð €H€H�H€H€Hr   rŠ   c                óV  — | }t          d¦  «        D ]H}t          | dd¦  «        }t          |t          ¦  «        r	|j        }  nEt          | dd¦  «        }|€ n0|} ŒIddlm} t          d ||¦  «        › d || ¦  «        › �¦  «        ‚t          | t          j	        ¦  «        r| j
        } | S )	zjGet the real function object of the (possibly) wrapped object by
    functools.wraps or functools.partial.éd   Ú__pytest_wrapped__Nr`   r   )Úsafereprz could not find real function of z
stopped at )ru   r'   rf   rŠ   r‹   Ú_pytest._io.safereprr‘   r6   Ú	functoolsÚpartialr   )r‹   Ú	start_objrv   Únew_objr‘   s        r   r1   r1   á   sã   € ð €IÝ�3‰ZŒZð 
ð 
ˆõ ˜#Ð3°TÑ:Ô:ˆÝ�g�~Ñ.Ô.ð 	Ø”+ˆCØˆEÝ˜#˜}¨dÑ3Ô3ˆØˆ?ØˆEØˆˆà1Ð1Ð1Ð1Ð1Ð1åØ`¨x¨x¸	Ñ/BÔ/BÐ`Ð`ÐQYÐQYÐZ]ÑQ^ÔQ^Ð`Ð`ñ
ô 
ð 	
õ �#•yÔ(Ñ)Ô)ð ØŒhˆØ€Jr   c                óâ   — 	 t          | d¦  «        }t          | ¦  «        } n# t          $ r | cY S w xY w|r9t          | d¦  «        r)t          | j        ¦  «        r|                      |¦  «        } | S )z»Attempt to obtain the real function object that might be wrapping
    ``obj``, while at the same time returning a bound method to ``holder`` if
    the original object was a bound method.Ú__func__Ú__get__)ri   r1   Ú	ExceptionÚcallabler™   )r‹   ÚholderÚ	is_methods      r   Úget_real_methodrž   ü   s‰   € ðÝ˜C Ñ,Ô,ˆ	Ý˜CÑ Ô ˆˆøÝð ð ð Øˆ
ˆ
ˆ
ðøøøàð "•W˜S )Ñ,Ô,ð "µ¸#¼+Ñ1FÔ1Fð "Ø�kŠk˜&Ñ!Ô!ˆØ€Js   ‚" ¢1°1c                ó6   — 	 | j         S # t          $ r | cY S w xY wr   )r˜   ÚAttributeErrorr(   s    r   Ú	getimfuncr¡   
  s3   € ðØŒ}ÐøÝð ð ð Øˆˆˆðøøøs   ‚	 ‰—r   r\   c                óL   — ddl m} 	 t          | ||¦  «        S # |$ r |cY S w xY w)aR  Like getattr but return default upon any Exception or any OutcomeException.

    Attribute access can potentially fail for 'evil' Python objects.
    See issue #214.
    It catches OutcomeException because of #2490 (issue #580), new outcomes
    are derived from BaseException instead of Exception (for more details
    check #2707).
    r   )ÚTEST_OUTCOME)rc   r£   r'   )r   rO   r\   r£   s       r   Úsafe_getattrr¤     sQ   € ð .Ð-Ð-Ð-Ð-Ð-ðÝ�v˜t WÑ-Ô-Ð-øØð ð ð Øˆˆˆðøøøs   ˆ ™#¢#r‹   c                óN   — 	 t          j        | ¦  «        S # t          $ r Y dS w xY w)z0Ignore any exception via isinstance on Python 3.F)r    Úisclassrš   )r‹   s    r   Úsafe_isclassr§   "  s9   € ðÝŒ˜sÑ#Ô#Ð#øÝð ð ð Øˆuˆuðøøøs   ‚ –
$£$ú
int | Nonec                 ó„   — t           j        dk    st           j        dk    rdS d} t          j        ¦   «         }|| k    r|ndS )zšReturn the current process's real user id or None if it could not be
    determined.

    :return: The user id or None if it could not be determined.
    Úwin32Ú
emscriptenNéÿÿÿÿ)rI   ÚplatformÚosÚgetuid)ÚERRORÚuids     r   Úget_user_idr²   *  sH   € õ „|�wÒÐ¥#¤,°,Ò">Ð">ð ˆtð ˆÝŒi‰kŒkˆØ˜U’l�lˆsˆs¨Ð,r   Úvaluer
   c                óH   — J d| › dt          | ¦  «        j        › d�¦   «         ‚)NFzUnhandled value: z (ú))Útyper   )r³   s    r   Úassert_neverr·   ^  s-   € ØFÐF eÐFÐF­t°E©{¬{Ô/CÐFÐFÐFÑFÔFÐFr   )r   r   r   r   )r   r   r   r   r   )r,   r-   r   r.   )r   r<   )r7   rQ   rO   r.   rP   rR   r   rS   )r7   rm   r   rS   )r|   r}   r   r.   )r   r   rO   r.   r\   r   r   r   )r‹   r   r   r   )r   r¨   )r³   r
   r   r
   )1rŒ   Ú
__future__r   ÚdataclassesÚenumr“   r    r   r   r®   Úpathlibr   rI   Útypingr   r   r	   r
   Úpyr   Úlocalr   r   ÚEnumr   r   r   r�   r$   r"   r+   r;   rM   rl   rp   ru   r†   ÚupdateÚordrˆ   Ú	dataclassrŠ   r1   rž   r¡   r¤   r§   r²   r·   r   r   r   ú<module>rÃ      s7  ðà (Ð (Ð (à "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à 	€	€	€	ð ŒgŒn€ðð ð ð ðð ð ð ð �”ñ ô ð àÔ €Ð  Ð  Ð  Ñ  ð5ð 5ð 5ð 5ð
	Vð 	Vð 	Vð 	VðIð Ið Ið Ið&ð &ð &ð &ð &ðð ð ð ð, Øð	Að Að Að Að Að AðH	ð 	ð 	ð 	ð(ð (Ø#˜e C™jœjð(ñ (ô (Ð $ð %× +Ò +Ø€Sˆ�Y„Y��s�s˜4‘y”y %¨¨¨T©¬°EÐ:ñô ð ð
?ð ?ð ?ð ?ð. Ôðð ð ð ð ñ ô ñ Ôððð ð ð6ð ð ðð ð ðð ð ð ð"ð ð ð ð-ð -ð -ð -ðhGð Gð Gð Gð Gð Gr   