Ë
    ¬Œj-5  ã                   ó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                  j                  d«      Z	e j                  j                  d«      xs e	Z
e j                  j                  d«      Ze
xs eZe j                  j                  d«      Zexs e j                  j                  d«      Ze j                  j                  d«      Ze j                  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y)é    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    úb/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/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                 ó0   •— ‰rt        | «      } ‰| _        | S ©N)r   Úignore_leakcheck_reason)r   Ú	conditionÚmessages    €€r   Ú	decoratorz'ignores_leakcheck_if.<locals>.decoratora   s   ø€ ÙÜ$ TÓ*ˆDØ+2ˆDÔ(Øˆr   © )r   r   r   s   `` r   Úignores_leakcheck_ifr   Y   s   ù€ õð
 Ðr   c                 óV   — 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   s*   € ð  €DÔÝØ7Œx�}‰}Ð6Ó7¸Ó=ˆØ€Kr   c                 óH   — 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y)ÚLeakCheckErrorN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r(   r(   y   s   „ Ør   r(   Ú
getobjectsc                   ó   — e Zd Zd„ Zd„ Zy)Ú_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.   €   s   „ ò	%ó	%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y)Ú!ignores_types_in_strict_leakcheckc                 ó   — || _         y 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¡jˆÔ#Øˆr   N)r)   r*   r+   r>   rA   r   r   r   r;   r;   ’   s   „ òór   r;   c                   óD   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)Ú_RefCountCheckerr   )Úuop_executorc                 óX   — || _         || _        g | _        i | _        d| _        d| _        y )Nr   F)ÚtestcaseÚfunctionÚdeltasÚ
peak_statsÚignored_typesÚneeds_setUp)r1   rF   rG   s      r   r>   z_RefCountChecker.__init__¬   s0   € Ø ˆŒØ ˆŒØˆŒØˆŒØˆÔð !ˆÕr   c                 ó°  — || u ryt        |«      }|t        | j                  «      k(  r'	 | j                  j                  |«      }|t
        ur|ry| j                  j                  «       D ]  }||u sŒ y || j                  v s&|| j                  v s|j                  | j                  v ryy# t        $ r! | j                  j	                  |«      dk(  }Y Œ�w xY w)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å   € ð
 �$‰;ØÜ�C‹yˆð ”4˜×.Ñ.Ó/Ò/ðOà&*×&<Ñ&<×&CÑ&CÀCÓ&HÐ#ð #¬.Ñ8Ñ=PØð —‘×%Ñ%Ö'ˆAØ�aŠxÙð (ð �D×&Ñ&Ñ&Ø�t×)Ñ)Ñ)Ø�}‰} × 7Ñ 7Ñ7àð øô/ "ò Oð '+×&<Ñ&<×&DÑ&DÀSÓ&IÈQÑ&NÒ#ð	Oús   ªB+ Â+'CÃCc                 óZ   — t        j                  d | j                  | j                  ¬«      S )N)ÚlimitrI   Úfilter)ÚobjgraphÚgrowthrI   rN   r0   s    r   Ú_growthz_RefCountChecker._growthá   s$   € Ü�‰ T°d·o±oØ&*×&<Ñ&<ô>ð 	>r   c                 óœ   — |syg }t        d„ |D «       «      }|D ]  \  }}}|j                  d||||fz  «       Œ  dj                  |«      }|S )Nz<Unable to calculate growth>c              3   ó:   K  — | ]  \  }}}t        |«      –— Œ y ­wr   )Úlen)Ú.0r6   Ú_s      r   Ú	<genexpr>z0_RefCountChecker._report_diff.<locals>.<genexpr>ê   s   è ø€ Ð7±¡* $¨¨1”C˜—I±ùs   ‚z%-*s%9d %+9dÚ
)ÚmaxÚappendÚjoin)r1   r_   ÚlinesÚwidthr6   ÚcountÚdeltaÚdiffs           r   Ú_report_diffz_RefCountChecker._report_diffå   s]   € ÙØ1àˆÜÑ7±Ó7Ó7ˆÛ"(ÑˆD�%˜Ø�L‰L˜¨5°$¸¸uÐ*EÑEÕFð #)ð �y‰y˜ÓˆØˆr   c                 óš  — t        j                  «       }t        j                  «        | j                  r+| j                  j                  «        d| j                  _        	  | j                  | j                  g|¢­i |¤Ž | j                  j                  «        | j                  j                  «        d| j                  _        d| _        |rt        j                  «        y y # | j                  j                  «        | 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‰M×ÑÔ!Ø).ˆD�M‰MÔ&ð	ØˆD�M‰M˜$Ÿ-™-Ð9¨$Ò9°&Ò9à�M‰M×"Ñ"Ô$Ø�M‰M×$Ñ$Ô&Ø)-ˆD�M‰MÔ&Ø#ˆDÔÙÜ—	‘	•ð øð	 �M‰M×"Ñ"Ô$Ø�M‰M×$Ñ$Ô&Ø)-ˆD�M‰MÔ&Ø#ˆDÔÙÜ—	‘	•ð ús   Á! C% Ã%A%E
c                 óî   — dt         j                  v r!t         j                  d   j                  «        dt         j                  v r!t         j                  d   j                  «        | j                  «       S )NÚurlparsezurllib.parse)r$   ÚmodulesÚclear_cacher`   r0   s    r   Ú_growth_afterz_RefCountChecker._growth_after  sR   € ð œŸ™Ñ$Ü�K‰K˜
Ñ#×/Ñ/Ô1ØœSŸ[™[Ñ(Ü�K‰K˜Ñ'×3Ñ3Ô5à�|‰|‹~Ðr   c                 ót  — | j                   }|syt        j                  rt        dt        j                  ›�«      ‚|dd  ddgk(  rt	        |«      dv ry|dd  g d¢k(  ryt	        |«      d	k\  rt        |d
d  «      dk(  ryt	        |«      dk\  r@|d   dkD  r8|d   |d   k(  r-|d   |d   k(  r"| j                  |«      }t        d|›d|›�«      ‚t        |dd  «      dk  s(t        |d
d  «      dk  s|d
d  j                  d«      dk\  rd}nd}t	        |«      |k\  r t        d|›d| j                  |«      ›�«      ‚y)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  sZ  € ð
 —‘ˆÙàä�:Š:Ý ÌÏÊÐ!UÓVÐVð �"�#ˆ;˜1˜a˜&Ò ¤S¨£[°FÑ%:Øà�"�#ˆ;š)Ò#Øäˆv‹;˜!Ò¤ F¨2¨3 KÓ 0°AÒ 5Øäˆv‹;˜!Ò  r¡
¨Q¢°6¸"±:ÀÈÁÒ3KÐPVÐWYÑPZÐ^dÐegÑ^hÒPhØ×$Ñ$ VÓ,ˆDÝ Â6É4Ð!PÓQÐQô ˆv�b�cˆ{Ó˜qÒ ¤C¨¨r¨s¨Ó$4¸Ò$9¸VÀBÀC¸[×=NÑ=NÈqÓ=QÐUVÒ=Và‰EàˆEÜˆv‹;˜%ÒÝ Ú$*Ø$(×$5Ñ$5°fÔ$=ð"?ó @ð @ð
 r   c                 ó4  — t        d«      D ]  }t        j                  «        Œ t        | j                  dd«      }|rd| j
                  _        t        | j                  dd«      | _        | j                  «       }	 | j                  |«      r_| j                  ||«       | j                  «       }| j                  j                  t        d„ |D «       «      «       | j                  |«      rŒ_|rt        d| j                  ›d	�«      ‚y # t        $ r |s‚ Y y w xY w)
Nr"   r   FTr@   r   c              3   ó&   K  — | ]	  }|d    –— Œ y­w)r!   Nr   )rd   Ústats     r   rf   z,_RefCountChecker.__call__.<locals>.<genexpr>Q  s   è ø€ Ð'C¹F°D¨¨Q­¹Fùs   ‚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‰J�Lð ô ! §¡Ð0AÀ5ÓIˆÙØ15ˆD�M‰MÔ.Ü$ T§]¡]Ð4LÈbÓQˆÔð —‘“ˆð	_Ø×$Ñ$ VÔ,Ø—‘˜t VÔ,à×+Ñ+Ó-�à—‘×"Ñ"¤3Ñ'C¹FÓ'CÓ#DÔEð ×$Ñ$ VÕ,ñ Ý$ÈdÏmËmÐ%]Ó^Ð^ð øô	 ò 	Ù!Øñ "ð	ús   Á<A/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 «      }|r1t        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  sZ   ø€ ä�4Ð+¨UÔ3Ü×#Ñ#Ð$JÓKÐKÝ"¬7°6Ð;LÈeÔ+TÜ×#Ñ#Ð$NÓOÐOØ-Ô  fÓ-¨d°FÓ;Ð;r   )r4   ÚSKIP_LEAKCHECKSÚprintr)   r$   Ústderrr   )r™   Úreasonrš   s   `  r   Úwrap_refcountrŸ   Y  se   ø€ ÜˆvÐ)¨5Ô1µ_Ü˜Ð!:¸DÓAˆÙ�/ÝØ4:·O³OÁVÐLÜ—Z‘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™JŸN™NÐ+;Ó<Ð Ø—J‘J—N‘N 8Ó,ÒIÐ0IÐ Ø—j‘j—n‘n ZÓ0Ð Ø!Ò8Ð%8€Ø—z‘z—~‘~Ð&:Ó;Ð Ø&ÒT¨"¯*©*¯.©.Ð9SÓ*T€ØŸ*™*Ÿ.™.Ð)KÓLÐ ØŸ*™*Ÿ.™.Ð)KÓLÐ òòòòô	�^ô 	ñ ˆ3�Ôô%�&ô %ñ
 “)€H„KØ,Ñòô¨ô ô~_�vô ~_ó@r   