§
    VøÁil1  ã                   ó†  — d dl mZ d dlZd dlZd dlZd dlmZ d dlZd dlZej	         
                    d¦  «        Zej	         
                    d¦  «        peZej	         
                    d¦  «        ZepeZej	         
                    d¦  «        Zepej	         
                    d¦  «        Zej	         
                    d	¦  «        Zej	         
                    d
¦  «        Zd„ Zd„ Z G d„ de¦  «        Z eed¦  «        r  G d„ de¦  «        Z e¦   «         e_        eZnd„ Z G d„ de¦  «        Z G d„ de¦  «        Zd„ ZdS )é    )Úprint_functionN)ÚwrapsÚGITHUB_ACTIONSÚTRAVISÚAPPVEYORÚGREENLET_MANYLINUXÚGREENLET_SKIP_LEAKCHECKSÚ GREENLET_SKIP_FAILING_LEAKCHECKSÚ GREENLET_ONLY_FAILING_LEAKCHECKSc                 ó   — d| _         | S )aç  
    Ignore the given object during leakchecks.

    Can be applied to a method, in which case the method will run, but
    will not be subject to leak checks.

    If applied to a class, the entire class will be skipped during leakchecks. This
    is intended to be used for classes that are very slow and cause problems such as
    test timeouts; typically it will be used for classes that are subclasses of a base
    class and specify variants of behaviour (such as pool sizes).
    T)Úignore_leakcheck©Úfuncs    úb/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/greenlet/tests/leakcheck.pyÚignores_leakcheckr   L   s   € ð !€DÔØ€Kó    c                 ó\   — d| _         t          r t          j        d¦  «        | ¦  «        } | S )z2
    Mark that the function is known to leak.
    TzSkipping known failures)Úfails_leakcheckÚSKIP_FAILING_LEAKCHECKSÚunittestÚskipr   s    r   r   r   [   s3   € ð  €DÔÝð >Ø7�xŒ}Ð6Ñ7Ô7¸Ñ=Ô=ˆØ€Kr   c                   ó   — e Zd ZdS )ÚLeakCheckErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   r   r   d   s   € € € € € Ø€Dr   r   Ú
getobjectsc                   ó   — e Zd Zd„ Zd„ ZdS )Ú_MockGCc                 ó*   — t          j        d¦  «        S )Nr   )Úsysr   ©Úselfs    r   Úget_objectsz_MockGC.get_objectsl   s   € Ý”> !Ñ$Ô$Ð$r   c                 ó,   — t          t          |¦  «        S ©N)ÚgetattrÚgc)r$   Únames     r   Ú__getattr__z_MockGC.__getattr__n   s   € Ý�2˜tÑ$Ô$Ð$r   N)r   r   r   r%   r+   r   r   r   r    r    k   s2   € € € € € ð	%ð 	%ð 	%ð	%ð 	%ð 	%ð 	%ð 	%r   r    c                 ó   — | S )a  
        Decorator for a function that is known to fail when running
        strict (``sys.getobjects()``) leakchecks.

        This type of leakcheck finds all objects, even those, such as
        strings, which are not tracked by the garbage collector.
        r   r   s    r   Úfails_strict_leakcheckr-   s   s	   € ð ˆr   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú!ignores_types_in_strict_leakcheckc                 ó   — || _         d S r'   )Útypes)r$   r1   s     r   Ú__init__z*ignores_types_in_strict_leakcheck.__init__~   s   € ØˆŒ
ˆ
ˆ
r   c                 ó   — | j         |_        |S r'   )r1   Úleakcheck_ignore_types)r$   r   s     r   Ú__call__z*ignores_types_in_strict_leakcheck.__call__€   s   € Ø&*¤jˆÔ#Øˆr   N)r   r   r   r2   r5   r   r   r   r/   r/   }   s2   € € € € € ðð ð ðð ð ð ð r   r/   c                   óF   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )Ú_RefCountCheckerr   )Úuop_executorc                 óZ   — || _         || _        g | _        i | _        d| _        d| _        d S )Nr   F)ÚtestcaseÚfunctionÚdeltasÚ
peak_statsÚignored_typesÚneeds_setUp)r$   r:   r;   s      r   r2   z_RefCountChecker.__init__—   s6   € Ø ˆŒØ ˆŒØˆŒØˆŒØˆÔð !ˆÔÐÐr   c                 ó˜  — || u rdS t          |¦  «        }|t          | j        ¦  «        k    rW	 | j                             |¦  «        }n.# t          $ r! | j                             |¦  «        dk    }Y nw xY w|t
          ur|rdS | j                             ¦   «         D ]	}||u r dS Œ
