
    daf3                     N   d dl Z d dlZd dlmZ  G d de j                        Z G d de j                        Z G d de      Z G d	 d
e      Z	 ed      Z
 ee
f      Z G d d      Z G d de      Z G d de j                        Zd Zedk(  r e j"                          yy)    N)supportc                   *    e Zd Zd Zd Zd Zd Zd Zy)TestIsInstanceExceptionsc                      G d dt               } G d dt               }| j                  dt         |        |                    y )Nc                   "    e Zd Zd Z ee      Zy);TestIsInstanceExceptions.test_class_has_no_bases.<locals>.Ic                      y N selfs    //root/Python-3.12.4/Lib/test/test_isinstance.pygetclasszDTestIsInstanceExceptions.test_class_has_no_bases.<locals>.I.getclass   s        N__name__
__module____qualname__r   property	__class__r   r   r   Ir      s     !*Ir   r   c                   "    e Zd Zd Z ee      Zy);TestIsInstanceExceptions.test_class_has_no_bases.<locals>.Cc                      yNr   r   r   s    r   getbaseszDTestIsInstanceExceptions.test_class_has_no_bases.<locals>.C.getbases"       r   Nr   r   r   r   r   	__bases__r   r   r   Cr   !        *Ir   r    F)objectassertEqual
isinstancer   r   r    s      r   test_class_has_no_basesz0TestIsInstanceExceptions.test_class_has_no_bases   s7    	+ 	+	+ 	+
 	
13 45r   c                      G d dt                G fddt               } G d dt               }| j                  t        t         |        |              y )Nc                   "    e Zd Zd Z ee      Zy)PTestIsInstanceExceptions.test_bases_raises_other_than_attribute_error.<locals>.Ec                     t         r
   RuntimeErrorr   s    r   r   zYTestIsInstanceExceptions.test_bases_raises_other_than_attribute_error.<locals>.E.getbases,       ""r   Nr   r   r   r   Er)   +       # *Ir   r.   c                   (    e Zd Z fdZ ee      Zy)PTestIsInstanceExceptions.test_bases_raises_other_than_attribute_error.<locals>.Ic                             S r
   r   )r   r.   s    r   r   zYTestIsInstanceExceptions.test_bases_raises_other_than_attribute_error.<locals>.I.getclass1   s
    s
r   Nr   )r.   s   r   r   r1   0   s     *Ir   r   c                   "    e Zd Zd Z ee      Zy)PTestIsInstanceExceptions.test_bases_raises_other_than_attribute_error.<locals>.Cc                      yr   r   r   s    r   r   zYTestIsInstanceExceptions.test_bases_raises_other_than_attribute_error.<locals>.C.getbases6   r   r   Nr   r   r   r   r    r4   5   r!   r   r    r"   assertRaisesr,   r$   )r   r   r    r.   s      @r   ,test_bases_raises_other_than_attribute_errorzETestIsInstanceExceptions.test_bases_raises_other_than_attribute_error*   sA    	+ 	+
	+ 	+
	+ 	+
 	,
AC=r   c                      G d d      } G d dt               }| j                  t        t         |        |              y )Nc                       e Zd Zy)FTestIsInstanceExceptions.test_dont_mask_non_attribute_error.<locals>.INr   r   r   r   r   r   r   r;   ?       r   r   c                   "    e Zd Zd Z ee      Zy)FTestIsInstanceExceptions.test_dont_mask_non_attribute_error.<locals>.Cc                     t         r
   r+   r   s    r   r   zOTestIsInstanceExceptions.test_dont_mask_non_attribute_error.<locals>.C.getbasesB   r-   r   Nr   r   r   r   r    r?   A   r/   r   r    r6   r%   s      r   "test_dont_mask_non_attribute_errorz;TestIsInstanceExceptions.test_dont_mask_non_attribute_error>   s-    	+ 	+
 	,
