
    dafB_                         d Z ddlZddlZddlZddlmZ d Z eej                  ej                        \  Z	Z
Z eej                  ej                        \  ZZZedk(  r ej                           yy)zUnit tests for abc.py.    N)
isabstractc                       G  fddt         j                        } G  fddt         j                        } G  fddt         j                        }|||fS )Nc                   ,    e Zd Z fdZ fdZ fdZy)#test_factory.<locals>.TestLegacyAPIc                    t         j                  d        }| j                  |j                         d }| j	                  t        |d              G d d      }| j                  t        |        G d d|      }| j                   |       j                  d	       | j	                  t        |j                  dd
             y )Nc                      y N selfs    (/root/Python-3.12.4/Lib/test/test_abc.pyfoozMtest_factory.<locals>.TestLegacyAPI.test_abstractproperty_basics.<locals>.foo           c                      y r	   r
   r   s    r   barzMtest_factory.<locals>.TestLegacyAPI.test_abstractproperty_basics.<locals>.bar       4r   __isabstractmethod__c                   0    e Zd Zej                  d        Zy)Ktest_factory.<locals>.TestLegacyAPI.test_abstractproperty_basics.<locals>.Cc                      yN   r
   r   s    r   r   zOtest_factory.<locals>.TestLegacyAPI.test_abstractproperty_basics.<locals>.C.foo   s    &'r   N)__name__
__module____qualname__abcabstractpropertyr   r
   r   r   Cr      s    %%' &'r   r   	metaclassc                   (     e Zd Ze fd       Z xZS )Ktest_factory.<locals>.TestLegacyAPI.test_abstractproperty_basics.<locals>.Dc                     t         |   S r	   superr   r   	__class__s    r   r   zOtest_factory.<locals>.TestLegacyAPI.test_abstractproperty_basics.<locals>.D.foo       &+gk1r   )r   r   r   propertyr   __classcell__r(   s   @r   Dr#      s    1 1r   r-   r   F)r   r   
assertTruer   assertFalsehasattrassertRaises	TypeErrorassertEqualr   getattrr   r   r   r   r-   abc_ABCMetas        r   test_abstractproperty_basicsz@test_factory.<locals>.TestLegacyAPI.test_abstractproperty_basics   s    !! "OOC445WS*@AB(k ( i+2A 2 QSWWa(WQUU,BEJKr   c                    t         j                  d        }| j                  |j                         t        d        }| j                  t        |dd              G d d      }| j                  t        |        G d d	|      }| j                  |j                         d	       | j                   |       j                         d	       y )
Nc                      y r	   r
   clss    r   r   zPtest_factory.<locals>.TestLegacyAPI.test_abstractclassmethod_basics.<locals>.foo$       r   c                      y r	   r
   r:   s    r   r   zPtest_factory.<locals>.TestLegacyAPI.test_abstractclassmethod_basics.<locals>.bar'   r<   r   r   Fc                   0    e Zd Zej                  d        Zy)Ntest_factory.<locals>.TestLegacyAPI.test_abstractclassmethod_basics.<locals>.Cc                     | j                   S r	   r   r:   s    r   r   zRtest_factory.<locals>.TestLegacyAPI.test_abstractclassmethod_basics.<locals>.C.foo,   s    %(\\1r   N)r   r   r   r   abstractclassmethodr   r
   r   r   r   r?   +   s    ((1 )1r   r   r    c                   (     e Zd Ze fd       Z xZS )Ntest_factory.<locals>.TestLegacyAPI.test_abstractclassmethod_basics.<locals>.Dc                      t         |          S r	   r%   r;   r(   s    r   r   zRtest_factory.<locals>.TestLegacyAPI.test_abstractclassmethod_basics.<locals>.D.foo0       %*W[]2r   r   r   r   classmethodr   r+   r,   s   @r   r-   rD   /       2 2r   r-   )r   rB   r.   r   rI   r/   r4   r1   r2   r3   r   r5   s        r   test_abstractclassmethod_basicszCtest_factory.<locals>.TestLegacyAPI.test_abstractclassmethod_basics#   s    $$ %OOC445 WS*@%HI2k 2 i+3A 3 QUUWc*QSWWY,r   c                    t         j                  d        }| j                  |j                         t        d        }| j                  t        |dd              G d d      }| j                  t        |        G d d	|      }| j                  |j                         d
       | j                   |       j                         d
       y )Nc                       y r	   r
   r
   r   r   r   zQtest_factory.<locals>.TestLegacyAPI.test_abstractstaticmethod_basics.<locals>.foo6       r   c                       y r	   r
   r
   r   r   r   zQtest_factory.<locals>.TestLegacyAPI.test_abstractstaticmethod_basics.<locals>.bar9   rN   r   r   Fc                   0    e Zd Zej                  d        Zy)Otest_factory.<locals>.TestLegacyAPI.test_abstractstaticmethod_basics.<locals>.Cc                       yr   r
   r
   r   r   r   zStest_factory.<locals>.TestLegacyAPI.test_abstractstaticmethod_basics.<locals>.C.foo>       "#r   N)r   r   r   r   abstractstaticmethodr   r
   r   r   r   rQ   =   s    ))# *#r   r   r    c                       e Zd Zed        Zy)Otest_factory.<locals>.TestLegacyAPI.test_abstractstaticmethod_basics.<locals>.Dc                       yN   r
   r
   r   r   r   zStest_factory.<locals>.TestLegacyAPI.test_abstractstaticmethod_basics.<locals>.D.fooB   rS   r   Nr   r   r   staticmethodr   r
   r   r   r-   rV   A       # #r   r-   rY   )r   rT   r.   r   r[   r/   r4   r1   r2   r3   r   r5   s        r    test_abstractstaticmethod_basicszDtest_factory.<locals>.TestLegacyAPI.test_abstractstaticmethod_basics5   s    %% &OOC445 WS*@%HI$k $ i+$A $ QUUWa(QSWWY*r   N)r   r   r   r7   rK   r]   r6   s   r   TestLegacyAPIr      s    	L"	-$	+r   r_   c                   2   e Zd Zd Zd Z fdZ fdZ fdZ fdZ fdZ	 fdZ
 fd	Z fd
