
    daf                        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j4                        ZdZdeiZd Zedk(  r ej@                          yy)     dequeN)support	seq_testsi c               #      K   t         wN)SyntaxError     */root/Python-3.12.4/Lib/test/test_deque.pyfailr      s     
s   	c                       e Zd Zd Zy)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y)	MutateCmpc                      || _         || _        y r   )r   result)r   r   r   s      r   __init__zMutateCmp.__init__   s    
r   c                 N    | j                   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      s    r   r   c                   b   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/ Z1e2jf                  Z3e2jh                  d0        Z5y1)2	TestBasicc           	         t        t        dd            }|j                  t        d             t        dd      D ]  }|j                  |        t	        t        dd            D ]  }|j                  |        | j                  t        |      t        t        dd                   | j                  t        |      d       t        d      D cg c]  }|j                          }}| j                  |t        t        dd	                   | j                  t        |      t        t        d	d                   t        d      D cg c]  }|j                          }}|j                          | j                  |t        t        d
d                   | j                  t        |      t        t        d	d
                   y c c}w c c}w )Niix     8r   X     2      )r   ranger   appendreversed
appendleftassertEquallistlenpopleftpopreverser   dileftrights        r   test_basicszTestBasic.test_basics    s]   %u%&	

5:sC 	AHHQK	%a.) 	ALLO	a$uT3'7"89Q%%*3Z0		00tE$O45a$uR~"67"'*-Q--U3_ 56a$uR~"67 1 .s   G	Gc                 
   | j                  t        t        dd       | j                  t        t        dd       t        t	        d            }t        |d      }| j                  t        |      g        | j                  t        |      d       | j                  t        |      g d       | j                  |t        t	        d      d             |j                  d       | j                  t        |      g d	       |j                  d
       | j                  t        |      g d       |j                  ddg       | j                  t        |      g d       |j                  dd
g       | j                  t        |      g d       t        t	        d      d      }|j                  |       | j                  t        |      dd  d       t        t	        d      d       }| j                  t        |      d       y )Nabc
      maxlenzdeque([7, 8, 9], maxlen=3))      	   )rD   rE   r?   rC      )rE   r?   rF   rD   r$   iz, 198, 199, [...]], maxlen=10)z%deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))assertRaises
ValueErrorr   iterr+   r/   r0   reprr,   r.   extend
extendleftr   itr6   s      r   test_maxlenz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                    t        t        d            }t        |d       | j                  t	        |      g        t        t        d            }t        d      }|j                  |       | j                  t	        |      g        t        t        d            }t        d      }|j                  |       | j                  t	        |      g        y )Nd   r   rA   )rI   r+   r   r/   r0   rK   rL   rM   s      r   test_maxlen_zerozTestBasic.test_maxlen_zeroJ   s    %*bb2&%*O	b2&%*O	Rb2&r   c                    | j                  t               j                  d        | j                  t        d      j                  d        | j                  t        dd      j                  d       | j                  t        dd      j                  d       | j                  t        dd      j                  d       | j                  t              5  t        d      }d|_        d d d        y # 1 sw Y   y xY w)Nr<      rA      r   r?   )r/   r   rB   rG   AttributeErrorr   r6   s     r   test_maxlen_attributezTestBasic.test_maxlen_attributeY   s    .u,,d3uQ/66:uQ/66:uQ/66:~. 	eAAH	 	 	s   C00C9c           	         ddddz  dz   fD ]S  }t        |      }t        |      }dD ]6  }| j                  |j                  |      |j                  |      |||f       8 U | j	                  t
        j                         | j	                  t
        |j                  dd        G d	 d
      }t        dd |       dg      }| j	                  t        |j                  d       t        g d      }| j	                  t        |j                   |               G d d      } |       }t        ddd|ddg      }||_        | j	                  t        |j                  d       t        d gdz        }t        t        |            D ]  }|j                  d        |j                  d       | j                  |j                  d      d       | j                  |j                  d       d       y )N abracadabra
simsalabim  r<   abcdefghijklmnopqrstuvwxyz   rU   c                       e Zd Zd Zy)(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   
BadComparera   k   s    &r   rd   r@   r_   rU   r@   c                       e Zd Zd Zy)-TestBasic.test_count.<locals>.MutatingComparec                 8    | j                   j                          y)NT)r6   r3   r   s     r   r   z4TestBasic.test_count.<locals>.MutatingCompare.__eq__s   s    

r   Nr   r
   r   r   MutatingComparerg   r   s    r   ri   rT         r=   r   )r0   r   r/   countrG   	TypeErrorrc   r6   r   r+   r1   rotate)r   sr6   letterrd   ri   mr7   s           r   