AC=r   c                      G d d      } G d dt               }| j                  t        t         |        |              y )Nc                       e Zd Zy)=TestIsInstanceExceptions.test_mask_attribute_error.<locals>.INr<   r   r   r   r   rD   K   r=   r   r   c                   "    e Zd Zd Z ee      Zy)=TestIsInstanceExceptions.test_mask_attribute_error.<locals>.Cc                     t         r
   AttributeErrorr   s    r   r   zFTestIsInstanceExceptions.test_mask_attribute_error.<locals>.C.getbasesN       $$r   Nr   r   r   r   r    rF   M       % *Ir   r    )r"   r7   	TypeErrorr$   r%   s      r   test_mask_attribute_errorz2TestIsInstanceExceptions.test_mask_attribute_errorJ   s-    	+ 	+
 	)Zac:r   c                      G d dt               } |       }| j                  t        t        |t                G d d      }| j                  t        t        ||       y )Nc                   "    e Zd Zd Z ee      Zy)QTestIsInstanceExceptions.test_isinstance_dont_mask_non_attribute_error.<locals>.Cc                     t         r
   r+   r   s    r   r   zZTestIsInstanceExceptions.test_isinstance_dont_mask_non_attribute_error.<locals>.C.getclassX   r-   r   Nr   r   r   r   r    rP   W   r/   r   r    c                       e Zd Zy)QTestIsInstanceExceptions.test_isinstance_dont_mask_non_attribute_error.<locals>.DNr<   r   r   r   DrS   `   r=   r   rT   )r"   r7   r,   r$   bool)r   r    crT   s       r   -test_isinstance_dont_mask_non_attribute_errorzFTestIsInstanceExceptions.test_isinstance_dont_mask_non_attribute_errorV   sF    	+ 	+
 C,
At< 	,
Aq9r   N)r   r   r   r&   r8   rA   rM   rW   r   r   r   r   r      s    6 >(>;:r   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestIsSubclassExceptionsc                      G d dt               } G d d|      }| j                  t        t         |        |              y )Nc                   "    e Zd Zd Z ee      Zy)FTestIsSubclassExceptions.test_dont_mask_non_attribute_error.<locals>.Cc                     t         r
   r+   r   s    r   r   zOTestIsSubclassExceptions.test_dont_mask_non_attribute_error.<locals>.C.getbasesj   r-   r   Nr   r   r   r   r    r\   i   r/   r   r    c                       e Zd Zy)FTestIsSubclassExceptions.test_dont_mask_non_attribute_error.<locals>.SNr<   r   r   r   Sr_   n   r=   r   r`   r"   r7   r,   
