
    <e4O                         d dl mZmZ d dlZd dlZd dlZdZdZ G d dej                  Z	e
dk    r ej                     dS dS )    )support	seq_testsNFc                   $    e Zd ZeZd Z fdZd Zd Z fdZ	 fdZ
 fdZ fdZd	 Zd
 Zd Zd Zd Zd Zej        d             Zd Zej        d             Zej        d             Zej        d             Zd Zd Zd Zd Zd Z xZS )	TupleTestc                     d}d}|                      t          |          5  |d          d d d            d S # 1 swxY w Y   d S )N z(tuple indices must be integers or slicesa)assertRaisesRegex	TypeError)selftmsgs      &/usr/lib/python3.11/test/test_tuple.pytest_getitem_errorzTupleTest.test_getitem_error   s    8##Is33 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	6::c                 l   t                                                       |                     t                      d           d}t          |          }|                     ||u            |                     t          g           d           |                     t          g d          d           |                     t          d          d           |                     t          d          d           |                     t          d t          d          D                       d           d S )	Nr   )r             spam)spr	   mc              3   $   K   | ]}|d z  |V  dS )r   Nr   .0xs     r   	<genexpr>z.TupleTest.test_constructors.<locals>.<genexpr>&   s+      ==Qq1u=q======    
   )r   r         	   )supertest_constructorsassertEqualtuple
assertTruerange)r   t0_3t0_3_bis	__class__s      r   r%   zTupleTest.test_constructors   s   !!###"%%%;;()))rB'''|||,,l;;;rB'''v(<=====%))=====(	* 	* 	* 	* 	*r   c                     |                      t          d          5  t          d           d d d            d S # 1 swxY w Y   d S )Nzkeyword argumentr   sequence)r
   r   r'   r   s    r   test_keyword_argszTupleTest.test_keyword_args)   s    ##I/ABB 	 	2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   :>>c                 f    G d dt                     } |ddg          }|                     t          |          |           |                     t	          |          ddg           |                     t                    5   |d           d d d            n# 1 swxY w Y    G d dt                     } |ddgd	
          }|                     t          |          |           |                     t	          |          ddg           |                     |j        d	            G d dt                     } |ddgd	
          }|                     t          |          |           |                     t	          |          ddg           |                     |j        d	           d S )Nc                       e Zd ZdS )5TupleTest.test_keywords_in_subclass.<locals>.subclassN__name__
__module____qualname__r   r   r   subclassr4   .           Dr   r9   r   r   r   r.   c                       e Zd ZddZdS )?TupleTest.test_keywords_in_subclass.<locals>.subclass_with_initNc                     || _         d S Nnewarg)r   argr@   s      r   __init__zHTupleTest.test_keywords_in_subclass.<locals>.subclass_with_init.__init__7   s    $r   r>   )r6   r7   r8   rB   r   r   r   subclass_with_initr<   6   s(        % % % % % %r   rC   r   r?   c                         e Zd Zd fd	Z xZS )>TupleTest.test_keywords_in_subclass.<locals>.subclass_with_newNc                 Z    t                                          | |          }||_        |S r>   )r$   __new__r@   )clsrA   r@   r   r,   s       r   rG   zFTupleTest.test_keywords_in_subclass.<locals>.subclass_with_new.__new__?   s&    wwsC00$r   r>   )r6   r7   r8   rG   __classcell__r,   s   @r   subclass_with_newrE   >   s=                 r   rK   )r'   assertIstyper&   listassertRaisesr   r@   )r   r9   urC   rK   s        r   test_keywords_in_subclassz#TupleTest.test_keywords_in_subclass-   s+   	 	 	 	 	u 	 	 	HaVd1ggx(((a1a&)))y)) 	" 	"Hb!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"	% 	% 	% 	% 	% 	% 	% 	% 1va000d1gg1222a1a&)))1%%%	 	 	 	 	 	 	 	
 q!fQ///d1gg0111a1a&)))1%%%%%s   BB #B c                     t                                                       |                     d           |                     d           d S )NT)*   )r$   