Z fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZd Z fdZd Z fdZ fdZ fdZ fdZ fdZd Z fdZ fdZ  fdZ!y )!test_factory.<locals>.TestABCc                 
    G d dt         j                        }| j                  t        |      t         j                         | j                  t        |        G d d|      }| j                  |j                         d       y )Nc                   :    e Zd Zeej
                  d               Zy)8test_factory.<locals>.TestABC.test_ABC_helper.<locals>.Cc                     | j                   S r	   rA   r:   s    r   r   z<test_factory.<locals>.TestABC.test_ABC_helper.<locals>.C.fooM       %(\\1r   Nr   r   r   rI   r   abstractmethodr   r
   r   r   r   rd   L       ##1 $ 1r   r   c                   (     e Zd Ze fd       Z xZS )8test_factory.<locals>.TestABC.test_ABC_helper.<locals>.Dc                      t         |          S r	   r%   rF   s    r   r   z<test_factory.<locals>.TestABC.test_ABC_helper.<locals>.D.fooS   rG   r   rH   r,   s   @r   r-   rk   R   rJ   r   r-   )r   ABCr3   typeABCMetar1   r2   r   )r   r   r-   s      r   test_ABC_helperz-test_factory.<locals>.TestABC.test_ABC_helperJ   s`    2CGG 2 T!Wckk2i+3A 3 QUUWc*r   c                     t         j                  d        }| j                  |j                         d }| j	                  t        |d             y )Nc                      y r	   r
   r   s    r   r   zEtest_factory.<locals>.TestABC.test_abstractmethod_basics.<locals>.fooX   r   r   c                      y r	   r
   r   s    r   r   zEtest_factory.<locals>.TestABC.test_abstractmethod_basics.<locals>.bar[   r   r   r   )r   rh   r.   r   r/   r0   )r   r   r   s      r   test_abstractmethod_basicsz8test_factory.<locals>.TestABC.test_abstractmethod_basicsW   sA      OOC445WS*@ABr   c                 Z   t         t        j                  d               }| j                  |j                         d }| j                  t        |dd              G d d      | j                  t                G fdd	      }| j                   |       j                  d
       y )Nc                      y r	   r
   r   s    r   r   zGtest_factory.<locals>.TestABC.test_abstractproperty_basics.<locals>.foo_   s    r   c                      y r	   r
   r   s    r   r   zGtest_factory.<locals>.TestABC.test_abstractproperty_basics.<locals>.barc   r   r   r   Fc                   :    e Zd Zeej
                  d               Zy)Etest_factory.<locals>.TestABC.test_abstractproperty_basics.<locals>.Cc                      yr   r
   r   s    r   r   zItest_factory.<locals>.TestABC.test_abstractproperty_basics.<locals>.C.foog       &'r   N)r   r   r   r*   r   rh   r   r
   r   r   r   ry   f   s    ##' $ 'r   r   r    c                   T     e Zd ZW j                  j                   fd       Z xZS )Etest_factory.<locals>.TestABC.test_abstractproperty_basics.<locals>.Dc                     t         |   S r	   r%   r'   s    r   r   zItest_factory.<locals>.TestABC.test_abstractproperty_basics.<locals>.D.fool   r)   r   r   r   r   r   getterr+   r(   r   s   @r   r-   r}   k       1 1r   r-   r   )r*   r   rh   r.   r   r/   r4   r1   r2   r3   r   )r   r   r   r-   r   r6   s       @r   r7   z:test_factory.<locals>.TestABC.test_abstractproperty_basics^   s       OOC445WS*@%HI(k ( i+2A 2 QSWWa(r   c                    t         t        j                  d               }| j                  |j                         t         d        }| j                  t        |dd              G d d      }| j                  t        |        G d d	|      }| j                  |j                         d	       | j                   |       j                         d	       y )
Nc                      y r	   r
   r:   s    r   r   zJtest_factory.<locals>.TestABC.test_abstractclassmethod_basics.<locals>.fooq   s    r   c                      y r	   r
   r:   s    r   r   zJtest_factory.<locals>.TestABC.test_abstractclassmethod_basics.<locals>.baru   r<   r   r   Fc                   :    e Zd Zeej
                  d               Zy)Htest_factory.<locals>.TestABC.test_abstractclassmethod_basics.<locals>.Cc                     | j                   S r	   rA   r:   s    r   r   zLtest_factory.<locals>.TestABC.test_abstractclassmethod_basics.<locals>.C.fooz   rf   r   Nrg   r
   r   r   r   r   y   ri   r   r   r    c                   (     e Zd Ze fd       Z xZS )Htest_factory.<locals>.TestABC.test_abstractclassmethod_basics.<locals>.Dc                      t         |          S r	   r%   rF   s    r   r   zLtest_factory.<locals>.TestABC.test_abstractclassmethod_basics.<locals>.D.foo   rG   r   rH   r,   s   @r   r-   r   ~   rJ   r   r-   )rI   r   rh   r.   r   r/   r4   r1   r2   r3   r   r5   s        r   rK   z=test_factory.<locals>.TestABC.test_abstractclassmethod_basicsp   s       OOC445 WS*@%HI2k 2 i+3A 3 QUUWc*QSWWY,r   c                    t         t        j                  d               }| j                  |j                         t         d        }| j                  t        |dd              G d d      }| j                  t        |        G d d	|      }| j                  |j                         d
       | j                   |       j                         d
       y )Nc                       y r	   r
   r
   r   r   r   zKtest_factory.<locals>.TestABC.test_abstractstaticmethod_basics.<locals>.foo   s    r   c                       y r	   r
   r
   r   r   r   zKtest_factory.<locals>.TestABC.test_abstractstaticmethod_basics.<locals>.bar   rN   r   r   Fc                   :    e Zd Zeej
                  d               Zy)Itest_factory.<locals>.TestABC.test_abstractstaticmethod_basics.<locals>.Cc                       yr   r
   r
   r   r   r   zMtest_factory.<locals>.TestABC.test_abstractstaticmethod_basics.<locals>.C.foo   s    "#r   N)r   r   r   r[   r   rh   r   r
   r   r   r   r      s    ### $ #r   r   r    c                       e Zd Zed        Zy)Itest_factory.<locals>.TestABC.test_abstractstaticmethod_basics.<locals>.Dc                       yrX   r
   r
   r   r   r   zMtest_factory.<locals>.TestABC.test_abstractstaticmethod_basics.<locals>.D.foo   rS   r   NrZ   r
   r   r   r-   r      r\   r   r-   rY   )r[   r   rh   r.   r   r/   r4   r1   r2   r3   r   r5   s        r   r]   z>test_factory.<locals>.TestABC.test_abstractstaticmethod_basics   s       OOC445 WS*@%HI$k $ i+$A $ QUUWa(QSWWY*r   c                 P     G d d      }d}| j                  t        ||       y )Nc                   0    e Zd Zej                  d        Zy)Ptest_factory.<locals>.TestABC.test_object_new_with_one_abstractmethod.<locals>.Cc                      y r	   r
   r   s    r   