issubclassr   r    r`   s      r   rA   z;TestIsSubclassExceptions.test_dont_mask_non_attribute_errorh   s0    	+ 	+
 	,
AC=r   c                      G d dt               } G d d|      }| j                  t        t         |        |              y )Nc                   "    e Zd Zd Z ee      Zy)=TestIsSubclassExceptions.test_mask_attribute_error.<locals>.Cc                     t         r
   rH   r   s    r   r   zFTestIsSubclassExceptions.test_mask_attribute_error.<locals>.C.getbasest   rJ   r   Nr   r   r   r   r    rf   s   rK   r   r    c                       e Zd Zy)=TestIsSubclassExceptions.test_mask_attribute_error.<locals>.SNr<   r   r   r   r`   ri   x   r=   r   r`   r"   r7   rL   rb   rc   s      r   rM   z2TestIsSubclassExceptions.test_mask_attribute_errorr   s0    	+ 	+
 	)Zac:r   c                 x     G d d      } G d dt               }| j                  t        t        | |              y )Nc                       e Zd Zy)QTestIsSubclassExceptions.test_dont_mask_non_attribute_error_in_cls_arg.<locals>.BNr<   r   r   r   Brm      r=   r   rn   c                   "    e Zd Zd Z ee      Zy)QTestIsSubclassExceptions.test_dont_mask_non_attribute_error_in_cls_arg.<locals>.Cc                     t         r
   r+   r   s    r   r   zZTestIsSubclassExceptions.test_dont_mask_non_attribute_error_in_cls_arg.<locals>.C.getbases   r-   r   Nr   r   r   r   r    rp      r/   r   r    ra   r   rn   r    s      r   -test_dont_mask_non_attribute_error_in_cls_argzFTestIsSubclassExceptions.test_dont_mask_non_attribute_error_in_cls_arg   s+    	+ 	+
 	,
Aqs;r   c                 x     G d d      } G d dt               }| j                  t        t        | |              y )Nc                       e Zd Zy)HTestIsSubclassExceptions.test_mask_attribute_error_in_cls_arg.<locals>.BNr<   r   r   r   rn   rv      r=   r   rn   c                   "    e Zd Zd Z ee      Zy)HTestIsSubclassExceptions.test_mask_attribute_error_in_cls_arg.<locals>.Cc                     t         r
   rH   r   s    r   r   zQTestIsSubclassExceptions.test_mask_attribute_error_in_cls_arg.<locals>.C.getbases   rJ   r   Nr   r   r   r   r    rx      rK   r   r    rj   rr   s      r   $test_mask_attribute_error_in_cls_argz=TestIsSubclassExceptions.test_mask_attribute_error_in_cls_arg   s+    	+ 	+
 	)ZAC8r   N)r   r   r   rA   rM   rs   rz   r   r   r   rY   rY   g   s    >;<9r   rY   c                   .    e Zd Zd Zd Z ee      Zd Zy)AbstractClassc                     || _         y r
   bases)r   r   s     r   __init__zAbstractClass.__init__   	    
r   c                     | j                   S r
   r~   r   s    r   r   zAbstractClass.getbases       zzr   c                     t        |       S r
   )AbstractInstancer   s    r   __call__zAbstractClass.__call__   s    %%r   N)r   r   r   r   r   r   r   r   r   r   r   r|   r|      s    "I&r   r|   c                   (    e Zd Zd Zd Z ee      Zy)r   c                     || _         y r
   klass)r   r   s     r   r   zAbstractInstance.__init__   r   r   c                     | j                   S r
   r   r   s    r   r   zAbstractInstance.getclass   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r      s    "Ir   r   r   r~   c                       e Zd Zy)SuperNr<   r   r   r   r   r          r   r   c                       e Zd Zy)ChildNr<   r   r   r   r   r      r   r   r   c                   `    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 Zd Zd Zd Zy)TestIsInstanceIsSubclassc                    | j                  dt        t               t                     | j                  dt        t               t                     | j                  dt        t               t                     | j                  dt        t               t
                     | j                  dt        t               t                     | j                  dt        t               t                     y NTF)r#   r$   r   r   AbstractSuperAbstractChildr   s    r   test_isinstance_normalz/TestIsInstanceIsSubclass.test_isinstance_normal   s    z%'59:
57E :;
57M BC
57M BCz%'59:
57M BCr   c                    | j                  dt        t               t                     | j                  dt        t               t                     | j                  dt        t               t                     | j                  dt        t               t
                     | j                  dt        t               t                     | j                  dt        t               t                     | j                  dt        t               t                     | j                  dt        t               t
                     y r   )r#   r$   r   r   r   r   r   s    r   test_isinstance_abstractz1TestIsInstanceIsSubclass.test_isinstance_abstract   s    z-/=IJ
=?M JK
=?E BC
=?E BCz-/=IJz-/=IJ
=?E BC
=?E BCr   c                    | j                  t        t               t        t        z               | j	                  t        d t
        t        z               | j                  t        dt
        t        z               | j                  t        dt
        t        z               | j                  t        g t        j                  t        j                  z               | j                  t        dt        j                  t        z               | j	                  t        dt        j                  t        j                  z               | j                  t        d t        d z               | j	                  t        dt        t
        z               | j                  t              5  t        dt        t                  d d d        | j                  t              5  t        dt        t           t        z         d d d        | j                  t              5  t        dt        t
        z  t        t           z  t        z         d d d        y # 1 sw Y   xY w# 1 sw Y   `xY w# 1 sw Y   y xY w)N       gQ	@)