test_countzTestBasic.test_countc   s   m\#%5e%;< 	SAQAaA6 S  !''&/Aq&>RS	S
 	)QWW-)QWWa3	& 	& 1aq)*/177A6)/177JLA	 	 1aAq!$%,3 4&)s1v 	AHHRL		Q'+r   c           	         t        d      }|j                          |t        d      t        d      t               t        |      fD ]  }| j                  ||k(  t	        |      t	        |      k(  xr t        |      t        |      k(         | j                  ||k7  t	        |      t	        |      k(  xr t        |      t        |      k(           t        t         d      }|D ]  }|D ]  }| j                  ||k(  t        |      t        |      k(  ||f       | j                  ||k7  t        |      t        |      k7  ||f       | j                  ||k  t        |      t        |      k  ||f       | j                  ||k  t        |      t        |      k  ||f       | j                  ||kD  t        |      t        |      kD  ||f       | j                  ||k\  t        |      t        |      k\  ||f         y )Nxabcr<   ab)	rZ   abru   bar<   xbart   cba)r   r2   r0   r/   typemap)r   r6   eargsxys         r   test_comparisonszTestBasic.test_comparisons   s   &M			U5\5;aA 	OAQT47DG#3#HQa8HIQTtAwQ'7'LDGT!W<L#MN	O 5QR 	DA D  aaDG);aUC  aaDG);aUC  aaDG);aUC  aaDG);aUC  aaDG);aUC  aaDG);aUCD	Dr   c                    d}t        t        |            }t        |      D ]  }| j                  ||v         | j                  |dz   |v       t        t        |            }t        |d      ||dz  <   | j	                  t
              5  ||v  d d d        t        t        |            }t               ||dz  <   | j	                  t
              5  ||v  d d d        y # 1 sw Y   PxY w# 1 sw Y   y xY w)Nr$   r_   FrU   )r   r+   
assertTruer   rG   r   r   )r   nr6   r7   s       r   test_containszTestBasic.test_contains   s    %(Oq 	$AOOAF#	$1Q' %(OAu%!Q$|, 	F	 %(O(!Q$|, 	F	 		 		 	s   CC+C(+C4c                     G fdd      }t         |        |       g      | j                  t              5  dv }d d d        t         |        |       g      | j                  t              5  j                  d      }d d d        t         |       g      | j                  t              5  j	                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   VxY w# 1 sw Y   y xY w)Nc                       e Zd Z fdZy);TestBasic.test_contains_count_index_stop_crashes.<locals>.Ac                 0    j                          t        S r   )r    NotImplemented)r   r   r6   s     r   r   zBTestBasic.test_contains_count_index_stop_crashes.<locals>.A.__eq__   s    	%%r   Nr   )r6   s   r   Ar      s    &r   r   r@   r   )r   rG   r   rl   index)r   r   _r6   s      @r   &test_contains_count_index_stop_crashesz0TestBasic.test_contains_count_index_stop_crashes   s    	& 	& 13*|, 	QA	13*|, 	
A	 13%L|, 	GGAJ	 		 		 		 	s#   C3C3C&CC#&C/c                 0   t        d      }| j                  t        |j                  d       |j                  d       | j	                  t        |      t        d             |j                  |       | j	                  t        |      t        d             y )Nrv   r_   bcdabcdabcdabcd)r   rG   rm   rK   r/   r0   rW   s     r   test_extendzTestBasic.test_extend   sh    #J)QXXq1	a$v,/	a$z"23r   c                    t               }t        d      }t        d      }| j                  ||z   t                      | j                  ||z   t        d             | j                  ||z   t        d             | j                  ||z   t        d             | j                  ||z   t        d             | j                  ||z   t                      | j                  ||z   t        d             | j                  ||z   t        d             t        dd      }t        d      }| j                  ||z   t        d             | j                  t              5  t        d      dz    d d d        y # 1 sw Y   y xY w)	Nr<   defabcdefabcabcrT   rA   ghefgh)r   r/   assertIsNotrG   rm   )r   r6   r}   fghs         r   test_addzTestBasic.test_add   s3   G%L%LQ(Qh0Qh0Qe-Qe-Q(Qe-Qe-(1%$KQf.y) 	!%L5 	! 	! 	!s   E22E;c                     t        d      }|dz  }| j                  t        |      t        d             ||z  }| j                  t        |      t        d             y )Nrv   r   r   r   )r   r/   r0   rW   s     r   	test_iaddzTestBasic.test_iadd   sN    #J	U
a$v,/	Qa$z"23r   c           
      H   t        d      }| j                  t        |j                  d       |j                  d       | j	                  t        |      t        t        d                   |j                  |       | j	                  t        |      t        d             t               }|j                  t        d             | j	                  t        |      t        t        t        d                         | j                  t        |j                  t                      y )Nrv   r_   r   r   abcddcba  )
