
    /hh                        S SK Jr  S SKrS SKrS SKJrJr  S SKrS SKrS SK	r	S SK
r
S SKrS SKrSrS r " S S5      r " S S	5      r " S
 S\R"                  5      r " S S\R"                  5      r " S S\5      r " S S\5      r " S S\5      r " S S\R"                  5      r " S S\5      r " S S\R"                  5      r " S S\R4                  5      rSrS\0rS r\S:X  a  \R@                  " 5         gg)     dequeN)support	seq_testsi c               #      #    [         e7fN)SyntaxError     8/opt/python-3.13.8/usr/lib/python3.13/test/test_deque.pyfailr      s     
s   	c                       \ rS rSrS rSrg)BadCmp   c                     [         er   )RuntimeErrorselfothers     r   __eq__BadCmp.__eq__   s    r   r
   N__name__
__module____qualname____firstlineno__r   __static_attributes__r
   r   r   r   r      s    r   r   c                        \ rS rSrS rS rSrg)	MutateCmp   c                     Xl         X l        g r   r   result)r   r   r#   s      r   __init__MutateCmp.__init__   s    
r   c                 N    U R                   R                  5         U R                  $ r   )r   clearr#   r   s     r   r   MutateCmp.__eq__   s    

{{r   r"   N)r   r   r   r   r$   r   r   r
   r   r   r   r      s    r   r   c                   j   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2\3Rh                  r4\3Rj                  S1 5       r6S2r7g3)4	TestBasic   c           	         [        [        SS5      5      nUR                  [        S5      5        [        SS5       H  nUR                  U5        M     [	        [        SS5      5       H  nUR                  U5        M     U R                  [        U5      [        [        SS5      5      5        U R                  [        U5      S5        [        S5       Vs/ s H  o!R                  5       PM     nnU R                  U[        [        SS	5      5      5        U R                  [        U5      [        [        S	S5      5      5        [        S5       Vs/ s H  o!R                  5       PM     nnUR                  5         U R                  U[        [        S
S5      5      5        U R                  [        U5      [        [        S	S
5      5      5        g s  snf s  snf )Niix     8r   X     2      )r   ranger$   appendreversed
appendleftassertEquallistlenpopleftpopreverser   dileftrights        r   test_basicsTestBasic.test_basics    sQ   %u%&	

5:sCAHHQK !%a.)ALLO *a$uT3'7"89Q%%*3Z0Z		Z0tE$O45a$uR~"67"'*-*Q*-U3_ 56a$uR~"67 1 .s   GGc                    U R                  [        [        SS5        U R                  [        [        SS5        [        [	        S5      5      n[        USS9nU R                  [        U5      / 5        U R                  [        U5      S5        U R                  [        U5      / SQ5        U R                  U[        [	        S5      S5      5        UR                  S5        U R                  [        U5      / S	Q5        UR                  S
5        U R                  [        U5      / SQ5        UR                  SS/5        U R                  [        U5      / SQ5        UR                  SS
/5        U R                  [        U5      / SQ5        [        [	        S5      SS9nUR                  U5        U R                  [        U5      SS  S5        [        [	        S5      S S9nU R                  [        U5      S5        g )Nabc
      maxlenzdeque([7, 8, 9], maxlen=3))      	   )rN   rO   rI   rM      )rO   rI   rP   rN   r-   iz, 198, 199, [...]], maxlen=10)z%deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))assertRaises
ValueErrorr   iterr4   r8   r9   reprr5   r7   extend
extendleftr   itr?   s      r   test_maxlenTestBasic.test_maxlen3   s|   *eUB7*eUB7%)_"Qb2&a">?a),E%)Q/0	a*-	Qa),	"ba+.	aVa),%*R(	a(HI%)D)a"IJr   c                    [        [        S5      5      n[        USS9  U R                  [	        U5      / 5        [        [        S5      5      n[        SS9nUR                  U5        U R                  [	        U5      / 5        [        [        S5      5      n[        SS9nUR                  U5        U R                  [	        U5      / 5        g )Nd   r   rK   )rS   r4   r   r8   r9   rU   rV   rW   s      r   test_maxlen_zeroTestBasic.test_maxlen_zeroJ   s    %*bb2&%*O	b2&%*O	Rb2&r   c                    U R                  [        5       R                  S 5        U R                  [        S5      R                  S 5        U R                  [        SSS9R                  S5        U R                  [        SSS9R                  S5        U R                  [        SSS9R                  S5        U R                  [        5         [        S5      nSUl        S S S 5        g ! , (       d  f       g = f)NrF      rK      r   rI   )r8   r   rL   rQ   AttributeErrorr   r?   s     r   test_maxlen_attributeTestBasic.test_maxlen_attributeY   s    .u,,d3uQ/66:uQ/66:uQ/66:~.eAAH /..s   C''
C5c           	         SSSS-  S-   4 HU  n[        U5      n[        U5      nS H6  nU R                  UR                  U5      UR                  U5      XU45        M8     MW     U R	                  [
        WR                  5        U R	                  [
        UR                  SS5         " S	 S
5      n[        SSU" 5       S/5      nU R	                  [        UR                  S5        [        / SQ5      nU R	                  [        UR                  U" 5       5         " S S5      nU" 5       n[        SSSUSS/5      nX&l        U R	                  [        UR                  S5        [        S /S-  5      n[        [        U5      5       H  nUR                  S5        M     UR                  S5        U R                  UR                  S5      S5        U R                  UR                  S 5      S5        g )N abracadabra
simsalabim  rF   abcdefghijklmnopqrstuvwxyz   ra   c                       \ rS rSrS rSrg)(TestBasic.test_count.<locals>.BadComparek   c                     [         er   )ArithmeticErrorr   s     r   r   /TestBasic.test_count.<locals>.BadCompare.__eq__l   s    %%r   r
   Nr   r
   r   r   
BadComparern   k   s    &r   rs   rJ   rl   ra   rJ   c                       \ rS rSrS rSrg)-TestBasic.test_count.<locals>.MutatingComparer   c                 8    U R                   R                  5         g)NT)r?   r<   r   s     r   r   4TestBasic.test_count.<locals>.MutatingCompare.__eq__s   s    

r   r
   Nr   r
   r   r   MutatingComparerv   r   s    r   rz   r`         rG   r   )r9   r   r8   countrQ   	TypeErrorrq   r?   r   r4   r:   rotate)r   sr?   letterrs   rz   mr@   s           r   
test_countTestBasic.test_countc   s   m\#%5e%;<AQAaA6  !''&/A&>R 7 =
 	)QWW-)QWWa3	& 	& 1aq)*/177A6)/177JLA	 	 1aAq!$%,3 4&)s1vAHHRL 	Q'+r   c           	         [        S5      nUR                  5         U[        S5      [        S5      [        5       [        U5      4 H  nU R                  X:H  [	        U5      [	        U5      :H  =(       a    [        U5      [        U5      :H  5        U R                  X:g  [	        U5      [	        U5      :H  =(       a    [        U5      [        U5      :H  (       + 5        M     [        [         S5      nU GH  nU GH  nU R                  XE:H  [        U5      [        U5      :H  XE45        U R                  XE:g  [        U5      [        U5      :g  XE45        U R                  XE:  [        U5      [        U5      :  XE45        U R                  XE:*  [        U5      [        U5      :*  XE45        U R                  XE:  [        U5      [        U5      :  XE45        U R                  XE:  [        U5      [        U5      :  XE45        GM	     GM     g )NxabcrF   ab)	rg   abr   barF   xbar   cba)r   r;   r9   r8   typemap)r   r?   eargsxys         r   test_comparisonsTestBasic.test_comparisons   s   &M			U5\5;aAAQT47DG#3#HQa8HIQTtAwQ'7'LDGT!W<L#MN B 5QRA  aDG);aUC  aDG);aUC  aDG);aUC  aDG);aUC  aDG);aUC  aDG);aUC  r   c                    Sn[        [        U5      5      n[        U5       H  nU R                  X2;   5        M     U R                  US-   U;  5        [        [        U5      5      n[        US5      X!S-  '   U R	                  [
        5         X;     S S S 5        [        [        U5      5      n[        5       X!S-  '   U R	                  [
        5         X;     S S S 5        g ! , (       d  f       NT= f! , (       d  f       g = f)Nr-   rl   Fra   )r   r4   
assertTruer   rQ   r   r   )r   nr?   r@   s       r   test_containsTestBasic.test_contains   s    %(OqAOOAF# 1Q' %(OAu%Q$|,F - %(O(Q$|,F -, -, -,s   C C1 
C.1
C?c                   ^  " U4S jS5      n[        U" 5       U" 5       /5      mU R                  [        5         ST;   nS S S 5        [        U" 5       U" 5       /5      mU R                  [        5         TR                  S5      nS S S 5        [        U" 5       /5      mU R                  [        5         TR	                  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N`= f! , (       d  f       g = f)Nc                   "   > \ rS rSrU 4S jrSrg);TestBasic.test_contains_count_index_stop_crashes.<locals>.A   c                 0   > TR                  5         [        $ r   )r'   NotImplemented)r   r   r?   s     r   r   BTestBasic.test_contains_count_index_stop_crashes.<locals>.A.__eq__   s    	%%r   r
   Nr   )r?   s   r   Ar      s    & &r   r   rJ   r   )r   rQ   r   r}   index)r   r   _r?   s      @r   &test_contains_count_index_stop_crashes0TestBasic.test_contains_count_index_stop_crashes   s    	& 	& 13*|,QA -13*|,
A - 13%L|,GGAJ -, -, -, -,s#   C5C!5C2
C!
C/2
D c                 0   [        S5      nU R                  [        UR                  S5        UR                  S5        U R	                  [        U5      [        S5      5        UR                  U5        U R	                  [        U5      [        S5      5        g )Nr   rl   bcdabcdabcdabcd)r   rQ   r~   rU   r8   r9   rc   s     r   test_extendTestBasic.test_extend   sh    #J)QXXq1	a$v,/	a$z"23r   c                    [        5       n[        S5      n[        S5      nU R                  X-   [        5       5        U R                  X#-   [        S5      5        U R                  X"-   [        S5      5        U R                  X!-   [        S5      5        U R                  X-   [        S5      5        U R                  X-   [        5       5        U R                  X!-   [        S5      5        U R                  X-   [        S5      5        [        SSS9n[        S5      nU R                  XE-   [        S5      5        U R                  [        5         [        S5      S-     S S S 5        g ! , (       d  f       g = f)	NrF   defabcdefabcabcr`   rK   ghefgh)r   r8   assertIsNotrQ   r~   )r   r?   r   fghs         r   test_addTestBasic.test_add   s   G%L%L(h0h0e-e-(e-e-(1%$Kf.y)%L5  *))s   E&&
E4c                     [        S5      nUS-  nU R                  [        U5      [        S5      5        X-  nU R                  [        U5      [        S5      5        g )Nr   r   r   r   )r   r8   r9   rc   s     r   	test_iaddTestBasic.test_iadd   sL    #J	U
a$v,/	a$z"23r   c           
      H   [        S5      nU R                  [        UR                  S5        UR                  S5        U R	                  [        U5      [        [        S5      5      5        UR                  U5        U R	                  [        U5      [        S5      5        [        5       nUR                  [        S5      5        U R	                  [        U5      [        [        [        S5      5      5      5        U R                  [        UR                  [        5       5        g )Nr   rl   r   r   abcddcba  )
r   rQ   r~   rV   r8   r9   r6   r4   r	   r   rc   s     r   test_extendleftTestBasic.test_extendleft   s    #J)Q\\15	Ua$x'7"89	Qa$z"23G	U4[!a$xd'<"=>+q||TV<r   c                    Sn[        [        U5      5      n[        [        U5      5      n[        U5       H  nUR                  5         UR	                  S5        [
        R
                  " 5       S:  a"  UR                  U5        UR                  U5        [        S[        U5      -
  [        U5      5       H  nX%   X5   :X  a  M   e   M     [        S5      nU R                  US   S5        U R                  US   S5        [        5       nU R                  [        UR                  S5        U R                  [        UR                  S5        g )	Nr-   r   g      ?rl   supermanr   rG   r   )r   r4   r9   r;   r<   randomr5   r:   r8   rQ   
IndexError__getitem__)r   r   r?   lr@   js         r   test_getitemTestBasic.test_getitem   s    %(OqNqAIIKEE!H}}$1SV8SV,tqt|#| -  *1s#2$G*ammQ7*ammR8r   c           
         S GH#  n[        [        U5      5      n[        U5       H$  nU R                  UR                  U5      U5        M&     U R	                  [
        5         UR                  US-   5        S S S 5        [        [        U5      5      n[        US5      X!S-  '   U R	                  [        5         UR                  U5        S S S 5        [        [        U5      5      n[        5       X!S-  '   U R	                  [        5         UR                  U5        S S S 5        GM&     SnSn[        US-  5      n[        US-  5      n[        S[        U5      S-  -
  S[        U5      S-  -   5       Hu  n[        S[        U5      S-  -
  S[        U5      S-  -   5       HD  nUS-    H8  n	 UR                  XU5      n
U R                  UR                  XU5      U
5        M:     MF     Mw     [        [        S	S
S5      5      n[        S5       H9  nUR                  SS5      nU R                  X#   S5        UR                  5         M;     g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GM~  = f! [
         aI    U R	                  [
        5         UR                  XU5        S S S 5         GM  ! , (       d  f        GM)  = ff = f)N)rl   ra   r+   (   r-   rl   Fra   	ABCDEFGHIZr{   r   i'  rI   r\   i4!  i  )r   r4   r8   r   rQ   rR   r   r   r   r9   r:   r   )r   r   r?   r@   elements
nonelementr   startstopelementtargetsteps               r   
test_indexTestBasic.test_index   s?   "AeAhA1X  Q/  "":.! / eAhA5)AdG""<0
 1 eAhAhAdG""<0
 10% #, 
(Q,A2Aq=!c!fqj.9Eb3q6!8mQQ!^<'#~GP!"!>
 (()FO  . = : %5"%&#JDc"AQT4(HHJ	 C /. 10 10 & :!..z:GGGD9 ;::::sN   #I:II1.J
I	
I.	1
J	K	#K6K	
KK	K	c                     [        S5      nU R                  [        5         UR                  SSS5      nS S S 5        g ! , (       d  f       g = f)NAAAzHello worldr   r`   )r   rQ   rR   r   )r   r?   r@   s      r   test_index_bug_24913TestBasic.test_index_bug_24913*  s7    'Nz*q!,A +**s	   >
Ac                    Sn[        S[        U5      S-  -
  S[        U5      S-  -   5       HX  n[        S5      n[        S5      nUR	                  US5        UR	                  US5        U R                  [        U5      U5        MZ     g )Nr   r   ra   r{   r   )r4   r:   r   r9   insertr8   )r   r   r@   r?   r   s        r   test_insertTestBasic.test_insert/  sx    rCM!O+QX1B-BCAk"A[!AHHQHHQT!Wa( Dr   c                    Sn[        U[        U5      S9nU R                  [        5         UR	                  SS 5        S S S 5        Sn[        [        U5      * [        U5      5       H^  n[        U[        U5      S-   S9nUR	                  US5        US:  a  U R                  X$   S5        MG  U R                  X$S-
     S5        M`     g ! , (       d  f       N= f)NABCrK   ra   r   rl   r   r   )r   r:   rQ   r   r   r4   r8   )r   datar?   r   r@   s        r   test_insert_bug_26194TestBasic.test_insert_bug_261949  s    $s4y)z*HHQ + H~s8}5Ahs8}Q7AHHQAv  s+  Q3- 6	 +*s   C


Cc                 F   S HF  n[        5       nX!-  nU R                  U[        5       5        U R                  UR                  5        MH     S HK  n[        S5      nX!-  nU R                  U[        SU-  5      5        U R                  UR                  5        MM     S HW  n[        SS5      nX!-  nU R                  U[        S[	        US5      -  5      5        U R                  UR                  S5        MY     S HK  n[        S5      nX!-  nU R                  U[        SU-  5      5        U R                  UR                  5        MM     S HP  n[        SS5      nX!-  nU R                  U[        SU-  SS  5      5        U R                  UR                  S5        MR     g )N)rG   r   rl   ra   rI   r   r   )
r   rG   r   rl   ra   rI   i  rj   i  r   rj   r   i)r   r8   assertIsNonerL   min)r   r   r?   s      r   	test_imulTestBasic.test_imulH  sp   -AAFAQ(ahh'	 . .Ac
AFAQcAg/ahh'	 . =Ac3AFAQcC3K&7 89QXXs+	 = .AhAFAQhl 34ahh'	 . =Ah$AFAQx!|TU&; <=QXXs+	 =r   c                    [        S5      nU R                  US-  [        5       5        U R                  US-  [        5       5        U R                  US-  [        S5      5        U R                  US-  [        S5      5        U R                  US-  [        S5      5        U R                  US-  U5        U R                  [        5       S-  [        5       5        U R                  [        5       S-  [        5       5        U R                  [        5       S	-  [        5       5        U R                  SU-  [        5       5        U R                  SU-  [        5       5        U R                  SU-  [        S5      5        U R                  SU-  [        S5      5        U R                  SU-  [        S5      5        [        SS	S
9nU R                  US-  [        5       5        U R                  US-  [        5       5        U R                  US-  [        S5      5        U R                  US-  [        S5      5        U R                  US-  [        S5      5        g )NrF   r   r   rl   ra   r   rJ   	abcabcabcr{   rK   bcabcr+   )r   r8   r   rc   s     r   test_mulTestBasic.test_mulg  s   %LR)Q(Qe-Qh0Qk 23Q"1eg.1eg.1eg.a)Q(Qe-Qh0Qk 23%"R)Q(Qe-Qg/Rw0r   c                 r   Sn[        [        U5      5      n[        U5       H
  nSU-  X#'   M     U R                  [        U5      [        U5       Vs/ s H  nSU-  PM
     sn5        [        U5      n[        SU-
  SS5       H  nSU-  X#'   SU-  XC'   M     U R                  [        U5      U5        g s  snf )Nr-   rI   rl   r   rG   rM   )r   r4   r8   r9   )r   r   r?   r@   r   s        r   test_setitemTestBasic.test_setitem  s    %(OqA6AD aq":A2a4":;GqsAr"AQ3ADQ3AD # 	a!$ #;s   B4
c                    Sn[        [        U5      5      nU R                  [        UR                  U* S-
  5        U R                  [        UR                  U5        [        U5       Hr  nU R                  [        U5      X-
  5        [        R                  " [        U5      * [        U5      5      nX$   nU R                  XR5        X$	 U R                  XR5        Mt     U R                  [        U5      S5        g )Nrj   rl   r   )r   r4   rQ   r   __delitem__r8   r:   r   	randrangeassertInassertNotIn)r   r   r?   r@   r   vals         r   test_delitemTestBasic.test_delitem  s    %(O*ammaRT:*ammQ7qASVQS)  #a&#a&1A$CMM#!S$  	Q#r   c                    Sn[        U5       Vs/ s H  n[        R                  " 5       PM     nn[        U5       H  n[        US U 5      nUR                  5       nU R	                  [        U5      [        [        US U 5      5      5        U R                  US 5        UR                  5         U R	                  [        U5      US U 5        M     U R                  [        WR                  S5        g s  snf )Nrj   rl   )
r4   r   r   r=   r8   r9   r6   assertIsrQ   r~   )r   r   r@   r   r?   rs         r   test_reverseTestBasic.test_reverse  s    ).q2A2qAd2AhA		AT!Wd8D!H+=&>?MM!T"IIKT!Wd2Ah/  	)QYY2 3s   C3c                    [        S5      n[        U5      n[        U5      nUR                  S5        U R	                  SR                  U5      S5        [        U5      nUR                  S5        U R	                  SR                  U5      S5        UR                  5         U R	                  [        U5      U5        [        US-  5       H  n[        U5      n[        U5      nUR                  U5        [        U5       H  nUR                  S5        M     U R	                  [        U5      [        U5      5        UR                  U* 5        U R	                  [        U5      U5        UR                  X$-
  5        U R	                  [        U5      U5        M     [        US-  5       H  n[        U5      n[        U5      nUR                  U* 5        [        U5       H  nUR                  S5        M     U R	                  [        U5      [        U5      5        UR                  U5        U R	                  [        U5      U5        UR                  XB-
  5        U R	                  [        U5      U5        M     [        U5      n[        U5      nUR                  [        S-   5        UR                  n[        [        S-   5       H
  nU" 5         M     U R	                  [        U5      [        U5      5        U R                  [        UR                  S	5        U R                  [        UR                  SS
5        [        5       nUR                  5         U R	                  U[        5       5        g )Nabcderl   rg   eabcdrG   bcdearJ      r   rI   )
tupler:   r   r   r8   joinr4   BIGrQ   r~   )r   r   r   r?   r@   r   r   drs           r   test_rotateTestBasic.test_rotate  s{   'NF!H	W-!H	W-	
q1%qsAaAaAHHQK1X U1XuQx0HHaRLU1Xq)HHQSMU1Xq)  qsAaAaAHHaRL1X U1XuQx0HHQKU1Xq)HHQSMU1Xq)  !H!H	RXXs2vAD q58,)QXXs3)QXXq"5G	
EG$r   c                 x   [        S5      nU R                  [        U5      S5        UR                  5         U R                  [        U5      S5        UR	                  5         U R                  [        U5      S5        U R                  [        UR                  5        U R                  [        U5      S5        UR                  S5        U R                  [        U5      S5        UR                  S5        U R                  [        U5      S5        UR                  5         U R                  [        U5      S5        g )Nr   ra   rl   r   cr?   )
r   r8   r:   r;   r<   rQ   r   r5   r7   r'   rc   s     r   test_lenTestBasic.test_len  s    $KQ#			Q#	Q#*aee,Q#	Q#	SQ#		Q#r   c                     [        5       nU R                  [        UR                  5        U R                  [        UR                  5        g r   )r   rQ   r   r<   r;   rc   s     r   test_underflowTestBasic.test_underflow  s1    G*aee,*aii0r   c                 D   [        [        S5      5      nU R                  [        U5      S5        UR	                  5         U R                  [        U5      S5        U R                  [        U5      / 5        UR	                  5         U R                  [        U5      / 5        g )Nr\   r   )r   r4   r8   r:   r'   r9   rc   s     r   
test_clearTestBasic.test_clear  sr    %*Q%		Q#a"%		a"%r   c                    [        S5      nUR                  S5        U R                  U[        S5      5        UR                  S5        U R                  U[        S5      5        U R                  [        UR                  S5        U R                  U[        S5      5        [        SS[        5       S/5      n[        U5      nU R                  [        UR                  S5        [        X5       H  u  p4U R                  X4L 5        M     S Hf  n[        S/5      nUR                  [        X5      S/5        U R                  [        UR                  S5        U R                  U[        5       5        Mh     g )	Nabcdefghcijr  
abdefghcij	abdefghijr   r   )TFr   )r   remover8   rQ   rR   r   r   zipr   rU   r   r   )r   r?   r   r   r   matchs         r   test_removeTestBasic.test_remove  s    - 	E,/0	E+./*ahh4E+./ 3VXs+,!H,#6IDAOOAF# 
 #EtfAHHi)3/0j!((C8Q(	 #r   c                     [        [        S5      5      n[        [        U5      5      nU R	                  [        U5      [        U5      5        UR                  U5        U R	                  [        U5      SS  S5        g )Nr-   iz7, 198, 199, [...]]))r   r4   evalrT   r8   r9   r5   r   r?   r   s      r   	test_reprTestBasic.test_repr  s[    %*aMa$q'*	a(>?r   c                 t    U R                  [        [        SSS5        U R                  [        [        S5        g )NrF   ra   rJ   rl   )rQ   r~   r   r   s    r   	test_initTestBasic.test_init  s*    )UE1a8)UA.r   c                 L    U R                  [        [        [        S5      5        g )NrF   )rQ   r~   hashr   r#  s    r   	test_hashTestBasic.test_hash  s    )T5<8r   c           
      f   S H  n[        [        U5      5      nUR                  UR                  pC[        U[        5       H0  nU" U5        U" 5       nXeU-
  :w  d  M  U R                  XeU-
  5        M2     U R                  [        U5      [        [        [        U-
  [        5      5      5        M     g N)r   rl   ra   r\   r   )r   r4   r5   r;   r  r8   r9   r   sizer?   r5   r<   r@   r   s          r   #test_long_steadystate_queue_popleft-TestBasic.test_long_steadystate_queue_popleft   s    (DeDk"A((AIIC4%q	ED=$$Q$/	 &
 T!Wd5T3+?&@A )r   c           
         S H  n[        [        [        U5      5      5      nUR                  UR                  pC[        U[
        5       H0  nU" U5        U" 5       nXeU-
  :w  d  M  U R                  XeU-
  5        M2     U R                  [        [        [        U5      5      5      [        [        [
        U-
  [
        5      5      5        M     g r+  )r   r6   r4   r7   r<   r  r8   r9   r,  s          r   $test_long_steadystate_queue_popright.TestBasic.test_long_steadystate_queue_popright+  s    (DhuT{+,A,,C4%q	ED=$$Q$/	 &
 T(47"34!%D#"679 )r   c                      [        5       nUR                  UR                  p2[        [        5       H  nU" U5        M     [        [        5       H"  nU" 5       nXT:w  d  M  U R                  XT5        M$     g r   )r   r5   r;   r4   r  r8   r   r?   r5   r<   r@   r   s         r   test_big_queue_popleft TestBasic.test_big_queue_popleft7  sX    Ghh		sA1I sAAv  & r   c                     [        5       nUR                  UR                  p2[        [        5       H  nU" U5        M     [        [        5       H"  nU" 5       nXT:w  d  M  U R                  XT5        M$     g r   )r   r7   r<   r4   r  r8   r4  s         r   test_big_queue_popright!TestBasic.test_big_queue_poprightB  sU    GllAEEsA1I sAAv  & r   c                 4   [        5       nUR                  UR                  p2[        [        5       H  nU" U5        M     [        [        [        5      5       H"  nU" 5       nXT:w  d  M  U R                  XT5        M$     U R                  [        U5      S5        g Nr   )r   r5   r<   r4   r  r6   r8   r:   r4  s         r   test_big_stack_rightTestBasic.test_big_stack_rightL  sp    GhhsA1I %*%AAv  & & 	Q#r   c                 4   [        5       nUR                  UR                  p2[        [        5       H  nU" U5        M     [        [        [        5      5       H"  nU" 5       nXT:w  d  M  U R                  XT5        M$     U R                  [        U5      S5        g r;  )r   r7   r;   r4   r  r6   r8   r:   r4  s         r   test_big_stack_leftTestBasic.test_big_stack_leftW  sp    GllAIIsA1I %*%AAv  & & 	Q#r   c                     [        [        S5      5      n[        U5      nU R                  [        U5      [        U5      5        U R	                  [        U5      [        U5      5        g )Nr-   )r   r4   assertNotEqualidr8   r9   r  s      r   test_roundtrip_iter_init"TestBasic.test_roundtrip_iter_initb  sI    %*!HBqE2a5)a$q'*r   c                    [        [        S5      5      [        [        S5      S5      4 H  n[        [        R                  S-   5       H  n[        R                  " X5      n[        R
                  " U5      nU R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        U R                  UR                  UR                  5        M     M     g )Nr-   r\   rl   )r   r4   pickleHIGHEST_PROTOCOLdumpsloadsrB  rC  r8   r9   rL   )r   r?   r@   r   r   s        r   test_pickleTestBasic.test_pickleh  s    uSz"E%*c$::A622Q67LL&LLO##BqE2a51  a$q'2  1884 8 ;r   c                    [        S5      [        SS5      4 H  nUR                  U5        [        [        R                  S-   5       H  n[        R
                  " [        R                  " X5      5      nU R                  [        U5      [        U5      5        U R                  [        US   5      [        U5      5        U R                  UR                  UR                  5        M     M     g )NrF   rJ   rl   rG   )r   r5   r4   rG  rH  rJ  rI  rB  rC  r8   rL   )r   r?   r@   r   s       r   test_pickle_recursiveTestBasic.test_pickle_recursiveq  s    uuUA.AHHQK622Q67LLa!34##BqE2a51  AbEBqE2  1884	 8 /r   c                    [        [        S5      5      nU Vs/ s H  o"S-  PM	     nn[        [        R                  S-   5       GH{  n[	        U5      n[        R
                  " XQ4U5      n[        R                  " U5      u  px[        U5       H	  u  p)XU'   M     U R                  [        U5      [        U5      5        U R                  [        U5      U5        [        U5        [        R
                  " XQ4U5      n[        R                  " U5      u  px[        U5       H	  u  p)XU'   M     U R                  [        U5      [        U5      5        U R                  [        U5      USS  5        [        S[        U5      5       H  n[        U5        M     [        R
                  " XQ4U5      n[        R                  " U5      u  px[        U5       H	  u  p)XU'   M     U R                  [        U5      [        U5      5        U R                  [        U5      / 5        U R                  [        [        U5        [        R
                  " XQ4U5      n[        R                  " U5      u  px[        U5       H	  u  p)XU'   M     U R                  [        U5      [        U5      5        U R                  [        U5      / 5        GM~     g s  snf )Nr-   g)\(?rl   )r   r4   rG  rH  rS   rI  rJ  	enumerater8   r   r9   nextr:   rQ   StopIteration)
r   origr@   r   protoitorgdumprX   r?   r   s
             r   test_iterator_pickleTestBasic.test_iterator_picklez  s$   U3Z  $%1$%622Q67EJE<<u5DLL&EB!$! (T"XtE{3T"Xt, K<<u5DLL&EB!$! (T"XtE{3T"XtABx0 1c$i(U )<<u5DLL&EB!$! (T"XtE{3T"Xr* mT59<<u5DLL&EB!$! (T"XtE{3T"Xr*I 8 &s   Kc                 0   S/n[        U/5      n[        R                  " U5      nU R                  [	        U5      [	        U5      5        SUS'   U R                  [        U5      [        U5      5        U R                  [	        U5      [	        U5      5        g NrI   rP   r   )r   copydeepcopyr8   r9   rB  rC  r   mutr?   r   s       r   test_deepcopyTestBasic.test_deepcopy  ss    d3%LMM!a$q'*ABqE2a5)DGT!W-r   c                    S/n[        U/5      n[        R                  " U5      nU R                  [        U5      [        U5      5        SUS'   U R	                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        [        S5       H  n[        SS5       H  n[        U5       Vs/ s H  n[        R                  " 5       PM     nnUS:X  a  [        U5      O
[        Xu5      nUR                  5       nU R                  X#5        U R                  UR                  UR                  5        U R                  [        S [        X#5       5       5      5        M     M     g s  snf )NrI   rP   r   r{   rG      c              3   ,   #    U  H
  u  pXL v   M     g 7fr   r
   ).0r   r   s      r   	<genexpr>&TestBasic.test_copy.<locals>.<genexpr>  s     #AytqAFys   )r   r\  r8   r9   rB  rC  r4   r   rL   r   allr  )r   r_  r?   r   r@   rL   r   r   s           r   	test_copyTestBasic.test_copy  s   d3%LIIaLa$q'*ABqE2a5)a$q'*qAA,.3Ah7hV]]_h7 &"E!H%2BFFH  &  1884#As1y#A AB ' 7s   E8c                 $   S/n[        U/5      nUR                  5       nU R                  [        U5      [        U5      5        SUS'   U R	                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        g r[  )r   r\  r8   r9   rB  rC  r^  s       r   test_copy_methodTestBasic.test_copy_method  sp    d3%LFFHa$q'*ABqE2a5)a$q'*r   c           
          S[        S5      4 HB  nU R                  [        [        [	        U5      5      5      [        [        U5      5      5        MD     g Nr     )r4   r8   r9   r6   r   )r   r   s     r   test_reversedTestBasic.test_reversed  s<    %+&AT(58"45tHQK7HI 'r   c           
          [        [        [        5       5      5      nS[        S5      4 H?  nU R	                  [        U" [        U5      5      5      [        [        U5      5      5        MA     g ro  )r   r6   r   r4   r8   r9   )r   klassr   s      r   test_reversed_newTestBasic.test_reversed_new  sL    Xeg&'%+&AT%a/2D!4EF 'r   c                     SS K n[        5       n[        S5       H%  nUR                  S5        UR                  " 5         M'     g )Nr   r\   rl   )gcr   r4   r5   collect)r   rx  r?   r@   s       r   test_gc_doesnt_blowupTestBasic.test_gc_doesnt_blowup  s0     GsAHHQKJJL r   c                 T    " S S[         5      n[        S5       H  nU" 5       n[        R                  " U5      nUS:X  a  [	        US/5      nO[        [	        US/5      5      n[        U5      Ul        AA[        R                  " 5         U R                  U" 5       S L S5        M     g )Nc                       \ rS rSrSrg),TestBasic.test_container_iterator.<locals>.Ci  r
   Nr   r   r   r   r   r
   r   r   Cr~        r   r  ra   r   rl   zCycle was not collected)objectr4   weakrefrefr   r6   rS   r   rx  ry  r   )r   r  r@   objr  	containers         r   test_container_iterator!TestBasic.test_container_iterator  s    	 	qA#C++c"CAv!3(O	$UC8_5	OCEYJJLOOCETM+DE r   c                    SnSn[         R                  " SU-  5      n[        R                  " SU-  5      nU R	                  [
        R                  [        5       5      U5        U R                  nU" [        5       X4-   5        U" [        S5      X4-   5        U" [        SUS-
  -  5      X4-   5        U" [        SU-  5      USU-  -   5        U" [        SSU-  -  5      US	U-  -   5        g )
Nr|   @   z2P5n%dPPzP%dPPr   rl   ra   *   +   )	r   calcvobjsizestructcalcsizer8   r  
__sizeof__r   check_sizeof)r   MAXFREEBLOCKSBLOCKLENbasesize	blocksizechecks         r   test_sizeofTestBasic.test_sizeof  s    ''
](BCOOGh$67	**573X>!!egx+,eCj(./eC8a<()8+?@eC(N#XI%=>eC2=)*HrI~,EFr   r
   N)8r   r   r   r   rC   rY   r]   rd   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  r5  r8  r<  r?  rD  rK  rN  rX  r`  ri  rl  rq  ru  rz  r  r   r  cpython_onlyr  r   r
   r   r   r*   r*      s    8&K.',BD"( 4!(4
=9(,\-
).,>14
%$
33%j$ 1
&)0@/9	B
9	''	$	$+55'+R.C$+JG
F  ''LG Gr   r*   c                   &    \ rS rSrS rS rS rSrg)TestVariousIteratorArgsi  c                    SS[        S5      S[        SSS5      4 GH-  n[        R                  [        R                  [        R                  [        R
                  [        R                  [        R                  4 H<  nU R                  [        [        U" U5      5      5      [        U" U5      5      5        M>     U R                  [        [        [        R                  " U5      5        U R                  [        [        [        R                  " U5      5        U R                  [        [        [        R                   " U5      5        GM0     g )N123rg   r   )dog333333?rp  i  r{   )r4   r   SequenceIterFuncIterGenIterFuncStop	itermultiiterfuncr8   r9   r   rQ   r~   IterNextOnly
IterNoNextZeroDivisionError
IterGenExc)r   r   r   s      r   test_constructor(TestVariousIteratorArgs.test_constructor  s    U4[+uT$q7IJA(()*<*<'')?)?))9+=+=?   eAaDk!2D1J?? i	0F0Fq0IJi	0D0DQ0GH/	8L8LQ8OP Kr   c                     [        S5      n[        U5      nUR                  5         U R                  [        [
        U5        g )Nabcdefg)r   rS   r<   rQ   r   rR  r   r?   rX   s      r   test_iter_with_altered_data3TestVariousIteratorArgs.test_iter_with_altered_data  s0    )!W	,b1r   c                     [        5       n[        U5      nUR                  S5        U R                  [        [
        U5        g )NrI   )r   rS   r5   rQ   r   rR  r  s      r   !test_runtime_error_on_empty_deque9TestVariousIteratorArgs.test_runtime_error_on_empty_deque  s/    G!W	,b1r   r
   N)r   r   r   r   r  r  r  r   r
   r   r   r  r    s    Q22r   r  c                       \ rS rSrSrg)Dequei  r
   Nr  r
   r   r   r  r    s    r   r  c                       \ rS rSrSrSrg)DequeWithSlotsi  )r   r   __dict__r
   N)r   r   r   r   	__slots__r   r
   r   r   r  r    s    &Ir   r  c                       \ rS rSrS rSrg)DequeWithBadIteri  c                     [         er   )r~   r#  s    r   __iter__DequeWithBadIter.__iter__  s    r   r
   Nr   r   r   r   r  r   r
   r   r   r  r    s    r   r  c                   V    \ rS rSrS rS rS rS rS r\	R                  S 5       rSrg	)
TestSubclassi  c           	      
   [        [        S5      5      nUR                  [        S5      5        [        SS5       H  nUR                  U5        M     [	        [        SS5      5       H  nUR                  U5        M     U R                  [        U5      [        [        SS5      5      5        U R                  [        U5      S5        [        S5       Vs/ s H  o!R                  5       PM     nnU R                  U[        [        SS5      5      5        U R                  [        U5      [        [        SS5      5      5        [        S5       Vs/ s H  o!R                  5       PM     nnUR                  5         U R                  U[        [        S	S5      5      5        U R                  [        U5      [        [        SS	5      5      5        UR                  5         U R                  [        U5      S5        g s  snf s  snf )
N   r-   r.   r/   r   r0   r1   r2   r3   )r  r4   r$   r5   r6   r7   r8   r9   r:   r;   r<   r=   r'   r>   s        r   rC   TestSubclass.test_basics  sk   %)	

5:sCAHHQK !%a.)ALLO *a$uT3'7"89Q%%*3Z0Z		Z0tE$O45a$uR~"67"'*-*Q*-U3_ 56a$uR~"67		Q# 1 .s   G;H c           	         [         [        4 GH  nU" S5      U" SSS94 GH  nS/Ul        S/Ul        UR	                  5       nU R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        U" U5      nU R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        [        [        R                  S-   5       GH  n[        R                  " X$5      n[        R                  " U5      nU R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  [!        US5      5        GM     GM     GM     g )	NrF   r   r`   rK   r   zrl   r   )r  r  r   r  __copy__r8   r   r9   r4   rG  rH  rI  rJ  rB  rC  assertFalsehasattr)r   clsr?   r   rU  r   s         r   test_copy_pickleTestSubclass.test_copy_pickle3  ss   .(CZWQ!77eeJJL  a$q'2  a$q'2F  a$q'2  a$q'2"6#:#:Q#>?EQ.AQA''1r!u5$$T!Wd1g6$$T!Wd1g6$$QSS!##.$$QSS!##.$$WQ_5 @ 8 )r   c                    [        [        R                  S-   5       GH  n[        S5      [        SS5      4 GH`  nUR	                  U5        [        R
                  " [        R                  " X!5      5      nU R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        U R                  UR                  UR                  5        UR                  5       nUR                  5       nU R                  [        U5      [        U5      5        U R                  X25        X"l        [        R
                  " [        R                  " X!5      5      nU R                  [        UR                  5      [        U5      5        GMc     [        S5      [        SS5      4 H(  nU R                  [         [        R                  X!5        M*     GM     g )Nrl   rF   rJ   ra   )r4   rG  rH  r  r5   rJ  rI  rB  rC  r8   r   rL   r<   r   r  rQ   r~   )r   rU  r?   r   ddees         r   rN  "TestSubclass.test_pickle_recursiveK  sH   622Q67E5\5?2LLa!78##BqE2a51  a$q'2  1884UUWUUW  BA/  &LLa!78  ACC"Q%0 3  &e,.>ua.HH!!)V\\1D I# 8r   c                     [        S5      n[        R                  " U5      nU R                  [	        U5      [	        U5      5        S n[
        R                  " 5         U R                  [        [        U5        g )Ngallahad)	r   r  proxyr8   strr   
gc_collectrQ   ReferenceError)r   r?   ps      r   test_weakrefTestSubclass.test_weakref`  sU    *MM!QQ(.#q1r   c                 R     " S S[         5      nU" / SQ5      nU" / SQ5      nX#:H    g )Nc                       \ rS rSrS rSrg)-TestSubclass.test_strange_subclass.<locals>.Xii  c                     [        / 5      $ r   )rS   r#  s    r   r  6TestSubclass.test_strange_subclass.<locals>.X.__iter__j  s    Bxr   r
   Nr  r
   r   r   Xr  i  s     r   r  rt   )r`   r{   rc  r   )r   r  d1d2s       r   test_strange_subclass"TestSubclass.test_strange_subclassh  s'    	  	  wZwZ
r   c                 (    " S S[         5      nU" 5       nS nX1l        U R                  [        5         US-    S S S 5        U R                  [        5         U[        / SQ5      -     S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)Nc                       \ rS rSrSrg)&TestSubclass.test_bug_31608.<locals>.Xiu  r
   Nr  r
   r   r   r  r  u  r  r   r  c                     S/$ )Nr  r
   )r  r   kwargss      r   bad___new__0TestSubclass.test_bug_31608.<locals>.bad___new__x  s	    4Kr   r  rt   )r   __new__rQ   r~   )r   r  r?   r  s       r   test_bug_31608TestSubclass.test_bug_31608q  sl    	 	C		y)F *y)i   *) *)))s   A2B2
B 
Br
   N)r   r   r   r   rC   r  rN  r  r  r   r  r  r   r
   r   r   r  r    s6    $,60E*2 ! !r   r  c                       \ rS rSrSS jrSrg)SubclassWithKwargsi  c                 0    [         R                  " U 5        g r   )r   r$   )r   newargs     r   r$   SubclassWithKwargs.__init__  s    tr   r
   N)rl   )r   r   r   r   r$   r   r
   r   r   r  r    s    r   r  c                       \ rS rSrS rSrg)TestSubclassWithKwargsi  c                     [        SS9  g )Nrl   )r  )r  r#  s    r   test_subclass_with_kwargs0TestSubclassWithKwargs.test_subclass_with_kwargs  s
    !$r   r
   N)r   r   r   r   r  r   r
   r   r   r  r    s    %r   r  c                   0    \ rS rSr\rS rS rS rS r	Sr
g)TestSequencei  c                     g r   r
   r#  s    r   r   TestSequence.test_getitem      r   c                     g r   r
   r#  s    r   test_getsliceTestSequence.test_getslice  r  r   c                     g r   r
   r#  s    r   test_subscriptTestSequence.test_subscript  r  r   c                 &    U R                  S5        g )Nz-Exhausted deque iterator doesn't free a deque)skipTestr#  s    r   test_free_after_iterating&TestSequence.test_free_after_iterating  s    EFr   r
   N)r   r   r   r   r   	type2testr   r  r   r  r   r
   r   r   r  r    s    I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                 N    UR                  [        R                  " 5       5        U$ r   )addTestdoctestDocTestSuite)loadertestspatterns      r   
load_testsr    s    	MM'&&()Lr   __main__)!collectionsr   r
  unittesttestr   r   rx  r  r\  rG  r   r  r  r   r   r   TestCaser*   r  r  r  r  r  r  r  
CommonTestr  r  __test__r  r   mainr
   r   r   <module>r     s      # 	       YG!! YGv2h// 20	E 	'U 'u c!8$$ c!L %X.. %
G9'' G*b
N :&
 zMMO r   