
    /hhu                     2   S r SSKrSSKrSSKrSSKrSSKJrJrJrJ	r	J
r
JrJr  SSKrSSKJr  \\\\	4r\
\4r\\-   r " S S\R&                  5      r " S S\R&                  5      r " S	 S
\R&                  5      rS r\S:X  a  \R2                  " 5         gg)zUnit tests for the copy module.    N)leltgegteqne
attrgetter)supportc                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8S7 r9S8 r:S9 r;S: r<S; r=S< r>S= r?S> r@S? rAS@ rBSA rCSB rDSC rESD rFSE rGSF rHSG rISH rJSI rKSJ rLSK rMSL rNSM rOSN rPSO rQSPrRgQ)RTestCopy   c                     U R                  [        R                  [        R                  5        U R	                  [        [        R                  [        5      5        g N)assertIscopyErrorerror
assertTrue
issubclass	Exceptionselfs    7/opt/python-3.13.8/usr/lib/python3.13/test/test_copy.pytest_exceptionsTestCopy.test_exceptions   s/    djj$**-
4::y9:    c                 V    Sn[         R                   " U5      nU R                  X5        g N*   )r   assertEqualr   xys      r   test_copy_basicTestCopy.test_copy_basic   s"    IIaLr   c                    ^  " U4S jS[         5      mT" S5      n[        R                  " U5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        g )Nc                   (   > \ rS rSrS rU 4S jrSrg)"TestCopy.test_copy_copy.<locals>.C    c                     Xl         g r   foor   r,   s     r   __init__+TestCopy.test_copy_copy.<locals>.C.__init__!       r   c                 (   > T" U R                   5      $ r   r+   r   Cs    r   __copy__+TestCopy.test_copy_copy.<locals>.C.__copy__#       {"r   r+   N)__name__
__module____qualname____firstlineno__r.   r4   __static_attributes__r3   s   r   r3   r(       s    # #r   r3   r   )objectr   r    	__class__r,   r   r"   r#   r3   s      @r   test_copy_copyTestCopy.test_copy_copy   sW    	# 	#
 bEIIaLakk2&r   c                   ^  " S S[         5      mU4S jnT" S5      nU R                  [        [        R                  U5        [        R
                  " TUT5        [        R                  " U5      nU R                  X#5        U R                  [        U5      T5        U R                  UR                  UR                  5        g )Nc                       \ rS rSrS rSrg)&TestCopy.test_copy_registry.<locals>.C+   c                 <    [         R                  U 5      nXl        U$ r   r=   __new__r,   clsr,   objs      r   rH   .TestCopy.test_copy_registry.<locals>.C.__new__,       nnS)
r    Nr7   r8   r9   r:   rH   r;   rN   r   r   r3   rD   +       r   r3   c                 "   > TU R                   44$ r   r+   rK   r3   s    r   pickle_C-TestCopy.test_copy_registry.<locals>.pickle_C0       z?"r   r   )
r=   assertRaises	TypeErrorr   copyregpickleassertIsNotr    typer,   r   rS   r"   r#   r3   s       @r   test_copy_registryTestCopy.test_copy_registry*   s    	 	
	#bE)TYY2q(A&IIaLa!$&r   c                    ^  " U4S jS[         5      n/ mU" 5       n[        R                  " U5      nU R                  X25        U R                  TS/5        g )Nc                   (   > \ rS rSrU 4S jrS rSrg)'TestCopy.test_copy_reduce_ex.<locals>.C;   c                 (   > TR                  S5        gN    appendr   protocs     r   __reduce_ex__5TestCopy.test_copy_reduce_ex.<locals>.C.__reduce_ex__<       r   c                 &    U R                  S5        g Nzshouldn't call thisfailr   s    r   
__reduce__2TestCopy.test_copy_reduce_ex.<locals>.C.__reduce__?       		/0r   rN   Nr7   r8   r9   r:   rl   rs   r;   rk   s   r   r3   ra   ;       1r   r3   re   r=   r   r   r    r   r3   r"   r#   rk   s       @r   test_copy_reduce_exTestCopy.test_copy_reduce_ex:   sH    	1 	1 CIIaLaQC r   c                    ^  " U4S jS[         5      n/ mU" 5       n[        R                  " U5      nU R                  X25        U R                  TS/5        g )Nc                   "   > \ rS rSrU 4S jrSrg)$TestCopy.test_copy_reduce.<locals>.CH   c                 (   > TR                  S5        grd   rg   r   rk   s    r   rs   /TestCopy.test_copy_reduce.<locals>.C.__reduce__I   rn   r   rN   Nr7   r8   r9   r:   rs   r;   rw   s   r   r3   r   H        r   r3   re   ry   rz   s       @r   test_copy_reduceTestCopy.test_copy_reduceG   sH    	 	 CIIaLaQC r   c                      " S S[         5      nU" 5       nU R                  [        R                  [        R                  U5        g )Nc                       \ rS rSrS rSrg)"TestCopy.test_copy_cant.<locals>.CS   c                 n    UR                  S5      (       a  [        U5      e[        R                  X5      $ N__reduce
startswithAttributeErrorr=   __getattribute__r   names     r   r   3TestCopy.test_copy_cant.<locals>.C.__getattribute__T   -    ??:..(....t::r   rN   Nr7   r8   r9   r:   r   r;   rN   r   r   r3   r   S       ;r   r3   )r=   rV   r   r   r   r3   r"   s      r   test_copy_cantTestCopy.test_copy_cantR   s1    	; 	;
 C$**dii3r   c                 \    " S S5      nS n " S S[         R                  S9nS S[        SS	S
-  SSSSSSUR                  S[	        [        S5      5      [        S5      [        SSS	5      U[        U[        5       /nU H)  nU R                  [        R                  " U5      U5        M+     g )Nc                       \ rS rSrSrg)+TestCopy.test_copy_atomic.<locals>.NewStyle^   rN   Nr7   r8   r9   r:   r;   rN   r   r   NewStyler   ^       r   r   c                      g r   rN   rN   r   r   f$TestCopy.test_copy_atomic.<locals>.f`       r   c                       \ rS rSrSrg)0TestCopy.test_copy_atomic.<locals>.WithMetaclassb   rN   Nr   rN   r   r   WithMetaclassr   b   r   r   r   	metaclass.r      d   Q	@TF              ?hello   helloሴs   world   
   re   )abcABCMetaNotImplemented__code__bytesrangeslicemaxpropertyr   r   )r   r   r   r   testsr"   s         r   test_copy_atomicTestCopy.test_copy_atomic]   s    	 			ckk 	sNQVT4-5s,eBiq"a3xz	;
 AMM$))A,* r   c                     / SQn[         R                   " U5      nU R                  X!5        U R                  X!5        / n[         R                   " U5      nU R                  X!5        U R                  X!5        g )Nre   r      r   r    rZ   r!   s      r   test_copy_listTestCopy.test_copy_listl   s^    IIaLIIaLr   c                     SnU R                  [        R                  " U5      U5        SnU R                  [        R                  " U5      U5        SSS/ 4nU R                  [        R                  " U5      U5        g )Nr   rN   re   r   r   )r   r   r   r"   s     r   test_copy_tupleTestCopy.test_copy_tuplev   s[    diilA&diilA&1bMdiilA&r   c                     SSS.n[         R                   " U5      nU R                  X!5        U R                  X!5        0 n[         R                   " U5      nU R                  X!5        U R                  X!5        g )Nre   r   r,   barr   r!   s      r   test_copy_dictTestCopy.test_copy_dict~   sc    a IIaLIIaLr   c                     1 Skn[         R                   " U5      nU R                  X!5        U R                  X!5        [        5       n[         R                   " U5      nU R                  X!5        U R                  X!5        g N>   re   r   r   )r   r    rZ   setr!   s      r   test_copy_setTestCopy.test_copy_set   s`    IIaLEIIaLr   c                     [        1 Sk5      nU R                  [        R                  " U5      U5        [        5       nU R                  [        R                  " U5      U5        g r   )	frozensetr   r   r   s     r   test_copy_frozensetTestCopy.test_copy_frozenset   s?    i diilA&KdiilA&r   c                    [        S5      n[        R                  " U5      nU R                  X!5        U R                  X!5        [        5       n[        R                  " U5      nU R                  X!5        U R                  X!5        g )Ns   abc)	bytearrayr   r    rZ   r!   s      r   test_copy_bytearrayTestCopy.test_copy_bytearray   se    fIIaLKIIaLr   c                 t     " S S5      nU" S5      nU R                  [        R                  " U5      U5        g )Nc                        \ rS rSrS rS rSrg)*TestCopy.test_copy_inst_vanilla.<locals>.C   c                     Xl         g r   r+   r-   s     r   r.   3TestCopy.test_copy_inst_vanilla.<locals>.C.__init__   r0   r   c                 4    U R                   UR                   :H  $ r   r+   r   others     r   __eq__1TestCopy.test_copy_inst_vanilla.<locals>.C.__eq__       xx599,,r   r+   Nr7   r8   r9   r:   r.   r   r;   rN   r   r   r3   r          -r   r3   r   r    r   r   s      r   test_copy_inst_vanillaTestCopy.test_copy_inst_vanilla   s/    	- 	-
 bE1q)r   c                 |   ^  " U4S jS5      mT" S5      nU R                  [        R                  " U5      U5        g )Nc                   .   > \ rS rSrS rU 4S jrS rSrg)'TestCopy.test_copy_inst_copy.<locals>.C   c                     Xl         g r   r+   r-   s     r   r.   0TestCopy.test_copy_inst_copy.<locals>.C.__init__   r0   r   c                 (   > T" U R                   5      $ r   r+   r2   s    r   r4   0TestCopy.test_copy_inst_copy.<locals>.C.__copy__   r6   r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   .TestCopy.test_copy_inst_copy.<locals>.C.__eq__   r   r   r+   N)r7   r8   r9   r:   r.   r4   r   r;   r<   s   r   r3   r      s    #-r   r3   r   r   r   r"   r3   s     @r   test_copy_inst_copyTestCopy.test_copy_inst_copy   s0    	- 	- bE1q)r   c                 t     " S S5      nU" S5      nU R                  [        R                  " U5      U5        g )Nc                   &    \ rS rSrS rS rS rSrg).TestCopy.test_copy_inst_getinitargs.<locals>.C   c                     Xl         g r   r+   r-   s     r   r.   7TestCopy.test_copy_inst_getinitargs.<locals>.C.__init__   r0   r   c                     U R                   4$ r   r+   r   s    r   __getinitargs__>TestCopy.test_copy_inst_getinitargs.<locals>.C.__getinitargs__       {"r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   5TestCopy.test_copy_inst_getinitargs.<locals>.C.__eq__   r   r   r+   Nr7   r8   r9   r:   r.   r  r   r;   rN   r   r   r3   r          #-r   r3   r   r   r   s      r   test_copy_inst_getinitargs#TestCopy.test_copy_inst_getinitargs   /    	- 	- bE1q)r   c                     " S S[         5      nU" S5      n[        R                  " U5      nU R                  X15        U R                  X25        U R	                  X25        U R                  UR
                  UR
                  5        g )Nc                   &    \ rS rSrS rS rS rSrg)-TestCopy.test_copy_inst_getnewargs.<locals>.C   c                 <    [         R                  U 5      nXl        U$ r   intrH   r,   rJ   r,   r   s      r   rH   5TestCopy.test_copy_inst_getnewargs.<locals>.C.__new__       {{3'r   c                     U R                   4$ r   r+   r   s    r   __getnewargs__<TestCopy.test_copy_inst_getnewargs.<locals>.C.__getnewargs__       xxy r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   4TestCopy.test_copy_inst_getnewargs.<locals>.C.__eq__   r   r   r+   Nr7   r8   r9   r:   rH   r  r   r;   rN   r   r   r3   r         !-r   r3   r   r  r   assertIsInstancer    rZ   r,   r   r3   r"   r#   s       r   test_copy_inst_getnewargs"TestCopy.test_copy_inst_getnewargs   sh    	- 	- bEIIaLa#&r   c                     " S S[         5      nU" SS9n[        R                  " U5      nU R                  X15        U R                  X25        U R	                  X25        U R                  UR
                  UR
                  5        g )Nc                   &    \ rS rSrS rS rS rSrg)0TestCopy.test_copy_inst_getnewargs_ex.<locals>.C   c                <    [         R                  U 5      nXl        U$ r   r  r  s      r   rH   8TestCopy.test_copy_inst_getnewargs_ex.<locals>.C.__new__   r  r   c                 "    SSU R                   04$ NrN   r,   r+   r   s    r   __getnewargs_ex__BTestCopy.test_copy_inst_getnewargs_ex.<locals>.C.__getnewargs_ex__       E488,,,r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   7TestCopy.test_copy_inst_getnewargs_ex.<locals>.C.__eq__   r   r   r+   Nr7   r8   r9   r:   rH   r+  r   r;   rN   r   r   r3   r%         --r   r3   r   r+   r  r   s       r   test_copy_inst_getnewargs_ex%TestCopy.test_copy_inst_getnewargs_ex   sh    	- 	- "IIIaLa#&r   c                 t     " S S5      nU" S5      nU R                  [        R                  " U5      U5        g )Nc                   &    \ rS rSrS rS rS rSrg)+TestCopy.test_copy_inst_getstate.<locals>.C   c                     Xl         g r   r+   r-   s     r   r.   4TestCopy.test_copy_inst_getstate.<locals>.C.__init__   r0   r   c                     SU R                   0$ Nr,   r+   r   s    r   __getstate__8TestCopy.test_copy_inst_getstate.<locals>.C.__getstate__       txx((r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   2TestCopy.test_copy_inst_getstate.<locals>.C.__eq__   r   r   r+   Nr7   r8   r9   r:   r.   r<  r   r;   rN   r   r   r3   r6         )-r   r3   r   r   r   s      r   test_copy_inst_getstate TestCopy.test_copy_inst_getstate   r  r   c                 t     " S S5      nU" S5      nU R                  [        R                  " U5      U5        g )Nc                   &    \ rS rSrS rS rS rSrg)+TestCopy.test_copy_inst_setstate.<locals>.C   c                     Xl         g r   r+   r-   s     r   r.   4TestCopy.test_copy_inst_setstate.<locals>.C.__init__   r0   r   c                     US   U l         g r;  r+   r   states     r   __setstate__8TestCopy.test_copy_inst_setstate.<locals>.C.__setstate__        <r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   2TestCopy.test_copy_inst_setstate.<locals>.C.__eq__   r   r   r+   Nr7   r8   r9   r:   r.   rN  r   r;   rN   r   r   r3   rG         (-r   r3   r   r   r   s      r   test_copy_inst_setstate TestCopy.test_copy_inst_setstate   r  r   c                      " S S5      nU" S5      nU R                  [        R                  " U5      U5        U" S5      nU R                  [        R                  " U5      U5        g )Nc                   ,    \ rS rSrS rS rS rS rSrg)4TestCopy.test_copy_inst_getstate_setstate.<locals>.C   c                     Xl         g r   r+   r-   s     r   r.   =TestCopy.test_copy_inst_getstate_setstate.<locals>.C.__init__   r0   r   c                     U R                   $ r   r+   r   s    r   r<  ATestCopy.test_copy_inst_getstate_setstate.<locals>.C.__getstate__       xxr   c                     Xl         g r   r+   rL  s     r   rN  ATestCopy.test_copy_inst_getstate_setstate.<locals>.C.__setstate__        r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   ;TestCopy.test_copy_inst_getstate_setstate.<locals>.C.__eq__  r   r   r+   N	r7   r8   r9   r:   r.   r<  rN  r   r;   rN   r   r   r3   rY          !-r   r3   r   g        r   r   s      r    test_copy_inst_getstate_setstate)TestCopy.test_copy_inst_getstate_setstate   sP    	- 	- bE1q)cF1q)r   c                 V    Sn[         R                  " U5      nU R                  X!5        g r   )r   deepcopyr    r!   s      r   test_deepcopy_basicTestCopy.test_deepcopy_basic  s#    MM!r   c                     / nX/n[         R                  " U5      nU R                  X!5        U R                  X!5        U R                  US   US   5        U R	                  US   US   5        g Nr   re   )r   rj  r    rZ   r   r!   s      r   test_deepcopy_memoTestCopy.test_deepcopy_memo  sh     FMM!1qt$adAaD!r   c                      " S S[         5      n " S SUS9nU R                  [        R                  " U5      U5        g )Nc                       \ rS rSrSrg)/TestCopy.test_deepcopy_issubclass.<locals>.Metai   rN   Nr   rN   r   r   Metars     r   r   rt  c                       \ rS rSrSrg),TestCopy.test_deepcopy_issubclass.<locals>.Ci"  rN   Nr   rN   r   r   r3   rv  "  r   r   r3   r   )r[   r    r   rj  )r   rt  r3   s      r   test_deepcopy_issubclass!TestCopy.test_deepcopy_issubclass  s3    
	4 		$ 	q)1-r   c                    ^  " U4S jS[         5      mT" S5      n[        R                  " U5      nU R                  UR                  UR                  5        U R                  UR
                  UR
                  5        g )Nc                   ,   > \ rS rSrS rSU 4S jjrSrg)*TestCopy.test_deepcopy_deepcopy.<locals>.Ci'  c                     Xl         g r   r+   r-   s     r   r.   3TestCopy.test_deepcopy_deepcopy.<locals>.C.__init__(  r0   r   Nc                 (   > T" U R                   5      $ r   r+   r   memor3   s     r   __deepcopy__7TestCopy.test_deepcopy_deepcopy.<locals>.C.__deepcopy__*  r6   r   r+   r   )r7   r8   r9   r:   r.   r  r;   r<   s   r   r3   r{  '  s    # #r   r3   r   )r=   r   rj  r    r>   r,   r?   s      @r   test_deepcopy_deepcopyTestCopy.test_deepcopy_deepcopy&  sX    	# 	#
 bEMM!akk2&r   c                   ^  " S S[         5      mU4S jnT" S5      nU R                  [        [        R                  U5        [
        R                  " TUT5        [        R                  " U5      nU R                  X#5        U R                  [        U5      T5        U R                  UR                  UR                  5        g )Nc                       \ rS rSrS rSrg)*TestCopy.test_deepcopy_registry.<locals>.Ci2  c                 <    [         R                  U 5      nXl        U$ r   rG   rI   s      r   rH   2TestCopy.test_deepcopy_registry.<locals>.C.__new__3  rM   r   rN   NrO   rN   r   r   r3   r  2  rP   r   r3   c                 "   > TU R                   44$ r   r+   rR   s    r   rS   1TestCopy.test_deepcopy_registry.<locals>.pickle_C7  rU   r   r   )r=   rV   rW   r   rj  rX   rY   rZ   r    r[   r,   r\   s       @r   test_deepcopy_registryTestCopy.test_deepcopy_registry1  s    	 	
	#bE)T]]A6q(A&MM!a!$&r   c                    ^  " U4S jS[         5      n/ mU" 5       n[        R                  " U5      nU R                  X25        U R	                  TS/5        g )Nc                   (   > \ rS rSrU 4S jrS rSrg)+TestCopy.test_deepcopy_reduce_ex.<locals>.CiB  c                 (   > TR                  S5        grd   rg   ri   s     r   rl   9TestCopy.test_deepcopy_reduce_ex.<locals>.C.__reduce_ex__C  rn   r   c                 &    U R                  S5        g rp   rq   r   s    r   rs   6TestCopy.test_deepcopy_reduce_ex.<locals>.C.__reduce__F  ru   r   rN   Nrv   rw   s   r   r3   r  B  rx   r   r3   re   r=   r   rj  r   r    rz   s       @r   test_deepcopy_reduce_ex TestCopy.test_deepcopy_reduce_exA  sI    	1 	1 CMM!aQC r   c                    ^  " U4S jS[         5      n/ mU" 5       n[        R                  " U5      nU R                  X25        U R	                  TS/5        g )Nc                   "   > \ rS rSrU 4S jrSrg)(TestCopy.test_deepcopy_reduce.<locals>.CiO  c                 (   > TR                  S5        grd   rg   r   s    r   rs   3TestCopy.test_deepcopy_reduce.<locals>.C.__reduce__P  rn   r   rN   Nr   rw   s   r   r3   r  O  r   r   r3   re   r  rz   s       @r   test_deepcopy_reduceTestCopy.test_deepcopy_reduceN  sI    	 	 CMM!aQC r   c                      " S S[         5      nU" 5       nU R                  [        R                  [        R                  U5        g )Nc                       \ rS rSrS rSrg)&TestCopy.test_deepcopy_cant.<locals>.CiZ  c                 n    UR                  S5      (       a  [        U5      e[        R                  X5      $ r   r   r   s     r   r   7TestCopy.test_deepcopy_cant.<locals>.C.__getattribute__[  r   r   rN   Nr   rN   r   r   r3   r  Z  r   r   r3   )r=   rV   r   r   rj  r   s      r   test_deepcopy_cantTestCopy.test_deepcopy_cantY  s1    	; 	;
 C$**dmmQ7r   c                      " S S5      nS nS S[         SSS-  SS	S
SSSSUR                  U[        S5      [        [	        5       /nU H)  nU R                  [        R                  " U5      U5        M+     g )Nc                       \ rS rSrSrg)/TestCopy.test_deepcopy_atomic.<locals>.NewStyleie  rN   Nr   rN   r   r   r   r  e  r   r   r   c                      g r   rN   rN   r   r   r   (TestCopy.test_deepcopy_atomic.<locals>.fg  r   r   .r   r   r   r   TFr   s   bytesr   r   r   )r   r   r   r   r   r   r   rj  )r   r   r   r   r"   s        r   test_deepcopy_atomicTestCopy.test_deepcopy_atomicd  sn    	 		sNB3dE27M1::59c8:7 AMM$--*A. r   c                     SS/S/n[         R                  " U5      nU R                  X!5        U R                  X5        U R                  US   US   5        g Nre   r   r   r   r   rj  r    rZ   r!   s      r   test_deepcopy_listTestCopy.test_deepcopy_listo  Q    VQKMM!1qt$r   c                     / nUR                  U5        [        R                  " U5      n[         H  nU R	                  [
        X2U5        M     U R                  X!5        U R                  US   U5        U R                  [        U5      S5        g rn  )
rh   r   rj  comparisonsrV   RecursionErrorrZ   r   r    lenr   r"   r#   ops       r   test_deepcopy_reflexive_list%TestCopy.test_deepcopy_reflexive_listv  sp    	MM!BnbQ7 adAQ#r   c                 V    Sn[         R                  " U5      nU R                  X5        g NrN   r   rj  r   r!   s      r   test_deepcopy_empty_tuple"TestCopy.test_deepcopy_empty_tuple  s!    MM!ar   c                     SS/S4n[         R                  " U5      nU R                  X!5        U R                  X5        U R                  US   US   5        g r  r  r!   s      r   test_deepcopy_tupleTestCopy.test_deepcopy_tuple  r  r   c                 V    Sn[         R                  " U5      nU R                  X5        g )N)re   r   r   r  r!   s      r   !test_deepcopy_tuple_of_immutables*TestCopy.test_deepcopy_tuple_of_immutables  s!    MM!ar   c                 (   / 4nUS   R                  U5        [        R                  " U5      n[         H  nU R	                  [
        X2U5        M     U R                  X!5        U R                  US   US   5        U R                  US   S   U5        g Nr   )rh   r   rj  r  rV   r  rZ   r   r  s       r   test_deepcopy_reflexive_tuple&TestCopy.test_deepcopy_reflexive_tuple  s~    E	!AMM!BnbQ7 1qt$ad1gq!r   c                     SS/SS.n[         R                  " U5      nU R                  X!5        U R                  X5        U R                  US   US   5        g )Nre   r   r   r   r,   r  r!   s      r   test_deepcopy_dictTestCopy.test_deepcopy_dict  sR    F1%MM!51U8,r   c                 N   0 nXS'   [         R                  " U5      n[         H  nU R                  [        X2U5        M     [
         H  nU R                  [        X2U5        M     U R                  X!5        U R                  US   U5        U R                  [        U5      S5        g )Nr,   re   )r   rj  order_comparisonsrV   rW   equality_comparisonsr  rZ   r   r    r  r  s       r   test_deepcopy_reflexive_dict%TestCopy.test_deepcopy_reflexive_dict  s    %MM!#Bi2 $&BnbQ7 'ah"Q#r   c                 z    0 n/ n[         R                  " X!5      nU R                  U[        U5         S   U5        g r  )r   rj  r   idr   r  r"   r#   s       r   test_deepcopy_keepalive TestCopy.test_deepcopy_keepalive  s5    MM!"d2d8nQ'+r   c                 "   0 n/ SQn[         R                  " X!5      nU R                  X25        U R                  [        U5      S5        0 nS/n[         R                  " X!5      nU R                  X25        U R                  [        U5      S5        g )N)re   r   r      r   r  )r   rj  r    r  r  s       r   !test_deepcopy_dont_memo_immutable*TestCopy.test_deepcopy_dont_memo_immutable  sx    MM!"TA&HMM!"TA&r   c                      " S S5      nU" S/5      n[         R                  " U5      nU R                  X25        U R                  UR                  UR                  5        g )Nc                        \ rS rSrS rS rSrg).TestCopy.test_deepcopy_inst_vanilla.<locals>.Ci  c                     Xl         g r   r+   r-   s     r   r.   7TestCopy.test_deepcopy_inst_vanilla.<locals>.C.__init__  r0   r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   5TestCopy.test_deepcopy_inst_vanilla.<locals>.C.__eq__  r   r   r+   Nr   rN   r   r   r3   r    r   r   r3   r   r   rj  r    rZ   r,   r   s       r   test_deepcopy_inst_vanilla#TestCopy.test_deepcopy_inst_vanilla  sM    	- 	-
 rdGMM!&r   c                    ^  " U4S jS5      mT" S/5      n[         R                  " U5      nU R                  X!5        U R                  X!5        U R                  UR                  UR                  5        g )Nc                   .   > \ rS rSrS rU 4S jrS rSrg)/TestCopy.test_deepcopy_inst_deepcopy.<locals>.Ci  c                     Xl         g r   r+   r-   s     r   r.   8TestCopy.test_deepcopy_inst_deepcopy.<locals>.C.__init__  r0   r   c                 R   > T" [         R                  " U R                  U5      5      $ r   )r   rj  r,   r  s     r   r  <TestCopy.test_deepcopy_inst_deepcopy.<locals>.C.__deepcopy__  s    txx677r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   6TestCopy.test_deepcopy_inst_deepcopy.<locals>.C.__eq__  r   r   r+   N)r7   r8   r9   r:   r.   r  r   r;   r<   s   r   r3   r    s    8-r   r3   r   r  r?   s      @r   test_deepcopy_inst_deepcopy$TestCopy.test_deepcopy_inst_deepcopy  s\    	- 	- rdGMM!&r   c                      " S S5      nU" S/5      n[         R                  " U5      nU R                  X25        U R                  X25        U R                  UR                  UR                  5        g )Nc                   &    \ rS rSrS rS rS rSrg)2TestCopy.test_deepcopy_inst_getinitargs.<locals>.Ci  c                     Xl         g r   r+   r-   s     r   r.   ;TestCopy.test_deepcopy_inst_getinitargs.<locals>.C.__init__  r0   r   c                     U R                   4$ r   r+   r   s    r   r  BTestCopy.test_deepcopy_inst_getinitargs.<locals>.C.__getinitargs__  r  r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   9TestCopy.test_deepcopy_inst_getinitargs.<locals>.C.__eq__  r   r   r+   Nr  rN   r   r   r3   r    r  r   r3   r   r  r   s       r   test_deepcopy_inst_getinitargs'TestCopy.test_deepcopy_inst_getinitargs  [    	- 	- rdGMM!&r   c                 ^    " S S[         5      nU" S/5      n[        R                  " U5      nU R                  X15        U R	                  X25        U R                  X25        U R	                  UR                  UR                  5        U R                  UR                  UR                  5        g )Nc                   &    \ rS rSrS rS rS rSrg)1TestCopy.test_deepcopy_inst_getnewargs.<locals>.Ci  c                 <    [         R                  U 5      nXl        U$ r   r  r  s      r   rH   9TestCopy.test_deepcopy_inst_getnewargs.<locals>.C.__new__  r  r   c                     U R                   4$ r   r+   r   s    r   r  @TestCopy.test_deepcopy_inst_getnewargs.<locals>.C.__getnewargs__  r  r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   8TestCopy.test_deepcopy_inst_getnewargs.<locals>.C.__eq__  r   r   r+   Nr  rN   r   r   r3   r    r  r   r3   r   r  r   rj  r  r    rZ   r,   r   s       r   test_deepcopy_inst_getnewargs&TestCopy.test_deepcopy_inst_getnewargs  s    	- 	- rdGMM!a#&&r   c                 Z    " S S[         5      nU" S/S9n[        R                  " U5      nU R                  X15        U R	                  X25        U R                  X25        U R	                  UR                  UR                  5        U R                  UR                  UR                  5        g )Nc                   &    \ rS rSrS rS rS rSrg)4TestCopy.test_deepcopy_inst_getnewargs_ex.<locals>.Ci  c                <    [         R                  U 5      nXl        U$ r   r  r  s      r   rH   <TestCopy.test_deepcopy_inst_getnewargs_ex.<locals>.C.__new__  r  r   c                 "    SSU R                   04$ r*  r+   r   s    r   r+  FTestCopy.test_deepcopy_inst_getnewargs_ex.<locals>.C.__getnewargs_ex__  r-  r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   ;TestCopy.test_deepcopy_inst_getnewargs_ex.<locals>.C.__eq__  r   r   r+   Nr0  rN   r   r   r3   r    r1  r   r3   r   r+   r  r   s       r    test_deepcopy_inst_getnewargs_ex)TestCopy.test_deepcopy_inst_getnewargs_ex  s    	- 	- 2$KMM!a#&&r   c                      " S S5      nU" S/5      n[         R                  " U5      nU R                  X25        U R                  X25        U R                  UR                  UR                  5        g )Nc                   &    \ rS rSrS rS rS rSrg)/TestCopy.test_deepcopy_inst_getstate.<locals>.Ci  c                     Xl         g r   r+   r-   s     r   r.   8TestCopy.test_deepcopy_inst_getstate.<locals>.C.__init__  r0   r   c                     SU R                   0$ r;  r+   r   s    r   r<  <TestCopy.test_deepcopy_inst_getstate.<locals>.C.__getstate__  r>  r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   6TestCopy.test_deepcopy_inst_getstate.<locals>.C.__eq__  r   r   r+   NrA  rN   r   r   r3   r    rB  r   r3   r   r  r   s       r   test_deepcopy_inst_getstate$TestCopy.test_deepcopy_inst_getstate  r  r   c                      " S S5      nU" S/5      n[         R                  " U5      nU R                  X25        U R                  X25        U R                  UR                  UR                  5        g )Nc                   &    \ rS rSrS rS rS rSrg)/TestCopy.test_deepcopy_inst_setstate.<locals>.Ci  c                     Xl         g r   r+   r-   s     r   r.   8TestCopy.test_deepcopy_inst_setstate.<locals>.C.__init__  r0   r   c                     US   U l         g r;  r+   rL  s     r   rN  <TestCopy.test_deepcopy_inst_setstate.<locals>.C.__setstate__   rP  r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   6TestCopy.test_deepcopy_inst_setstate.<locals>.C.__eq__"  r   r   r+   NrS  rN   r   r   r3   r!    rT  r   r3   r   r  r   s       r   test_deepcopy_inst_setstate$TestCopy.test_deepcopy_inst_setstate  r  r   c                     " S S5      nU" S/5      n[         R                  " U5      nU R                  X25        U R                  X25        U R                  UR                  UR                  5        U" / 5      n[         R                  " U5      nU R                  X25        U R                  X25        U R                  UR                  UR                  5        g )Nc                   ,    \ rS rSrS rS rS rS rSrg)8TestCopy.test_deepcopy_inst_getstate_setstate.<locals>.Ci+  c                     Xl         g r   r+   r-   s     r   r.   ATestCopy.test_deepcopy_inst_getstate_setstate.<locals>.C.__init__,  r0   r   c                     U R                   $ r   r+   r   s    r   r<  ETestCopy.test_deepcopy_inst_getstate_setstate.<locals>.C.__getstate__.  r_  r   c                     Xl         g r   r+   rL  s     r   rN  ETestCopy.test_deepcopy_inst_getstate_setstate.<locals>.C.__setstate__0  rb  r   c                 4    U R                   UR                   :H  $ r   r+   r   s     r   r   ?TestCopy.test_deepcopy_inst_getstate_setstate.<locals>.C.__eq__2  r   r   r+   Nre  rN   r   r   r3   r,  +  rf  r   r3   r   r  r   s       r   $test_deepcopy_inst_getstate_setstate-TestCopy.test_deepcopy_inst_getstate_setstate*  s    	- 	- rdGMM!&bEMM!&r   c                      " S S5      nU" 5       nX"l         [        R                  " U5      nU R                  X25        U R	                  UR                   U5        g )Nc                       \ rS rSrSrg)0TestCopy.test_deepcopy_reflexive_inst.<locals>.CiA  rN   Nr   rN   r   r   r3   r9  A  r   r   r3   )r,   r   rj  rZ   r   r   s       r   test_deepcopy_reflexive_inst%TestCopy.test_deepcopy_reflexive_inst@  sF    	 	CMM!aeeQr   c                      " S S[         5      nU" 5       n[        R                  " U5      nU R                  X25        [        R                  " U5      nU R                  X25        g )Nc                       \ rS rSrS rSrg)+TestCopy.test_reconstruct_string.<locals>.CiL  c                     g)Nrf   rN   r   s    r   rs   6TestCopy.test_reconstruct_string.<locals>.C.__reduce__M  s    r   rN   Nr   rN   r   r   r3   r>  L  s    r   r3   )r=   r   r   rj  r   s       r   test_reconstruct_string TestCopy.test_reconstruct_stringK  sJ    	 	 CIIaLaMM!ar   c                 6  ^  " U4S jS[         5      mT" 5       nSUl        [        R                  " U5      nU R                  UR                  UR                  5        [        R
                  " U5      nU R                  UR                  UR                  5        g )Nc                   "   > \ rS rSrU 4S jrSrg),TestCopy.test_reconstruct_nostate.<locals>.CiV  c                    > TS4$ r  rN   r2   s    r   rs   7TestCopy.test_reconstruct_nostate.<locals>.C.__reduce__W  s    2wr   rN   Nr   r<   s   r   r3   rE  V  s     r   r3   r   )r=   r,   r   r   r>   rj  r?   s      @r   test_reconstruct_nostate!TestCopy.test_reconstruct_nostateU  sf    	 	 CIIaLakk1;;/MM!akk1;;/r   c                 0  ^  " U4S jS[         5      mT" 5       nS/Ul        [        R                  " U5      nU R                  X!5        [        R                  " U5      nU R                  X!5        U R                  UR                  UR                  5        g )Nc                   (   > \ rS rSrU 4S jrS rSrg)*TestCopy.test_reconstruct_state.<locals>.Cia  c                 "   > TSU R                   4$ r  __dict__r2   s    r   rs   5TestCopy.test_reconstruct_state.<locals>.C.__reduce__b      2t}}--r   c                 4    U R                   UR                   :H  $ r   rN  r   s     r   r   1TestCopy.test_reconstruct_state.<locals>.C.__eq__d      }}66r   rN   Nr7   r8   r9   r:   rs   r   r;   r<   s   r   r3   rL  a  s    .7r   r3   r   r=   r,   r   r    rj  rZ   r?   s      @r   test_reconstruct_stateTestCopy.test_reconstruct_state`  sp    	7 	7
 CIIaLMM!&r   c                 0  ^  " U4S jS[         5      mT" 5       nS/Ul        [        R                  " U5      nU R                  X!5        [        R                  " U5      nU R                  X!5        U R                  UR                  UR                  5        g )Nc                   .   > \ rS rSrU 4S jrS rS rSrg)3TestCopy.test_reconstruct_state_setstate.<locals>.Cio  c                 "   > TSU R                   4$ r  rN  r2   s    r   rs   >TestCopy.test_reconstruct_state_setstate.<locals>.C.__reduce__p  rQ  r   c                 :    U R                   R                  U5        g r   )rO  updaterL  s     r   rN  @TestCopy.test_reconstruct_state_setstate.<locals>.C.__setstate__r  s    $$U+r   c                 4    U R                   UR                   :H  $ r   rN  r   s     r   r   :TestCopy.test_reconstruct_state_setstate.<locals>.C.__eq__t  rT  r   rN   N)r7   r8   r9   r:   rs   rN  r   r;   r<   s   r   r3   r[  o  s    .,7r   r3   r   rV  r?   s      @r   test_reconstruct_state_setstate(TestCopy.test_reconstruct_state_setstaten  sp    	7 	7 CIIaLMM!&r   c                      " S S[         5      nU" 5       nX"l        [        R                  " U5      nU R	                  X25        U R                  UR                  U5        g )Nc                       \ rS rSrSrg).TestCopy.test_reconstruct_reflexive.<locals>.Ci  rN   Nr   rN   r   r   r3   rg    r   r   r3   )r=   r,   r   rj  rZ   r   r   s       r   test_reconstruct_reflexive#TestCopy.test_reconstruct_reflexive~  sH    	 	CMM!aeeQr   c                   ^  " U4S jS[         5      mT" SS/S/5      n[        R                  " U5      nU R                  X5        U R                  X5        U R	                  US   US   5        [        R
                  " U5      nU R                  X5        U R                  X5        U R                  US   US   5        g )Nc                   (   > \ rS rSrU 4S jrS rSrg)&TestCopy.test_reduce_4tuple.<locals>.Ci  c                 6   > TSU R                   [        U 5      4$ r  )rO  iterr2   s    r   rs   1TestCopy.test_reduce_4tuple.<locals>.C.__reduce__  s    2t}}d4j99r   c                 p    [        U 5      [        U5      :H  =(       a    U R                  UR                  :H  $ r   )listrO  r   s     r   r   -TestCopy.test_reduce_4tuple.<locals>.C.__eq__  ,    T
d5k1 879r   rN   NrU  r<   s   r   r3   rl    s    :9r   r3   re   r   r   r   )rq  r   r    rZ   r   rj  r?   s      @r   test_reduce_4tupleTestCopy.test_reduce_4tuple  s    	9 	9 1vqkNIIaLadAaD!MM!1qt$r   c                   ^  " U4S jS[         5      mT" SSS/4S/5      n[        R                  " U5      nU R                  X5        U R                  X5        U R	                  US   US   5        [        R
                  " U5      nU R                  X5        U R                  X5        U R                  US   US   5        g )Nc                   (   > \ rS rSrU 4S jrS rSrg)&TestCopy.test_reduce_5tuple.<locals>.Ci  c                 B   > TSU R                   S U R                  5       4$ r  )rO  itemsr2   s    r   rs   1TestCopy.test_reduce_5tuple.<locals>.C.__reduce__  s    2t}}dDJJLAAr   c                 p    [        U 5      [        U5      :H  =(       a    U R                  UR                  :H  $ r   )dictrO  r   s     r   r   -TestCopy.test_reduce_5tuple.<locals>.C.__eq__  rs  r   rN   NrU  r<   s   r   r3   rx    s    B9r   r3   r,   re   r   )r   r   )r}  r   r    rZ   r   rj  r?   s      @r   test_reduce_5tupleTestCopy.test_reduce_5tuple  s    	9 	9 1v
+,IIaLah%)MM!51U8,r   c                 T  ^ ^^ U 4S jm " UU4S jS5      mT" 5       nT R                  [        5         [        R                  " U5        S S S 5        T R                  [        5         [        R                  " U5        S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nc                  (   > TR                  S5        g rp   rq   )argskwargsr   s     r   state_setter1TestCopy.test_reduce_6tuple.<locals>.state_setter  s    II+,r   c                   $   > \ rS rSrU U4S jrSrg)&TestCopy.test_reduce_6tuple.<locals>.Ci  c                 (   > TSU R                   S S T4$ r  rN  )r   r3   r  s    r   rs   1TestCopy.test_reduce_6tuple.<locals>.C.__reduce__  s    "dmmT4EEr   rN   Nr   )r3   r  s   r   r3   r    s    F Fr   r3   rV   rW   r   rj  )r   r"   r3   r  s   ` @@r   test_reduce_6tupleTestCopy.test_reduce_6tuple  sm    	-	F 	F Cy)IIaL *y)MM! *) *)))s   B(B
B
B'c                 B  ^  " U4S jS5      mT" 5       nU R                  [        5         [        R                  " U5        S S S 5        U R                  [        5         [        R                  " U5        S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nc                   "   > \ rS rSrU 4S jrSrg)+TestCopy.test_reduce_6tuple_none.<locals>.Ci  c                 (   > TSU R                   S S S 4$ r  rN  r2   s    r   rs   6TestCopy.test_reduce_6tuple_none.<locals>.C.__reduce__  s    "dmmT4==r   rN   Nr   r<   s   r   r3   r    s    > >r   r3   r  r   s     @r   test_reduce_6tuple_none TestCopy.test_reduce_6tuple_none  sf    	> 	> Cy)IIaL *y)MM! *) *)))s   A?B?
B
Bc                      " S S[         5      nU" 5       nS/Ul        [        R                  " U5      nU R                  UR                  UR                  5        g )Nc                       \ rS rSrS/rSrg)#TestCopy.test_copy_slots.<locals>.Ci  r,   rN   Nr7   r8   r9   r:   	__slots__r;   rN   r   r   r3   r    	    Ir   r3   r   )r=   r,   r   r   r   s       r   test_copy_slotsTestCopy.test_copy_slots  sA    	  	 CIIaLaeeQUU#r   c                     " S S[         5      nU" 5       nS/Ul        [        R                  " U5      nU R	                  UR                  UR                  5        U R                  UR                  UR                  5        g )Nc                       \ rS rSrS/rSrg)'TestCopy.test_deepcopy_slots.<locals>.Ci  r,   rN   Nr  rN   r   r   r3   r    r  r   r3   r   )r=   r,   r   rj  r    rZ   r   s       r   test_deepcopy_slotsTestCopy.test_deepcopy_slots  s\    	  	 CMM!&&r   c                 f    " S S[         5      nU" SS0S9n[        R                  " U5      nU R                  X#5        U R                  UR                  UR                  5        U R                  X#5        SUS'   U R                  X#5        U R                  UR                  UR                  5        g )Nc                   8   ^  \ rS rSrSU 4S jjrU 4S jrSrU =r$ )/TestCopy.test_deepcopy_dict_subclass.<locals>.Ci  c                 r   > U(       d  0 n[        UR                  5       5      U l        [        TU ]  U5        g r   )rq  keys_keyssuperr.   )r   dr>   s     r   r.   8TestCopy.test_deepcopy_dict_subclass.<locals>.C.__init__  s)    A!!&&(^
 #r   c                 z   > [         TU ]  X5        XR                  ;  a  U R                  R                  U5        g g r   )r  __setitem__r  rh   )r   keyitemr>   s      r   r  ;TestCopy.test_deepcopy_dict_subclass.<locals>.C.__setitem__  s1    #C.jj(JJ%%c* )r   )r  r   )r7   r8   r9   r:   r.   r  r;   __classcell__)r>   s   @r   r3   r    s    $
+ +r   r3   r,   r   )r  re   r   )r}  r   rj  r    r  rZ   assertNotEqualr   s       r   test_deepcopy_dict_subclass$TestCopy.test_deepcopy_dict_subclass  s    		+ 		+ q	NMM!!''*%A!AGGQWW-r   c                     " S S[         5      nU" SS/S/5      nSS/Ul        [        R                  " U5      nU R                  [        U5      [        U5      5        U R                  UR                  UR                  5        U R	                  US   US   5        U R	                  UR                  UR                  5        g )	Nc                       \ rS rSrSrg)+TestCopy.test_copy_list_subclass.<locals>.Ci  rN   Nr   rN   r   r   r3   r    r   r   r3   re   r   r   r     r   )rq  r,   r   r    r   r   s       r   test_copy_list_subclass TestCopy.test_copy_list_subclass  s    	 	1vqkNAIIaLa$q'*&adAaD!aeeQUU#r   c                     " S S[         5      nU" SS/S/5      nSS/Ul        [        R                  " U5      nU R	                  [        U5      [        U5      5        U R	                  UR                  UR                  5        U R                  US   US   5        U R                  UR                  UR                  5        g )	Nc                       \ rS rSrSrg)/TestCopy.test_deepcopy_list_subclass.<locals>.Ci  rN   Nr   rN   r   r   r3   r    r   r   r3   re   r   r   r  r  r   )rq  r,   r   rj  r    rZ   r   s       r   test_deepcopy_list_subclass$TestCopy.test_deepcopy_list_subclass  s    	 	1vqkNAMM!a$q'*&1qt$&r   c                      " S S[         5      nU" / SQ5      nU R                  [        U5      S5        [        R                  " U5      nU R                  [        U5      S5        g )Nc                       \ rS rSrSrg),TestCopy.test_copy_tuple_subclass.<locals>.Ci  rN   Nr   rN   r   r   r3   r    r   r   r3   r   )tupler    r   r   s       r   test_copy_tuple_subclass!TestCopy.test_copy_tuple_subclass  sL    	 	iLq9-IIaLq9-r   c                 4    " S S[         5      nU" SS/S/5      nU R                  [        U5      SS/S45        [        R                  " U5      nU R                  [        U5      SS/S45        U R	                  X#5        U R	                  US   US   5        g )Nc                       \ rS rSrSrg)0TestCopy.test_deepcopy_tuple_subclass.<locals>.Ci  rN   Nr   rN   r   r   r3   r    r   r   r3   re   r   r   r   )r  r    r   rj  rZ   r   s       r   test_deepcopy_tuple_subclass%TestCopy.test_deepcopy_tuple_subclass  s    	 	1vqkNqQFA;/MM!qQFA;/1qt$r   c                 v     " S S[         5      nU R                  [        [        R                  U" 5       5        g )Nc                       \ rS rSrS rSrg)-TestCopy.test_getstate_exc.<locals>.EvilStatei  c                     [        S5      e)Nzain't got no stickin' state)
ValueErrorr   s    r   r<  :TestCopy.test_getstate_exc.<locals>.EvilState.__getstate__  s     !>??r   rN   N)r7   r8   r9   r:   r<  r;   rN   r   r   	EvilStater    s    @r   r  )r=   rV   r  r   )r   r  s     r   test_getstate_excTestCopy.test_getstate_exc  s*    	@ 	@ 	*dii=r   c                    U R                  [        R                  " [        5      [        5        S nU R                  [        R                  " U5      U5        S nU R                  [        R                  " U5      U5        g )Nc                 
    X-   $ r   rN   r"   r#   s     r   r,   (TestCopy.test_copy_function.<locals>.foo      aczr   c                      g r   rN   rN   r   r   <lambda>-TestCopy.test_copy_function.<locals>.<lambda>      dr   )r    r   
global_foor   r,   r   s      r   test_copy_functionTestCopy.test_copy_function  sS    :.
;!3-3-r   c                    U R                  [        R                  " [        5      [        5        S nU R                  [        R                  " U5      U5        S nU R                  [        R                  " U5      U5        g )Nc                 
    X-   $ r   rN   r  s     r   r,   ,TestCopy.test_deepcopy_function.<locals>.foo  r  r   c                      g r   rN   rN   r   r   r  1TestCopy.test_deepcopy_function.<locals>.<lambda>  r  r   )r    r   rj  r  r  s      r   test_deepcopy_functionTestCopy.test_deepcopy_function  sU    z2J?!s+S1s+S1r   c                      " S S[         5      nU" 5       n[        R                  " U5      nU" U5      nU R                  XT5        AU" U5      nU R                  XT5        g )Nc                       \ rS rSrSrg)"TestCopy._check_weakref.<locals>.Ci#  rN   Nr   rN   r   r   r3   r  #  r   r   r3   )r=   weakrefrefr   )r   _copyr3   rK   r"   r#   s         r   _check_weakrefTestCopy._check_weakref"  sP    	 	cKK!Ha!Har   c                 B    U R                  [        R                  5        g r   )r  r   r   s    r   test_copy_weakrefTestCopy.test_copy_weakref-  s    DII&r   c                 B    U R                  [        R                  5        g r   )r  r   rj  r   s    r   test_deepcopy_weakrefTestCopy.test_deepcopy_weakref0  s    DMM*r   c                 .    " S S[         5      n[        S5       Vs/ s H	  o2" 5       PM     snu  pEpgU" 5       nXXU'   XxU'   [        R                  " U5      n	U R                  X5        U R	                  X5        U R	                  X   U5        U R	                  X   U5        U R	                  [        U	5      S5        AA[        R                  " 5         U R	                  [        U	5      S5        U" 5       U" 5       pXU
'   U R                  X5        g s  snf )Nc                       \ rS rSrSrg)(TestCopy._check_copy_weakdict.<locals>.Ci4  rN   Nr   rN   r   r   r3   r  4  r   r   r3   r  r   re   )	r=   r   r   rZ   r    r  r
   
gc_collectassertNotIn)r   	_dicttyper3   iabrk   r  uvr"   r#   s               r   _check_copy_weakdictTestCopy._check_copy_weakdict3  s    	 	#(8,8aac8,
aK!!IIaLq!q!Q#qQ#sAC1!! -s   Dc                 B    U R                  [        R                  5        g r   )r   r  WeakKeyDictionaryr   s    r   test_copy_weakkeydictTestCopy.test_copy_weakkeydictH  s    !!'";";<r   c                 B    U R                  [        R                  5        g r   )r   r  WeakValueDictionaryr   s    r   test_copy_weakvaluedict TestCopy.test_copy_weakvaluedictK  s    !!'"="=>r   c                     " S S[         5      n[        S5       Vs/ s H
  o!" U5      PM     snu  p4pV[        R                  " 5       nXGU'   XgU'   [        R
                  " U5      nU R                  X5        U R                  [        U5      S5        U R                  X   U5        U R                  X   U5        U R                  X   R                  UR                  5        U R                  X   R                  UR                  5        A[        R                  " 5         U R                  [        U5      S5        g s  snf )Nc                       \ rS rSrS rSrg)-TestCopy.test_deepcopy_weakkeydict.<locals>.CiO  c                     Xl         g r   r  r   r  s     r   r.   6TestCopy.test_deepcopy_weakkeydict.<locals>.C.__init__P      r   r  Nr7   r8   r9   r:   r.   r;   rN   r   r   r3   r  O      r   r3   r  r   re   )r=   r   r  r  r   rj  r  r    r  rZ   r  r
   r  )	r   r3   r  r  r  rk   r  r  r  s	            r   test_deepcopy_weakkeydict"TestCopy.test_deepcopy_weakkeydictN  s    	 	 %*!H-HqadH-
a%%'!!MM!A!Q#q!q!%%Q# .s   D=c                     " S S[         5      n[        S5       Vs/ s H
  o!" U5      PM     snu  p4pV[        R                  " 5       nXGU'   XgU'   [        R
                  " U5      nU R                  X5        U R                  [        U5      S5        [        UR                  5       S S9u  u  pu  pU R                  X5        U R                  U	R                  UR                  5        U R                  X5        U R                  X5        U R                  UR                  UR                  5        U R                  X5        A	A
AAA[        R                  " 5         U R                  [        U5      S5        g s  snf )Nc                       \ rS rSrS rSrg)/TestCopy.test_deepcopy_weakvaluedict.<locals>.Cic  c                     Xl         g r   r  r  s     r   r.   8TestCopy.test_deepcopy_weakvaluedict.<locals>.C.__init__d  r  r   r  Nr  rN   r   r   r3   r  c  r  r   r3   r  r   c                      U S   R                   $ r  r  )pairs    r   r  6TestCopy.test_deepcopy_weakvaluedict.<locals>.<lambda>n  s    DGIIr   )r  re   )r=   r   r  r  r   rj  r  r    r  sortedrz  rZ   r  r   r
   r  )r   r3   r  r  r  rk   r  r  r  r"   r#   zts                r   test_deepcopy_weakvaluedict$TestCopy.test_deepcopy_weakvaluedictb  s,   	 	 %*!H-HqadH-
a'')!!MM!A!Q#	/EFacc"aacc"aq!QQ#% .s   E9c                 6    " S S[         5      nU" 5       nUR                  Ul        [        R                  " U5      nU R                  UR                  UR                  5        U R                  UR                  R                  U5        UR                  5         g )Nc                       \ rS rSrS rSrg)0TestCopy.test_deepcopy_bound_method.<locals>.Fooi{  c                     g r   rN   r   s    r   m2TestCopy.test_deepcopy_bound_method.<locals>.Foo.m|  s    r   rN   N)r7   r8   r9   r:   r'  r;   rN   r   r   Foor%  {  s    r   r)  )r=   r'  r  r   rj  r    r   __self__)r   r)  r   gs       r   test_deepcopy_bound_method#TestCopy.test_deepcopy_bound_methodz  sg    	& 	 EccMM!acc"accllA&	r   rN   N)Sr7   r8   r9   r:   r   r$   r@   r]   r{   r   r   r   r   r   r   r   r   r   r   r   r	  r!  r2  rC  rU  rg  rk  ro  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r5  r:  rA  rH  rW  rc  rh  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r!  r,  r;   rN   r   r   r   r      s   ;
	'' !	!4+''*	*	*'"'"	*	**$
	"	.	'' !	!8	/%$
%
"-
$,'	''''$'$''', 	0''  %"-"
$'.(	$	'.%>.2	'+*=?$($0	r   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestReplacei  c                    U R                  [        [        R                  S5        U R                  [        [        R                  / 5        U R                  [        [        R                  0 5        S nU R                  [        [        R                  U5         " S S5      nU R                  [        [        R                  U5        U R                  [        [        R                  U" 5       5        g )Nre   c                      g r   rN   rN   r   r   r   'TestReplace.test_unsupported.<locals>.f  s    r   c                       \ rS rSrSrg)'TestReplace.test_unsupported.<locals>.Ai  rN   Nr   rN   r   r   Ar4    s    r   r5  )rV   rW   r   replace)r   r   r5  s      r   test_unsupportedTestReplace.test_unsupported  s    )T\\15)T\\26)T\\26)T\\15)T\\15)T\\137r   c           
          " S S5      n[        SSS5      nU" SS5      nU R                  U" [        R                  " U5      5      S5        U R                  U" [        R                  " US	S
95      S5        U R                  U" [        R                  " USS95      S5        U R                  U" [        R                  " US	SS95      S5        g )Nc                   *    \ rS rSrSS jrS rS rSrg)*TestReplace.test_replace_method.<locals>.Ai  c                 H    [         R                  U 5      nXl        X#l        U$ r   )r=   rH   r"   r#   )rJ   r"   r#   r   s       r   rH   2TestReplace.test_replace_method.<locals>.A.__new__  s    ~~c*r   c                 @    U R                   U R                  -   U l        g r   r"   r#   r  )r   r  r  s      r   r.   3TestReplace.test_replace_method.<locals>.A.__init__  s    $&&r   c                     UR                  SU R                  5      nUR                  SU R                  5      n[        U 5      " X#5      $ )Nr"   r#   )getr"   r#   r[   )r   changesr"   r#   s       r   __replace__6TestReplace.test_replace_method.<locals>.A.__replace__  s9    KKTVV,KKTVV,Dz!''r   r?  Nr   )r7   r8   r9   r:   rH   r.   rD  r;   rN   r   r   r5  r;    s    )(r   r5  r"   r#   r        )rG  rH  !   re   r"   )re   rH     r   r#   )rG  r      r  r   )r	   r    r   r6  )r   r5  attrsr  s       r   test_replace_methodTestReplace.test_replace_method  s    	( 	( 3S)b"It||A/>t||A34kBt||A34kBt||Aa899Er   c           
          SSK Jn  SSKJn  U" SSSS9n " S S	U5      n " S
 SU5      nX4U4 GH'  nU R	                  US9   U" SS5      nU R                  Xv5        U R                  [        R                  " U5      S5        U R                  [        R                  " U5      U5        U R                  [        R                  " USS9S5        U R                  [        R                  " USS9S5        U R                  [        R                  " USSS9S5        U R                  [        S5         [        R                  " USSS9  S S S 5        S S S 5        GM*     g ! , (       d  f       N= f! , (       d  f       GMN  = f)Nr   )
namedtuple)
NamedTuplePointzx yrF  )defaultsc                       \ rS rSrSrg)9TestReplace.test_namedtuple.<locals>.PointFromInheritancei  rN   Nr   rN   r   r   PointFromInheritancerW    r   r   rX  c                   .    \ rS rSr% \\S'   Sr\\S'   Srg)3TestReplace.test_namedtuple.<locals>.PointFromClassi  r"   r   r#   rN   Nr7   r8   r9   r:   r  __annotations__r#   r;   rN   r   r   PointFromClassrZ    s    FAsJr   r]  )rT  rG  rH  rG  rH  re   rJ  re   rH  r   rL  rG  r   r  r  zunexpected field namer"   r   )collectionsrR  typingrS  subTestr  r    r   r6  assertRaisesRegexrW   )r   rR  rS  PointFromCallrX  r]  rT  ps           r   test_namedtupleTestReplace.test_namedtuple  s,   *%"7EDA	= 		Z 	 $>JEE*"bM%%a/  a(;%%dll1ou=  a1!5w?  a1!5w?  a1!:FC++I7NOLLaq1 P +* K PO +*s%   C-E-/EE-
E*&E--
E=	c           
      @   SSK Jn  U " S S5      5       n[        SS5      nU" SS5      nU R                  U" [        R
                  " U5      5      S	5        U R                  U" [        R
                  " US
S95      S5        U R                  U" [        R
                  " USS95      S5        U R                  U" [        R
                  " US
SS95      S5        U R                  [        S5         [        R
                  " US
SS9  S S S 5        g ! , (       d  f       g = f)Nr   )	dataclassc                   .    \ rS rSr% \\S'   Sr\\S'   Srg)%TestReplace.test_dataclass.<locals>.Ci  r"   r   r#   rN   Nr[  rN   r   r   r3   rm    s    FAsJr   r3   r"   r#   rG  rH  r^  re   rJ  r_  r   rL  r`  r  r  zunexpected keyword argumentra  )dataclassesrk  r	   r    r   r6  re  rW   )r   rk  r3   rN  rk   s        r   test_dataclassTestReplace.test_dataclass  s    )		 	 
	 3$b"It||A/:t||A34g>t||A34g>t||Aa896B##I/LMLLaq) NMMs   /D
DrN   N)	r7   r8   r9   r:   r7  rO  rh  ro  r;   rN   r   r   r/  r/    s    8F.2**r   r/  c                       \ rS rSrS rSrg)MiscTestCasei  c                 <    [         R                  " U [        SS1S9  g )Ndispatch_tabler   )not_exported)r
   check__all__r   r   s    r   test__all__MiscTestCase.test__all__  s    T47G6QRr   rN   N)r7   r8   r9   r:   rw  r;   rN   r   r   rr  rr    s    Sr   rr  c                 
    X-   $ r   rN   r  s     r   r  r    s    QSjr   __main__)__doc__r   rX   r  r   operatorr   r   r   r   r   r   r	   unittesttestr
   r  r  r  TestCaser   r/  rr  r  r7   mainrN   r   r   <module>r     s    %    
 7 7 7  BN 2v "66sx   slF*(## F*RS8$$ S ! zMMO r   