r   rG   rm   rL   r/   r0   r-   r+   r	   r   rW   s     r   test_extendleftz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                    d}t        t        |            }t        t        |            }t        |      D ]  }|j                          |j	                  d       t        j
                         dk  r"|j                  |       |j                  |       t        dt        |      z
  t        |            D ]  }||   ||   k(  rJ   t        d      }| j                  |d   d       | j                  |d   d       t               }| j                  t        |j                  d       | j                  t        |j                  d       y )	Nr$   r   g      ?r_   supermanro   r=   r   )r   r+   r0   r2   r3   randomr,   r1   r/   rG   
IndexError__getitem__)r   r   r6   lr7   js         r   test_getitemzTestBasic.test_getitem   s	   %(OqNq 	$AIIKEE!H}}$1SV8SV, $tqt|#|$	$ *1s#2$G*ammQ7*ammR8r   c           
      v   dD ]"  }t        t        |            }t        |      D ]#  }| j                  |j                  |      |       % | j	                  t
              5  |j                  |dz          d d d        t        t        |            }t        |d      ||dz  <   | j	                  t              5  |j                  |       d d d        t        t        |            }t               ||dz  <   | j	                  t              5  |j                  |       d d d        % d}d}t        |dz        }t        |dz        }t        dt        |      dz  z
  dt        |      dz  z         D ]r  }t        dt        |      dz  z
  dt        |      dz  z         D ]C  }|dz   D ]9  }		 |j                  |	||      }
| j                  |j                  |	||      |
       ; E t t        t        d	d
d            }t        d      D ]9  }|j                  dd      }| j                  ||   d       |j                          ; y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   gxY w# t
        $ rB | j	                  t
              5  |j                  |	||       d d d        n# 1 sw Y   nxY wY w xY w)N)r_   rU      (   r$   r_   FrU   	ABCDEFGHIZrj   r   i'  r?   rQ   i4!  i  )r   r+   r/   r   rG   rH   r   r   r   r0   r1   rn   )r   r   r6   r7   elements
nonelementro   startstopelementtargetsteps               r   
test_indexzTestBasic.test_index   s   " 	AeAhA1X 0  Q/0 "":. ! eAhA5)AadG""<0 
 eAhAhAadG""<0 
 %	, 
(Q,A2Aq=!c!fqj.9 		PEb3q6!8mQQ!^< P'#~ PGP!"%!>
 ((%)FOPP		P %5"%&#J 	Dc"AQqT4(HHJ		C    & :!..z: :GGGUD9: : ::sN   !I9II ,I-I	I	 I*	-J8	J(	J8	(J1-J8	7J8	c                     t        d      }| j                  t              5  |j                  ddd      }d d d        y # 1 sw Y   y xY w)NAAAzHello worldr   rT   )r   rG   rH   r   )r   r6   r7   s      r   test_index_bug_24913zTestBasic.test_index_bug_24913*  s@    'Nz* 	-q!,A	- 	- 	-s	   >Ac                    d}t        dt        |      dz  z
  dt        |      dz  z         D ]W  }t        d      }t        d      }|j	                  |d       |j	                  |d       | j                  t        |      |       Y y )Nr   r   rU   rj   r   )r+   r1   r   r0   insertr/   )r   r   r7   r6   ro   s        r   test_insertzTestBasic.test_insert/  s|    rCM!O+QX1B-BC 	)Ak"A[!AHHQHHQT!Wa(	)r   c                    d}t        |t        |            }| j                  t              5  |j	                  dd        d d d        d}t        t        |       t        |            D ]`  }t        |t        |      dz         }|j	                  |d       |dk\  r| j                  ||   d       I| j                  ||dz
     d       b y # 1 sw Y   xY w)NABCrA   rU   r   r_   r   r   )r   r1   rG   r   r   r+   r/   )r   datar6   r   r7   s        r   test_insert_bug_26194zTestBasic.test_insert_bug_261949  s    $s4y)z* 	HHQ	 H~s8}5 	.Ahs8}Q7AHHQAv  1s+  1Q3-	.		 	s   CCc                 <   dD ]F  }t               }||z  }| j                  |t                      | j                  |j                         H dD ]K  }t        d      }||z  }| j                  |t        d|z               | j                  |j                         M dD ]W  }t        dd      }||z  }| j                  |t        dt	        |d      z               | j                  |j                  d       Y dD ]K  }t        d      }||z  }| j                  |t        d|z               | j                  |j                         M dD ]P  }t        dd      }||z  }| j                  |t        d|z  dd               | j                  |j                  d       R y )N)r=   r   r_   rU   r?   r   rv   )