|| j        v s|| j	        v s|j
        | j        v rdS dS )NFr   T)ÚtypeÚ_include_object_pÚ__eq__ÚAttributeErrorÚ__cmp__ÚNotImplementedÚ__dict__Úvaluesr>   ÚIGNORED_TYPESr   ÚIGNORED_TYPE_NAMES)r$   ÚobjÚkindÚexact_method_equalsÚxs        r   rB   z"_RefCountChecker._include_object_p¢   s  € ð
 �$ˆ;ˆ;Ø�5Ý�C‰yŒyˆð •4˜Ô.Ñ/Ô/Ò/Ð/ðOà&*Ô&<×&CÒ&CÀCÑ&HÔ&HÐ#Ð#øÝ!ð Oð Oð Oð '+Ô&<×&DÒ&DÀSÑ&IÔ&IÈQÒ&NÐ#Ð#Ð#ð	Oøøøð #­.Ð8Ð8Ð=PÐ8Ø�uð ”×%Ò%Ñ'Ô'ð 	ð 	ˆAØ�aˆxˆxØ�u�uð ð
 �DÔ&Ð&Ð&Ø�tÔ)Ð)Ð)ØŒ} Ô 7Ð7Ð7à�5ð ˆts   ¯A
 Á
(A5Á4A5c                 óD   — t          j        d | j        | j        ¬¦  «        S )N)Úlimitr=   Úfilter)ÚobjgraphÚgrowthr=   rB   r#   s    r   Ú_growthz_RefCountChecker._growthÌ   s'   € ÝŒ T°d´oØ&*Ô&<ð>ñ >ô >ð 	>r   c                 ó¸   — |sdS g }t          d„ |D ¦   «         ¦  «        }|D ]"\  }}}|                     d||||fz  ¦  «         Œ#d                     |¦  «        }|S )Nz<Unable to calculate growth>c              3   ó<   K  — | ]\  }}}t          |¦  «        V — Œd S r'   )Úlen)Ú.0r*   Ú_s      r   ú	<genexpr>z0_RefCountChecker._report_diff.<locals>.<genexpr>Õ   s.   è è € Ð7Ð7¡* $¨¨1•C˜‘I”IÐ7Ð7Ð7Ð7Ð7Ð7r   z%-*s%9d %+9dú
)ÚmaxÚappendÚjoin)r$   rS   ÚlinesÚwidthr*   ÚcountÚdeltaÚdiffs           r   Ú_report_diffz_RefCountChecker._report_diffÐ   s‚   € Øð 	2Ø1Ð1àˆÝÐ7Ð7°Ð7Ñ7Ô7Ñ7Ô7ˆØ"(ð 	Gð 	GÑˆD�%˜Ø�LŠL˜¨5°$¸¸uÐ*EÑEÑFÔFÐFÐFà�yŠy˜ÑÔˆØˆr   c                 óP  — t          j        ¦   «         }t          j        ¦   «          | j        r%| j                             ¦   «          d| j        _        	  | j        | j        g|¢R i |¤Ž | j                             ¦   «          | j         	                    ¦   «          d| j        _        d| _        |rt          j
        ¦   «          d S d S # | j                             ¦   «          | j         	                    ¦   «          d| j        _        d| _        |rt          j
        ¦   «          w w xY w)NFT)r)   Ú	isenabledÚdisabler?   r:   ÚsetUpÚskipTearDownr;   ÚtearDownÚ