method_onez[test_factory.<locals>.TestABC.test_object_new_with_one_abstractmethod.<locals>.C.method_one       r   N)r   r   r   r   rh   r   r
   r   r   r   r          ## $r   r   r    zBclass C without an implementation for abstract method 'method_one'assertRaisesRegexr2   r   r   msgr6   s      r   'test_object_new_with_one_abstractmethodzEtest_factory.<locals>.TestABC.test_object_new_with_one_abstractmethod   s)    k  XC""9c15r   c                 P     G d d      }d}| j                  t        ||       y )Nc                   T    e Zd Zej                  d        Zej                  d        Zy)Rtest_factory.<locals>.TestABC.test_object_new_with_many_abstractmethods.<locals>.Cc                      y r	   r
   r   s    r   r   z]test_factory.<locals>.TestABC.test_object_new_with_many_abstractmethods.<locals>.C.method_one   r   r   c                      y r	   r
   r   s    r   
method_twoz]test_factory.<locals>.TestABC.test_object_new_with_many_abstractmethods.<locals>.C.method_two   r   r   N)r   r   r   r   rh   r   r   r
   r   r   r   r      s2    ## $## $r   r   r    zQclass C without an implementation for abstract methods 'method_one', 'method_two'r   r   s      r   )test_object_new_with_many_abstractmethodszGtest_factory.<locals>.TestABC.test_object_new_with_many_abstractmethods   s)    k  gC""9c15r   c                 L   t         j                  t         j                  t         j                  t         j                  fD ]`   G fdd      }| j                  |j                  dh       | j                  t        |       | j                  t        |              G d d|      }| j                  |j                  dh       | j                  t        |       | j                  t        |              G d d|      }| j                  |j                  t                       |        | j                  t        |              G fd	d
|      }| j                  |j                  dh       | j                  t        |       | j                  t        |             c y )Nc                   &    e Zd ZW  d        Zd Zy)Htest_factory.<locals>.TestABC.test_abstractmethod_integration.<locals>.Cc                      y r	   r
   r   s    r   r   zLtest_factory.<locals>.TestABC.test_abstractmethod_integration.<locals>.C.foo       #'r   c                      y r	   r
   r   s    r   r   zLtest_factory.<locals>.TestABC.test_abstractmethod_integration.<locals>.C.bar       4r   N)r   r   r   r   r   abstractthings   r   r   r      s    "' #''r   r   r    r   c                       e Zd Zd Zy)Htest_factory.<locals>.TestABC.test_abstractmethod_integration.<locals>.Dc                      y r	   r
   r   s    r   r   zLtest_factory.<locals>.TestABC.test_abstractmethod_integration.<locals>.D.bar   r   r   Nr   r   r   r   r
   r   r   r-   r          'r   r-   c                       e Zd Zd Zy)Htest_factory.<locals>.TestABC.test_abstractmethod_integration.<locals>.Ec                      y r	   r
   r   s    r   r   zLtest_factory.<locals>.TestABC.test_abstractmethod_integration.<locals>.E.foo   r   r   Nr   r   r   r   r
   r   r   Er      r   r   r   c                        e Zd ZW  d        Zy)Htest_factory.<locals>.TestABC.test_abstractmethod_integration.<locals>.Fc                      y r	   r
   r   s    r   r   zLtest_factory.<locals>.TestABC.test_abstractmethod_integration.<locals>.F.bar   r   r   Nr   r   s   r   Fr      s    "' #'r   r   r   )r   rh   r   rB   rT   r3   __abstractmethods__r1   r2   r.   r   setr/   )r   r   r-   r   r   r   r6   s        @r   test_abstractmethod_integrationz=test_factory.<locals>.TestABC.test_abstractmethod_integration   sB   "%"4"4c6J6J"%"9"9"%":":"< /(+ (   !6!6@!!)Q/
1.( (  !6!6@!!)Q/
1.( (  !6!6>  A/( (   !6!6@!!)Q/
1.3/r   c                 ~    G d d      | j                  t                G fdd      | j                  t                G fdd      }| j                   |       j                  d        G d	 d
t              | j                  t
              5   G fdd      }d d d        y # 1 sw Y   y xY w)Nc                   |    e Zd Zeej
                  d               Zej                  ej
                  d               Zy)Mtest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.Cc                      yr   r
   r   s    r   r   zQtest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.C.foo   r{   r   c                      y r	   r
   r   vals     r   r   zQtest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.C.foo       $(r   N)r   r   r   r*   r   rh   r   setterr
   r   r   r   r      s>    ##' $ '##( $ (r   r   r    c                   T     e Zd ZW j                  j                   fd       Z xZS )Mtest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.Dc                     t         |   S r	   r%   r'   s    r   r   zQtest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.D.foo   r)   r   r   r   s   @r   r-   r      r   r   r-   c                   H    e Zd ZW  j                  j                  d        Zy)Mtest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.Ec                      y r	   r
   r   s     r   r   zQtest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.E.foo       $(r   Nr   r   r   r   r   r-   s   r   r   r          ( (r   r   r   c                       e Zd Zd ZeZy)Stest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.NotBoolc                     t               r	   )
ValueErrorr   s    r   __bool__z\test_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.NotBool.__bool__   s
    $,&r   N)r   r   r   r   __len__r
   r   r   NotBoolr      s    '"r   r   c                   >    e Zd Zd Z W         e_         ee      Zy)Mtest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.Fc                      y r	   r
   r   s    r   r   zQtest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod.<locals>.F.bar   s    r   N)r   r   r   r   r   r*   r   )r   s   r   r   r      s    /6yC,"3-Cr   r   )r1   r2   r3   r   objectr   )r   r   r   r   r-   r   r6   s      @@@r   $test_descriptors_with_abstractmethodzBtest_factory.<locals>.TestABC.test_descriptors_with_abstractmethod   s    )k ) i+2A 2 i+)A ) QSWWa(#& # "":. (( (( ( (s   B33B<c                     G fdd       G fdd      | j                  t                G fdd      | j                  t                G fdd	      }| j                  |j                  j                         y )