r   r=   r   r_   rU   r?   i  r]   i  r   r]   r   i)r   r/   assertIsNonerB   min)r   r   r6   s      r   	test_imulzTestBasic.test_imulH  s   - 	(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                    t        d      }| j                  |dz  t                      | j                  |dz  t                      | j                  |dz  t        d             | j                  |dz  t        d             | j                  |dz  t        d             | j                  |dz  |       | j                  t               dz  t                      | j                  t               dz  t                      | j                  t               d	z  t                      | j                  d|z  t                      | j                  d|z  t                      | j                  d|z  t        d             | j                  d|z  t        d             | j                  d|z  t        d             t        dd	
      }| j                  |dz  t                      | j                  |dz  t                      | j                  |dz  t        d             | j                  |dz  t        d             | j                  |dz  t        d             y )Nr<   r   r   r_   rU   r   r@   	abcabcabcrj   rA   bcabcr   )r   r/   r   rW   s     r   test_mulz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                 j   d}t        t        |            }t        |      D ]
  }d|z  ||<    | j                  t        |      t        |      D cg c]  }d|z  	 c}       t        |      }t        d|z
  dd      D ]  }d|z  ||<   d|z  ||<    | j                  t        |      |       y c c}w )Nr$   r?   r_   r   r=   rC   )r   r+   r/   r0   )r   r   r6   r7   r   s        r   test_setitemzTestBasic.test_setitem  s    %(Oq 	A6AaD	aq":A2a4":;GqsAr" 	AQ3AaDQ3AaD	 	a!$ #;s   B0
c                    d}t        t        |            }| j                  t        |j                  | dz
         | j                  t        |j                  |       t        |      D ]u  }| j                  t        |      ||z
         t        j                  t        |       t        |            }||   }| j                  ||       ||= | j                  ||       w | j                  t        |      d       y )Nr]   r_   r   )r   r+   rG   r   __delitem__r/   r1   r   	randrangeassertInassertNotIn)r   r   r6   r7   r   vals         r   test_delitemzTestBasic.test_delitem  s    %(O*ammaRT:*ammQ7q 	%ASVQqS)  #a&#a&1AA$CMM#q!!S!$	% 	Q#r   c                    d}t        |      D cg c]  }t        j                          }}t        |      D ]  }t        |d |       }|j                         }| j	                  t        |      t        t        |d |                    | j                  |d        |j                          | j	                  t        |      |d |         | j                  t        j                  d       y c c}w )Nr]   r_   )
r+   r   r   r4   r/   r0   r-   assertIsrG   rm   )r   r   r7   r   r6   rs         r   test_reversezTestBasic.test_reverse  s    ).q2A22q 	0Ad2AhA		AT!Wd8D!H+=&>?MM!T"IIKT!Wd2Ah/	0 	)QYY2 3s   C-c                    t        d      }t        |      }t        |      }|j                  d       | j	                  dj                  |      d       t        |      }|j                  d       | j	                  dj                  |      d       |j                          | j	                  t        |      |       t        |dz        D ]  }t        |      }t        |      }|j                  |       t        |      D ]  }|j                  d        | j	                  t        |      t        |             |j                  |        | j	                  t        |      |       |j                  ||z
         | j	                  t        |      |        t        |dz        D ]  }t        |      }t        |      }|j                  |        t        |      D ]  }|j                  d        | j	                  t        |      t        |             |j                  |       | j	                  t        |      |       |j                  ||z
         | j	                  t        |      |        t        |      }t        |      }|j                  t        dz          |j                  }t        t        dz         D ]	  } |         | j	                  t        |      t        |             | j                  t        |j                  d	       | j                  t        |j                  dd
       t               }|j                          | j	                  |t                      y )Nabcder_   rZ   eabcdr=   bcdear@      r   r?   )
tupler1   r   rn   r/   joinr+   BIGrG   rm   )r   ro   r   r6   r7   r}   r   drs           r   test_rotatez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)HHQqSMU1Xq)
	* qs 
	*AaAaAHHaRL1X U1XuQx0HHQKU1Xq)HHQqSMU1Xq)
	* !H!H	RXXs2v 	AD	q58,)QXXs3)QXXq"5G	