assertTruer$   r   intassertFalsestrtypingListTupler7   rL   listfloatr   s    r   test_isinstance_with_or_unionz6TestIsInstanceIsSubclass.test_isinstance_with_or_union   s   
57ECK89D#)45
1cCi01
2sSy12
2v{{V\\'ABC
1fkkC&789Av{{V\\'ABC
4t45D#)45y) 	%q$s)$	%y) 	+q$s)c/*	+y) 	9q%#+S	1C78	9 	9		% 	%	+ 	+	9 	9s$   "I	I-I!	II!I*c                    | j                  dt        t        t                     | j                  dt        t        t                     | j                  dt        t        t                     | j                  dt        t        t                     | j                  dt        t        t                     | j                  dt        t        t                     | j                  t        t        j                  t        j                  t        j                  z               | j                  t        t        t        j                  t        j                  z               y r   )r#   rb   r   r   r   r   r   r   r   r   r   r   s    r   test_subclass_normalz-TestIsInstanceIsSubclass.test_subclass_normal   s    z%78
5- @A
5% 89z%78z%78
5- @A
6;;FLL0HIJCV\\)ABCr   c                    | j                  dt        t        t                     | j                  dt        t        t                     | j                  dt        t        t                     | j                  dt        t        t                     | j                  dt        t        t                     | j                  dt        t        t
                     | j                  dt        t        t                     y r   )r#   rb   r   r   r   r   r   s    r   test_subclass_abstractz/TestIsInstanceIsSubclass.test_subclass_abstract   s    z-GH
=- HI
=% @Az-GHz-GH
=% @A
=% @Ar   c           	         | j                  dt        t        t        f             | j                  dt        t        t        f             | j                  dt        t        t        f             | j                  dt        t        t        t        f             | j                  dt        t        d             | j                  dt        t        t        t        ff             | j                  dt        t        t        t
        t        ff             | j                  dt        t        t        t        t        ff             y )NTFr   )r#   rb   r   r   r   r   r   r   s    r   test_subclass_tuplez,TestIsInstanceIsSubclass.test_subclass_tuple   s    z%%:;z%%:;
55( ;<z%%@A
5" 56z%%%1BCDz#eS\/BCDz#eS\/BCDr   c                     t        j                         5  | j                  t        t        t
        t        t               d d d        y # 1 sw Y   y xY wr
   )r   infinite_recursionr7   RecursionError	blowstackrb   r   r   s    r   test_subclass_recursion_limitz6TestIsInstanceIsSubclass.test_subclass_recursion_limit
  s?     '') 	OniS#N	O 	O 	Os   *AAc                     t        j                         5  | j                  t        t        t
        dt               d d d        y # 1 sw Y   y xY w)Nr   )r   r   r7   r   r   r$   r   r   s    r   test_isinstance_recursion_limitz8TestIsInstanceIsSubclass.test_isinstance_recursion_limit  s?     '') 	NniRM	N 	N 	Ns   &AAc                    | j                  t        t        t        t        z  t        z               | j                  t        t        t        t
        z  t        z               | j                  t        t        t        t        z               | j                  t        t        t        t        z               | j                  t              5  t        dt
        t        z         d d d        | j                  t              5  t        t        t        t           t
        z         d d d        y # 1 sw Y   JxY w# 1 sw Y   y xY wNr   )r   rb   r   r   r   r   r   dictr"   r7   rL   r   r   r   s    r   test_subclass_with_unionz1TestIsInstanceIsSubclass.test_subclass_with_union  s    