Nc                   :    e Zd ZddZ fdZ fdZed        Zy)\test_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.DescriptorNc                      || _         || _        y r	   )_fget_fset)r   fgetfsets      r   __init__zetest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.Descriptor.__init__   s    !%DJ!%DJr   c                 *     || j                         S r	   r   r   callable
Descriptors     r   r   zctest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.Descriptor.getter   s    %h

;;r   c                 *     | j                   |      S r	   r   r   s     r   r   zctest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.Descriptor.setter   s    %djj(;;r   c                 b    t        | j                  dd      xs t        | j                  dd      S )Nr   F)r4   r   r   r   s    r   r   zqtest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.Descriptor.__isabstractmethod__   s0    #DJJ0FN R&tzz3I5QSr   r	   )r   r   r   r   r   r   r*   r   r   s   r   r   r      s&    &<<S Sr   r   c                       e Zd ZW  ej                  d               Zej                  ej                  d               Zy)Stest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.Cc                      yr   r
   r   s    r   r   zWtest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.C.foo   r{   r   c                      y r	   r
   r   s     r   r   zWtest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.C.foo   r   r   N)r   r   r   r   rh   r   r   r   s   r   r   r      s?    ##' $ '##( $ (r   r   r    c                   T     e Zd ZW j                  j                   fd       Z xZS )Stest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.Dc                     t         |   S r	   r%   r'   s    r   r   zWtest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.D.foo   r)   r   r   r   s   @r   r-   r      r   r   r-   c                   H    e Zd ZW  j                  j                  d        Zy)Stest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.Ec                      y r	   r
   r   s     r   r   zWtest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod.<locals>.E.foo   r   r   Nr   r   s   r   r   r      r   r   r   )r1   r2   r/   r   r   )r   r   r   r-   r   r6   s     @@@r   *test_customdescriptors_with_abstractmethodzHtest_factory.<locals>.TestABC.test_customdescriptors_with_abstractmethod   sq    S S)k ) i+2A 2 i+)A ) QUU778r   c                      G d d      }| j                  |j                  dh        G d dt        |      } G d d|      }y )	Nc                   0    e Zd Zej                  d        Zy);test_factory.<locals>.TestABC.test_metaclass_abc.<locals>.Ac                      y r	   r
   r   s    r   xz=test_factory.<locals>.TestABC.test_metaclass_abc.<locals>.A.x  r   r   N)r   r   r   r   rh   r  r
   r   r   Ar     r   r   r  r    r  c                       e Zd Zd Zy)>test_factory.<locals>.TestABC.test_metaclass_abc.<locals>.metac                      yN   r
   r   s    r   r  z@test_factory.<locals>.TestABC.test_metaclass_abc.<locals>.meta.x  s    r   N)r   r   r   r  r
   r   r   metar    s    r   r  c                       e Zd Zy);test_factory.<locals>.TestABC.test_metaclass_abc.<locals>.CNr   r   r   r
   r   r   r   r
        r   r   )r3   r   rn   )r   r  r  r   r6   s       r   test_metaclass_abcz0test_factory.<locals>.TestABC.test_metaclass_abc  sC    k  Q22SE:tQ d r   c                     G d d      } G d dt               } |       }| j                  t        ||             | j                  t        ||f             | j                  ||       | j                  ||f       |j	                  |      }| j                  t        ||             | j                  t        ||f             | j                  ||       | j                  ||f       | j                  ||        G d d|      } |       }| j                  t        ||             | j                  t        ||f             | j                  ||       | j                  ||f       y )Nc                       e Zd Zy)Atest_factory.<locals>.TestABC.test_registration_basics.<locals>.ANr  r
   r   r   r  r    r  r   r  r    c                       e Zd Zy)Atest_factory.<locals>.TestABC.test_registration_basics.<locals>.BNr  r
   r   r   Br    r  r   r  c                       e Zd Zy)Atest_factory.<locals>.TestABC.test_registration_basics.<locals>.CNr  r
   r   r   r   r  !  r  r   r   )r   r/   
issubclassassertNotIsInstanceregisterr.   assertIsInstanceassertIs)r   r  r  bB1r   cr6   s          r   test_registration_basicsz6test_factory.<locals>.TestABC.test_registration_basics  s2   k F AZ1-.ZA401$$Q*$$Q-ABOOJq!,-OOJq1$/0!!!Q'!!!aT*MM"a A AOOJq!,-OOJq1$/0!!!Q'!!!aT*r   c                 \    G d d      }|j                    G d dt                     } |       }| j                  t        ||             | j                  t        ||f             | j	                  ||       | j	                  ||f       |j                    G d d|             } |       }| j                  t        ||             | j                  t        ||f             | j	                  ||       | j	                  ||f       | j                  ||j                  |             y )Nc                       e Zd Zy)Dtest_factory.<locals>.TestABC.test_register_as_class_deco.<locals>.ANr  r
   r   r   r  r!  *  r  r   r  r    c                       e Zd Zy)Dtest_factory.<locals>.TestABC.test_register_as_class_deco.<locals>.BNr  r
   r   r   r  r#  ,      r   r  c                       e Zd Zy)Dtest_factory.<locals>.TestABC.test_register_as_class_deco.<locals>.CNr  r
   r   r   r   r&  4  r$  r   r   )r  r   r.   r  r  r  )r   r  r  r  r   r  r6   s         r   test_register_as_class_decoz9test_factory.<locals>.TestABC.test_register_as_class_deco)  s   k ZZF  AOOJq!,-OOJq1$/0!!!Q'!!!aT*ZZA  AOOJq!,-OOJq1$/0!!!Q'!!!aT*MM!QZZ]+r   c                 ~    G d d      } G d d      } |       }| j                  t        ||             | j                  t        ||f                     }|j                  |               }| j                  ||       | j	                  t        ||             | j	                  t        ||f             y )Nc                       e Zd Zy)Etest_factory.<locals>.TestABC.test_isinstance_invalidation.<locals>.ANr  r
   r   r   r  r*  ?  r  r   r  r    c                       e Zd Zy)Etest_factory.<locals>.TestABC.test_isinstance_invalidation.<locals>.BNr  r
   r   r   r  r,  A  r  r   r  )r/   