doCleanupsÚenable)r$   ÚargsÚkwargsÚ
gc_enableds       r   Ú	_run_testz_RefCountChecker._run_testÝ   s  € Ý”\‘^”^ˆ
Ý
Œ
‰ŒˆàÔð 	/ØŒM×ÒÑ!Ô!Ð!Ø).ˆDŒMÔ&ð	ØˆDŒM˜$œ-Ð9¨$Ð9Ð9Ð9°&Ð9Ð9Ð9àŒM×"Ò"Ñ$Ô$Ð$ØŒM×$Ò$Ñ&Ô&Ð&Ø)-ˆDŒMÔ&Ø#ˆDÔØð Ý”	‘”���ðð øð	 ŒM×"Ò"Ñ$Ô$Ð$ØŒM×$Ò$Ñ&Ô&Ð&Ø)-ˆDŒMÔ&Ø#ˆDÔØð Ý”	‘”��ðøøøs   ÁC ÃAD%c                 óò   — dt           j        v r$t           j        d                              ¦   «          dt           j        v r$t           j        d                              ¦   «          |                      ¦   «         S )NÚurlparsezurllib.parse)r"   ÚmodulesÚclear_cacherT   r#   s    r   Ú_growth_afterz_RefCountChecker._growth_afterî   s^   € ð �œÐ$Ð$ÝŒK˜
Ô#×/Ò/Ñ1Ô1Ð1Ø�Sœ[Ð(Ð(ÝŒK˜Ô'×3Ò3Ñ5Ô5Ð5à�|Š|‰~Œ~Ðr   c                 ó>  — | j         }|sdS t          j        rt          dt          j        ›�¦  «        ‚|dd …         ddgk    rt	          |¦  «        dv rdS |dd …         g d¢k    rdS t	          |¦  «        d	k    rt          |d
d …         ¦  «        dk    rdS t	          |¦  «        dk    rZ|d         dk    rN|d         |d         k    r<|d         |d         k    r*|                      |¦  «        }t          d|›d|›�¦  «        ‚t          |dd …         ¦  «        dk    s<t          |d
d …         ¦  «        dk    s!|d
d …                              d¦  «        dk    rd}nd}t	          |¦  «        |k    r(t          d|›d|                      |¦  «        ›�¦  «        ‚dS )NTz Generated uncollectable garbage éþÿÿÿr   )é   é   Féýÿÿÿ)r   r   r   é   éüÿÿÿry   éÿÿÿÿzrefcount increased by r[   rx   é   é   )r<   r)   Úgarbager   rW   Úsumrd   ra   )r$   rS   r<   rc   rP   s        r   Ú_check_deltasz_RefCountChecker._check_deltasø   sÜ  € ð
 ”ˆØð 	à�4åŒ:ð 	WÝ �.ÍÌÈÐ!UÑVÔVÐVð �"�#�#Œ;˜1˜a˜&Ò Ð ¥S¨¡[¤[°FÐ%:Ð%:Ø�5à�"�#�#Œ;˜)˜)˜)Ò#Ð#Ø�5åˆv‰;Œ;˜!ÒÐ¥ F¨2¨3¨3¤KÑ 0Ô 0°AÒ 5Ð 5Ø�5åˆv‰;Œ;˜!ÒÐ  r¤
¨Q¢ °6¸"´:ÀÈÄÒ3KÐ3KÐPVÐWYÔPZÐ^dÐegÔ^hÒPhÐPhØ×$Ò$ VÑ,Ô,ˆDÝ �.À6À6À6È4È4Ð!PÑQÔQÐQõ ˆv�b�c�cŒ{ÑÔ˜qÒ Ð ¥C¨¨r¨s¨s¬Ñ$4Ô$4¸Ò$9Ð$9¸VÀBÀCÀC¼[×=NÒ=NÈqÑ=QÔ=QÐUVÒ=VÐ=VàˆEˆEàˆEÝˆv‰;Œ;˜%ÒÐÝ �.Ø$* F FØ$(×$5Ò$5°fÑ$=Ô$=Ð$=ð"?ñ @ô @ð @ð
 ˆtr   c                 ó^  — t          d¦  «        D ]}t          j        ¦   «          Œt          | j        dd¦  «        }|rd| j        _        t          | j        dd¦  «        | _        |                      ¦   «         }	 |  	                    |¦  «        rp|  
                    ||¦  «         |                      ¦   «         }| j                             t          d„ |D ¦   «         ¦  «        ¦  «         |  	                    |¦  «        °p|rt          d| j        ›d	�¦  «        ‚d S # t          $ r |s‚ Y d S w xY w)
