§
    øÛg|  ã                   óÎ  — d Z ddlZddlZddlZddlZddlZddlZddlZ	 ddlZn# e	$ r dZY nw xY wej
        dk    Ze Z ed¦  «        Z e¦   «         Z eed¦  «        rd„ Znd„ Zej        Zej        Z eedd„ ¦  «        Z e ej        d	¦  «        ¦  «        Zd
„ Zd„ Zd„ Zdd„Zej
        dd…         dk    rd„ ZerddlZeefZ d„ Z!neee"fZ d„ Z!d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'dS )z#
python version compatibility code
é    N)é   r   Ú	signaturec                 óD   — t          t          j        | ¦  «        ¦  «        S ©N)ÚstrÚinspectr   ©Úfuncs    úD/granary/edev/quantum/lib/python3.11/site-packages/_pytest/compat.pyÚ_format_argsr      s   € Ý•7Ô$ TÑ*Ô*Ñ+Ô+Ð+ó    c                 óB   — t          j        t          j        | ¦  «        Ž S r   )r   ÚformatargspecÚ
getargspecr	   s    r   r   r   !   s   € ÝÔ$¥gÔ&8¸Ñ&>Ô&>Ð?Ð?r   Ú	exc_clearc                  ó   — d S r   © r   r   r   ú<lambda>r   '   s   € ¨d€ r   Ú c                 ót   — 	 t           j                             | ¦  «        j        dz  S # t          $ r Y dS w xY w)Né    F)Ú_pytestÚ_codeÚ
getrawcodeÚco_flagsÚAttributeErrorr	   s    r   Úis_generatorr   ,   sG   € ðÝŒ}×'Ò'¨Ñ-Ô-Ô6¸Ñ;Ð;øÝð ð ð àˆuˆuðøøøs   ‚&) ©
7¶7c                 ó  — dd l }t          j                              |j        | ¦  «        ¦  «        }t          j                             | ¦  «        j        }|                     |¦  «        r|                     |¦  «        }d||dz   fz  S )Nr   z%s:%dé   )	r   ÚpyÚpathÚlocalÚgetfileÚbuiltinÚ_getcodeÚco_firstlinenoÚrelto)ÚfunctionÚcurdirr   ÚfnÚlinenos        r   Úgetlocationr,   4   sz   € Ø€N€N€NÝ	Œ�Š��w” xÑ0Ô0Ñ	1Ô	1€BÝŒZ× Ò  Ñ*Ô*Ô9€FØ	‡x‚x�ÑÔð Ø�XŠX�fÑÔˆØ�R˜ ™�NÑ"Ð"r   c                 ó  ‡— t          | dd¦  «        }|sdS t          j                             dt          j                             dd¦  «        ¦  «        Š‰�t	          ˆfd„|D ¦   «         ¦  «        S t	          |¦  «        S )z? return number of arguments used up by mock arguments (if any) Ú	patchingsNr   Úmockzunittest.mockc                 ó>   •— g | ]}|j         s|j        ‰j        u ¯|‘ŒS r   )Úattribute_nameÚnewÚDEFAULT)Ú.0Úpr/   s     €r   ú
<listcomp>z'num_mock_patch_args.<locals>.<listcomp>D   s@   ø€ ð Kð Kð K˜!Ø Ô/ðKØ45´E¸T¼\Ð4IÐ4Ið Ø4IÐ4IÐ4Ir   )ÚgetattrÚsysÚmodulesÚgetÚlen)r(   r.   r/   s     @r   Únum_mock_patch_argsr<   =   s™   ø€ å˜ +¨tÑ4Ô4€IØð ØˆqÝŒ;�?Š?˜6¥3¤;§?¢?°?ÀDÑ#IÔ#IÑJÔJ€DØÐÝð Kð Kð Kð K˜yð Kñ Kô Kñ Lô Lð 	Låˆy‰>Œ>Ðr   c           	      ó$  — | }t          |d¦  «        r|j        }t          |d¦  «        °|€t          j        | ¦  «        rdpd}|| k    r|t	          | ¦  «        z  }|} t          | t          j        ¦  «        r�t          j        t          j
                             | j        ¦  «        ¦  «        d         }| }|t          |j        ¦  «        d …         }|j        r|j        D ]}|                     |¦  «         Œn7t          j        t          j
                             | ¦  «        ¦  «        d         }t#          | dt#          | dd ¦  «        ¦  «        pd}t          |¦  «        }|rt%          ||| …         ¦  «        S t%          ||d …         ¦  «        S )NÚ__wrapped__r   r   Úfunc_defaultsÚ__defaults__r   )Úhasattrr>   r   Úismethodr<   Ú