isinstancer  assertGreaterr.   )r   r  r  r  	token_old	token_newr6   abc_get_cache_tokens         r   test_isinstance_invalidationz:test_factory.<locals>.TestABC.test_isinstance_invalidation>  s    k  AZ1-.ZA401+-IJJqM+-Iy)4OOJq!,-OOJq1$/0r   c                     G d d      }|j                  t               | j                  d|       | j                  d|f       | j                  t	        t        |             | j                  t	        t        |f              G d d|      }|j                  t
                G d dt
              }| j                  d	|       | j                  d	|f       | j                  t	        t
        |             | j                  t	        t
        |f             | j                  t	        ||             | j                  t	        ||f             y )
Nc                       e Zd Zy)Ctest_factory.<locals>.TestABC.test_registration_builtins.<locals>.ANr  r
   r   r   r  r5  N  r  r   r  r    *   c                       e Zd Zy)Ctest_factory.<locals>.TestABC.test_registration_builtins.<locals>.BNr  r
   r   r   r  r8  U  r  r   r  c                       e Zd Zy)Ctest_factory.<locals>.TestABC.test_registration_builtins.<locals>.CNr  r
   r   r   r   r:  X      r   r    )r  intr  r.   r  strr   r  r  r   r6   s       r   test_registration_builtinsz8test_factory.<locals>.TestABC.test_registration_builtinsM  s    k JJsO!!"a(!!"qd+OOJsA./OOJsQD12A JJsOC!!"a(!!"qd+OOJsA./OOJsQD12OOJq!,-OOJq1$/0r   c                     G d d      }|j                  |        G d d|      }| j                  t        |j                   |        G d dt              }|j                  |       |j                  |        G d d	|      }|j                  |       | j                  t        |j                   |       |j                  |       y )