3ec(9:;
3ec(9:;D%)45FE#I67y) 	)q%%-(	)y) 	/sDI-.	/ 	/	) 	)	/ 	/s   D-#D9-D69Ec                 |     G d d       G fdd      }| j                  dt         |       t                     y )Nc                       e Zd Zed        Zy)ETestIsInstanceIsSubclass.test_issubclass_refcount_handling.<locals>.Ac                     t         fS r
   )r   r   s    r   r   zOTestIsInstanceIsSubclass.test_issubclass_refcount_handling.<locals>.A.__bases__$  s	    wr   Nr   r   r   r   r   r   r   r   Ar   #  s     r   r   c                   (    e Zd Zd Ze fd       Zy)ETestIsInstanceIsSubclass.test_issubclass_refcount_handling.<locals>.Bc                     d| _         y )N   )xr   s    r   r   zNTestIsInstanceIsSubclass.test_issubclass_refcount_handling.<locals>.B.__init__)  s     r   c                             fS r
   r   )r   r   s    r   r   zOTestIsInstanceIsSubclass.test_issubclass_refcount_handling.<locals>.B.__bases__.  s    wr   N)r   r   r   r   r   r   )r   s   r   rn   r   (  s    
  r   rn   T)r#   rb   r   )r   rn   r   s     @r   !test_issubclass_refcount_handlingz:TestIsInstanceIsSubclass.test_issubclass_refcount_handling   s2    	 	
	 	 	z!#s34r   c                 @    G d d      }t        j                         5  | j                  t        t         |       t
               | j                  t        t        t
         |              | j                  t        t        d |              d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zed        Zy)DTestIsInstanceIsSubclass.test_infinite_recursion_in_bases.<locals>.Xc                     | j                   S r
   )r   r   s    r   r   zNTestIsInstanceIsSubclass.test_infinite_recursion_in_bases.<locals>.X.__bases__6  s    ~~%r   Nr   r   r   r   Xr   5  s    & &r   r   r   )r   r   r7   r   rb   r   r$   r   r   s     r    test_infinite_recursion_in_basesz9TestIsInstanceIsSubclass.test_infinite_recursion_in_bases4  su    	& 	& '') 	Bnj!#sCnj#qsCnj!QSA	B 	B 	Bs   A,BBc                      G d dt               }t        j                         5  | j                  t              5  t         |       t               ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)Regression test for bpo-30570.c                       e Zd Zd Zy)QTestIsInstanceIsSubclass.test_infinite_recursion_via_bases_tuple.<locals>.Failurec                 
    | d fS r
   r   )r   attrs     r   __getattr__z]TestIsInstanceIsSubclass.test_infinite_recursion_via_bases_tuple.<locals>.Failure.__getattr__A  s    d|#r   Nr   r   r   r   r   r   r   Failurer   @  s    $r   r   N)r"   r   r   r7   r   rb   r   )r   r   s     r   'test_infinite_recursion_via_bases_tuplez@TestIsInstanceIsSubclass.test_infinite_recursion_via_bases_tuple>  se    	$f 	$ '') 	+"">2 +79c*+	+ 	++ +	+ 	+s"   A-A!A-!A*	&A--A6c                      G d d      }t        j                         5  | j                  t        t         |       t
               ddd       y# 1 sw Y   yxY w)r   c                       e Zd Zed        Zy)@TestIsInstanceIsSubclass.test_infinite_cycle_in_bases.<locals>.Xc                     | | | fS r
   r   r   s    r   r   zJTestIsInstanceIsSubclass.test_infinite_cycle_in_bases.<locals>.X.__bases__J  s    dD))r   Nr   r   r   r   r   r   I  s    * *r   r   Nr   r   r7   r   rb   r   r   s     r   test_infinite_cycle_in_basesz5TestIsInstanceIsSubclass.test_infinite_cycle_in_basesG  sI    	* 	* '') 	Dnj!#sC	D 	D 	Ds   &AAc                      G fdd      t        j                         5  | j                  t        t                t
               ddd       y# 1 sw Y   yxY w)r   c                       e Zd Z fdZy)>TestIsInstanceIsSubclass.test_infinitely_many_bases.<locals>.Xc                     | j                  |d        G d d      } G d d      }j                  x|_        |_         |        |       fS )Nr   c                       e Zd Zy)UTestIsInstanceIsSubclass.test_infinitely_many_bases.<locals>.X.__getattr__.<locals>.ANr<   r   r   r   r   r   U      r   r   c                       e Zd Zy)UTestIsInstanceIsSubclass.test_infinitely_many_bases.<locals>.X.__getattr__.<locals>.BNr<   r   r   r   rn   r   W  r   r   rn   )r#   r   )r   r   r   rn   r   s       r   r   zJTestIsInstanceIsSubclass.test_infinitely_many_bases.<locals>.X.__getattr__S  sG      {3  01=QSz!r   Nr   )r   s   r   r   r   R  s    "r   r   Nr   r   s    @r   test_infinitely_many_basesz3TestIsInstanceIsSubclass.test_infinitely_many_basesP  sJ    	" 	" '') 	Dnj!#sC	D 	D 	Ds   &AAN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sR    D
D9&
D	B
EON/5(B+DDr   r   c                 d    |f}t        t        j                  dz        D ]  }|f} | ||        y r   )ranger   C_RECURSION_LIMIT)fxnarg
compare_to	tuple_argcnts        r   r   r   _  s;     IW..23 L	Cr   __main__)unittestr   testr   TestCaser   rY   r"   r|   r   r   r   r   r   r   r   r   mainr   r   r   <module>r      s   
   V:x00 V:x+9x00 +9`	&F 	&#v # B']$45	 		E 	fDx00 fDR zHMMO r   