
    Yh                     @    S SK r S SKJr  SSKJr  S r " S S\5      rg)    N)greenlet   )TestCasec                  Z    [         R                  " 5       R                  R                  " U 6 $ )N)r   
getcurrentparentswitch)argss    K/var/www/html/env/lib/python3.13/site-packages/greenlet/tests/test_throw.pyr	   r	      s"     ''..55    c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)
ThrowTests   c                     S n[        U5      nUR                  5       nU R                  US5        UR                  [        5      nU R                  US5        g )Nc                  h     [        S5        [        S5        g ! [         a    [        S5         g f = fNokfail)r	   RuntimeError r   r   f ThrowTests.test_class.<locals>.f   s2    t 6N   ts    11r   r   r	   assertEqualthrowr   selfr   gress       r   
test_classThrowTests.test_class   sK    	 QKhhjd#ggl#d#r   c                 f   S n[        U5      nUR                  5       nU R                  US5        UR                  [	        S5      5      nU R                  US5        [        U5      nUR                  5       nU R                  US5        UR                  [        S5      nU R                  US5        g )Nc                       [        S5        [        S5        g ! [         a7    [        R                  " 5       S   n [	        U 5      S:X  a  [        S5         g  NLf = f)Nr   r   ciaor   )r	   r   sysexc_infostr)vals    r   r   ThrowTests.test_val.<locals>.f   sS    t 6N   llnQ's8v%4L &s    <AAr   r$   r   r   s       r   test_valThrowTests.test_val   s    	 QKhhjd#ggl6*+d#QKhhjd#gglF+d#r   c                 ~   S n[        U5      nUR                  5       nU R                  US5        UR                  5       nU R	                  [        U[         R                  5      5        U R	                  UR                  5        UR                  5       nU R	                  [        U[         R                  5      5        g )Nc                  0    [        S5        [        S5        g r   r	   r   r   r   r   ThrowTests.test_kill.<locals>.f2   s    4L6Nr   r   )r   r	   r   r   
assertTrue
isinstanceGreenletExitdeadr   s       r   	test_killThrowTests.test_kill1   s    	 QKhhjd#ggi
3(=(=>?ggi
3(=(=>?r   c                   ^ [         R                  " 5       mU4S jnU4S jn[        U5      n[        X#S9nU R                  [        5         UR	                  [        5        S S S 5        U R                  UR                  5        U R                  UR                  5        [        U5      n[        X#S9nUR                  5       nU R                  US5        UR	                  [        5      nU R                  US5        U R                  UR                  5        U R                  UR                  5        [        U5      n[        X#S9nUR                  5       nU R                  US5        UR                  5       nU R                  US5        UR	                  [        5      nU R                  US5        U R                  UR                  5        U R                  UR                  5        g ! , (       d  f       GN= f)Nc                  J   >  T R                  S5        g! [         a     gf = f)Nf1 ready to catchcaughtznormal exit)r	   
IndexErrormains   r   f19ThrowTests.test_throw_goes_to_original_parent.<locals>.f1A   s.     /0 !    s    
""c                  (   > T R                  S5        g )Nfrom f2r.   r;   s   r   f29ThrowTests.test_throw_goes_to_original_parent.<locals>.f2H   s    KK	"r   )r   r8   r9   r@   )	r   r   assertRaisesr:   r   r0   r3   r	   r   )r   r=   rA   g1g2r   r<   s         @r   "test_throw_goes_to_original_parent-ThrowTests.test_throw_goes_to_original_parent>   sm   ""$	!	# b\b$z*HHZ  +  b\b$iik12hhz"h'  b\b$iik12iiki(hhz"h'  / +*s   G))
G8c                    U R                  [        5       n[        R                  " 5       R	                  [
        [        5       U 5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nz1throw() third argument must be a traceback object)	rC   	TypeErrorr   r   r   	Exceptionr   r'   	exceptionr   excs     r   test_non_traceback_param#ThrowTests.test_non_traceback_paramf   sa    y)S!'' * 	S]]+L	N *)s   3A77
Bc                    U R                  [        5       n[        R                  " 5       R	                  [        5       [        5       5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nz0instance exception may not have a separate value)
rC   rI   r   r   r   rJ   BaseExceptionr   r'   rK   rL   s     r   test_instance_of_wrong_type&ThrowTests.test_instance_of_wrong_typep   s`    y)S!'' * 	S]]+K	M *)s   6A::
Bc                     U R                  [        5       n[        R                  " 5       R	                  S5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nabcz1exceptions must be classes, or instances, not str)rC   rI   r   r   r   r   r'   rK   rL   s     r   test_not_throwableThrowTests.test_not_throwablez   sY    y)S!'' * 	S]]+L	N	 *)s   %A))
A7r   N)__name__
__module____qualname____firstlineno__r    r*   r4   rF   rN   rR   rV   __static_attributes__r   r   r   r   r      s*    $$.@&!PNMNr   r   )r%   r    r   r	   r   r   r   r   <module>r^      s%    
  6uN uNr   