isinstanceÚ	functoolsÚpartialÚgetargsr   r   r   r
   r;   ÚargsÚkeywordsÚremover7   Útuple)r(   Ú
startindexÚrealfunctionÚargnamesrE   ÚkwÚdefaultsÚnumdefaultss           r   ÚgetfuncargnamesrQ   I   s   € ð €LÝ
�, Ñ
.Ô
.ð 0Ø#Ô/ˆõ �, Ñ
.Ô
.ð 0àÐÝÔ% hÑ/Ô/Ð5°AÐ:¸ˆ
Ø�xÒÐØÕ)¨(Ñ3Ô3Ñ3ˆ
ØˆÝ�(�IÔ-Ñ.Ô.ð JÝ”?¥7¤=×#;Ò#;¸H¼MÑ#JÔ#JÑKÔKÈAÔNˆØˆØ�C ¤Ñ-Ô-Ð.Ð.Ô/ˆØÔð 	$ØÔ&ð $ð $�Ø—’ Ñ#Ô#Ð#Ð#øå”?¥7¤=×#;Ò#;¸HÑ#EÔ#EÑFÔFÀqÔIˆÝ�x Ý˜x¨¸Ñ>Ô>ñ@ô @ð FØCEð å�h‘-”-€KØð 8Ý�X˜j¨+¨Ð5Ô6Ñ7Ô7Ð7Ý�˜*˜+˜+Ô&Ñ'Ô'Ð'r   é   )rR   é   c                 óD   — t          | t          t          j        f¦  «        S )a   Return true if the object is a class. Overrides inspect.isclass for
        python 2.6 because it will return True for objects which always return
        something on __getattr__ calls (see #1035).
        Backport of https://hg.python.org/cpython/rev/35bf8f7a8edc
        )rC   ÚtypeÚtypesÚ	ClassType)Úobjects    r   ÚisclassrY   g   s   € õ ˜&¥4­¬Ð"9Ñ:Ô:Ð:r   c                 óÜ   — t          | t          ¦  «        r0| r,t          j        | ¦  «        \  }}|                     d¦  «        S dS |                      d¦  «                             d¦  «        S )u=  If val is pure ascii, returns it as a str().  Otherwise, escapes
        bytes objects into a sequence of escaped bytes:

        b'ÃƒÂ´Ã…Ã–' -> u'\xc3\xb4\xc5\xd6'

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

        '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.

        Úasciir   Úunicode_escape)rC   ÚbytesÚcodecsÚescape_encodeÚdecodeÚencode)ÚvalÚencoded_bytesÚ_s      r   Ú_escape_stringsre   u   sp   € õ$ �c�5Ñ!Ô!ð 		@Øð å#)Ô#7¸Ñ#<Ô#<Ñ �˜qØ$×+Ò+¨GÑ4Ô4Ð4ð �rà—:’:Ð.Ñ/Ô/×6Ò6°wÑ?Ô?Ð?r   c                 óÌ   — t          | t          ¦  «        r;	 |                      d¦  «        S # t          $ r |                      d¦  «        cY S w xY w|                      d¦  «        S )a  In py2 bytes and str are the same type, so return if it's a bytes
        object, return it unchanged if it is a full ascii string,
        otherwise escape it into its binary form.

        If it's a unicode string, change the unicode characters into
        unicode escapes.

        r[   zstring-escapezunicode-escape)rC   r]   ra   ÚUnicodeDecodeError)rb   s    r   re   re   ”   su   € õ �c�5Ñ!Ô!ð 	0ð3Ø—z’z 'Ñ*Ô*Ð*øÝ%ð 3ð 3ð 3Ø—z’z /Ñ2Ô2Ð2Ð2Ð2ð3øøøð —:’:Ð.Ñ/Ô/Ð/s   —, ¬AÁAc                 ó–   — t          | d¦  «        r| j        } t          | d¦  «        °t          | t          j        ¦  «        r| j        } | S )zq gets the real function object of the (possibly) wrapped object by
    functools.wraps or functools.partial.
    r>   )rA   r>   rC   rD   rE   r
   )Úobjs    r   Úget_real_funcrj   ¦   sR   € õ �#�}Ñ