Nc                       e Zd Zy)Etest_factory.<locals>.TestABC.test_registration_edge_cases.<locals>.ANr  r
   r   r   r  rC  a  r  r   r  r    c                       e Zd Zy)Ftest_factory.<locals>.TestABC.test_registration_edge_cases.<locals>.A1Nr  r
   r   r   A1rE  d  r  r   rF  c                       e Zd Zy)Etest_factory.<locals>.TestABC.test_registration_edge_cases.<locals>.BNr  r
   r   r   r  rH  g  r  r   r  c                       e Zd Zy)Etest_factory.<locals>.TestABC.test_registration_edge_cases.<locals>.CNr  r
   r   r   r   rJ  k  r  r   r   )r  r1   RuntimeErrorr   )r   r  rF  r  r   r6   s        r   test_registration_edge_casesz:test_factory.<locals>.TestABC.test_registration_edge_cases`  s    k JJqMQ lBKK;F KKNKKNA JJqMlAJJ:JJqMr   c                 b     G d d      }| j                  t        d|j                  d       y )Nc                       e Zd Zy)@test_factory.<locals>.TestABC.test_register_non_class.<locals>.ANr  r
   r   r   r  rO  r  r  r   r  r    zCan only register classesrY   )r   r2   r  r   r  r6   s     r   test_register_non_classz5test_factory.<locals>.TestABC.test_register_non_classq  s+    k ""9.I#$::q2r   c                     G d d      }| j                  t        ||             | j                  t        ||f              G d d      }| j                  t        ||             | j                  t        ||f             | j                  t        ||             | j                  t        ||f              G d d      }|j                  |        G d d	|      }| j                  t        ||             | j                  t        ||f              G d
 d|      }|j                  |       | j                  t        ||             | j                  t        ||f             | j                  t        ||             | j                  t        ||f             | j                  t        ||             | j                  t        ||f             | j                  t        ||             | j                  t        ||f             | j                  t        ||             | j                  t        ||f             |j                  t                G d dt              }| j                  t        ||             | j                  t        ||f             | j                  d|       | j                  d|f       y )Nc                       e Zd Zy)Itest_factory.<locals>.TestABC.test_registration_transitiveness.<locals>.ANr  r
   r   r   r  rT  x  r  r   r  r    c                       e Zd Zy)Itest_factory.<locals>.TestABC.test_registration_transitiveness.<locals>.BNr  r
   r   r   r  rV  |  r  r   r  c                       e Zd Zy)Itest_factory.<locals>.TestABC.test_registration_transitiveness.<locals>.CNr  r
   r   r   r   rX    r  r   r   c                       e Zd Zy)Jtest_factory.<locals>.TestABC.test_registration_transitiveness.<locals>.B1Nr  r
   r   r   r  rZ    r  r   r  c                       e Zd Zy)Jtest_factory.<locals>.TestABC.test_registration_transitiveness.<locals>.C1Nr  r
   r   r   C1r\    r  r   r]  c                       e Zd Zy)Mtest_factory.<locals>.TestABC.test_registration_transitiveness.<locals>.MyIntNr  r
   r   r   MyIntr_    r  r   r`  r6  )r.   r  r/   r  r=  r  )r   r  r  r   r  r]  r`  r6   s          r    test_registration_transitivenessz>test_factory.<locals>.TestABC.test_registration_transitivenessw  s/   k OOJq!,-OOJq1$/0k Z1-.ZA401Z1-.ZA401k JJqMQ OOJr1-.OOJrA401Q KKOZ1-.ZA401Z2./ZB512OOJr1-.OOJrA401OOJr1-.OOJrA401OOJr2./OOJrB512KK OOJua01OOJuqd34!!"a(!!"qd+r   c                 Z  	  G d d
      }| j                  t              5  t        i |       d d d        | j                  t              5  t        d|       d d d         G d d      }| j                  t              5  t         |       |       d d d        d d d d	 g}t        |      D ]\  \  } G fd
d
      }| j	                  |      5  | j                  t              5  t        t
        |       d d d        d d d        ^  G d dt              dfd	 G 	fdd
      }| j                        5  t        t
        |       d d d        y # 1 sw Y   1xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zy)Ftest_factory.<locals>.TestABC.test_issubclass_bad_arguments.<locals>.ANr  r
   r   r   r  rd    r  r   r  r    r6  c                       e Zd ZdZy)Ftest_factory.<locals>.TestABC.test_issubclass_bad_arguments.<locals>.Cr6  N)r   r   r   __mro__r
   r   r   r   rf    s    r   r   c                     g S r	   r
   )r  s    r   <lambda>zMtest_factory.<locals>.TestABC.test_issubclass_bad_arguments.<locals>.<lambda>  s    " r   c                       yNr6  r
   r
   r   r   ri  zMtest_factory.<locals>.TestABC.test_issubclass_bad_arguments.<locals>.<lambda>      r   c                      dgS rk  r
   r
   r   r   ri  zMtest_factory.<locals>.TestABC.test_issubclass_bad_arguments.<locals>.<lambda>  s     r   c                       e Zd ZW  ZyFtest_factory.<locals>.TestABC.test_issubclass_bad_arguments.<locals>.SNr   r   r   __subclasses__)funcs   r   Srp    s    %)Nr   rt  )ic                       e Zd Zy)Ptest_factory.<locals>.TestABC.test_issubclass_bad_arguments.<locals>.CustomErrorNr  r
   r   r   CustomErrorrw    r;  r   rx  zexception from __subclasses__c                              r	   r
   )rx  exc_msgs   r   	raise_exczNtest_factory.<locals>.TestABC.test_issubclass_bad_arguments.<locals>.raise_exc  s    !'**r   c                       e Zd ZW  Zyro  rq  )r{  s   r   rt  zFtest_factory.<locals>.TestABC.test_issubclass_bad_arguments.<locals>.S  s    !*r   )r1   r2   r  	enumeratesubTestr=  	Exceptionr   )r   r  r   bogus_subclassesru  rt  rx  rz  rs  r{  r6   s         @@@@r   test_issubclass_bad_argumentsz;test_factory.<locals>.TestABC.test_issubclass_bad_arguments  s   k  ""9- "2q!" ""9- "2q!"
  ""9- #13"# 	  %%56 +4*+ * \\A\& +**95 +"3*++ +	+ .i-5G++k + ''W= #3"# #U" "" "# #"+ ++ +# #sS   E#E0E=F/F	 F	F!#E-0E:=F	FFF	!F*c                     G fddt         j                        | j                  t                     | j                  t        f              G d d      }| j	                  t        |             | j	                  t        |f              G d d      }| j                  t        |             | j                  t        |f             y )Nc                   "    e Zd Ze fd       Zy):test_factory.<locals>.TestABC.test_subclasshook.<locals>.Ac                 4    | u rd|j                   v S t        S )Nr   )__dict__NotImplemented)r;   r   r  s     r   __subclasshook__zKtest_factory.<locals>.TestABC.test_subclasshook.<locals>.A.__subclasshook__  s    ax$

22))r   N)r   r   r   rI   r  )r  s   r   r  r    s    * *r   r  r    c                       e Zd ZdZy):test_factory.<locals>.TestABC.test_subclasshook.<locals>.Br6  Nr   r
   r   r   r  r    s    r   r  c                       e Zd ZdZy):test_factory.<locals>.TestABC.test_subclasshook.<locals>.Cr6  N)r   r   r   spamr
   r   r   r   r    s    r   r   )r   ro   r/   r  r.   )r   r  r   r  s      @r   test_subclasshookz/test_factory.<locals>.TestABC.test_subclasshook  s    *ckk * Z1-.ZA401 OOJq!,-OOJq1$/0 Z1-.ZA401r   c                      G d d      } G fddt                G d d|      }| j                  j                  d        |        | j                  j                  d	       y )
Nc                       e Zd Zy)Htest_factory.<locals>.TestABC.test_all_new_methods_are_called.<locals>.ANr  r
   r   r   r  r    r  r   r  r    c                   &     e Zd ZdZ fdZ xZS )Htest_factory.<locals>.TestABC.test_all_new_methods_are_called.<locals>.Br   c                 L    xj                   dz  c_         t        | 	  |       S r  )counterr&   __new__)r;   r  r(   s    r   r  zPtest_factory.<locals>.TestABC.test_all_new_methods_are_called.<locals>.B.__new__  s    IINI 7?3//r   )r   r   r   r  r  r+   )r(   r  s   @r   r  r    s    0 0r   r  c                       e Zd Zy)Htest_factory.<locals>.TestABC.test_all_new_methods_are_called.<locals>.CNr  r
   r   r   r   r    r  r   r   r   r  )r   r3   r  )r   r  r   r  r6   s      @r   test_all_new_methods_are_calledz=test_factory.<locals>.TestABC.test_all_new_methods_are_called  sV    k 0F 0
Aq QYY*CQYY*r   c                 V    | j                  t        t        j                  d             y )N	__slots__)r.   r0   r   rm   r   s    r   test_ABC_has___slots__z4test_factory.<locals>.TestABC.test_ABC_has___slots__  s    OOGCGG[9:r   c           	          d } G d d      } G d d      } G d d |||            }| j                  |j                         y )Nc                 Z      G  fddt               }t         j                  |ddi       S )Nc                       e Zd Z fdZy)^test_factory.<locals>.TestABC.test_tricky_new_works.<locals>.with_metaclass.<locals>.metaclassc                      ||      S r	   r
   )r;   name
this_basesdbasesr  s       r   r  zftest_factory.<locals>.TestABC.test_tricky_new_works.<locals>.with_metaclass.<locals>.metaclass.__new__  s    #D%33r   N)r   r   r   r  )r  r  s   r   r!   r    s    4r   r!   temporary_classr
   )rn   r  )r  r  r!   s   `` r   with_metaclasszKtest_factory.<locals>.TestABC.test_tricky_new_works.<locals>.with_metaclass  s'    4 4 ||I/@"bIIr   c                       e Zd Zy)>test_factory.<locals>.TestABC.test_tricky_new_works.<locals>.ANr  r
   r   r   r  r    r;  r   r  c                       e Zd Zy)>test_factory.<locals>.TestABC.test_tricky_new_works.<locals>.BNr  r
   r   r   r  r    r;  r   r  c                       e Zd Zy)>test_factory.<locals>.TestABC.test_tricky_new_works.<locals>.CNr  r
   r   r   r   r    r  r   r   )r3   r(   )r   r  r  r  r   r6   s        r   test_tricky_new_worksz3test_factory.<locals>.TestABC.test_tricky_new_works  s>    J
 LLN;15 Q[[+6r   c                     G d d      }|` | j                  |j                  dh       | j                  t	        |d             t        j                  |       | j                  |j                  t                       |        y )Nc                   0    e Zd Zej                  d        Zy)8test_factory.<locals>.TestABC.test_update_del.<locals>.Ac                      y r	   r
   r   s    r   r   z<test_factory.<locals>.TestABC.test_update_del.<locals>.A.foo   r   r   Nr   r   r   r   rh   r   r
   r   r   r  r    r   r   r  r    r   )r   r3   r   r/   r0   r   update_abstractmethodsr   rP  s     r   test_update_delz-test_factory.<locals>.TestABC.test_update_del  sn    k 
 Q22UG<WQ./&&q)Q22CE:Cr   c                      G d d      }t         j                  d        }||_        t        j                  |       | j	                  |j
                  ddh       d}| j                  t        ||       y )Nc                   0    e Zd Zej                  d        Zy)Htest_factory.<locals>.TestABC.test_update_new_abstractmethods.<locals>.Ac                      y r	   r
   r   s    r   r   zLtest_factory.<locals>.TestABC.test_update_new_abstractmethods.<locals>.A.bar  r   r   N)r   r   r   r   rh   r   r
   r   r   r  r    r   r   r  r    c                      y r	   r
   r   s    r   updated_foozRtest_factory.<locals>.TestABC.test_update_new_abstractmethods.<locals>.updated_foo      r   r   r   zCclass A without an implementation for abstract methods 'bar', 'foo')r   rh   r   r  r3   r   r   r2   )r   r  r  r   r6   s       r   test_update_new_abstractmethodsz=test_factory.<locals>.TestABC.test_update_new_abstractmethods  sq    k 
     AE&&q)Q22UENCWC""9c15r   c                 0    G d d      } G d d|      }d}| j                  t        ||       | j                  |j                  dh       d |_        t        j                  |        |        | j                  |j                  t                      y )	Nc                   0    e Zd Zej                  d        Zy)Ctest_factory.<locals>.TestABC.test_update_implementation.<locals>.Ac                      y r	   r
   r   s    r   r   zGtest_factory.<locals>.TestABC.test_update_implementation.<locals>.A.foo   r   r   Nr  r
   r   r   r  r    r   r   r  r    c                       e Zd Zy)Ctest_factory.<locals>.TestABC.test_update_implementation.<locals>.BNr  r
   r   r   r  r  $  r  r   r  ;class B without an implementation for abstract method 'foo'r   c                      y r	   r
   r   s    r   ri  zJtest_factory.<locals>.TestABC.test_update_implementation.<locals>.<lambda>+  rl  r   )r   r2   r3   r   r   r   r  r   r   r  r  r   r6   s       r   test_update_implementationz8test_factory.<locals>.TestABC.test_update_implementation  s    k 
