
    Yh                         S r SSKrSr\R                  " 5       r/ r " S S5      r " S S\R                  5      rS r\" \" 5       5      r\R                  5       r
\R                  S\
45        \" S	\
S
S9  \R                  5         \" S\5        g)a  
If we have a run callable passed to the constructor or set as an
attribute, but we don't actually use that (because ``__getattribute__``
or the like interferes), then when we clear callable before beginning
to run, there's an opportunity for Python code to run.

    Nc                       \ rS rSrS rSrg)RunCallable   c                 X    [         R                  S5        [        R                  S5        g )N)r   __del__zfrom RunCallable)resultsappendmainswitch)selfs    [/var/www/html/env/lib/python3.13/site-packages/greenlet/tests/fail_clearing_run_switches.pyr   RunCallable.__del__   s    12&'     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    (r   r   c                       \ rS rSrS rSrg)G   c                 n    US:X  a  [         R                  S5        [        $ [        R	                  X5      $ )Nrun)zG.__getattribute__r   )r   r	   run_funcobject__getattribute__)r   names     r   r   G.__getattribute__   s,    5=NN89O&&t22r   r   N)r   r   r   r   r   r   r   r   r   r   r      s    3r   r   c                  .    [         R                  S5        g )N)r   enter)r   r	   r   r   r   r   r       s    NN()r   zmain: g.switch()zIn main withT)flushRESULTS)__doc__greenletg
getcurrentr
   r   r   r   r   r   xr	   printr   r   r   <module>r*      s    
( (3 3* km
 HHJ "A& ' nat $ 
 i r   