%Ô
%ð ØŒoˆõ �#�}Ñ
%Ô
%ð å�#•yÔ(Ñ)Ô)ð ØŒhˆØ€Jr   c                 óÚ   — t          | ¦  «        } t          | d¦  «        r| j        } t          j                             | ¦  «        }t          |d         t          ¦  «        s
J | ¦   «         ‚|S )NÚplace_asr   )rj   rA   rl   r   r   ÚgetfslinenorC   Úint)ri   Úfslinenos     r   rm   rm   ±   sd   € å
˜Ñ
Ô
€CÝˆs�JÑÔð ØŒlˆÝŒ}×(Ò(¨Ñ-Ô-€HÝ�h˜q”k¥3Ñ'Ô'Ð,Ð,¨Ñ,Ô,Ð,Ø€Or   c                 ój   — 	 | j         S # t          $ r 	 | j        cY S # t          $ r | cY cY S w xY ww xY wr   )Ú__func__r   Úim_funcr	   s    r   Ú	getimfuncrs   »   se   € ðØŒ}ÐøÝð ð ð ð	Ø”<ÐÐÐøÝð 	ð 	ð 	ØˆKˆKˆKˆKˆKð	øøøðøøøs    ‚	 ‰
2”š2�.©2­.®2c                 óJ   — 	 t          | ||¦  «        S # t          $ r |cY S w xY w)z� Like getattr but return default upon any Exception.

    Attribute access can potentially fail for 'evil' Python objects.
    See issue214
    )r7   Ú	Exception)rX   ÚnameÚdefaults      r   Úsafe_getattrrx   Å   s=   € ðÝ�v˜t WÑ-Ô-Ð-øÝð ð ð Øˆˆˆðøøøs   ‚ “"¡"c                  ó"   — t           j        dk    S )aY  Return if the test suite should fail if a @expectedFailure unittest test PASSES.

    From https://docs.python.org/3/library/unittest.html?highlight=unittest#unittest.TestResult.wasSuccessful:
        Changed in version 3.4: Returns False if there were any
        unexpectedSuccesses from tests marked with the expectedFailure() decorator.
    )r   é   )r8   Úversion_infor   r   r   Ú)_is_unittest_unexpected_success_a_failurer|   Ñ   s   € õ Ô˜vÒ%Ð%r   r   )(Ú__doc__r8   r   rV   ÚrerD   r    r   ÚenumÚImportErrorr{   Ú_PY3Ú_PY2rU   ÚNoneTyperX   ÚNOTSETrA   r   Ú
isfunctionrY   r7   r   ÚcompileÚ
REGEX_TYPEr   r,   r<   rQ   r^   r]   r   ÚSTRING_TYPESre   Úunicoderj   rm   rs   rx   r|   r   r   r   ú<module>rŠ      s@  ððð ð €
€
€
Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð à 	€	€	€	à €€€ðØ€K€K€K€KøØð ð ð à€D€D€Dðøøøð Ô˜&Ò €Ø€x€ð ˆ4�‰:Œ:€Ø	ˆ‰Œ€à
€7ˆ7�KÑ Ô ð @ð,ð ,ð ,ð ,ð@ð @ð @ð Ô€
Ø
Œ/€àˆG�C˜ l lÑ3Ô3€	àˆT�*�"”*˜R‘.”.Ñ!Ô!€
ðð ð ð#ð #ð #ð	ð 	ð 	ð(ð (ð (ð (ð: Ô�R�a�RÔ˜FÒ"Ð"ð;ð ;ð ;ð ð 30Ø€M€M€Mà˜#�:€Lð@ð @ð @ð @ð: ˜#˜wÐ&€Lð0ð 0ð 0ð$ð ð ðð ð ðð ð ð	ð 	ð 	ð&ð &ð &ð &ð &s    % ¥/®/