
    ;eB                        d dl mZ d dlZd dlZd dlmZm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Zd Z G d d          Z G d d	          Z G d
 dej                  Z G d dej                  Z G d de          Z G d de          Z G d de          Z G d dej                  Z G d de          Z G d dej                  Z G d dej                  ZdZdeiZd Zedk    r ej                      dS dS )     dequeN)support	seq_testsi c               #      K   t           N)SyntaxError     &/usr/lib/python3.11/test/test_deque.pyfailr      s      
r   c                       e Zd Zd ZdS )BadCmpc                     t           r   )RuntimeErrorselfothers     r   __eq__zBadCmp.__eq__   s    r   N__name__
__module____qualname__r   r
   r   r   r   r      s#            r   r   c                       e Zd Zd Zd ZdS )	MutateCmpc                 "    || _         || _        d S r   )r   result)r   r   r   s      r   __init__zMutateCmp.__init__   s    
r   c                 B    | j                                          | j        S r   )r   clearr   r   s     r   r   zMutateCmp.__eq__   s    
{r   N)r   r   r   r   r   r
   r   r   r   r      s2              r   r   c                   V   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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-d, Z.d- Z/d. Z0d/ Z1e2j3        Z3e2j4        d0             Z5d1S )2	TestBasicc           	      R   t          t          dd                                        t          d                     t          dd          D ]}                    |           t	          t          dd                    D ]}                    |           |                     t                    t          t          dd                               |                     t                    d           fdt          d	          D             }|                     |t          t          dd
                               |                     t                    t          t          d
d                               fdt          d	          D             }|	                                 |                     |t          t          dd                               |                     t                    t          t          d
d                               d S )Niix     8r   X  c                 8    g | ]}                                 S r
   popleft.0ids     r   
<listcomp>z)TestBasic.test_basics.<locals>.<listcomp>*   !    000		000r      2   c                 8    g | ]}                                 S r
   popr+   s     r   r/   z)TestBasic.test_basics.<locals>.<listcomp>.   !    ---Q---r      )
r   ranger   appendreversed
appendleftassertEquallistlenreverser   r-   leftrightr.   s       @r   test_basicszTestBasic.test_basics    s   %u%%&&	

5::sC 	 	AHHQKKKK%a..)) 	 	ALLOOOOa$uT3'7'7"8"8999Q%%%0000U3ZZ000tE$OO44555a$uR~~"6"6777----%**---U3__ 5 5666a$uR~~"6"677777r   c                 6   |                      t          t          dd           |                      t          t          dd           t          t	          d                    }t          |d          }|                     t          |          g            |                     t          |          d           |                     t          |          g d           |                     |t          t	          d          d                     |                    d           |                     t          |          g d	           |	                    d
           |                     t          |          g d           |
                    ddg           |                     t          |          g d           |                    dd
g           |                     t          |          g d           t          t	          d          d          }|                    |           |                     t          |          dd          d           t          t	          d          d           }|                     t          |          d           d S )Nabc
      maxlenzdeque([7, 8, 9], maxlen=3))      	   )rM   rN   rH   rL      )rN   rH   rO   rM   r$   iz, 198, 199, [...]], maxlen=10)z%deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))assertRaises
ValueErrorr   iterr8   r<   r=   reprr9   r;   extend
extendleftr   itr.   s      r   test_maxlenzTestBasic.test_maxlen3   s)   *eUB777*eUB777%))__"Qb2&&&a">???a))),,,E%))Q//000	a***---	Qa))),,,	"ba+++...	aVa))),,,%**R(((	a(HIII%))D)))a"IJJJJJr   c                 6   t          t          d                    }t          |d           |                     t	          |          g            t          t          d                    }t          d          }|                    |           |                     t	          |          g            t          t          d                    }t          d          }|                    |           |                     t	          |          g            d S )Nd   r   rJ   )rR   r8   r   r<   r=   rT   rU   rV   s      r   test_maxlen_zerozTestBasic.test_maxlen_zeroJ   s    %**bb2&&&%**OOO	b2&&&%**OOO	Rb2&&&&&r   c                 2   |                      t                      j        d            |                      t          d          j        d            |                      t          dd          j        d           |                      t          dd          j        d           |                      t          dd          j        d           |                     t                    5  t          d          }d|_        d d d            d S # 1 swxY w Y   d S )NrE      rJ      r   rH   )r<   r   rK   rP   AttributeErrorr   r.   s     r   test_maxlen_attributezTestBasic.test_maxlen_attributeY   s9   ...u,d333uQ///6:::uQ///6:::uQ///6:::~.. 	 	eAAH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   (DDDc           	      v   ddddz  dz   fD ]e}t          |          }t          |          }dD ]B}|                     |                    |          |                    |          |||f           Cf|                     t
          |j                   |                     t
          |j        dd            G d	 d
          }t          dd |            dg          }|                     t          |j        d           t          g d          }|                     t          |j         |                        G d d          } |            }t          ddd|ddg          }||_        |                     t          |j        d           t          d gdz            }t          t          |                    D ]}|                    d           |                    d           |                     |                    d          d           |                     |                    d           d           d S )N abracadabra
simsalabim  rE   abcdefghijklmnopqrstuvwxyz   r^   c                       e Zd Zd ZdS )(TestBasic.test_count.<locals>.BadComparec                     t           r   )ArithmeticErrorr   s     r   r   z/TestBasic.test_count.<locals>.BadCompare.__eq__l   s    %%r   Nr   r
   r   r   
BadComparerj   k   s#        & & & & &r   rm   rI   rh   r^   rI   c                       e Zd Zd ZdS )-TestBasic.test_count.<locals>.MutatingComparec                 8    | j                                          dS )NT)r.   r5   r   s     r   r   z4TestBasic.test_count.<locals>.MutatingCompare.__eq__s   s    

tr   Nr   r
   r   r   MutatingComparerp   r   s#            r   rr   r]         rF   r   )r=   r   r<   countrP   	TypeErrorrl   r.   r   r8   r>   rotate)r   sr.   letterrm   rr   mr-   s           r   