EG$r   c                 x   t        d      }| j                  t        |      d       |j                          | j                  t        |      d       |j	                          | j                  t        |      d       | j                  t        |j                         | j                  t        |      d       |j                  d       | j                  t        |      d       |j                  d       | j                  t        |      d       |j                          | j                  t        |      d       y )Nru   rU   r_   r   cr6   )
r   r/   r1   r2   r3   rG   r   r,   r.   r    rW   s     r   test_lenzTestBasic.test_len  s    $KQ#			Q#	Q#*aee,Q#	Q#	SQ#		Q#r   c                     t               }| j                  t        |j                         | j                  t        |j                         y r   )r   rG   r   r3   r2   rW   s     r   test_underflowzTestBasic.test_underflow  s1    G*aee,*aii0r   c                 D   t        t        d            }| j                  t        |      d       |j	                          | j                  t        |      d       | j                  t        |      g        |j	                          | j                  t        |      g        y )NrQ   r   )r   r+   r/   r1   r    r0   rW   s     r   
test_clearzTestBasic.test_clear  sr    %*Q%		Q#a"%		a"%r   c                    t        d      }|j                  d       | j                  |t        d             |j                  d       | j                  |t        d             | j                  t        |j                  d       | j                  |t        d             t        ddt               dg      }t        |      }| j                  t        |j                  d       t        ||      D ]  \  }}| j                  ||u         dD ]f  }t        dg      }|j                  t        ||      dg       | j                  t        |j                  d       | j                  |t                      h y )	Nabcdefghcijr   
abdefghcij	abdefghijrv   rw   )TFru   )r   remover/   rG   rH   r   r   zipr   rK   r   r   )r   r6   r}   r   r   matchs         r   test_removezTestBasic.test_remove  s2   - 	E,/0	E+./*ahh4E+./ 3VXs+,!H,#61I 	$DAqOOAF#	$
 # 	)EtfAHHi5)3/0j!((C8Q(		)r   c                     t        t        d            }t        t        |            }| j	                  t        |      t        |             |j                  |       | j	                  t        |      dd  d       y )Nr$   iz7, 198, 199, [...]]))r   r+   evalrJ   r/   r0   r,   r   r6   r}   s      r   	test_reprzTestBasic.test_repr  s[    %*aMa$q'*	a(>?r   c                 t    | j                  t        t        ddd       | j                  t        t        d       y )Nr<   rU   r@   r_   )rG   rm   r   r   s    r   	test_initzTestBasic.test_init  s*    )UE1a8)UA.r   c                 L    | j                  t        t        t        d             y )Nr<   )rG   rm   hashr   r   s    r   	test_hashzTestBasic.test_hash  s    )T5<8r   c           
      `   dD ]  }t        t        |            }|j                  |j                  }}t        |t              D ]/  } ||        |       }|||z
  k7  s| j                  |||z
         1 | j                  t        |      t        t        t        |z
  t                            y N)r   r_   rU   rQ   r   )r   r+   r,   r2   r   r/   r0   r   sizer6   r,   r3   r7   r   s          r   #test_long_steadystate_queue_popleftz-TestBasic.test_long_steadystate_queue_popleft   s    ( 	BDeDk"A((AIICF4% 0q	ED=$$Q$/	0
 T!Wd5T3+?&@A	Br   c           
         dD ]  }t        t        t        |                  }|j                  |j                  }}t        |t
              D ]/  } ||        |       }|||z
  k7  s| j                  |||z
         1 | j                  t        t        t        |                  t        t        t
        |z
  t
                            y r   )r   r-   r+   r.   r3   r   r/   r0   r   s          r   $test_long_steadystate_queue_poprightz.TestBasic.test_long_steadystate_queue_popright+  s    ( 		9DhuT{+,A,,CF4% 0q	ED=$$Q$/	0
 T(47"34!%D#"679		9r   c                     	 t               }|j                  |j                  }}t        t              D ]
  } ||        t        t              D ]!  } |       }||k7  s| j                  ||       # y r   )r   r,   r2   r+   r   r/   r   r6   r,   r3   r7   r   s         r   test_big_queue_popleftz TestBasic.test_big_queue_popleft7  sh    Ghh		s 	A1I	s 	'AAAv  A&	'r   c                     t               }|j                  |j                  }}t        t              D ]
  } ||        t        t              D ]!  } |       }||k7  s| j                  ||       # y r   )r   r.   r3   r+   r   r/   r  s         r   test_big_queue_poprightz!TestBasic.test_big_queue_poprightB  se    GllAEEs 	A1I	s 	'AAAv  A&	'r   c                 .   t               }|j                  |j                  }}t        t              D ]
  } ||        t        t        t                    D ]!  } |       }||k7  s| j                  ||       # | j                  t        |      d       y Nr   )r   r,   r3   r+   r   r-   r/   r1   r  s         r   test_big_stack_rightzTestBasic.test_big_stack_rightL  s    Ghhs 	A1I	%*% 	'AAAv  A&	' 	Q#r   c                 .   t               }|j                  |j                  }}t        t              D ]
  } ||        t        t        t                    D ]!  } |       }||k7  s| j                  ||       # | j                  t        |      d       y r  )r   r.   r2   r+   r   r-   r/   r1   r  s         r   test_big_stack_leftzTestBasic.test_big_stack_leftW  s    GllAIIs 	A1I	%*% 	'AAAv  A&	' 	Q#r   c                     t        t        d            }t        |      }| j                  t        |      t        |             | j	                  t        |      t        |             y )Nr$   )r   r+   assertNotEqualidr/   r0   r   s      r   test_roundtrip_iter_initz"TestBasic.test_roundtrip_iter_initb  sI    %*!HBqE2a5)a$q'*r   c                    t        t        d            t        t        d      d      fD ]  }t        t        j                  dz         D ]  }t        j                  ||      }t        j
                  |      }| j                  t        |      t        |             | j                  t        |      t        |             | j                  |j                  |j                           y )Nr$   rQ   r_   )r   r+   pickleHIGHEST_PROTOCOLdumpsloadsr  r  r/   r0   rB   )r   r6   r7   ro   r}   s        r   test_picklezTestBasic.test_pickleh  s    uSz"E%*c$:: 	5A622Q67 5LLA&LLO##BqE2a51  a$q'2  18845	5r   c                    t        d      t        dd      fD ]  }|j                  |       t        t        j                  dz         D ]  }t        j
                  t        j                  ||            }| j                  t        |      t        |             | j                  t        |d         t        |             | j                  |j                  |j                           y )Nr<   r@   r_   r=   )r   r,   r+   r  r  r  r  r  r  r/   rB   )r   r6   r7   r}   s       r   test_pickle_recursivezTestBasic.test_pickle_recursiveq  s    uuUA. 	5AHHQK622Q67 5LLa!34##BqE2a51  AbEBqE2  1884	5	5r   c                    t        t        d            }|D cg c]  }|dz  	 }}t        t        j                  dz         D ]x  }t	        |      }t        j
                  ||f|      }t        j                  |      \  }}t        |      D ]
  \  }}	|	||<    | j                  t        |      t        |             | j                  t        |      |       t        |       t        j
                  ||f|      }t        j                  |      \  }}t        |      D ]
  \  }}	|	||<    | j                  t        |      t        |             | j                  t        |      |dd         t        dt        |            D ]  }t        |        t        j
                  ||f|      }t        j                  |      \  }}t        |      D ]
  \  }}	|	||<    | j                  t        |      t        |             | j                  t        |      g        | j                  t        t        |       t        j
                  ||f|      }t        j                  |      \  }}t        |      D ]
  \  }}	|	||<    | j                  t        |      t        |             | j                  t        |      g        { y c c}w )Nr$   g)\(?r_   )r   r+   r  r  rI   r  r  	enumerater/   r{   r0   nextr1   rG   StopIteration)
r   origr7   r   protoitorgdumprN   r6   r   s
             r   test_iterator_picklezTestBasic.test_iterator_picklez  sc   U3Z  $%1$%%622Q67 $	+EJE<<u5DLL&EB!$ 1!T"XtE{3T"Xt, K<<u5DLL&EB!$ 1!T"XtE{3T"XtABx0 1c$i( U<<u5DLL&EB!$ 1!T"XtE{3T"Xr* mT59<<u5DLL&EB!$ 1!T"XtE{3T"Xr*I$	+ &s   K c                 .   dg}t        |g      }t        j                  |      }| j                  t	        |      t	        |             d|d<   | j                  t        |      t        |             | j                  t	        |      t	        |             y Nr?   rF   r   )r   copydeepcopyr/   r0   r  r  r   mutr6   r}   s       r   test_deepcopyzTestBasic.test_deepcopy  ss    d3%LMM!a$q'*ABqE2a5)DGT!W-r   c                    dg}t        |g      }t        j                  |      }| j                  t        |      t        |             d|d<   | j	                  t        |      t        |             | j                  t        |      t        |             t        d      D ]  }t        dd      D ]  }t        |      D cg c]  }t        j                          }}|dk(  rt        |      nt        ||      }|j                         }| j                  ||       | j                  |j                  |j                         | j                  t        d t        ||      D                       y c c}w )Nr?   rF   r   rj   r=      c              3   *   K   | ]  \  }}||u   y wr   r
   ).0r   r   s      r   	<genexpr>z&TestBasic.test_copy.<locals>.<genexpr>  s     #Atq!AF#As   )r   r&  r/   r0   r  r  r+   r   rB   r   allr   )r   r)  r6   r}   r7   rB   r   ro   s           r   	test_copyzTestBasic.test_copy  s&   d3%LIIaLa$q'*ABqE2a5)a$q'*q 	CAA, C.3Ah7V]]_77 &"E!H%62BFFH  A&  1884#As1ay#A ABC	C7s    E1c                 $   dg}t        |g      }|j                         }| j                  t        |      t        |             d|d<   | j	                  t        |      t        |             | j                  t        |      t        |             y r%  )r   r&  r/   r0   r  r  r(  s       r   test_copy_methodzTestBasic.test_copy_method  sp    d3%LFFHa$q'*ABqE2a5)a$q'*r   c           
          dt        d      fD ]A  }| j                  t        t        t	        |                  t        t        |                   C y Nr     )r+   r/   r0   r-   r   )r   ro   s     r   test_reversedzTestBasic.test_reversed  sC    %+& 	JAT(58"45tHQK7HI	Jr   c           
          t        t        t                           }dt        d      fD ]>  }| j	                  t         |t        |                  t        t        |                   @ y r5  )r{   r-   r   r+   r/   r0   )r   klassro   s      r   test_reversed_newzTestBasic.test_reversed_new  sS    Xeg&'%+& 	GAT%a/2D!4EF	Gr   c                     dd l }t               }t        d      D ]$  }|j                  d        |j                          & y )Nr   rQ   r_   )gcr   r+   r,   collect)r   r<  r6   r7   s       r   test_gc_doesnt_blowupzTestBasic.test_gc_doesnt_blowup  s7     Gs 	AHHQKBJJL	r   c                 J    G d dt               }t        d      D ]  } |       }t        j                  |      }|dk(  rt	        |dg      }nt        t	        |dg            }t        |      |_        ~~t        j                          | j                   |       d u d        y )Nc                       e Zd Zy),TestBasic.test_container_iterator.<locals>.CNr   r   r   r
   r   r   CrA        r   rC  rU   r   r_   zCycle was not collected)objectr+   weakrefrefr   r-   rI   r   r<  r=  r   )r   rC  r7   objrG  	containers         r   test_container_iteratorz!TestBasic.test_container_iterator  s    	 	q 
	FA#C++c"CAv!3(O	$UC8_5	OCEYJJLOOCETM+DE
	Fr   c                    d}d}t        j                  d|z        }t        j                  d|z        }| j	                  t
        j                  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          y )
Nrk   @   z2P5n%dPPzP%dPPrv   r_   rU   *   +   )	r   calcvobjsizestructcalcsizer/   rE  
__sizeof__r   check_sizeof)r   MAXFREEBLOCKSBLOCKLENbasesize	blocksizechecks         r   test_sizeofzTestBasic.test_sizeof  s    ''
](BCOOGh$67	**573X>!!egx)+,eCj(Y./eC8a<()8i+?@eC(N#XI%=>eC2=)*HrI~,EFr   N)6r   r   r   r:   rO   rR   rX   rr   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#  r*  r1  r3  r7  r:  r>  rJ  r   rS  cpython_onlyrY  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                       e Zd Zd Zd Zd Zy)TestVariousIteratorArgsc                    ddt        d      dt        ddd      fD ]'  }t        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  fD ];  }| j                  t        t         ||                  t         ||                   = | j                  t        t        t        j                  |             | j                  t        t        t        j                  |             | j                  t        t        t        j                   |             * y )N123rZ   r   )dog333333?r6  i  rj   )r+   r   SequenceIterFuncIterGenIterFuncStop	itermultiiterfuncr/   r0   r   rG   rm   IterNextOnly
IterNoNextZeroDivisionError
IterGenExc)r   ro   r   s      r   test_constructorz(TestVariousIteratorArgs.test_constructor  s    U4[+uT$q7IJ 	QA(()*<*<'')?)?))9+=+=? @   eAaDk!2D1J?@ i	0F0Fq0IJi	0D0DQ0GH/	8L8LQ8OP	Qr   c                     t        d      }t        |      }|j                          | j                  t        t
        |       y )Nabcdefg)r   rI   r3   rG   r   r  r   r6   rN   s      r   test_iter_with_altered_dataz3TestVariousIteratorArgs.test_iter_with_altered_data  s0    )!W	,b1r   c                     t               }t        |      }|j                  d       | j                  t        t
        |       y )Nr?   )r   rI   r,   rG   r   r  rm  s      r   !test_runtime_error_on_empty_dequez9TestVariousIteratorArgs.test_runtime_error_on_empty_deque  s/    G!W	,b1r   N)r   r   r   rj  rn  rp  r
   r   r   r\  r\    s    Q22r   r\  c                       e Zd Zy)DequeNrB  r
   r   r   rr  rr    s    r   rr  c                       e Zd ZdZy)DequeWithSlots)r   r   __dict__N)r   r   r   	__slots__r
   r   r   rt  rt    s    &Ir   rt  c                       e Zd Zd Zy)DequeWithBadIterc                     t         r   )rm   r   s    r   __iter__zDequeWithBadIter.__iter__  s    r   Nr   r   r   rz  r
   r   r   rx  rx    s    r   rx  c                   N    e Zd Zd Zd Zd Zd Zd Zej                  d        Z
y)TestSubclassc           	         t        t        d            }|j                  t        d             t        dd      D ]  }|j                  |        t	        t        dd            D ]  }|j                  |        | j                  t        |      t        t        dd                   | j                  t        |      d       t        d      D cg c]  }|j                          }}| j                  |t        t        dd                   | j                  t        |      t        t        dd                   t        d      D cg c]  }|j                          }}|j                          | j                  |t        t        d	d                   | j                  t        |      t        t        dd	                   |j                          | j                  t        |      d       y c c}w c c}w )
N   r$   r%   r&   r   r'   r(   r)   r*   )rr  r+   r   r,   r-   r.   r/   r0   r1   r2   r3   r4   r    r5   s        r   r:   zTestSubclass.test_basics  sw   %)	

5:sC 	AHHQK	%a.) 	ALLO	a$uT3'7"89Q%%*3Z0		00tE$O45a$uR~"67"'*-Q--U3_ 56a$uR~"67		Q# 1 .s   G3G8c           	         t         t        fD ]  } |d       |dd      fD ]  }dg|_        dg|_        |j	                         }| j                  t        |      t        |             | j                  t        |      t        |              ||      }| j                  t        |      t        |             | j                  t        |      t        |             t        t        j                  dz         D ]  }t        j                  ||      }t        j                  |      }| j                  t        |      t        |             | j                  t        |      t        |             | j                  t        |      t        |             | j                  |j                  |j                         | j                  |j                  |j                         | j                  t!        |d                y )	Nr<   r   rT   rA   r   zr_   r   )rr  rt  r   r  __copy__r/   r{   r0   r+   r  r  r  r  r  r  assertFalsehasattr)r   clsr6   r}   r   ro   s         r   test_copy_picklezTestSubclass.test_copy_pickle3  s   .( 	6CZWQ!77 6eeJJL  a$q'2  a$q'2F  a$q'2  a$q'2"6#:#:Q#>? 6EQ.AQA''1r!u5$$T!Wd1g6$$T!Wd1g6$$QSS!##.$$QSS!##.$$WQ_566	6r   c                    t        t        j                  dz         D ]  }t        d      t        dd      fD ]_  }|j	                  |       t        j
                  t        j                  ||            }| j                  t        |      t        |             | j                  t        |      t        |             | j                  |j                  |j                         |j                         }|j                         }| j                  t        |      t        |             | j                  ||       ||_        t        j
                  t        j                  ||            }| j                  t        |j                        t        |             b t        d      t        dd      fD ](  }| j                  t         t        j                  ||       *  y )Nr_   r<   r@   rU   )r+   r  r  rr  r,   r  r  r  r  r/   r{   rB   r3   r   rx  rG   rm   )r   r   r6   r}   ddees         r   r  z"TestSubclass.test_pickle_recursiveK  sd   622Q67 	EE5\5?2 1LLa!78##BqE2a51  a$q'2  1884UUWUUW  BA/  A&LLa!78  ACC"Q%01  &e,.>ua.HH E!!)V\\1eDE#	Er   c                     t        d      }t        j                  |      }| j                  t	        |      t	        |             d }t        j                          | j                  t        t        |       y )Ngallahad)	r   rF  proxyr/   strr   
gc_collectrG   ReferenceError)r   r6   ps      r   test_weakrefzTestSubclass.test_weakref`  sU    *MM!QQ(.#q1r   c                 T     G d dt               } |g d      } |g d      }||k(   y )Nc                       e Zd Zd Zy)-TestSubclass.test_strange_subclass.<locals>.Xc                     t        g       S r   )rI   r   s    r   rz  z6TestSubclass.test_strange_subclass.<locals>.X.__iter__j  s    Bxr   Nr{  r
   r   r   Xr  i  s     r   r  re   )rT   rj   r,  r   )r   r  d1d2s       r   test_strange_subclassz"TestSubclass.test_strange_subclassh  s)    	  	  wZwZ
br   c                     G d dt               } |       }d }||_        | j                  t              5  |dz   d d d        | j                  t              5  |t        g d      z    d d d        y # 1 sw Y   8xY w# 1 sw Y   y xY w)Nc                       e Zd Zy)&TestSubclass.test_bug_31608.<locals>.XNrB  r
   r   r   r  r  u  rD  r   r  c                     dgS )NrM  r
   )r  r~   kwargss      r   bad___new__z0TestSubclass.test_bug_31608.<locals>.bad___new__x  s	    4Kr   rM  re   )r   __new__rG   rm   )r   r  r6   r  s       r   test_bug_31608zTestSubclass.test_bug_31608q  s    	 	C		y) 	F	y) 	!i  	! 	!	 		! 	!s   A3A?3A<?BN)r   r   r   r:   r  r  r  r  r   rZ  r  r
   r   r   r}  r}    s6    $,60E*2 ! !r   r}  c                       e Zd ZddZy)SubclassWithKwargsc                 .    t        j                  |        y r   )r   r   )r   newargs     r   r   zSubclassWithKwargs.__init__  s    tr   N)r_   )r   r   r   r   r
   r   r   r  r    s    r   r  c                       e Zd Zd Zy)TestSubclassWithKwargsc                     t        d       y )Nr_   )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y)TestSequencec                      y r   r
   r   s    r   r   zTestSequence.test_getitem      r   c                      y r   r
   r   s    r   test_getslicezTestSequence.test_getslice  r  r   c                      y r   r
   r   s    r   test_subscriptzTestSequence.test_subscript  r  r   c                 &    | j                  d       y )Nz-Exhausted deque iterator doesn't free a deque)skipTestr   s    r   test_free_after_iteratingz&TestSequence.test_free_after_iterating  s    EFr   N)	r   r   r   r   	type2testr   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                 L    |j                  t        j                                |S r   )addTestdoctestDocTestSuite)loadertestspatterns      r   
load_testsr    s    	MM'&&()Lr   __main__)!collectionsr   r  unittesttestr   r   r<  rF  r&  r  r   rP  r   r   r   r   TestCaser"   r\  rr  rt  rx  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HMMO r   