§
    dŠtj-5  ã                   ó†  — 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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 )é    N)Ú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    úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/greenlet/tests/leakcheck.pyÚignores_leakcheckr   J   s   € ð !€DÔØ€Kó    c                 ó   ‡ ‡— ˆ ˆfd„}|S )a  
    Return a decorator that marks the function to be ignored during
    leakchecks (see `ignores_leakcheck`) when *condition* is true.

    *message* describes why the leakcheck is ignored. When *condition*
    is false, the function is returned unchanged.
    c                 ó8   •— ‰rt          | ¦  «        } ‰| _        | S ©N)r   Úignore_leakcheck_reason)r   Ú	conditionÚmessages    €€r   Ú	decoratorz'ignores_leakcheck_if.<locals>.decoratora   s%   ø€ Øð 	3Ý$ TÑ*Ô*ˆDØ+2ˆDÔ(Øˆr   © )r   r   r   s   `` r   Úignores_leakcheck_ifr   Y   s*   øø€ ðð ð ð ð ð ð
 Ðr   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   h   s3   € ð  €DÔÝð >Ø7�xŒ}Ð6Ñ7Ô7¸Ñ=Ô=ˆØ€Kr   c                 óT   — t           j        dd…         dk    rt          | ¦  «        S | S )z`
    Mark the function as known to leak (fails refcount leakchecks) on Python 3.14 or less.
    Né   )é   é   )ÚsysÚversion_infor   r   s    r   Ú fails_leakcheck_on_py314_or_lessr&   q   s.   € õ Ô˜˜˜Ô˜wÒ&Ð&Ý˜tÑ$Ô$Ð$Ø€Kr   c                   ó   — e Zd ZdS )ÚLeakCheckErrorN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r(   r(   y   s   € € € € € Ø€Dr   r(   Ú
getobjectsc                   ó   — e Zd Zd„ Zd„ ZdS )Ú_MockGCc                 ó*   — t          j        d¦  «        S )Nr   )r$   r,   ©Úselfs    r   Úget_objectsz_MockGC.get_objects�   s   € Ý”> !Ñ$Ô$Ð$r   c                 ó,   — t          t          |¦  «        S r   )ÚgetattrÚgc)r1   Únames     r   Ú__getattr__z_MockGC.__getattr__ƒ   s   € Ý�2˜tÑ$Ô$Ð$r   N)r)   r*   r+   r2   r7   r   r   r   r.   r.   €   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_leakcheckr9   ˆ   s	   € ð ˆr   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú!ignores_types_in_strict_leakcheckc                 ó   — || _         d S r   )Útypes)r1   r=   s     r   Ú__init__z*ignores_types_in_strict_leakcheck.__init__“   s   € ØˆŒ
ˆ
ˆ
r   c                 ó   — | j         |_        |S r   )r=   Úleakcheck_ignore_types)r1   r   s     r   Ú__call__z*ignores_types_in_strict_leakcheck.__call__•   s   € Ø&*¤jˆÔ#Øˆr   N)r)   r*   r+   r>   rA   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)r1   rF   rG   s      r   r>   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__ÚvaluesrJ   ÚIGNORED_TYPESr)   ÚIGNORED_TYPE_NAMES)r1   ÚobjÚkindÚexact_method_equalsÚxs        r   rN   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)ÚlimitrI   Úfilter)ÚobjgraphÚgrowthrI   rN   r0   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)Ú.0r6   Ú_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)r1   r_   ÚlinesÚwidthr6   Ú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)r5   Ú	isenabledÚdisablerK   rF   ÚsetUpÚskipTearDownrG   ÚtearDownÚ
doCleanupsÚenable)r1   Ú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_cacher`   r0   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   )r!   r"   Féýÿÿÿ)r   r   r   é   éüÿÿÿr"   éÿÿÿÿzrefcount increased by rg   r!   é   é   )rH   r5   Úgarbager(   rc   Úsumrp   rm   )r1   r_   rH   ro   r\   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)
Nr"   r   FTr@   r   c              3   ó&   K  — | ]}|d          V — ŒdS )r!   Nr   )rd   Ústats     r   rf   z,_RefCountChecker.__call__.<locals>.<genexpr>Q  s&   è è € Ð'CÐ'C°D¨¨Q¬Ð'CÐ'CÐ'CÐ'CÐ'CÐ'Cr   z	Expected z to leak but it did not.)Úranger5   Úcollectr4   rG   rF   Úexpect_greenlet_leakrJ   r`   rŒ   r|   r�   rH   ri   r‹   r(   )r1   ry   rz   re   Úexpect_failurer_   s         r   rA   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+   rU   rV   r>   rN   r`   rp   r|   r�   rŒ   rA   r   r   r   rC   rC   ™   s¢   € € € € € ð
 €MðÐð	!ð 	!ð 	!ð(ð (ð (ðT>ð >ð >ð
ð 
ð 
ðð ð ð"ð ð ð/ð /ð /ðb_ð _ð _ð _ð _r   rC   c                 óð   ‡ — t          ‰ dd¦  «        st          rBt          ‰ dd ¦  «        }|r-t          s&t          d‰ j        ›d|›�t          j        ¬¦  «         ‰ S t          ‰ ¦  «        ˆ fd„¦   «         }|S )Nr   Fr   zIgnoring leakchecks for z: )Úfilec                 óÚ   •— 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.)r4   r   ÚSkipTestÚONLY_FAILING_LEAKCHECKSrC   )r1   ry   rz   Úmethods      €r   Úwrapperzwrap_refcount.<locals>.wrapperc  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   )r4   ÚSKIP_LEAKCHECKSÚprintr)   r$   Ústderrr   )r™   Úreasonrš   s   `  r   Úwrap_refcountrŸ   Y  s¥   ø€ ÝˆvÐ)¨5Ñ1Ô1ð µ_ð Ý˜Ð!:¸DÑAÔAˆØð 	�/ð 	ÝˆEØ4:´O°O°OÀVÀVÐLÝ”Zðñ ô ð ð ˆå
ˆ6�]„]ð<ð <ð <ð <ñ „]ð<ð €Nr   )Úosr$   r5   Ú	functoolsr   r   r^   ÚenvironÚgetÚRUNNING_ON_GITHUB_ACTIONSÚRUNNING_ON_TRAVISÚRUNNING_ON_APPVEYORÚRUNNING_ON_CIÚRUNNING_ON_MANYLINUXr›   r   r˜   r   r   r   r&   ÚAssertionErrorr(   ÚhasattrÚobjectr.   r9   r;   rC   rŸ   r   r   r   ú<module>r¬      s<  ðð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   