test_countzTestBasic.test_countc   sS   m\#%5e%;< 	S 	SAQAaA6 S S  !''&//Aq&>RRRRS)QW---)QWa333	& 	& 	& 	& 	& 	& 	& 	& 1aq)**/17A666)))/17JJLLAAA	 	 	 	 	 	 	 	 O1aAq!$%%,333 4&)s1vv 	 	AHHRLLLL	Q'''+++++r   c           	      2   t          d          }|                                 |t          d          t          d          t                      t          |          fD ]}|                     ||k    t	          |          t	          |          k    ot          |          t          |          k               |                     ||k    t	          |          t	          |          k    ot          |          t          |          k                t          t           d          }|D ]l}|D ]e}|                     ||k    t          |          t          |          k    ||f           |                     ||k    t          |          t          |          k    ||f           |                     ||k     t          |          t          |          k     ||f           |                     ||k    t          |          t          |          k    ||f           |                     ||k    t          |          t          |          k    ||f           |                     ||k    t          |          t          |          k    ||f           gnd S )NxabcrE   ab)	rc   abr~   barE   xbar}   cba)r   r*   r=   r<   typemap)r   r.   eargsxys         r   test_comparisonszTestBasic.test_comparisons   sA   &MM			U5\\5;;aA 	O 	OAQT477DGG#3#HQa8HIIIQTtAwwQ'7'LDGGT!WW<L#MNNNN5QRR 	D 	DA D D  aaDGG);aUCCC  aaDGG);aUCCC  aaDGG);aUCCC  aaDGG);aUCCC  aaDGG);aUCCC  aaDGG);aUCCCCD	D 	Dr   c                 f   d}t          t          |                    }t          |          D ]}|                     ||v            |                     |dz   |v           t          t          |                    }t          |d          ||dz  <   |                     t
                    5  ||v  d d d            n# 1 swxY w Y   t          t          |                    }t                      ||dz  <   |                     t
                    5  ||v  d d d            d S # 1 swxY w Y   d S )Nr$   rh   Fr^   )r   r8   
assertTruer   rP   r   r   )r   nr.   r-   s       r   test_containszTestBasic.test_contains   s   %((OOq 	$ 	$AOOAF####1Q''' %((OOAu%%!Q$|,, 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 %((OO((!Q$|,, 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   .B??CCD&&D*-D*c                     G fdd          }t           |             |            g          |                     t                    5  dv }d d d            n# 1 swxY w Y   t           |             |            g          |                     t                    5                      d          }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Z fdZdS )5TestBasic.test_contains_count_stop_crashes.<locals>.Ac                 :                                      t          S r   )r    NotImplemented)r   r   r.   s     r   r   z<TestBasic.test_contains_count_stop_crashes.<locals>.A.__eq__   s    			%%r   Nr   )r.   s   r   Ar      s.        & & & & & & &r   r   rI   )r   rP   r   ru   )r   r   _r.   s      @r    test_contains_count_stop_crashesz*TestBasic.test_contains_count_stop_crashes   sj   	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 1133*|,, 	 	QA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1133*|,, 	 	

A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   AA!$A!#CC
C
c                 z   t          d          }|                     t          |j        d           |                    d           |                     t          |          t          d                     |                    |           |                     t          |          t          d                     d S )Nr   rh   bcdabcdabcdabcd)r   rP   rv   rT   r<   r=   r`   s     r   test_extendzTestBasic.test_extend   s    #JJ)QXq111	a$v,,///	a$z"2"233333r   c                    t                      }t          d          }t          d          }|                     ||z   t                                 |                     ||z   t          d                     |                     ||z   t          d                     |                     ||z   t          d                     |                     ||z   t          d                     |                     ||z   t                                 |                     ||z   t          d                     |                     ||z   t          d                     t          dd          }t          d          }|                     ||z   t          d                     |                     t                    5  t          d          dz    d d d            d S # 1 swxY w Y   d S )	NrE   defabcdefabcabcr]   rJ   ghefgh)r   r<   assertIsNotrP   rv   )r   r.   r   fghs         r   test_addzTestBasic.test_add   s   GG%LL%LLQ(((Qh000Qh000Qe---Qe---Q(((Qe---Qe---(1%%%$KKQf...y)) 	! 	!%LL5  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   ;GG"Gc                     t          d          }|dz  }|                     t          |          t          d                     ||z  }|                     t          |          t          d                     d S )Nr   r   r   r   )r   r<   r=   r`   s     r   	test_iaddzTestBasic.test_iadd   sk    #JJ	U
a$v,,///	Qa$z"2"233333r   c           
         t          d          }|                     t          |j        d           |                    d           |                     t          |          t          t          d                               |                    |           |                     t          |          t          d                     t                      }|                    t          d                     |                     t          |          t          t          t          d                                         |                     t          |j        t                                 d S )Nr   rh   r   r   abcddcba  )