Nry   r   FTr4   r   c              3   ó&   K  — | ]}|d          V — ŒdS )rx   Nr   )rX   Ústats     r   rZ   z,_RefCountChecker.__call__.<locals>.<genexpr><  s&   è è € Ð'CÐ'C°D¨¨Q¬Ð'CÐ'CÐ'CÐ'CÐ'CÐ'Cr   z	Expected z to leak but it did not.)Úranger)   Úcollectr(   r;   r:   Úexpect_greenlet_leakr>   rT   r‚   rp   ru   r<   r]   r�   r   )r$   rm   rn   rY   Úexpect_failurerS   s         r   r5   z_RefCountChecker.__call__)  s_  € Ý�q‘”ð 	ð 	ˆAÝŒJ‰LŒLˆLˆLå  ¤Ð0AÀ5ÑIÔIˆØð 	6Ø15ˆDŒMÔ.Ý$ T¤]Ð4LÈbÑQÔQˆÔð —’‘”ˆð	_Ø×$Ò$ VÑ,Ô,ð FØ—’˜t VÑ,Ô,Ð,à×+Ò+Ñ-Ô-�à”×"Ò"¥3Ð'CÐ'C¸FÐ'CÑ'CÔ'CÑ#DÔ#DÑEÔEÐEð ×$Ò$ VÑ,Ô,ð Fð ð _Ý$�nÈdÌmÈmÈmÐ%]Ñ^Ô^Ð^ð_ð _øõ	 ð 	ð 	ð 	Ø!ð Øðð ð ð	øøøs   Á:BD ÄD,Ä+D,N)r   r   r   rI   rJ   r2   rB   rT   rd   rp   ru   r‚   r5   r   r   r   r7   r7   „   s¢   € € € € € ð
 €MðÐð	!ð 	!ð 	!ð(ð (ð (ðT>ð >ð >ð
ð 
ð 
ðð ð ð"ð ð ð/ð /ð /ðb_ð _ð _ð _ð _r   r7   c                 óp   ‡ — t          ‰ dd¦  «        st          r‰ S t          ‰ ¦  «        ˆ fd„¦   «         }|S )Nr   Fc                 óÚ   •— t          | dd¦  «        rt          j        d¦  «        ‚t          r%t          ‰dd¦  «        st          j        d¦  «        ‚ t	          | ‰¦  «        ||¦  «        S )Nr   Fz$This class ignored during leakchecksr   z(Only running tests that fail leakchecks.)r(   r   ÚSkipTestÚONLY_FAILING_LEAKCHECKSr7   )r$   rm   rn   Úmethods      €r   Úwrapperzwrap_refcount.<locals>.wrapperH  sx   ø€ å�4Ð+¨UÑ3Ô3ð 	LÝÔ#Ð$JÑKÔKÐKÝ"ð 	P­7°6Ð;LÈeÑ+TÔ+Tð 	PÝÔ#Ð$NÑOÔOÐOØ-Õ  fÑ-Ô-¨d°FÑ;Ô;Ð;r   )r(   ÚSKIP_LEAKCHECKSr   )rŽ   r�   s   ` r   Úwrap_refcountr‘   D  sT   ø€ ÝˆvÐ)¨5Ñ1Ô1ð µ_ð Øˆå
ˆ6�]„]ð<ð <ð <ð <ñ „]ð<ð €Nr   )Ú
__future__r   Úosr"   r)   Ú	functoolsr   r   rR   ÚenvironÚgetÚRUNNING_ON_GITHUB_ACTIONSÚRUNNING_ON_TRAVISÚRUNNING_ON_APPVEYORÚRUNNING_ON_CIÚRUNNING_ON_MANYLINUXr�   r   r�   r   r   ÚAssertionErrorr   ÚhasattrÚobjectr    r-   r/   r7   r‘   r   r   r   ú<module>rŸ      s0  ðð0 &Ð %Ð %Ð %Ð %Ð %à 	€	€	€	Ø 
€
€
€
Ø 	€	€	€	à Ð Ð Ð Ð Ð Ø €€€ð €€€ðB œJŸNšNÐ+;Ñ<Ô<Ð Ø”J—N’N 8Ñ,Ô,ÐIÐ0IÐ Ø”j—n’n ZÑ0Ô0Ð Ø!Ð8Ð%8€Ø”z—~’~Ð&:Ñ;Ô;Ð Ø&ÐT¨"¬*¯.ª.Ð9SÑ*TÔ*T€Øœ*Ÿ.š.Ð)KÑLÔLÐ Øœ*Ÿ.š.Ð)KÑLÔLÐ ðð ð ðð ð ð	ð 	ð 	ð 	ð 	�^ñ 	ô 	ð 	ð €7ˆ3�ÑÔð ð%ð %ð %ð %ð %�&ñ %ô %ð %ð
 �'‘)”)€H„KØ,ÐÐðð ð ðð ð ð ð ¨ñ ô ð ð~_ð ~_ð ~_ð ~_ð ~_�vñ ~_ô ~_ð ~_ð@ð ð ð ð r   