A  PC""9c15Q22UG<%AE&&q)CQ22CE:r   c                      G d d      }d }t         j                  | G d d|                    } |        | j                  |j                  t	                      y )Nc                   0    e Zd Zej                  d        Zy)Atest_factory.<locals>.TestABC.test_update_as_decorator.<locals>.Ac                      y r	   r
   r   s    r   r   zEtest_factory.<locals>.TestABC.test_update_as_decorator.<locals>.A.foo4  r   r   Nr  r
   r   r   r  r  3  r   r   r  r    c                     d | _         | S )Nc                      y r	   r
   r   s    r   ri  zatest_factory.<locals>.TestABC.test_update_as_decorator.<locals>.class_decorator.<locals>.<lambda>9  rl  r   )r   r:   s    r   class_decoratorzOtest_factory.<locals>.TestABC.test_update_as_decorator.<locals>.class_decorator8  s    +
r   c                       e Zd Zy)Atest_factory.<locals>.TestABC.test_update_as_decorator.<locals>.BNr  r
   r   r   r  r  <  s     r   r  )r   r  r3   r   r   )r   r  r  r  r6   s       r   test_update_as_decoratorz6test_factory.<locals>.TestABC.test_update_as_decorator2  s\    k 
 ''A   ( CQ22CE:r   c                      G d d      }t         j                  d        }||_        t        j                  |        |        | j	                  t        |d             y )Nc                       e Zd Zy)<test_factory.<locals>.TestABC.test_update_non_abc.<locals>.ANr  r
   r   r   r  r  E  r  r   r  c                      y r	   r
   r   s    r   r  zFtest_factory.<locals>.TestABC.test_update_non_abc.<locals>.updated_fooH  r  r   r   )r   rh   r   r  r/   r0   )r   r  r  s      r   test_update_non_abcz1test_factory.<locals>.TestABC.test_update_non_abcD  sX          AE&&q)CWQ(=>?r   c                      G d d      } G d d|      } |        |` t        j                  |       d}| j                  t        ||       y )Nc                   0    e Zd Zej                  d        Zy)Gtest_factory.<locals>.TestABC.test_update_del_implementation.<locals>.Ac                      y r	   r
   r   s    r   r   zKtest_factory.<locals>.TestABC.test_update_del_implementation.<locals>.A.fooS  r   r   Nr  r
   r   r   r  r  R  r   r   r  r    c                       e Zd Zd Zy)Gtest_factory.<locals>.TestABC.test_update_del_implementation.<locals>.Bc                      y r	   r
   r   s    r   r   zKtest_factory.<locals>.TestABC.test_update_del_implementation.<locals>.B.fooX      r   Nr   r
   r   r   r  r  W      r   r  r  r   r   r  r   r2   r  s       r   test_update_del_implementationz<test_factory.<locals>.TestABC.test_update_del_implementationQ  sL    k 
A  C&&q)OC""9c15r   c                      G d d      } G d d|      } G d d|      } |        |` t        j                  |       d}| j                  t        ||       y )	Nc                   0    e Zd Zej                  d        Zy)Ktest_factory.<locals>.TestABC.test_update_layered_implementation.<locals>.Ac                      y r	   r
   r   s    r   r   zOtest_factory.<locals>.TestABC.test_update_layered_implementation.<locals>.A.foof  r   r   Nr  r
   r   r   r  r  e  r   r   r  r    c                       e Zd Zy)Ktest_factory.<locals>.TestABC.test_update_layered_implementation.<locals>.BNr  r
   r   r   r  r  j  r  r   r  c                       e Zd Zd Zy)Ktest_factory.<locals>.TestABC.test_update_layered_implementation.<locals>.Cc                      y r	   r
   r   s    r   r   zOtest_factory.<locals>.TestABC.test_update_layered_implementation.<locals>.C.foon  r  r   Nr   r
   r   r   r   r  m  r  r   r   z;class C without an implementation for abstract method 'foo'r  )r   r  r  r   r   r6   s        r   "test_update_layered_implementationz@test_factory.<locals>.TestABC.test_update_layered_implementationd  sX    k 