r   rP   rv   rU   r<   r=   r:   r8   r	   r   r`   s     r   test_extendleftzTestBasic.test_extendleft   s   #JJ)Q\1555	Ua$x'7'7"8"8999	Qa$z"2"2333GG	U4[[!!!a$xd'<'<"="=>>>+q|TVV<<<<<r   c                     d}t          t          |                    }t          t          |                    }t          |          D ]}|                                 |                    d           t          j                    dk     r*|                    |           |                    |           t          dt          |          z
  t          |                    D ]}t          d          }|                     |d         d           |                     |d         d           t                      }| 	                    t          |j        d           | 	                    t          |j        d           d S )	Nr$   r   g      ?rh   supermanrx   rF   r   )r   r8   r=   r*   r5   randomr9   r>   r<   rP   
IndexError__getitem__)r   r   r.   lr-   js         r   test_getitemzTestBasic.test_getitem   s?   %((OOqNNq 	$ 	$AIIKKKEE!HHH}$$1SVV8SVV,, $ $ $ *1s###2$$$GG*amQ777*amR88888r   c           
         dD ]}t          t          |                    }t          |          D ]+}|                     |                    |          |           ,|                     t
                    5  |                    |dz              d d d            n# 1 swxY w Y   t          t          |                    }t          |d          ||dz  <   |                     t                    5  |                    |           d d d            n# 1 swxY w Y   t          t          |                    }t                      ||dz  <   |                     t                    5  |                    |           d d d            n# 1 swxY w Y   d}d}t          |dz            }t          |dz            }t          dt          |          dz  z
  dt          |          dz  z             D ]}t          dt          |          dz  z
  dt          |          dz  z             D ]}|dz   D ]}		 |                    |	||          }
|                     |                    |	||          |
           F# t
          $ rL |                     t
                    5  |                    |	||           d d d            n# 1 swxY w Y   Y w xY wt          t          d	d
d                    }t          d          D ]H}|                    dd          }|                     ||         d           |                                 Id S )N)rh   r^      (   r$   rh   Fr^   	ABCDEFGHIZrs   r   i'  rH   rZ   i4!  i  )r   r8   r<   indexrP   rQ   r   r   r   r=   r>   rw   )r   r   r.   r-   elements
nonelementrx   startstopelementtargetsteps               r   
test_indexzTestBasic.test_index   s,   " 	 	AeAhhA1XX 0 0  Q////"":..  !               eAhhA5))AadG""<00  


               eAhhAhhAadG""<00  


               
(Q,A2Aq=!c!ffqj.99 		P 		PEb3q66!8mQQ!^<< P P'#~ P PGP!"%!>!>
 ((%)F)FOOOO	 & : : :!..z:: : :GGGUD999: : : : : : : : : : : : : : ::PP %5"%%&&#JJ 	 	Dc""AQqT4(((HHJJJJ		 	sl   7BB 	#B 	3DD	D	*FF	F	9I<<$K	 K8K	KK	KK	K	c                     t          d          }|                     t                    5  |                    ddd          }d d d            d S # 1 swxY w Y   d S )NAAAzHello worldr   r]   )r   rP   rQ   r   )r   r.   r-   s      r   test_index_bug_24913zTestBasic.test_index_bug_24913&  s    'NNz** 	- 	-q!,,A	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   AAAc                 V   d}t          dt          |          dz  z
  dt          |          dz  z             D ]o}t          d          }t          d          }|                    |d           |                    |d           |                     t          |          |           pd S )Nr   r   r^   rs   r   )r8   r>   r   r=   insertr<   )r   r   r-   r.   rx   s        r   test_insertzTestBasic.test_insert+  s    rCMM!O+QX1B-BCC 	) 	)Ak""A[!!AHHQHHQT!WWa((((	) 	)r   c                 (   d}t          |t          |                    }|                     t                    5  |                    dd            d d d            n# 1 swxY w Y   d}t          t          |           t          |                    D ]{}t          |t          |          dz             }|                    |d           |dk    r|                     ||         d           \|                     ||dz
           d           |d S )NABCrJ   r^   r   rh   r   r   )r   r>   rP   r   r   r8   r<   )r   datar.   r   r-   s        r   test_insert_bug_26194zTestBasic.test_insert_bug_261945  sK   $s4yy)))z** 	 	HHQ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 H~s8}}55 	. 	.Ahs8}}Q777AHHQAvv  1s++++  1Q3----	. 	.s   AA"%A"c                    dD ]Q}t                      }||z  }|                     |t                                 |                     |j                   RdD ]V}t          d          }||z  }|                     |t          d|z                       |                     |j                   WdD ]f}t          dd          }||z  }|                     |t          dt	          |d          z                       |                     |j        d           gdD ]V}t          d          }||z  }|                     |t          d|z                       |                     |j                   WdD ]`}t          dd          }||z  }|                     |t          d|z  dd                               |                     |j        d           ad S )N)rF   r   rh   r^   rH   r   r   )