test_truthr(   r   r,   s    r   rT   zTupleTest.test_truthH   sC    r   c                    t                                                       |                     t          d          d           |                     t          d          d           |                     t          d          d           d S )Nr   r   r   r   r   r   r   r   )r$   test_lenr&   lenrU   s    r   rY   zTupleTest.test_lenM   ss    R!$$$TA&&&Y+++++r   c                     t                                                       d}|}|dz  }|                     ||u           d S )Nr   r   r   r   )r$   	test_iaddr(   r   rP   u2r,   s      r   r^   zTupleTest.test_iaddS   sH    	V$$$$$r   c                     t                                                       d}|}|dz  }|                     ||u           d S )Nr\   r   )r$   	test_imulr(   r_   s      r   rb   zTupleTest.test_imulZ   sH    	Q$$$$$r   c                     d }|                      t          t           |                                t          t          d                               d S )Nc               3   6   K   t          d          D ]} | V  d S )N  )r)   )is    r   fz(TupleTest.test_tupleresizebug.<locals>.fc   s0      4[[   r   re   )r&   rN   r'   r)   )r   rg   s     r   test_tupleresizebugzTupleTest.test_tupleresizebuga   sQ    	 	 	 	eAACCjj))4d+<+<=====r   c                       fd} |ddd            |ddd            |dd	d
            |ddd            |ddd           d S )Nc                     t          |           }t          j        dk    r|n|}||k    r"d| d| d| }                    |           d S d S )N    z
FAIL hash(z) ==  != )hashr   	NHASHBITSfail)r   e32e64gotexpectedr   r   s         r   check_one_exactz2TupleTest.test_hash_exact.<locals>.check_one_exactl   sd    q''C%/255ss3Hh@1@@S@@h@@		# r   r   is,l   {tYxYN} rW   im<iHl"$/K r   r   i lOP+c
+ )      ?im{l"$w(P-)rv   r   )r   )      i_*lteL r   )r   rt   s   ` r   test_hash_exactzTupleTest.test_hash_exactk   s    	 	 	 	 	 	I':;;;j*>???
,@AAA
,?@@@2I,	. 	. 	. 	. 	.r   c           
      X    ddl m} t          sd S d- fd		 	 d.fd	} |dt           |t	          d          d                    d	d	d
d	           t          t	          dd                    t          t	          d                    z   } |dt           ||d                    d	d	d	d	           ~d t	          d          D             } |dt           ||d                    d	d	d	d           ~ |dt           |ddgd                    dd	dd            |dt           |ddgd                    dd	dd            |dt           |dd                    d            d!}t          t	          |                    }t           ||d"                    }|t           |||                    z   t           |||                    z   |z   t          t          |                    z   } |d#|d$d	d%d           ~~~d&}	d' t	          |	 |	d(z             D             }
|
d) |
D             z   }t           ||
d"                    }|t           ||
d                    z   }|t           ||
d                    z   }|
}|d* ||z   D             z  }| |||          z  }| ||d"          z  }| |||          z  }| ||||          z  }| ||||          z  }| ||||          z  }| ||d          z  } |d+|dd	d,d           d S )/Nr   )productc                    ddl m} t          |          }t          j        ||          \  }} ||          }	|t          |	          z
  }
|
|z
  |z  }t          |	                                          dz
  }~	|
|f}d}d}|||k    rd}d| d}|||k    rd}|d	| d
| dz  }|st          rV| |  d|dd|dd}|d|
dd|dz  }t          rdd l}t          ||j
                   d S                     |           d S d S )Nr   )Counterr   Fr   Tz	FAIL z > ; zFAIL rl   z	; pileup ,z mean z.1f zcoll z z z+.1f)file)collectionsr~   rZ   r   collision_statsmaxvaluesJUST_SHOW_HASH_RESULTSsysprint