A A  C&&q)OC""9c15r   c                     G d d      } G d d      } G d d||      }| j                  |j                  dh       |`t        j                  |       | j                  |j                  t                       |        y )	Nc                   0    e Zd Zej                  d        Zy)Ftest_factory.<locals>.TestABC.test_update_multi_inheritance.<locals>.Ac                      y r	   r
   r   s    r   r   zJtest_factory.<locals>.TestABC.test_update_multi_inheritance.<locals>.A.foo|  r   r   Nr  r
   r   r   r  r  {  r   r   r  r    c                       e Zd Zd Zy)Ftest_factory.<locals>.TestABC.test_update_multi_inheritance.<locals>.Bc                      y r	   r
   r   s    r   r   zJtest_factory.<locals>.TestABC.test_update_multi_inheritance.<locals>.B.foo  r  r   Nr   r
   r   r   r  r    r  r   r  c                   0    e Zd Zej                  d        Zy)Ftest_factory.<locals>.TestABC.test_update_multi_inheritance.<locals>.Cc                      y r	   r
   r   s    r   r   zJtest_factory.<locals>.TestABC.test_update_multi_inheritance.<locals>.C.foo  r   r   Nr  r
   r   r   r   r    r   r   r   r   )r3   r   r   r   r  r   r?  s       r   test_update_multi_inheritancez;test_factory.<locals>.TestABC.test_update_multi_inheritancez  ss    k 
k Aq 
 Q22UG<&&q)Q22CE:Cr   N)"r   r   r   rp   rt   r7   rK   r]   r   r   r   r   r   r  r  r'  r2  r@  rL  rQ  ra  r  r  r  r  r  r  r  r  r  r  r  r  r  )r6   r1  s   r   TestABCra   H   s    	+	C	)$	-(	+(	6		6	/8	(>	9<		+0	,*	1	1&	"	2%	,N/	#b	2$	+	;
	7	 	6 	;(	;$	@	6&	6,	r   r  c                   "    e Zd Z fdZ fdZy)-test_factory.<locals>.TestABCWithInitSubclassc           	           G d d      }i  G fdd      } G d d||dd	d
      }| j                  t        dd	d
             y )Nc                       e Zd ZdZy)\test_factory.<locals>.TestABCWithInitSubclass.test_works_with_init_subclass.<locals>.abc_ABCr
   N)r   r   r   r  r
   r   r   abc_ABCr    s    	r   r  r    c                   "     e Zd Z fdZ xZS )htest_factory.<locals>.TestABCWithInitSubclass.test_works_with_init_subclass.<locals>.ReceivesClassKwargsc                 D    t         |           j                  |       y r	   r&   __init_subclass__updater;   kwargsr(   saved_kwargss     r   r  zztest_factory.<locals>.TestABCWithInitSubclass.test_works_with_init_subclass.<locals>.ReceivesClassKwargs.__init_subclass__      G-/ ''/r   r   r   r   r  r+   r(   r  s   @r   ReceivesClassKwargsr        0 0r   r
  c                       e Zd Zy)]test_factory.<locals>.TestABCWithInitSubclass.test_works_with_init_subclass.<locals>.ReceiverNr  r
   r   r   Receiverr    r  r   r  r     r   )r  yzr3   dict)r   r  r
  r  r  r6   s       @r   test_works_with_init_subclasszKtest_factory.<locals>.TestABCWithInitSubclass.test_works_with_init_subclass  sL    K L0 0.1Q \4!qA+>?r   c                 x    i  G fdd      } G d d|d      }| j                  t        d             y )Nc                   "     e Zd Z fdZ xZS )otest_factory.<locals>.TestABCWithInitSubclass.test_positional_only_and_kwonlyargs_with_init_subclass.<locals>.Ac                 D    t         |           j                  |       y r	   r  r  s     r   r  ztest_factory.<locals>.TestABCWithInitSubclass.test_positional_only_and_kwonlyargs_with_init_subclass.<locals>.A.__init_subclass__  r  r   r  r	  s   @r   r  r    r  r   r  c                       e Zd Zy)otest_factory.<locals>.TestABCWithInitSubclass.test_positional_only_and_kwonlyargs_with_init_subclass.<locals>.BNr  r
   r   r   r  r    r  r   r  test)r!   r  )r  r  )r   r  r  r  r6   s      @r   6test_positional_only_and_kwonlyargs_with_init_subclasszdtest_factory.<locals>.TestABCWithInitSubclass.test_positional_only_and_kwonlyargs_with_init_subclass  s7    L0 0
A6 \4V+<=r   N)r   r   r   r  r  r^   s   r   TestABCWithInitSubclassr    s    
	@
	>r   r  )unittestTestCase)r6   r1  r_   r  r  s   ``   r   test_factoryr      sM    5+)) 5+pI	(## I	X>("3"3 >2 '#:::r   __main__)__doc__r  r   _py_abcinspectr   r   ro   get_cache_tokenTestLegacyAPI_Py
TestABC_PyTestABCWithInitSubclass_PyTestLegacyAPI_C	TestABC_CTestABCWithInitSubclass_Cr   mainr
   r   r   <module>r-     s      
  ^
;@ <HHKH[H[<] 8 *88DW__ELE\E\9^ 55 zHMMO r   