
    7bhIt                        d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ d Z G d	 d
ej$                        Zd Z G d dej$                        Z G d d      Z G d d      Z G d d      Z G d de      Z G d d      Z G d dej$                        Zedk(  r ej:                          yy)z3
  Test cases for the repr module
  Nick Mathewson
    N)verbose)create_empty_file)repr)Repr)recursive_reprc                 0    d}t        |       D ]  }|f} |S )N )range)nestingtis      ;/opt/python-3.12.12/usr/lib/python3.12/test/test_reprlib.pynestedTupler      s!    
A7^D H    c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)	ReprTestsc                     ddddddddd	d
dddd}t               }|j                         D ]  \  }}t        |||        t        di |}|D ]*  }| j                  t	        ||      t	        ||      |       , y )Ne   f   g   h   i   j   k   l   m   n   o   pxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxqxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)maxlevelmaxtuplemaxlistmaxarraymaxdictmaxsetmaxfrozensetmaxdeque	maxstringmaxlongmaxother	fillvalueindent)msgr	   )r   itemssetattrassertEqualgetattr)selfexample_kwargsr1attrvalr2s         r   test_init_kwargszReprTests.test_init_kwargs   s    "
 V'--/ID#Bc" 0#N#"DWR.D0AtL #r   c                 j   | j                   } |t        d      d        |t        d      d       d}t        |      d d dz   t        |      dd  z   } |t        |      |        |t        d	      t        d	             d
}t        |      d d dz   t        |      dd  z   } |t        |      |       y )Nabcz'abc'abcdefghijklmnopz'abcdefghijklmnop'<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbb   ...z"'z""""""""""""""""""""""""""""""''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''r1   rr   )r3   eqsexpecteds       r   test_stringzReprTests.test_string4   s    
1U8W
1 !5673B<%'$q'#$-7
1Q4
1U8T%[!73B<%'$q'#$-7
1Q4r   c                 ^   | j                   } |t        d      d       d} |t        |      d       t               }d|_        t	        |      d d dz   } ||j	                  |      |       t               }d|_        d|_        t	        |      d d d	z   } ||j	                  |      |       y )
N   (1,)rI         	(1, 2, 3)rL   z...)+++z+++))r1   rB   r   r"   r   r,   )r3   rC   t3r8   rE   r3s         r   
test_tuplezReprTests.test_tupleB   s    
1T7F
1R5+V8CR=6)
2772;! V8CR=6)
2772;!r   c           	         ddl m } ddlm} | j                  } |t	        d      d        |t	        d      d        |t	        d      d	        |t	        d
      d        |t	        d      d        |t	        g       d        |t	        dg      d        |t	        g d      d        |t	        g d
      d        |t	        g d      d        |t	        t        g             d        |t	        t        dg            d        |t	        t        g d            d        |t	        t        g d
            d        |t	        t        g d            d        |t	        t        g             d        |t	        t        dg            d        |t	        t        g d            d        |t	        t        g d
            d        |t	        t        g d            d        |t	         |g d            d        |t	        i       d       dd d!d"d#} |t	        |      d$       d|d%<    |t	        |      d&        |t	         |d'            d(        |t	         |d'dg            d)        |t	         |d'dd g            d*        |t	         |d'g d            d+        |t	         |d'g d,            d-        |t	         |d'g d.            d/        |t	         |d'g d
            d0       y )1Nr   )array)dequer	   ()rH   rJ   rK   rN   )rI   rL   rM            z(1, 2, 3, 4, 5, 6))rI   rL   rM   rX   rY   rZ      z(1, 2, 3, 4, 5, 6, ...)z[]rI   z[1]z	[1, 2, 3]z[1, 2, 3, 4, 5, 6]z[1, 2, 3, 4, 5, 6, ...]zset(){1}	{1, 2, 3}{1, 2, 3, 4, 5, 6}{1, 2, 3, 4, 5, 6, ...}zfrozenset()frozenset({1})frozenset({1, 2, 3})frozenset({1, 2, 3, 4, 5, 6})"frozenset({1, 2, 3, 4, 5, 6, ...})zdeque([1, 2, 3, 4, 5, 6, ...])z{}rL   rM   rX   )alicebobcharlesdavez/{'alice': 1, 'bob': 2, 'charles': 3, 'dave': 4}arthurz6{'alice': 1, 'arthur': 1, 'bob': 2, 'charles': 3, ...}r   z
array('i')zarray('i', [1])zarray('i', [1, 2])zarray('i', [1, 2, 3]))rI   rL   rM   rX   zarray('i', [1, 2, 3, 4]))rI   rL   rM   rX   rY   zarray('i', [1, 2, 3, 4, 5])z array('i', [1, 2, 3, 4, 5, ...]))rU   collectionsrV   r1   rB   set	frozenset)r3   rU   rV   rC   ds        r   test_containerzReprTests.test_containerU   s   %
1R5$
1T7F
1Y<%
1 "67
1"#%>? 	1R5$
1aS65
1Y<%
1 "67
1"#%>? 	1SW:w
1S!X;
1S^k*
1S#$%';<
1S&'(*CD 	1Yr]]+
1Ys^./
1Yy!"$:;
1Y)*+-LM
1Y,-.0TU 	1U()*,LM 	1R5$a;
1Q4BC(
1Q4IJ 	1U3Z=,'
1U3_01
1U3A "67
1U3	"#%<=
1U3%&(BC
1U3()+HI
1U3*+,5	7r   c                     | j                   } |t        dh      d        |t        h d      d        |t        h d      d        |t        h d      d       y )	NrI   r\      rI   rL   rM   r]      rI   rL   rM   rX   rY   rZ   r^      rI   rL   rM   rX   rY   rZ   r[   r_   r1   rB   r3   rC   s     r   test_set_literalzReprTests.test_set_literal   sM    
1aS65
1Y<%
1 "67
1"#%>?r   c                    | j                   } |t        t        dh            d        |t        t        h d            d        |t        t        h d            d        |t        t        h d            d       y )	NrI   r`   ro   ra   rp   rb   rq   rc   )r1   rB   rk   rs   s     r   test_frozensetzReprTests.test_frozenset   sd    
1Ys^./
1Yy!"$:;
1Y)*+-LM
1Y,-.0TUr   c                 ,   | j                   } |t        d      t        d              |t        d      t        d              |t        d      t        d             ddz  }t        |      d d dz   t        |      dd  z   } |t        |      |       y )N{   gUUUUUU?
   d      r?   irA   )r3   rC   nrE   s       r   test_numberszReprTests.test_numbers   s}    
1S649
1S649
1U8T%[!G73B<%'$q'#$-7
1Q4r   c                    | j                   }t        d      } |t        |      t        |             t        d      }t        |      d d dz   t        |      dd  z   } |t        |      |       t	               } |t        |      dt        |      z         t        t              }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d      d	dg       y )
Na  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr>   r?   r@   z&<ClassWithFailingRepr instance at %#x>z<class >   )r1   ClassWithReprrB   r   ClassWithFailingReprid
assertTrue
startswithendswithassertInfind)r3   rC   i1i2rE   i3rD   s          r   test_instancezReprTests.test_instance   s    3
1R5$r(8$8CR=5(48CD>9
1R5(!#
1R5;BrFBD"#Y/0

3(affUmb"X.r   c                 `    t        d       }| j                   |j                  d      |       y )Nc                     | S Nr	   xs    r   <lambda>z'ReprTests.test_lambda.<locals>.<lambda>   s    1r   z0<function ReprTests.test_lambda.<locals>.<lambda)r   r   r   )r3   rB   s     r   test_lambdazReprTests.test_lambda   s'    %WXZ[\r   c                     | j                   } |t        t              d       | j                  t        dj                        j                  d             y )Nz<built-in function hash> z*<built-in method split of str object at 0x)r1   r   hashr   splitr   rs   s     r   test_builtin_functionzReprTests.test_builtin_function   s@    
4:12RXX118: 	;r   c           	          | j                   } |t        t        d            d        |t        t        dd            d        |t        t        ddd            d       y )NrI   zrange(0, 1)rL   zrange(1, 2)rX   rM   zrange(1, 4, 3))r1   r   r
   rs   s     r   
test_rangezReprTests.test_range   sL    
4a>=)
4am,
4aA!12r   c                    | j                   } |t        g gggggg      d        |t        g ggggggg      d        |t        t        d            d        |t        t        d            d        |t        t        d      t        d      i      d        |t        t        d      t        d      i      d	        |t        i gggggg      d
        |t        i ggggggg      d       y )Nz[[[[[[[]]]]]]]z[[[[[[[...]]]]]]]rZ   z(((((((),),),),),),)r[   z(((((((...),),),),),),)rY   z&{((((((),),),),),): ((((((),),),),),)}z,{((((((...),),),),),): ((((((...),),),),),)}z[[[[[[{}]]]]]])r1   rB   r   rs   s     r   test_nestingzReprTests.test_nesting   s    
12$zl^./
1B4&
|n 34
1[^45
1[^78
1{1~A013	5
1{1~A019	; 	12$zl^./
1B4&
|n 34r   c                     d } |       j                   d   }| j                  t        |      d       | j                  t        |      d       y )Nc                      dfd} | S )N*   c                       S r   r	   r   s   r   innerz4ReprTests.test_cell.<locals>.get_cell.<locals>.inner   s    r   r	   )r   r   s    @r   get_cellz%ReprTests.test_cell.<locals>.get_cell   s    ALr   r   z6<cell at 0x[0-9A-Fa-f]+: int object at 0x[0-9A-Fa-f]+>z<cell at 0x.*\.\.\..*>)__closure__assertRegexr   rB   )r3   r   r   s      r   	test_cellzReprTests.test_cell   sK    	
 J""1%a #C 	D189r   c                 h   | j                   } |t        t        j                        d        G d d      }t	        |j
                        }| j                  t        |      d|j
                  d       t        |j
                        }| j                  t        |      d|j
                  d       y )Nz"<method 'items' of 'dict' objects>c                       e Zd Zd Zy)%ReprTests.test_descriptors.<locals>.Cc                      y r   r	   )clss    r   fooz)ReprTests.test_descriptors.<locals>.C.foo   s    $r   N)__name__
__module____qualname__r   r	   r   r   Cr      s    r   r   z<staticmethod(z)>z<classmethod()r1   r   dictr/   staticmethodr   classmethod)r3   rC   r   r   s       r   test_descriptorszReprTests.test_descriptors   s    
4

AB
	 	aN155)2">?aM!%%""=>r   c                     t        g d      }t        |      }ddd}t        |       t        |       t        |       y )N)              ?               @y              @rI   rL   )r   r   )rj   rk   rB   )r3   r   yzs       r   test_unsortablezReprTests.test_unsortable   s5     aLN	!	!	!r   c                     dt        d       dft        d      dft        d      dft        d      dft        d      dft        d      dft        dd	
      dft        d      dft        d      dft        d      dff
ddt        d       dft        d      dft        d      dft        d      dft        d      dft        d      dft        dd	
      dft        d      dft        d      dft        d      dff
ddddg dgt        d       dft        d      dft        d      dft        d      dft        d      dft        d      dft        dd	
      dft        d      dft        d      dft        d      dff
dddt        d      t        d      ggdt        d       dft        d      dft        d      dft        d      dft        d      dft        d      d ft        dd	
      d!ft        d      dft        d      d"ft        d      d#ff
dg}|D ]  }| j                  |d$   %      5  |d&   D ]  \  }}| j                  |'      5  t	               }|j                         D ]  \  }}t        |||         |j                  |d$         }t        j                  |      }| j                  ||       d d d         	 d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)(Nr	   r-   rW   FTr   rI   rX   rL   )r-   r!   r   z-->z....)objecttestsz''spameggshamz>                        [1, 'spam', {'eggs': True, 'ham': []}]z                        [
                        1,
                        'spam',
                        {
                        'eggs': True,
                        'ham': [],
                        },
                        ]z                        [
                         1,
                         'spam',
                         {
                          'eggs': True,
                          'ham': [],
                         },
                        ]a                          [
                            1,
                            'spam',
                            {
                                'eggs': True,
                                'ham': [],
                            },
                        ]a                          [
                        -->1,
                        -->'spam',
                        -->{
                        -->-->'eggs': True,
                        -->-->'ham': [],
                        -->},
                        ]a                          [
                        ....1,
                        ....'spam',
                        ....{
                        ........'eggs': True,
                        ........'ham': [],
                        ....},
                        ]two)g      @g@)   	   )ry      )rI   s   threezY                        {1: 'two', b'three': [(4.5, 6.7), [{8, 9}, frozenset({10, 11})]]}a                          {
                        1: 'two',
                        b'three': [
                        (
                        4.5,
                        6.7,
                        ),
                        [
                        {
                        8,
                        9,
                        },
                        frozenset({
                        10,
                        11,
                        }),
                        ],
                        ],
                        }aH                          {
                         1: 'two',
                         b'three': [
                          (
                           4.5,
                           6.7,
                          ),
                          [
                           {
                            8,
                            9,
                           },
                           frozenset({
                            10,
                            11,
                           }),
                          ],
                         ],
                        }a                          {
                            1: 'two',
                            b'three': [
                                (
                                    4.5,
                                    6.7,
                                ),
                                [
                                    {
                                        8,
                                        9,
                                    },
                                    frozenset({
                                        10,
                                        11,
                                    }),
                                ],
                            ],
                        }z                        {
                            1: 'two',
                            b'three': [
                                (...),
                                [...],
                            ],
                        }a                          {
                        -->1: 'two',
                        -->b'three': [
                        -->-->(
                        -->-->-->4.5,
                        -->-->-->6.7,
                        -->-->),
                        -->-->[
                        -->-->-->{
                        -->-->-->-->8,
                        -->-->-->-->9,
                        -->-->-->},
                        -->-->-->frozenset({
                        -->-->-->-->10,
                        -->-->-->-->11,
                        -->-->-->}),
                        -->-->],
                        -->],
                        }a                          {
                        ....1: 'two',
                        ....b'three': [
                        ........(
                        ............4.5,
                        ............6.7,
                        ........),
                        ........[
                        ............{
                        ................8,
                        ................9,
                        ............},
                        ............frozenset({
                        ................10,
                        ................11,
                        ............}),
                        ........],
                        ....],
                        }r   )test_objectr   )repr_settings)r   rj   rk   subTestr   r/   r0   r   textwrapdedentr1   )	r3   
test_cases	test_caser   expected_reprrB   	attributevalueresulting_reprs	            r   test_valid_indentzReprTests.test_valid_indent   s    &-'.&-^T*^T*^T*Q/6_d+'.($/  &-'.&-^T*^T*^T*Q/6_d+'.($/  ftB&?@& )B C' *  & )  ^ &  ^ &  ^ &  Q/ 2  _ '  ' *  ( + WTWt "Vi&9: & )] ^' * ( & ) ( ^ & ( ^ & ( ^ & ( Q/ 2  _ ' ( ' * ( ( + oktol

Z	 $I)H*=>4=g4F0M=MB F0=0C0C0E,Iu#Ay%8 1F)/	(0C)D(0(F((G CB 5G ?> $ CB ?>s%   L6A,K8	"
L8L=LL	c           	         dddg dg}dt         dffdt         dffdt        d ffg t        d ffd	t        d ffd
gt        d fft               t        d ffg}|D ]q  \  }\  }}| j                  |      5  t	               }||_        |xs t        |       }| j                  ||      5   |j                  |       d d d        d d d        s y # 1 sw Y   xY w# 1 sw Y   xY w)NrI   r   Tr   z[Nn]egative|[Pp]ositiver	   )rX   rX   r   )	
ValueError	TypeErrorr   r   r   r-   typeassertRaisesRegexr   )r3   r   r   r-   expected_errorexpected_msgrB   s          r   test_invalid_indentzReprTests.test_invalid_indent4  s    &4";<*789*789)T"#)T"#It$%TIt$%X	4()

 7A2F2^\V,F!+@$v,++NLIAFF;' J	 -, 7A
 JI	 -,s$   04C$C
7C
CCC	c                 X     G d d      }| j                  t         |             d       y )Nc                       e Zd Zd Zy)3ReprTests.test_shadowed_stdlib_array.<locals>.arrayc                      y)Nnot array.arrayr	   r3   s    r   __repr__z<ReprTests.test_shadowed_stdlib_array.<locals>.array.__repr__J  s    (r   Nr   r   r   r   r	   r   r   rU   r   I  s    )r   rU   r   rr   )r3   rU   s     r   test_shadowed_stdlib_arrayz$ReprTests.test_shadowed_stdlib_arrayG  s%    	) 	) 	57%67r   c                 X     G d d      }| j                  t         |             d       y )Nc                       e Zd Zd Zy)-ReprTests.test_shadowed_builtin.<locals>.listc                      y)Nnot builtins.listr	   r   s    r   r   z6ReprTests.test_shadowed_builtin.<locals>.list.__repr__S  s    *r   Nr   r	   r   r   listr   R  s    +r   r   r   rr   )r3   r   s     r   test_shadowed_builtinzReprTests.test_shadowed_builtinO  s%    	+ 	+ 	46$78r   c                      G d dt               } |       }| j                  |j                  t        j                        d       y )Nc                       e Zd Zd Zy)*ReprTests.test_custom_repr.<locals>.MyReprc                 L    |j                   dv r|j                   S t        |      S )N>   <stderr><stdout><stdin>)namer   r3   objlevels      r   repr_TextIOWrapperz=ReprTests.test_custom_repr.<locals>.MyRepr.repr_TextIOWrapper[  s"    88BB88OCy r   N)r   r   r   r   r	   r   r   MyReprr   Y  s    !r   r   r   )r   r1   r   sysstdin)r3   r   aReprs      r   test_custom_reprzReprTests.test_custom_reprX  s4    	!T 	! CII.	:r   c                      G d d      } |       }dt        |      _        | j                  t        |      j                  d        G d dt              } |       }| j                  |j	                  |      d       y )Nc                       e Zd Zy)DReprTests.test_custom_repr_class_with_spaces.<locals>.TypeWithSpacesN)r   r   r   r	   r   r   TypeWithSpacesr  d  s    r   r  ztype with spacesc                       e Zd Zd Zy)<ReprTests.test_custom_repr_class_with_spaces.<locals>.MyReprc                      y)NType With Spacesr	   r   s      r   repr_type_with_spaceszRReprTests.test_custom_repr_class_with_spaces.<locals>.MyRepr.repr_type_with_spacesl  s    )r   N)r   r   r   r  r	   r   r   r   r  k  s    *r   r   r  )r   r   r1   r   r   )r3   r  r   r   r   s        r   "test_custom_repr_class_with_spacesz,ReprTests.test_custom_repr_class_with_spacesc  sk    	 	 -Qa))+=>	*T 	*
 A(:;r   N)r   r   r   r9   rF   rS   rm   rt   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	   r   r   r   r      ss    M."&37j@V/"]
;35"	:?wHr	(&89	;<r   r   c                 l    t        | dd      5 }|j                  |       d d d        y # 1 sw Y   y xY w)NwASCII)encoding)openwrite)pathtextfps      r   
write_filer  s  s'    	dC'	*b
 
+	*	*s   *3c                       e Zd ZdZd Zd Zd Zd Zd Z e	j                  d      d        Zd	 Zd
 Zd Z e	j                  d      d        Zy)LongReprTest3areallylongpackageandmodulenametotestreprtruncationc                 L   t         j                  j                  | j                        | _        t         j                  j                  | j                  | j                        | _        t        j                  | j                  d       t        j                  | j                         t        t         j                  j                  | j                  d             t        j                  | j
                  d       t        j                  | j
                         t        t         j                  j                  | j
                  d             t        j                         | _        t        j                  j                  d| j                         t        j                          y )NT)ignore_errorsz__init__.pyr   )osr  joinlongnamepkgname
subpkgnameshutilrmtreemkdirr   getcwdherer   insert	importlibinvalidate_cachesr   s    r   setUpzLongReprTest.setUpz  s    ww||DMM2'',,t}}dmmDdll$7
"'',,t||]CDdooT:
!"'',,tFGIIK	499% 	##%r   c                    g }t        j                  | j                        D ]?  \  }}}||z   D ]1  }|j                  t         j                  j                  ||             3 A |j                  | j                         |j                          |j                          |D ]L  }t         j                  j                  |      rt        j                  |       8t        j                  |       N t        j                  d= y )Nr   )r  walkr  appendr  r  sortreverseisdirrmdirremover   )r3   actionsdirpathdirnames	filenamesr   ps          r   tearDownzLongReprTest.tearDown  s    ,.GGDLL,A(GXy 9,rww||GT:; - -B 	t||$Aww}}Q		!	 
 HHQKr   c                    t        | j                        }|dt        | j                        dz   z  z  }|t        |      dz   t        d      z   z  }|t        t        j                  j                  d            z   t        d      z
  }t        j                  dk(  r|dk\  r| j                  d|z         y t        j                  dk(  rt        rt        d|       y y y )	NrL   rI   .pyzx.pynti  zDtest paths too long (%d characters) for Windows' 260 character limitzcached_path_len =)lenr!  r  r#  utilcache_from_sourcer  r   skipTestr   print)r3   module_namesource_path_lencached_path_lens       r   _check_path_limitationsz$LongReprTest._check_path_limitations  s    dii.1DMM 2Q 6773{+a/#e*<<*	0089:<?KH77d?#5 MM`+, -WW_%7 ")_r   c                    d | _         | j                  | j                         t        t        j
                  j                  | j                  | j                  dz                t        j                          ddl
m} |}| j                  t        |      d|j                  d|j                  d       | j                  t        t               d       y )Nr5  r   )r  z<module z from r   z<module 'sys' (built-in)>)maxDiffr?  r  r   r  r  r  r  r#  r$  gareallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncationr  r1   r   r   __file__r   )r3   r  modules      r   test_modulezLongReprTest.test_module  s    $$T\\2"'',,tu8LMN##% 	pDfQWQ`Q`'abc$?@r   c                 ,   | j                  d       | j                  }t        t        j                  j                  | j                  d      d       t        j                          ddl	m
}  |t        |j                        d|j                  z         y )Nr   zfoo.pyzclass foo(object):
    pass
r   )r   z<class '%s.foo'>)r?  r1   r  r  r  r  r  r#  r$  rB  r   r   r   )r3   rC   r   s      r   	test_typezLongReprTest.test_type  sl    $$U+277<<: = 	 	##%
4=!CLL0	2r   zneed a suitable objectc                      y r   r	   r   s    r   r   zLongReprTest.test_object  s     	r   c                 &   | j                  d       t        t        j                  j	                  | j
                  d      d       t        j                          ddlm	} | j                  t        |j                        d|j                  z         y )Nbarzbar.pyzclass bar:
    pass
r   )rJ  z<class '%s.bar'>)r?  r  r  r  r  r  r#  r$  rB  rJ  r1   r   r   )r3   rJ  s     r   
test_classzLongReprTest.test_class  se    $$U+277<<: = 	 	##%cgg(:S\\(IJr   c                 N   | j                  d       t        t        j                  j	                  | j
                  d      d       t        j                          ddlm	} |j                         }| j                  t        |      j                  d|j                  z               y )Nbazzbaz.pyzclass baz:
    pass
r   )rM  z<%s.baz object at 0x)r?  r  r  r  r  r  r#  r$  rB  rM  r   r   r   r   )r3   rM  ibazs      r   r   zLongReprTest.test_instance  sw    $$U+277<<: = 	 	##%wwyT
--"S\\13 	4r   c                    | j                  d       | j                  }t        t        j                  j                  | j                  d      d       t        j                          ddl	m
} t        |j                  j                        }| j                   |j                  d      |       |j                         }t        |j                        }| j                   |j                  d|j                   d      |       y )	Nquxzqux.pyzclass aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:
    def amethod(self): pass
r   )rP  z<function aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethodz<bound method aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod of <z.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa object at 0x)r?  r1   r  r  r  r  r  r#  r$  rB  rP  r   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamethodr   r   r   )r3   rC   rP  rB   iquxs        r   test_methodzLongReprTest.test_method  s    $$U+277<<: = 	 	##%  ^  ^  f  f  g  &B  C  EF  	G  \  \  ^|| !"	$r   z1needs a built-in function with a really long namec                      y r   r	   r   s    r   r   z"LongReprTest.test_builtin_function  s     	r   N)r   r   r   r  r%  r3  r?  rE  rG  unittestskipr   rK  r   rT  r   r	   r   r   r  r  w  sr    DH&"8$A
2 X]]+, -
	K
4$& X]]FG Hr   r  c                       e Zd Zd Zd Zy)r   c                     || _         y r   rD   )r3   rD   s     r   __init__zClassWithRepr.__init__  s	    r   c                      d| j                   z  S )NzClassWithRepr(%r)rZ  r   s    r   r   zClassWithRepr.__repr__  s    "TVV++r   N)r   r   r   r[  r   r	   r   r   r   r     s    ,r   r   c                       e Zd Zd Zy)r   c                     t        d      )Nz+This should be caught by Repr.repr_instance)	Exceptionr   s    r   r   zClassWithFailingRepr.__repr__  s    EFFr   Nr   r	   r   r   r   r     s    Gr   r   c                   6    e Zd ZdZd Zd Z e       d        Zy)MyContainerz"Helper class for TestRecursiveReprc                 $    t        |      | _        y r   )r   values)r3   rc  s     r   r[  zMyContainer.__init__  s    6lr   c                 :    | j                   j                  |       y r   )rc  r(  )r3   r   s     r   r(  zMyContainer.append  s    5!r   c                 `    ddj                  t        t        | j                              z   dz   S N<z, r   r  mapstrrc  r   s    r   r   zMyContainer.__repr__  &    TYYs3455;;r   N)r   r   r   __doc__r[  r(  r   r   r	   r   r   ra  ra    s$    (#"< <r   ra  c                   (    e Zd Z ed      d        Zy)MyContainer2rP   c                 `    ddj                  t        t        | j                              z   dz   S rf  rh  r   s    r   r   zMyContainer2.__repr__  rk  r   N)r   r   r   r   r   r	   r   r   rn  rn    s    E< <r   rn  c                   0    e Zd Zd ZeZ  e       e      Zy)MyContainer3c                      y)zTest document contentNr	   r   s    r   r   zMyContainer3.__repr__  s    r   N)r   r   r   r   wrappedr   wrapperr	   r   r   rq  rq    s     Gnw'Gr   rq  c                       e Zd Zd Zd Zd Zy)TestRecursiveReprc                    t        t        d            }|j                  |       |j                  d       |j                  |       | j                  t	        |      d       t        t        d            }|j                  |       |j                  d       |j                  |       | j                  t	        |      d       y )Nabcder   z<a, b, c, d, e, ..., x, ...>z<a, b, c, d, e, +++, x, +++>)ra  r   r(  r1   r   rn  )r3   ms     r   test_recursive_reprz%TestRecursiveRepr.test_recursive_repr  s    W&			a"@Ag'			a"@Ar   c                     ddl m} t        j                  }t        j                  }|D ](  }| j                  t        ||      t        ||             * y )Nr   )WRAPPER_ASSIGNMENTS)	functoolsr|  rq  rs  rt  assertIsr2   )r3   assignedrs  rt  r   s        r   test_assigned_attributesz*TestRecursiveRepr.test_assigned_attributes%  sA    =&&&&DMM''40''42HI r   c                     G d d      } |       j                   j                  }| j                  t        |      d       | j                  |d   j                  d       | j                  |d   j
                  t               y )Nc                   B     e Zd ZW   e        d fdc             Z Zy)1TestRecursiveRepr.test__type_params__.<locals>.Myc                 .    d fdx}f| d|d fdcS )Tc                  
      S r   rj  __classdict__s   r   r  z3TestRecursiveRepr.test__type_params__.<locals>.My.T/  s    Cr   defaultreturnc                     |S r   r	   )r3   r  s     r   r   z:TestRecursiveRepr.test__type_params__.<locals>.My.__repr__.  s    r   r  )	.defaultsr  r  s     r   z <generic parameters of __repr__>zRTestRecursiveRepr.test__type_params__.<locals>.My.<generic parameters of __repr__>.  s      3 r   N)r   )r   r   r   r   r   __classdictcell__r  s   @r   Myr  -  s      r   r  rI   r   r  )r   __type_params__r1   r7  r   	__bound__rj  )r3   r  type_paramss      r   test__type_params__z%TestRecursiveRepr.test__type_params__,  sh    	 	
 dmm33[)1-Q00#6Q1137r   N)r   r   r   rz  r  r  r	   r   r   rv  rv    s    
BJ	8r   rv  __main__)rl  r   r  r  r#  importlib.utilrV  r   test.supportr   test.support.os_helperr   reprlibr   rB   r   r   r   TestCaser   r  r  r   r   ra  rn  rq  rv  r   mainr	   r   r   <module>r     s   
  	        4   "V	<!! V	<p~8$$ ~@, ,G G< <<; <
( (8)) 8> zHMMO r   