__stdout__ro   )tagnbinshashesrs   zlimitr~   nballsmeansdevc
collisionszpileuprr   failedprefixr   r   r   s                     r   tryone_innerz2TupleTest.test_hash_optional.<locals>.tryone_inner   s   ++++++[[F 0??JD$A#a&&Jd"d*A__q(Fv&CFF!a&jj/V///#x7#7787777 #/ #JJJvJJJtJJJJ8z8888888) #JJJ#CN333333IIcNNNNN# #r   c                 @  	
 t           j        }t          t          t          |                    } | d| dz   d|z  ||dk    r|n||           |dk    rE|dz
  
 | dz   d
fd|D             ||           d	 | d	z   d	fd
|D             ||           d S d S )Nr   z-bit hash codesr   rk   z; 32-bit upper hash codesl        c                     g | ]}|z	  S r   r   )r   hshifts     r   
<listcomp>z@TupleTest.test_hash_optional.<locals>.tryone.<locals>.<listcomp>   s    999Qa5j999r   l    z; 32-bit lower hash codesc                     g | ]}|z  S r   r   )r   r   masks     r   r   z@TupleTest.test_hash_optional.<locals>.tryone.<locals>.<listcomp>   s    7771a$h777r   )r   rn   rN   maprm   )r   xsnative32native64hi32lo32r   rn   r   r   r   r   s            @@r   tryonez,TupleTest.test_hash_optional.<locals>.tryone   s     )I#dB--((FL>I>>>>i%."__(	! ! ! 2~~!BS#>>$9999&999!#	% % % %S#>>$7777777!#	% % % % % ~r   zrange(100) by 3d   r   )repeatru   )rx   r   ir#   z-10 .. 8 by 4rx   c                     g | ]}|d z  S )<   r   )r   ns     r   r   z0TupleTest.test_hash_optional.<locals>.<listcomp>   s    )))Q"W)))r   z0..99 << 60 by 3)iD  r   z[-3, 3] by 18   )r"   r   )ry   r   z[0, 0.5] by 18rv   )r!   r   )r#   r   )   r   z4-char tuplesabcdefghijklmnopqrstuvwxyzg      @)r   2   r   zold tuple test)r   r   )4   1   r!   c                     g | ]
}|d k    |S )r   r   r   s     r   r   z0TupleTest.test_hash_optional.<locals>.<listcomp>  s    2221!r''Q'''r   r   c                     g | ]}|fS r   r   r   r	   s     r   r   z0TupleTest.test_hash_optional.<locals>.<listcomp>  s    !!!!!!!!r   c                     g | ]}|fS r   r   r   s     r   r   z0TupleTest.test_hash_optional.<locals>.<listcomp>  s    ###qqd###r   znew tuple test)   r!   )NN)NNNNN)	itertoolsr|   RUN_ALL_HASH_TESTSrN   r)   zip)r   r|   r   candsLNbasexpinpsr   ABL2L3L4Tr   s   `               @r   test_hash_optionalzTupleTest.test_hash_optional   sc   %%%%%%! 	F	# 	# 	# 	# 	# 	#: BF	% 	% 	% 	% 	% 	%8 	 $wwuSzz!'D'D'D"E"Evvv	/ 	/ 	/ U3^^$$tE!HH~~5
 	WWU1%=%=%= > >vvv	/ 	/ 	/ *)eCjj)))!4!(<(<(<#=#=vvx	1 	1 	1 	WWb!WR%@%@%@ A Avvv	/ 	/ 	/
 	ggq#hr&B&B&B!C!Cvvw	0 	0 	0 	GG8CCCDD	 	 	 	 E!HH~~''$q)))**d774,,---''"d++,,-/1248TOODvx	1 	1 	1"d
 22qb!A#222!!q!!!!''!A&&&''$wwq+++,,,$wwq+++,,, 	##AF####	WWR^^	WWR""""	WWQ^^	WWQ2	WWQA	WWRA	WWQq!!!!vw	0 	0 	0 	0 	0r   c                    t                      }d}|                     |          }|                     |          }|                     t          |          t	          |                     |                     t          |          t	          |                     |                     t	          |          d           |                     t	          |          d           d S )NrX   z()z	(0, 1, 2))r'   	type2testr&   strrepr)r   l0l2a0a2s        r   	test_reprzTupleTest.test_repr  s    WW^^B^^BR$r((+++R$r((+++b4(((b;/////r   c                     t          j                     t          j                     |                     t          j        |          |           d S r>   )gccollectassertFalse
is_trackedr   r   s     r   _not_trackedzTupleTest._not_tracked%  s>    



q))1-----r   c                     |                      t          j        |          |           t          j                     t          j                     |                      t          j        |          |           d S r>   )r(   r   r   r   r   s     r   _trackedzTupleTest._tracked+  sZ    a((!,,,



a((!,,,,,r   c                 h   ddg }}}|                      d           |                      d           |                      d           |                      d           |                      ddd	t          f           |                      t                      f           |                      d|f|d
f           |                     g f           |                     dgf           |                     i f           |                     t	                      f           |                     |||f           d S )N      ?r	   r   )r   r   r   )r   r   r	   r   r   )NTFr   r]   )r   intobjectr   set)r   r   yr   s       r   test_track_literalszTupleTest.test_track_literals1  s.    sBa1"$&!!!+&&&1a!8#>???688+&&&Aq61f-... 	resfresuuhq!Qi     r   c           	         ddg }}}|r| j         n| j        } |                         | g                       | t                                            | d||g                      | d d||fD                                   | t          d||g                                | d d||fD                                   |t          fdd||fD                                  |                       |g                     |                       ||gg                     |                       ||ig                     |                       d |||fD                                  |                       d |||fD                                  |                      t          fd	|||fD                                  d S )
Nr   r	   r   c              3      K   | ]}|V  d S r>   r   r   objs     r   r   z0TupleTest.check_track_dynamic.<locals>.<genexpr>N  s"      ********r   c              3   6   K   | ]}t          |g          V  d S r>   r'   r   s     r   r   z0TupleTest.check_track_dynamic.<locals>.<genexpr>P  s*      33#u333333r   c              3   0   K   | ]} |g          V  d S r>   r   r   r   tps     r   r   z0TupleTest.check_track_dynamic.<locals>.<genexpr>Q  s-      33#BBuII333333r   c              3      K   | ]}|V  d S r>   r   r   s     r   r   z0TupleTest.check_track_dynamic.<locals>.<genexpr>V  s"      22222222r   c              3   6   K   | ]}t          |g          V  d S r>   r   r   s     r   r   z0TupleTest.check_track_dynamic.<locals>.<genexpr>W  s*      ;;#u;;;;;;r   c              3   0   K   | ]} |g          V  d S r>   r   r   s     r   r   z0TupleTest.check_track_dynamic.<locals>.<genexpr>X  s-      ;;#BBuII;;;;;;r   )r   r   r   r'   )r   r   always_trackr   r   r   checks    `     r   check_track_dynamiczTupleTest.check_track_dynamicF  s5   sBa1!-D43Dbbddbbffbbiibb!Qmmbb**Aq	*****+++bbaAY  !!!bb33!Q33333444e3333!Q33333444bb!ggbb1a&ll###bb1a&ll###bb22Aq	22222333bb;;!Q;;;;;<<<e;;;;!Q;;;;;<<<<<r   c                 <    |                      t          d           d S )NF)r   r'   r0   s    r   test_track_dynamiczTupleTest.test_track_dynamicZ  s      	  .....r   c                 X     G d dt                     }|                     |d           d S )Nc                       e Zd ZdS ).TupleTest.test_track_subtypes.<locals>.MyTupleNr5   r   r   r   MyTupler   b  r:   r   r   T)r'   r   )r   r   s     r   test_track_subtypeszTupleTest.test_track_subtypes_  sH    	 	 	 	 	e 	 	 	  $/////r   c                 x    |                      t          d t          d          D                                  d S )Nc              3   <   K   | ]}t          j                    V  d S r>   )r   r   )r   rf   s     r   r   z)TupleTest.test_bug7466.<locals>.<genexpr>i  s(      AA
AAAAAAr   e   )r   r'   r)   r0   s    r   test_bug7466zTupleTest.test_bug7466f  s;     	%AAeCjjAAAAABBBBBr   c                 >      fd} |d            |d           d S )Nc                     d| z  }t          |          }                    |dd                    dg| z            z   dz              d S )NrW   (z, 0))r   r&   join)r   lr   r   s      r   r   z(TupleTest.test_repr_large.<locals>.checkm  sZ    qAQAQdii	***S02 2 2 2 2r   r    i@B r   )r   r   s   ` r   test_repr_largezTupleTest.test_repr_largek  s<    	2 	2 	2 	2 	2
 	b			gr   c                    |                      g d          }t          t          j        dz             D ]#}t	          |          }t          j        ||          }t          j        |          }|                     t          |          t          |                     |                     |                      |          |                      |                     t          j        |          }t          |           t          j        ||          }|                     |                      |          |                      |          dd                     %d S N)rx   r!   ry   r"   r   )
r   r)   pickleHIGHEST_PROTOCOLiterdumpsloadsr&   rM   nextr   dataprotoitorgdits         r   test_iterator_picklezTupleTest.test_iterator_pickleu  s"    ~~lll++62Q677 
	K 
	KEJJEUE**AaBT%[[$r((333T^^B//1E1EFFFaBHHHR''AT^^B//1E1Eabb1IJJJJ
	K 
	Kr   c           	         |                      g d          }t          t          j        dz             D ]=}t	          |          }t          j        ||          }t          j        |          }|                     t          |          t          |                     |                     |                      |          |                      t	          |                               t          j        |          }t          |           t          j        ||          }|                     |                      |          |                      t	          |                    dd                     ?d S r  )
r   r)   r  r  reversedr
  r  r&   rM   r  r  s         r   test_reversed_picklezTupleTest.test_reversed_pickle  s/   ~~lll++62Q677 
	U 
	UETNNEUE**AaBT%[[$r((333T^^B//1O1OPPPaBHHHR''AT^^B//1O1OPQPRPR1STTTT
	U 
	Ur   c                      G d dt                     }|                     t                    5  dg |d          z    d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )+TupleTest.test_no_comdat_folding.<locals>.TNr5   r   r   r   r   r    s          r   r   r   r   )r'   rO   r   )r   r   s     r   test_no_comdat_foldingz TupleTest.test_no_comdat_folding  s     	y)) 	 	D11U88OO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     |                      ddg          }|                      g d          }|                      ddg          }|                     ||           |                     ||           d S )Nr   r   )r   r   r   r   )r   
assertLess)r   r	   br   s       r   test_lexicographic_orderingz%TupleTest.test_lexicographic_ordering  so    NNAq6""NN999%%NNAq6""11r   ) r6   r7   r8   r'   r   r   r%   r1   rQ   rT   rY   r^   rb   rh   rz   r   r   r   r   r   cpython_onlyr   r   r   r   r   r  r  r  r  r  rI   rJ   s   @r   r   r      s       I  * * * * *  & & &6         
, , , , ,% % % % %% % % % %> > >. . .,W0 W0 W0r	0 	0 	0. . .- - - ! ! !(= = =( / / / 0 0 0 C C C  K K K U U U        r   r   __main__)testr   r   unittestr   r  r   r   
CommonTestr   r6   mainr   r   r   <module>r%     s    # # # # # # # #  				    O O O O O	$ O O O\ zHMOOOOO r   