r   rF   r   rh   r^   rH   i  rf   i  r   rf   r   i)r   r<   assertIsNonerK   min)r   r   r.   s      r   	test_imulzTestBasic.test_imulD  s   - 	( 	(AAFAQ(((ah''''- 	( 	(Ac

AFAQcAg///ah''''< 	, 	,Ac3AFAQcC3KK&7 8 8999QXs++++- 	( 	(AhAFAQhl 3 3444ah''''< 	, 	,Ah$$AFAQx!|TUU&; < <===QXs++++		, 	,r   c                    t          d          }|                     |dz  t                                 |                     |dz  t                                 |                     |dz  t          d                     |                     |dz  t          d                     |                     |dz  t          d                     |                     |dz  |           |                     t                      dz  t                                 |                     t                      dz  t                                 |                     t                      d	z  t                                 |                     d|z  t                                 |                     d|z  t                                 |                     d|z  t          d                     |                     d|z  t          d                     |                     d|z  t          d                     t          dd	
          }|                     |dz  t                                 |                     |dz  t                                 |                     |dz  t          d                     |                     |dz  t          d                     |                     |dz  t          d                     d S )NrE   r   r   rh   r^   r   rI   	abcabcabcrs   rJ   bcabcr   )r   r<   r   r`   s     r   test_mulzTestBasic.test_mulc  s}   %LLR)))Q(((Qe---Qh000Qk 2 2333Q"""1egg...1egg...1egg...a)))Q(((Qe---Qh000Qk 2 2333%"""R)))Q(((Qe---Qg///Rw00000r   c                    d}t          t          |                    }t          |          D ]
}d|z  ||<   |                     t          |          d t          |          D                        t          |          }t          d|z
  dd          D ]}d|z  ||<   d|z  ||<   |                     t          |          |           d S )Nr$   rH   c                     g | ]}d |z  S )rH   r
   r,   r-   s     r   r/   z*TestBasic.test_setitem.<locals>.<listcomp>  s    ":":":A2a4":":":r   rh   r   rF   rL   )r   r8   r<   r=   )r   r   r.   r-   r   s        r   test_setitemzTestBasic.test_setitem}  s    %((OOq 	 	A6AaDDa":":q":":":;;;GGqsAr"" 	 	AQ3AaDQ3AaDDa!$$$$$r   c                 R   d}t          t          |                    }|                     t          |j        | dz
             |                     t          |j        |           t          |          D ]}|                     t          |          ||z
             t          j        t          |           t          |                    }||         }| 	                    ||           ||= | 
                    ||           |                     t          |          d           d S )Nrf   rh   r   )r   r8   rP   r   __delitem__r<   r>   r   	randrangeassertInassertNotIn)r   r   r.   r-   r   vals         r   test_delitemzTestBasic.test_delitem  s   %((OO*amaRT:::*amQ777q 	% 	%ASVVQqS))) #a&&#a&&11AA$CMM#q!!!!S!$$$$Q#####r   c                 ,   d}d t          |          D             }t          |          D ]}t          |d |                   }|                                }|                     t	          |          t	          t          |d |                                        |                     |d            |                                 |                     t	          |          |d |                    |                     t          |j        d           d S )Nrf   c                 4    g | ]}t          j                     S r
   r   r   s     r   r/   z*TestBasic.test_reverse.<locals>.<listcomp>  s    222A222r   rh   )	r8   r   r?   r<   r=   r:   assertIsrP   rv   )r   r   r   r-   r.   rs         r   test_reversezTestBasic.test_reverse  s    22q222q 	0 	0Ad2A2hA		AT!WWd8D!H+=+=&>&>???MM!T"""IIKKKT!WWd2A2h////)QY22222r   c                 r   t          d          }t          |          }t          |          }|                    d           |                     d                    |          d           t          |          }|                    d           |                     d                    |          d           |                                 |                     t          |          |           t          |dz            D ]}t          |          }t          |          }|                    |           t          |          D ]}|                    d           |                     t          |          t          |                     |                    |            |                     t          |          |           |                    ||z
             |                     t          |          |           t          |dz            D ]}t          |          }t          |          }|                    |            t          |          D ]}|                    d           |                     t          |          t          |                     |                    |           |                     t          |          |           |                    ||z
             |                     t          |          |           t          |          }t          |          }|                    t          dz              |j        }t          t          dz             D ]} |             |                     t          |          t          |                     |                     t          |j        d	           |                     t          |j        dd
           t                      }|                                 |                     |t                                 d S )Nabcderh   rc   eabcdrF   bcdearI      r   rH   )
tupler>   r   rw   r<   joinr8   BIGrP   rv   )r   rx   r   r.   r-   r   r   drs           r   test_rotatezTestBasic.test_rotate  sf   'NNFF!HH	W---!HH	W---	


q1%%%qs 
	* 
	*AaAaAHHQKKK1XX  U1XXuQxx000HHaRLLLU1XXq)))HHQqSMMMU1XXq))))qs 
	* 
	*AaAaAHHaRLLL1XX  U1XXuQxx000HHQKKKU1XXq)))HHQqSMMMU1XXq))))!HH!HH	RXs2v 	 	ABDDDDq588,,,)QXs333)QXq"555GG	


EGG$$$$$r   c                    t          d          }|                     t          |          d           |                                 |                     t          |          d           |                                 |                     t          |          d           |                     t          |j                   |                     t          |          d           |                    d           |                     t          |          d           |                    d           |                     t          |          d           |	                                 |                     t          |          d           d S )Nr~   r^   rh   r   cr.   )
r   r<   r>   r*   r5   rP   r   r9   r;   r    r`   s     r   test_lenzTestBasic.test_len  s7   $KKQ###			Q###	Q###*ae,,,Q###	Q###	SQ###				Q#####r   c                     t                      }|                     t          |j                   |                     t          |j                   d S r   )r   rP   r   r5   r*   r`   s     r   test_underflowzTestBasic.test_underflow  sA    GG*ae,,,*ai00000r   c                    t          t          d                    }|                     t          |          d           |                                 |                     t          |          d           |                     t          |          g            |                                 |                     t          |          g            d S )NrZ   r   )r   r8   r<   r>   r    r=   r`   s     r   
test_clearzTestBasic.test_clear  s    %**Q%%%				Q###a"%%%				a"%%%%%r   c                 ~   t          d          }|                    d           |                     |t          d                     |                    d           |                     |t          d                     |                     t          |j        d           |                     |t          d                     t          ddt                      dg          }t          |          }|                     t          |j        d           t          ||          D ]\  }}|                     ||u            dD ]z}t          dg          }|	                    t          ||          dg           |                     t          |j        d           |                     |t                                 {d S )	Nabcdefghcijr   
abdefghcij	abdefghijr   r   )TFr~   )r   remover<   rP   rQ   r   r   zipr   rT   r   r   )r   r.   r   r   r   matchs         r   test_removezTestBasic.test_remove  s   -  	E,//000	E+..///*ah444E+../// 3VXXs+,,!HH,#6661II 	$ 	$DAqOOAF#### # 	) 	)EtfAHHi5))3/000j!(C888Q((((		) 	)r   c                 V   t          t          d                    }t          t          |                    }|                     t          |          t          |                     |                    |           |                     t          |          dd          d           d S )Nr$   iz7, 198, 199, [...]]))r   r8   evalrS   r<   r=   r9   r   r.   r   s      r   	test_reprzTestBasic.test_repr  s    %**aMMa$q''***	a(>?????r   c                     |                      t          t          ddd           |                      t          t          d           d S )NrE   r^   rI   rh   )rP   rv   r   r   s    r   	test_initzTestBasic.test_init  s<    )UE1a888)UA.....r   c                 b    |                      t          t          t          d                     d S )NrE   )rP   rv   hashr   r  s    r   	test_hashzTestBasic.test_hash  s&    )T5<<88888r   c           
         dD ]}t          t          |                    }|j        |j        }}t          |t                    D ]9} ||            |            }|||z
  k    r|                     |||z
             :|                     t          |          t          t          t          |z
  t                                         d S N)r   rh   r^   rZ   r   )r   r8   r9   r*   r   r<   r=   r   sizer.   r9   r5   r-   r   s          r   #test_long_steadystate_queue_popleftz-TestBasic.test_long_steadystate_queue_popleft  s    ( 	B 	BDeDkk""A(AICF4%% 0 0q			CEED==$$Q$///T!WWd5T3+?+?&@&@AAAA	B 	Br   c           
         dD ]}t          t          t          |                              }|j        |j        }}t          |t
                    D ]9} ||            |            }|||z
  k    r|                     |||z
             :|                     t          t          t          |                              t          t          t
          |z
  t
                                         d S r  )r   r:   r8   r;   r5   r   r<   r=   r  s          r   $test_long_steadystate_queue_poprightz.TestBasic.test_long_steadystate_queue_popright'  s    ( 		9 		9DhuT{{++,,A,CF4%% 0 0q			CEED==$$Q$///T(477"3"344!%D#"6"6779 9 9 9		9 		9r   c                     	 t                      }|j        |j        }}t          t                    D ]} ||           t          t                    D ](} |            }||k    r|                     ||           )d S r   )r   r9   r*   r8   r   r<   r   r.   r9   r5   r-   r   s         r   test_big_queue_popleftz TestBasic.test_big_queue_popleft3  s    GGh	s 	 	AF1IIIIs 	' 	'AAAvv  A&&&	' 	'r   c                     t                      }|j        |j        }}t          t                    D ]} ||           t          t                    D ](} |            }||k    r|                     ||           )d S r   )r   r;   r5   r8   r   r<   r  s         r   test_big_queue_poprightz!TestBasic.test_big_queue_popright>  s    GGlAEs 	 	AF1IIIIs 	' 	'AAAvv  A&&&	' 	'r   c                 \   t                      }|j        |j        }}t          t                    D ]} ||           t          t          t                              D ](} |            }||k    r|                     ||           )|                     t          |          d           d S Nr   )r   r9   r5   r8   r   r:   r<   r>   r  s         r   test_big_stack_rightzTestBasic.test_big_stack_rightH  s    GGhs 	 	AF1IIII%**%% 	' 	'AAAvv  A&&&Q#####r   c                 \   t                      }|j        |j        }}t          t                    D ]} ||           t          t          t                              D ](} |            }||k    r|                     ||           )|                     t          |          d           d S r  )r   r;   r*   r8   r   r:   r<   r>   r  s         r   test_big_stack_leftzTestBasic.test_big_stack_leftS  s    GGlAIs 	 	AF1IIII%**%% 	' 	'AAAvv  A&&&Q#####r   c                    t          t          d                    }t          |          }|                     t          |          t          |                     |                     t          |          t          |                     d S )Nr$   )r   r8   assertNotEqualidr<   r=   r  s      r   test_roundtrip_iter_initz"TestBasic.test_roundtrip_iter_init^  sj    %**!HHBqEE2a55)))a$q''*****r   c                    t          t          d                    t          t          d          d          fD ]}t          t          j        dz             D ]}t          j        ||          }t          j        |          }|                     t          |          t          |                     |                     t          |          t          |                     |                     |j
        |j
                   d S )Nr$   rZ   rh   )r   r8   pickleHIGHEST_PROTOCOLdumpsloadsr  r  r<   r=   rK   )r   r.   r-   rx   r   s        r   test_picklezTestBasic.test_pickled  s    uSzz""E%**c$:$:: 	5 	5A62Q677 5 5LA&&LOO##BqEE2a55111  a$q''222  1844445	5 	5r   c                    t          d          t          dd          fD ]}|                    |           t          t          j        dz             D ]}t          j        t          j        ||                    }|                     t          |          t          |                     | 	                    t          |d                   t          |                     | 	                    |j
        |j
                   d S )NrE   rI   rh   rF   )r   r9   r8   r!  r"  r$  r#  r  r  r<   rK   )r   r.   r-   r   s       r   test_pickle_recursivezTestBasic.test_pickle_recursivem  s    uuUA. 	5 	5AHHQKKK62Q677 5 5La!3!344##BqEE2a55111  AbEBqEE222  184444	5	5 	5r   c                 \   t          t          d                    }d |D             }t          t          j        dz             D ]}t	          |          }t          j        ||f|          }t          j        |          \  }}t          |          D ]
\  }}	|	||<   |                     t          |          t          |                     |                     t          |          |           t          |           t          j        ||f|          }t          j        |          \  }}t          |          D ]
\  }}	|	||<   |                     t          |          t          |                     |                     t          |          |dd                     t          dt          |                    D ]}t          |           t          j        ||f|          }t          j        |          \  }}t          |          D ]
\  }}	|	||<   |                     t          |          t          |                     |                     t          |          g            |                     t          t          |           t          j        ||f|          }t          j        |          \  }}t          |          D ]
\  }}	|	||<   |                     t          |          t          |                     |                     t          |          g            d S )Nr$   c                     g | ]}|d z  S )g)\(?r
   r   s     r   r/   z2TestBasic.test_iterator_pickle.<locals>.<listcomp>x  s    %%%1$%%%r   rh   )r   r8   r!  r"  rR   r#  r$  	enumerater<   r   r=   nextr>   rP   StopIteration)
r   origr   protoitorgdumprW   r.   r-   r   s
             r   test_iterator_picklezTestBasic.test_iterator_picklev  s   U3ZZ  %%%%%62Q677 $	+ $	+EJJE<u55DL&&EB!$  1!T"XXtE{{333T"XXt,,, KKK<u55DL&&EB!$  1!T"XXtE{{333T"XXtABBx000 1c$ii((  U<u55DL&&EB!$  1!T"XXtE{{333T"XXr*** mT5999<u55DL&&EB!$  1!T"XXtE{{333T"XXr****I$	+ $	+r   c                 ~   dg}t          |g          }t          j        |          }|                     t	          |          t	          |                     d|d<   |                     t          |          t          |                     |                     t	          |          t	          |                     d S NrH   rO   r   )r   copydeepcopyr<   r=   r  r  r   mutr.   r   s       r   test_deepcopyzTestBasic.test_deepcopy  s    d3%LLM!a$q''***ABqEE2a55)))DGGT!WW-----r   c                 L   dg}t          |g          }t          j        |          }|                     t          |          t          |                     d|d<   |                     t          |          t          |                     |                     t          |          t          |                     t          d          D ]}t          dd          D ]}d t          |          D             }|dk    rt          |          nt          ||          }|                                }|                     ||           |                     |j        |j                   |                     t          d t          ||          D                                  Ōd S )	NrH   rO   r   rs   rF      c                 4    g | ]}t          j                     S r
   r   )r,   r   s     r   r/   z'TestBasic.test_copy.<locals>.<listcomp>  s    777V]__777r   c              3   $   K   | ]\  }}||u V  d S r   r
   )r,   r   r   s      r   	<genexpr>z&TestBasic.test_copy.<locals>.<genexpr>  s*      #A#Atq!AF#A#A#A#A#A#Ar   )r   r4  r<   r=   r  r  r8   rK   r   allr   )r   r7  r.   r   r-   rK   rx   s          r   	test_copyzTestBasic.test_copy  s   d3%LLIaLLa$q''***ABqEE2a55)))a$q''***q 	C 	CAA,, C C77eAhh777 &"E!HHH%62B2BFFHH  A&&&  18444#A#As1ayy#A#A#A A ABBBBC	C 	Cr   c                 ~   dg}t          |g          }|                                }|                     t          |          t          |                     d|d<   |                     t          |          t          |                     |                     t          |          t          |                     d S r3  )r   r4  r<   r=   r  r  r6  s       r   test_copy_methodzTestBasic.test_copy_method  s    d3%LLFFHHa$q''***ABqEE2a55)))a$q''*****r   c           
          dt          d          fD ]Y}|                     t          t          t	          |                              t          t          |                               Zd S Nr     )r8   r<   r=   r:   r   )r   rx   s     r   test_reversedzTestBasic.test_reversed  sg    %++& 	J 	JAT(588"4"455tHQKK7H7HIIII	J 	Jr   c           
      $   t          t          t                                          }dt          d          fD ]U}|                     t           |t          |                              t          t          |                               Vd S rC  )r   r:   r   r8   r<   r=   )r   klassrx   s      r   test_reversed_newzTestBasic.test_reversed_new  s    Xegg&&''%++& 	G 	GAT%%a//22D!4E4EFFFF	G 	Gr   c                     dd l }t                      }t          d          D ]&}|                    d            |j                     'd S )Nr   rZ   rh   )gcr   r8   r9   collect)r   rJ  r.   r-   s       r   test_gc_doesnt_blowupzTestBasic.test_gc_doesnt_blowup  sS    			 GGs 	 	AHHQKKKBJLLLL	 	r   c                     G d dt                     }t          d          D ]} |            }t          j        |          }|dk    rt	          |dg          }nt          t	          |dg                    }t          |          |_        ~~t          j	                     | 
                     |            d u d           d S )Nc                       e Zd ZdS ),TestBasic.test_container_iterator.<locals>.CNr   r   r   r
   r   r   CrO            Dr   rQ  r^   r   rh   zCycle was not collected)objectr8   weakrefrefr   r:   rR   r   rJ  rK  r   )r   rQ  r-   objrU  	containers         r   test_container_iteratorz!TestBasic.test_container_iterator  s    	 	 	 	 	 	 	 	q 
	F 
	FA!##C+c""CAvv!3(OO		$UC8__55	OOCEYJLLLOOCCEETM+DEEEE
	F 
	Fr   c                 ,   d}d}t          j        d|z            }t          j        d|z            }|                     t
                              t                                |           | j        } |t                      ||z               |t          d          ||z               |t          d|dz
  z            ||z               |t          d|z            |d|z  z               |t          dd|z  z            |d	|z  z              d S )
Nrt   @   z2P5n%dPPzP%dPPr   rh   r^   *   +   )	r   calcvobjsizestructcalcsizer<   rS  
__sizeof__r   check_sizeof)r   MAXFREEBLOCKSBLOCKLENbasesize	blocksizechecks         r   test_sizeofzTestBasic.test_sizeof  s   '
](BCCOGh$677	**57733X>>>!eggx)+,,,eCjj(Y.///eC8a<())8i+?@@@eC(N##XI%=>>>eC2=)**HrI~,EFFFFFr   N)6r   r   r   rC   rX   r[   ra   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r  r%  r'  r1  r8  r?  rA  rE  rH  rL  rX  r   ra  cpython_onlyrg  r
   r   r   r"   r"      s       8 8 8&K K K.' ' '  , , ,BD D D"  (
 
 
4 4 4! ! !(4 4 4
= 
= 
=9 9 9(, , ,\- - -
) ) ). . ., , ,>1 1 14
% 
% 
%$ $ $
3 
3 
33% 3% 3%j$ $ $ 1 1 1
& & &) ) )0@ @ @/ / /9 9 9	B 	B 	B
9 
9 
9	' 	' 	'' ' '	$ 	$ 	$	$ 	$ 	$+ + +5 5 55 5 5'+ '+ '+R. . .C C C$+ + +J J JG G G
  F F F  'LG G G G Gr   r"   c                        e Zd Zd Zd Zd ZdS )TestVariousIteratorArgsc                    ddt          d          dt          ddd          fD ]2}t          j        t          j        t          j        t          j        t          j        t          j        fD ]Q}|                     t          t           ||                              t           ||                               R|                     t          t          t          j        |                     |                     t          t          t          j        |                     |                     t          t          t          j        |                     4d S )N123rc   r   )dog333333?rD  i  rs   )r8   r   SequenceIterFuncIterGenIterFuncStop	itermultiiterfuncr<   r=   r   rP   rv   IterNextOnly
IterNoNextZeroDivisionError
IterGenExc)r   rx   r   s      r   test_constructorz(TestVariousIteratorArgs.test_constructor  s   U4[[+uT$q7I7IJ 	Q 	QA()*<')?)9+=? @ @   eAAaDDkk!2!2D1JJ????i	0Fq0I0IJJJi	0DQ0G0GHHH/	8LQ8O8OPPPP	Q 	Qr   c                     t          d          }t          |          }|                                 |                     t          t
          |           d S )Nabcdefg)r   rR   r5   rP   r   r+  r   r.   rW   s      r   test_iter_with_altered_dataz3TestVariousIteratorArgs.test_iter_with_altered_data  sE    )!WW	,b11111r   c                     t                      }t          |          }|                    d           |                     t          t
          |           d S )NrH   )r   rR   r9   rP   r   r+  r{  s      r   !test_runtime_error_on_empty_dequez9TestVariousIteratorArgs.test_runtime_error_on_empty_deque  sC    GG!WW	,b11111r   N)r   r   r   rx  r|  r~  r
   r   r   rj  rj    sD        Q Q Q2 2 22 2 2 2 2r   rj  c                       e Zd ZdS )DequeNrP  r
   r   r   r  r    s        Dr   r  c                       e Zd ZdZdS )DequeWithSlots)r   r   __dict__N)r   r   r   	__slots__r
   r   r   r  r    s        &IIIr   r  c                       e Zd Zd ZdS )DequeWithBadIterc                     t           r   )rv   r  s    r   __iter__zDequeWithBadIter.__iter__  s    r   Nr   r   r   r  r
   r   r   r  r    s#            r   r  c                   L    e Zd Zd Zd Zd Zd Zd Zej	        d             Z
dS )TestSubclassc           	         t          t          d                                        t          d                     t          dd          D ]}                    |           t	          t          dd                    D ]}                    |           |                     t                    t          t          dd                               |                     t                    d           fdt          d          D             }|                     |t          t          dd	                               |                     t                    t          t          d	d                               fd
t          d          D             }|	                                 |                     |t          t          dd                               |                     t                    t          t          d	d                               
                                 |                     t                    d           d S )N   r$   r%   r&   r   r'   c                 8    g | ]}                                 S r
   r)   r+   s     r   r/   z,TestSubclass.test_basics.<locals>.<listcomp>#  r0   r   r1   r2   c                 8    g | ]}                                 S r
   r4   r+   s     r   r/   z,TestSubclass.test_basics.<locals>.<listcomp>'  r6   r   r7   )r  r8   r   r9   r:   r;   r<   r=   r>   r?   r    r@   s       @r   rC   zTestSubclass.test_basics  s   %))	

5::sC 	 	AHHQKKKK%a..)) 	 	ALLOOOOa$uT3'7'7"8"8999Q%%%0000U3ZZ000tE$OO44555a$uR~~"6"6777----%**---U3__ 5 5666a$uR~~"6"6777				Q#####r   c           	         t           t          fD ]L} |d           |dd          fD ]/}dg|_        dg|_        |                                }|                     t          |          t          |                     |                     t          |          t          |                      ||          }|                     t          |          t          |                     |                     t          |          t          |                     t          t          j
        dz             D ]}t          j        ||          }t          j        |          }|                     t          |          t          |                     |                     t          |          t          |                     |                     t          |          t          |                     |                     |j        |j                   |                     |j        |j                   |                     t!          |d                     !1Nd S )	NrE   r   r]   rJ   r   zrh   r   )r  r  r   r  __copy__r<   r   r=   r8   r!  r"  r#  r$  r  r  assertFalsehasattr)r   clsr.   r   r.  rx   s         r   test_copy_picklezTestSubclass.test_copy_pickle/  s   .( 	6 	6CSZZWQ!7!7!77 6 6eeJJLL  a$q''222  a$q''222CFF  a$q''222  a$q''222"6#:Q#>?? 6 6EQ..AQA''1r!uu555$$T!WWd1gg666$$T!WWd1gg666$$QS!#...$$QS!#...$$WQ__555566	6 	6r   c                 <   t          t          j        dz             D ]}t          d          t          dd          fD ]}|                    |           t          j        t          j        ||                    }|                     t          |          t          |                     | 	                    t          |          t          |                     | 	                    |j        |j                   |                                }|                                }| 	                    t          |          t          |                     | 	                    ||           ||_        t          j        t          j        ||                    }| 	                    t          |j                  t          |                     t          d          t          dd          fD ])}|                     t           t          j        ||           *d S )Nrh   rE   rI   r^   )r8   r!  r"  r  r9   r$  r#  r  r  r<   r   rK   r5   r   r  rP   rv   )r   r.  r.   r   ddees         r   r'  z"TestSubclass.test_pickle_recursiveG  s   62Q677 	E 	EE5\\5??2 1 1La!7!788##BqEE2a55111  a$q''222  18444UUWWUUWW  BA///  A&&&La!7!788  AC"Q%%0000%e,,.>ua.H.HH E E!!)V\1eDDDDE#	E 	Er   c                    t          d          }t          j        |          }|                     t	          |          t	          |                     d }t          j                     |                     t          t          |           d S )Ngallahad)	r   rT  proxyr<   strr   
gc_collectrP   ReferenceError)r   r.   ps      r   test_weakrefzTestSubclass.test_weakref\  sr    *M!QQ(((.#q11111r   c                 l     G d dt                     } |g d          } |g d          }||k     d S )Nc                       e Zd Zd ZdS )-TestSubclass.test_strange_subclass.<locals>.Xc                      t          g           S r   )rR   r  s    r   r  z6TestSubclass.test_strange_subclass.<locals>.X.__iter__f  s    Bxxr   Nr  r
   r   r   Xr  e  s#                 r   r  rn   )r]   rs   r:  r   )r   r  d1d2s       r   test_strange_subclassz"TestSubclass.test_strange_subclassd  s]    	  	  	  	  	  	  	  	  QwwwZZQwwwZZ
br   c                 P    G d dt                     } |            }d }||_        |                     t                    5  |dz   d d d            n# 1 swxY w Y   |                     t                    5  |t          g d          z    d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )&TestSubclass.test_bug_31608.<locals>.XNrP  r
   r   r   r  r  q  rR  r   r  c                     dgS )Nr[  r
   )r  r   kwargss      r   bad___new__z0TestSubclass.test_bug_31608.<locals>.bad___new__t  s	    4Kr   r[  rn   )r   __new__rP   rv   )r   r  r.   r  s       r   test_bug_31608zTestSubclass.test_bug_31608m  sN   	 	 	 	 	 	 	 	ACC	 	 		y)) 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	! 	!iii    	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s$   AAA9BB"BN)r   r   r   rC   r  r'  r  r  r   rh  r  r
   r   r   r  r    s        $ $ $,6 6 60E E E*2 2 2   ! ! ! ! !r   r  c                       e Zd ZddZdS )SubclassWithKwargsrh   c                 .    t          j        |            d S r   )r   r   )r   newargs     r   r   zSubclassWithKwargs.__init__~  s    tr   N)rh   )r   r   r   r   r
   r   r   r  r  }  s(             r   r  c                       e Zd Zd ZdS )TestSubclassWithKwargsc                 &    t          d           d S )Nrh   )r  )r  r  s    r   test_subclass_with_kwargsz0TestSubclassWithKwargs.test_subclass_with_kwargs  s    !$$$$$$r   N)r   r   r   r  r
   r   r   r  r    s#        % % % % %r   r  c                   *    e Zd ZeZd Zd Zd Zd ZdS )TestSequencec                     d S r   r
   r  s    r   r   zTestSequence.test_getitem      r   c                     d S r   r
   r  s    r   test_getslicezTestSequence.test_getslice  r  r   c                     d S r   r
   r  s    r   test_subscriptzTestSequence.test_subscript  r  r   c                 0    |                      d           d S )Nz-Exhausted deque iterator doesn't free a deque)skipTestr  s    r   test_free_after_iteratingz&TestSequence.test_free_after_iterating  s    EFFFFFr   N)	r   r   r   r   	type2testr   r  r  r  r
   r   r   r  r    sZ        I      G G G G Gr   r  a
  
Example from the Library Reference:  Doc/lib/libcollections.tex

>>> from collections import deque
>>> d = deque('ghi')                 # make a new deque with three items
>>> for elem in d:                   # iterate over the deque's elements
...     print(elem.upper())
G
H
I
>>> d.append('j')                    # add a new entry to the right side
>>> d.appendleft('f')                # add a new entry to the left side
>>> d                                # show the representation of the deque
deque(['f', 'g', 'h', 'i', 'j'])
>>> d.pop()                          # return and remove the rightmost item
'j'
>>> d.popleft()                      # return and remove the leftmost item
'f'
>>> list(d)                          # list the contents of the deque
['g', 'h', 'i']
>>> d[0]                             # peek at leftmost item
'g'
>>> d[-1]                            # peek at rightmost item
'i'
>>> list(reversed(d))                # list the contents of a deque in reverse
['i', 'h', 'g']
>>> 'h' in d                         # search the deque
True
>>> d.extend('jkl')                  # add multiple elements at once
>>> d
deque(['g', 'h', 'i', 'j', 'k', 'l'])
>>> d.rotate(1)                      # right rotation
>>> d
deque(['l', 'g', 'h', 'i', 'j', 'k'])
>>> d.rotate(-1)                     # left rotation
>>> d
deque(['g', 'h', 'i', 'j', 'k', 'l'])
>>> deque(reversed(d))               # make a new deque in reverse order
deque(['l', 'k', 'j', 'i', 'h', 'g'])
>>> d.clear()                        # empty the deque
>>> d.pop()                          # cannot pop from an empty deque
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in -toplevel-
    d.pop()
IndexError: pop from an empty deque

>>> d.extendleft('abc')              # extendleft() reverses the input order
>>> d
deque(['c', 'b', 'a'])



>>> def delete_nth(d, n):
...     d.rotate(-n)
...     d.popleft()
...     d.rotate(n)
...
>>> d = deque('abcdef')
>>> delete_nth(d, 2)   # remove the entry at d[2]
>>> d
deque(['a', 'b', 'd', 'e', 'f'])



>>> def roundrobin(*iterables):
...     pending = deque(iter(i) for i in iterables)
...     while pending:
...         task = pending.popleft()
...         try:
...             yield next(task)
...         except StopIteration:
...             continue
...         pending.append(task)
...

>>> for value in roundrobin('abc', 'd', 'efgh'):
...     print(value)
...
a
d
e
b
f
c
g
h


>>> def maketree(iterable):
...     d = deque(iterable)
...     while len(d) > 1:
...         pair = [d.popleft(), d.popleft()]
...         d.append(pair)
...     return list(d)
...
>>> print(maketree('abcdefgh'))
[[[['a', 'b'], ['c', 'd']], [['e', 'f'], ['g', 'h']]]]


libreftestc                 R    |                     t          j                               |S r   )addTestdoctestDocTestSuite)loadertestspatterns      r   
load_testsr    s"    	MM'&(()))Lr   __main__)!collectionsr   r  unittesttestr   r   rJ  rT  r4  r!  r   r^  r   r   r   r   TestCaser"   rj  r  r  r  r  r  r  
CommonTestr  r  __test__r  r   mainr
   r   r   <module>r     s           # # # # # # # # 				                     UG UG UG UG UG! UG UG UGn2 2 2 2 2h/ 2 2 20	 	 	 	 	E 	 	 	' ' ' ' 'U ' ' '    u   c! c! c! c! c!8$ c! c! c!L       % % % % %X. % % %
G G G G G9' G G G*b
N :&  
 zHMOOOOO r   