HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_deque.cpython-37.pyc
B

��g[��@s4ddlmZddlZddlmZmZddlZddlZddlZddl	Z	ddl
Z
ddlZdZdd�Z
Gdd�d�ZGd	d
�d
�ZGdd�dej�ZGd
d�dej�ZGdd�de�ZGdd�de�ZGdd�dej�ZGdd�de�ZGdd�dej�ZGdd�dej�ZdZdeiZd"dd�Zedk�r0ed d!�dS)#�)�dequeN)�support�	seq_testsi��ccst�dVdS)N�)�SyntaxError�rr�+/usr/local/lib/python3.7/test/test_deque.py�fail
sr	c@seZdZdd�ZdS)�BadCmpcCst�dS)N)�RuntimeError)�self�otherrrr�__eq__sz
BadCmp.__eq__N)�__name__�
__module__�__qualname__rrrrrr
sr
c@seZdZdd�Zdd�ZdS)�	MutateCmpcCs||_||_dS)N)r�result)rrrrrr�__init__szMutateCmp.__init__cCs|j��|jS)N)r�clearr)rr
rrrrs
zMutateCmp.__eq__N)rrrrrrrrrrsrc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1e2j3Z3e2j4d_d`��Z5daS)b�	TestBasiccsttdd�����td��xtdd�D]}��|�q(Wx ttdd��D]}��|�qJW|�t��ttdd���|�t��d��fdd	�td
�D�}|�|ttdd���|�t��ttdd����fdd	�td
�D�}|�	�|�|ttd
d���|�t��ttdd
���dS)Ni��ix���i�i8���riXcsg|]}����qSr)�popleft)�.0�i)�drr�
<listcomp>)sz)TestBasic.test_basics.<locals>.<listcomp>��2csg|]}����qSr)�pop)rr)rrrr-s�)
r�ranger�append�reversed�
appendleft�assertEqual�list�len�reverse)rr�left�rightr)rr�test_basicsszTestBasic.test_basicsc	Cs|�ttdd�|�ttdd�ttd��}t|dd�}|�t|�g�|�t|�d�|�t|�dd	d
g�|�|ttd�d��|�d�|�t|�d	d
dg�|�	d�|�t|�dd	d
g�|�
ddg�|�t|�d
ddg�|�d	dg�|�t|�dd	d
g�ttd�dd�}|�|�t�
tj�ttjd
�}z:|�t|��|��ttjd�}|�|��t|��Wd|��t�
tj�Xttd�dd�}|�t|�d�ttjd
�}z:|�t|��|��ttjd�}|�|��t|��Wd|��t�
tj�XdS)N�abc�������
�)�maxlenzdeque([7, 8, 9], maxlen=3)���	�r�w�rz%deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))�assertRaises�
ValueErrorr�iterr!r%r&�reprr"r$�extend�
extendleftr�unlink�TESTFN�open�write�str�close�read)r�itr�forrr�test_maxlen2sJ


zTestBasic.test_maxlencCs�ttd��}t|dd�|�t|�g�ttd��}tdd�}|�|�|�t|�g�ttd��}tdd�}|�|�|�t|�g�dS)N�dr)r1)r:r!rr%r&r<r=)rrErrrr�test_maxlen_zero\s



zTestBasic.test_maxlen_zeroc	Cs�|�t�jd�|�td�jd�|�tddd�jd�|�tddd�jd�|�tddd�jd�|�t��td�}d|_WdQRXdS)Nr,�)r1�rr/)r%rr1r8�AttributeError)rrrrr�test_maxlen_attributekszTestBasic.test_maxlen_attributec	CsjxXdddddfD]B}t|�}t|�}x,dD]$}|�|�|�|�|�|||f�q.WqW|�t|j�|�t|jdd�Gd	d
�d
�}tdd|�dg�}|�t|jd�tdddg�}|�t|j|��Gdd
�d
�}|�}tddd|ddg�}||_|�t|jd�tdgd�}x t	t
|��D]}|�d��q$W|�d�|�|�d�d�|�|�d�d�dS)N�ZabracadabraZ
simsalabimi�r,ZabcdefghijklmnopqrstuvwxyzrrKc@seZdZdd�ZdS)z(TestBasic.test_count.<locals>.BadComparecSst�dS)N)�ArithmeticError)rr
rrrr~sz/TestBasic.test_count.<locals>.BadCompare.__eq__N)rrrrrrrr�
BadCompare}srPr0c@seZdZdd�ZdS)z-TestBasic.test_count.<locals>.MutatingComparecSs|j��dS)NT)rr)rr
rrrr�s
z4TestBasic.test_count.<locals>.MutatingCompare.__eq__N)rrrrrrrr�MutatingCompare�srQrJ��r-r)r&rr%�countr8�	TypeErrorrOrrr!r'�rotate)r�srZletterrPrQ�mrrrr�
test_countus.
(
zTestBasic.test_countcCs�td�}|��x~|td�td�t�t|�gD]^}|�||kt|�t|�koZt|�t|�k�|�||kt|�t|�ko�t|�t|�k�q.Wttd�}x�|D]�}x�|D]�}|�||kt|�t|�k||f�|�||kt|�t|�k||f�|�||kt|�t|�k||f�|�||kt|�t|�k||f�|�||kt|�t|�k||f�|�||kt|�t|�k||f�q�Wq�WdS)N�xabcr,�ab)	rN�a�br[Zbar,ZxbarZZcba)rrr&r%�type�map)rr�e�args�x�yrrr�test_comparisons�s",2


"""""zTestBasic.test_comparisonsc	Cs�d}tt|��}xt|�D]}|�||k�qW|�|d|k�tt|��}t|d�||d<|�t��||kWdQRXtt|��}t�||d<|�t��||kWdQRXdS)NrrFrK)rr!�
assertTruerr8rr
)r�nrrrrr�
test_contains�szTestBasic.test_containscCsXtd�}|�t|jd�|�d�|�t|�td��|�|�|�t|�td��dS)Nr\r�bcd�abcd�abcdabcd)rr8rUr<r%r&)rrrrr�test_extend�s

zTestBasic.test_extendc	Cst�}td�}td�}|�||t��|�||td��|�||td��|�||td��|�||td��|�||t��|�||td��|�||td��tddd�}td�}|�||td��|�t��td�dWdQRXdS)	Nr,�def�abcdef�abcabcrJ)r1ZghZefgh)rr%�assertIsNotr8rU)rrr`�f�g�hrrr�test_add�s zTestBasic.test_addcCsDtd�}|d7}|�t|�td��||7}|�t|�td��dS)Nr\rhrirj)rr%r&)rrrrr�	test_iadd�s
zTestBasic.test_iaddcCs�td�}|�t|jd�|�d�|�t|�ttd���|�|�|�t|�td��t�}|�td��|�t|�tttd����|�t|jt	��dS)Nr\rrhriZabcddcbai�)
rr8rUr=r%r&r#r!rr	)rrrrr�test_extendleft�s

zTestBasic.test_extendleftcCs�d}tt|��}tt|��}xvt|�D]j}|��|�d�t��dkr\|�|�|�|�x2tdt|�t|��D]}||||kstt�qtWq&Wtd�}|�	|dd�|�	|dd�t�}|�
t|jd�|�
t|jd�dS)	Nrrg�?rZsupermanrWr-rf)
rr!r&rr�randomr"r'�AssertionErrorr%r8�
IndexError�__getitem__)rrfr�lr�jrrr�test_getitem�s"


zTestBasic.test_getitemcCs�x�dD]�}tt|��}x"t|�D]}|�|�|�|�q W|�t��|�|d�WdQRXtt|��}t|d�||d<|�t��|�|�WdQRXtt|��}t�||d<|�t��|�|�WdQRXqWd}d}t|d�}t	|d�}x�tdt
|�ddt
|�d�D]�}x�tdt
|�ddt
|�d�D]~}xv|dD]j}	y|�|	||�}
Wn:tk
�r�|�t��|�|	||�WdQRXYnX|�|�|	||�|
��qTW�qFW�qWdS)	N)rrK��(rrFrK�	ABCDEFGHI�Z���rR)rr!r%�indexr8r9rrr
r&r')rrfrr�elementsZ
nonelementrW�start�stopZelement�targetrrr�
test_index�s6
((zTestBasic.test_indexc	Cs0td�}|�t��|�ddd�}WdQRXdS)NZAAAzHello worldrrJ)rr8r9r�)rrrrrr�test_index_bug_24913#szTestBasic.test_index_bug_24913cCsld}xbtdt|�ddt|�d�D]<}td�}td�}|�|d�|�|d�|�t|�|�q(WdS)Nrr�rKrRr�)r!r'rr&�insertr%)rr�rrrWrrr�test_insert(s(zTestBasic.test_insertc	Cs�d}t|t|�d�}|�t��|�dd�WdQRXd}xjtt|�t|��D]R}t|t|�dd�}|�|d�|dkr�|�||d�qP|�||dd�qPWdS)N�ABC)r1rKrrr�r)rr'r8rxr�r!r%)r�datarr�rrrr�test_insert_bug_261942szTestBasic.test_insert_bug_26194c	CsJx4dD],}t�}||9}|�|t��|�|j�qWx<dD]4}td�}||9}|�|td|��|�|j�q<WxFdD]>}tdd�}||9}|�|tdt|d���|�|jd�qzWx<dD]4}td�}||9}|�|td|��|�|j�q�WxJdD]B}tdd�}||9}|�|td|dd���|�|jd��qWdS)N)i����r-rrrKr/i�r\)
i����r-rrrKr/i�i�i�i�i�rmi���)rr%ZassertIsNoner1�min)rrfrrrr�	test_imulAs2






zTestBasic.test_imulcCs�td�}|�|dt��|�|dt��|�|dtd��|�|dtd��|�|dtd��|�|d|�|�t�dt��|�t�dt��|�t�d	t��|�d|t��|�d|t��|�d|td��|�d|td��|�d|td��tdd	d
�}|�|dt��|�|dt��|�|dtd��|�|dtd��|�|dtd��dS)
Nr,r�rrrKrnr0Z	abcabcabcrR)r1Zbcabcr})rr%ro)rrrrr�test_mul`s*zTestBasic.test_mulcCs�d}tt|��}xt|�D]}d|||<qW|�t|�dd�t|�D��t|�}x0td|dd�D]}d|||<d|||<qfW|�t|�|�dS)	Nrr/cSsg|]}d|�qS)r/r)rrrrrrsz*TestBasic.test_setitem.<locals>.<listcomp>rrr-r2)rr!r%r&)rrfrrrzrrr�test_setitemzszTestBasic.test_setitemcCs�d}tt|��}|�t|j|d�|�t|j|�x`t|�D]T}|�t|�||�t�t|�t|��}||}|�	||�||=|�
||�q@W|�t|�d�dS)Ni�rr)rr!r8rx�__delitem__r%r'rvZ	randrange�assertInZassertNotIn)rrfrrr{�valrrr�test_delitem�szTestBasic.test_delitemc	Cs�d}dd�t|�D�}xtt|�D]h}t|d|��}|��}|�t|�tt|d|����|�|d�|��|�t|�|d|��q W|�t|jd�dS)Ni�cSsg|]}t���qSr)rv)rrrrrr�sz*TestBasic.test_reverse.<locals>.<listcomp>r)	r!rr(r%r&r#ZassertIsr8rU)rrfr�rrr7rrr�test_reverse�s zTestBasic.test_reversecCs@td�}t|�}t|�}|�d�|�d�|�d�t|�}|�d�|�d�|�d�|��|�t|�|�x�t|d�D]�}t|�}t|�}|�|�xt|�D]}|�d�q�W|�t|�t|��|�|�|�t|�|�|�||�|�t|�|�q~Wx�t|d�D]�}t|�}t|�}|�|�xt|�D]}|�d��qBW|�t|�t|��|�|�|�t|�|�|�||�|�t|�|��qWt|�}t|�}|�td�|j}xttd�D]}|��q�W|�t|�t|��|�t	|jd	�|�t	|jdd
�t�}|��|�|t��dS)N�abcderrNZeabcdr-Zbcdear0�rbr/)
�tupler'rrVr%�joinr!�BIGr8rU)rrWrfrrr`r{Zdrrrr�test_rotate�sX



zTestBasic.test_rotatecCs�td�}|�t|�d�|��|�t|�d�|��|�t|�d�|�t|j�|�t|�d�|�d�|�t|�d�|�d�|�t|�d�|�	�|�t|�d�dS)Nr[rKrr�cr)
rr%r'rrr8rxr"r$r)rrrrr�test_len�s

zTestBasic.test_lencCs&t�}|�t|j�|�t|j�dS)N)rr8rxrr)rrrrr�test_underflow�szTestBasic.test_underflowcCs`ttd��}|�t|�d�|��|�t|�d�|�t|�g�|��|�t|�g�dS)NrHr)rr!r%r'rr&)rrrrr�
test_clear�szTestBasic.test_clearcCs�td�}|�d�|�|td��|�d�|�|td��|�t|jd�|�|td��tddt�dg�}t|�}|�t|jd�x$t||�D]\}}|�||k�q�WxHdD]@}tdg�}|�	t
||�dg�|�t|jd�|�|t��q�WdS)	NZabcdefghcijr�Z
abdefghcijZ	abdefghijr\r])TFr[)r�remover%r8r9r
r�ziprer<rrx)rrr`rbrc�matchrrr�test_remove�s"



zTestBasic.test_removecCsJttd��}tt|��}|�t|�t|��|�|�|�dt|��dS)Nrz...)rr!�evalr;r%r&r"r�)rrr`rrr�	test_reprs

zTestBasic.test_reprc	Cs�ttd��}|�|�zRt�tj�ttjd�}t||dd�|��ttjd�}|�	|�
�t|��Wd|��t�tj�XdS)Nrr6rN)�file�endr7)rr!r"rr>r?r@�printrCr%rDr;)rrrFrrr�
test_prints
zTestBasic.test_printcCs$|�ttddd�|�ttd�dS)Nr,rKr0r)r8rUr)rrrr�	test_init szTestBasic.test_initcCs|�tttd��dS)Nr,)r8rU�hashr)rrrr�	test_hash$szTestBasic.test_hashcCs�x�dD]z}tt|��}|j|j}}x<t|t�D].}||�|�}|||kr0|�|||�q0W|�t|�ttt|t���qWdS)N)rrrKrHi�)rr!r"rr�r%r&)r�sizerr"rrrbrrr�#test_long_steadystate_queue_popleft's
z-TestBasic.test_long_steadystate_queue_popleftcCs�x�dD]�}ttt|���}|j|j}}x<t|t�D].}||�|�}|||kr4|�|||�q4W|�ttt|���ttt|t���qWdS)N)rrrKrHi�)rr#r!r$rr�r%r&)rr�rr"rrrbrrr�$test_long_steadystate_queue_popright2s
z.TestBasic.test_long_steadystate_queue_poprightcCs^t�}|j|j}}xtt�D]}||�qWx*tt�D]}|�}||kr8|�||�q8WdS)N)rr"rr!r�r%)rrr"rrrbrrr�test_big_queue_popleft>sz TestBasic.test_big_queue_popleftcCs^t�}|j|j}}xtt�D]}||�qWx*tt�D]}|�}||kr8|�||�q8WdS)N)rr$rr!r�r%)rrr"rrrbrrr�test_big_queue_poprightIsz!TestBasic.test_big_queue_poprightcCsrt�}|j|j}}xtt�D]}||�qWx.ttt��D]}|�}||kr<|�||�q<W|�t|�d�dS)Nr)rr"rr!r�r#r%r')rrr"rrrbrrr�test_big_stack_rightSszTestBasic.test_big_stack_rightcCsrt�}|j|j}}xtt�D]}||�qWx.ttt��D]}|�}||kr<|�||�q<W|�t|�d�dS)Nr)rr$rr!r�r#r%r')rrr"rrrbrrr�test_big_stack_left^szTestBasic.test_big_stack_leftcCs@ttd��}t|�}|�t|�t|��|�t|�t|��dS)Nr)rr!�assertNotEqual�idr%r&)rrr`rrr�test_roundtrip_iter_initisz"TestBasic.test_roundtrip_iter_initcCs�x�ttd��ttd�d�fD]j}xdttjd�D]R}t�||�}t�|�}|�t|�t|��|�t	|�t	|��|�|j
|j
�q0WqWdS)NrrHr)rr!�pickle�HIGHEST_PROTOCOL�dumps�loadsr�r�r%r&r1)rrrrWr`rrr�test_pickleos 
zTestBasic.test_picklecCs�x�td�tdd�fD]t}|�|�xdttjd�D]R}t�t�||��}|�t|�t|��|�	t|d�t|��|�	|j
|j
�q2WqWdS)Nr,r0rr-)rr"r!r�r�r�r�r�r�r%r1)rrrr`rrr�test_pickle_recursivexs
zTestBasic.test_pickle_recursivec
Csttd��}dd�|D�}�x�ttjd�D�]�}t|�}t�||f|�}t�|�\}}xt|�D]\}}	|	||<qbW|�t	|�t	|��|�t
|�|�t|�t�||f|�}t�|�\}}xt|�D]\}}	|	||<q�W|�t	|�t	|��|�t
|�|dd��x tdt|��D]}t|��qWt�||f|�}t�|�\}}xt|�D]\}}	|	||<�qTW|�t	|�t	|��|�t
|�g�|�
tt|�t�||f|�}t�|�\}}xt|�D]\}}	|	||<�q�W|�t	|�t	|��|�t
|�g�q,WdS)NrcSsg|]}|d�qS)g)\��(�?r)rrrrrr�sz2TestBasic.test_iterator_pickle.<locals>.<listcomp>r)rr!r�r�r:r�r��	enumerater%r^r&�nextr'r8�
StopIteration)
rZorigr��protoZitorg�dumprErrrbrrr�test_iterator_pickle�s@zTestBasic.test_iterator_picklecCsbdg}t|g�}t�|�}|�t|�t|��d|d<|�t|�t|��|�t|�t|��dS)Nr/r5r)r�copyZdeepcopyr%r&r�r�)r�mutrr`rrr�
test_deepcopy�s

zTestBasic.test_deepcopyc	Cs�dg}t|g�}t�|�}|�t|�t|��d|d<|�t|�t|��|�t|�t|��x�td�D]�}x�tdd�D]r}dd�t|�D�}|dkr�t|�nt||�}|��}|�||�|�|j|j�|�t	d	d
�t
||�D���qxWqhWdS)Nr/r5rrRr-�cSsg|]}t���qSr)rv)rr{rrrr�sz'TestBasic.test_copy.<locals>.<listcomp>css|]\}}||kVqdS)Nr)rrbrcrrr�	<genexpr>�sz&TestBasic.test_copy.<locals>.<genexpr>)rr�r%r&r�r�r!r1re�allr�)rr�rr`rr1rWrrr�	test_copy�s

zTestBasic.test_copycCs`dg}t|g�}|��}|�t|�t|��d|d<|�t|�t|��|�t|�t|��dS)Nr/r5r)rr�r%r&r�r�)rr�rr`rrr�test_copy_method�s
zTestBasic.test_copy_methodcCs:x4dtd�fD]$}|�ttt|���tt|���qWdS)Nrii�)r!r%r&r#r)rrWrrr�
test_reversed�szTestBasic.test_reversedcCsHttt���}x4dtd�fD]$}|�t|t|���tt|���qWdS)Nrii�)r^r#rr!r%r&)r�klassrWrrr�test_reversed_new�szTestBasic.test_reversed_newcCs6ddl}t�}x"td�D]}|�d�|��qWdS)NrrHr)�gcrr!r"�collect)rr�rrrrr�test_gc_doesnt_blowup�s

zTestBasic.test_gc_doesnt_blowupcCs�Gdd�dt�}xntd�D]b}|�}t�|�}|dkrDt|dg�}ntt|dg��}t|�|_~~t�	�|�
|�dkd�qWdS)Nc@seZdZdS)z,TestBasic.test_container_iterator.<locals>.CN)rrrrrrr�C�sr�rKrrzCycle was not collected)�objectr!�weakref�refrr#r:rbr�r�re)rr�r�objr��	containerrrr�test_container_iterator�s

z!TestBasic.test_container_iteratorcCs�d}t�d�}t�d|�}|�t�t��|�|j}|t�||�|td�||�|td|d�||�|td|�|d|�|tdd|�|d|�dS)	N�@Z2P4nPzP%dPPr\rrK�*�+)	rZcalcvobjsize�struct�calcsizer%r��
__sizeof__r�check_sizeof)rZBLOCKLENZbasesizeZ	blocksizeZcheckrrr�test_sizeof�s
zTestBasic.test_sizeofN)6rrrr+rGrIrMrYrdrgrkrsrtrur|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�rr��cpython_onlyr�rrrrrsb*
!&
5	
		)			rc@s$eZdZdd�Zdd�Zdd�ZdS)�TestVariousIteratorArgscCs�x�ddtd�dtddd�fD]�}xDtjtjtjtjtjtjfD]$}|�t	t
||���t	||���q>W|�tt
t�
|��|�tt
t�|��|�tt
t�|��qWdS)NZ123rNi�)Zdog333333�?i�i�rR)r!r�SequenceZIterFuncZIterGenZIterFuncStopZ	itermultiZiterfuncr%r&rr8rUZIterNextOnlyZ
IterNoNext�ZeroDivisionErrorZ
IterGenExc)rrWrqrrr�test_constructors 
$z(TestVariousIteratorArgs.test_constructorcCs*td�}t|�}|��|�tt|�dS)NZabcdefg)rr:rr8rr�)rrrErrr�test_iter_with_altered_datasz3TestVariousIteratorArgs.test_iter_with_altered_datacCs*t�}t|�}|�d�|�tt|�dS)Nr/)rr:r"r8rr�)rrrErrr�!test_runtime_error_on_empty_deques
z9TestVariousIteratorArgs.test_runtime_error_on_empty_dequeN)rrrr�r�r�rrrrr��s
r�c@seZdZdS)�DequeN)rrrrrrrr�sr�c@seZdZdd�ZdS)�DequeWithBadItercCst�dS)N)rU)rrrr�__iter__szDequeWithBadIter.__iter__N)rrrr�rrrrr�sr�c@sBeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zej	dd��Z
d
S)�TestSubclasscs4ttd�����td��xtdd�D]}��|�q&Wx ttdd��D]}��|�qHW|�t��ttdd���|�t��d��fdd�td	�D�}|�|ttdd
���|�t��ttd
d����fdd�td	�D�}|�	�|�|ttdd���|�t��ttd
d�����
�|�t��d�dS)
N�ri�i8���riXcsg|]}����qSr)r)rr)rrrr*sz,TestSubclass.test_basics.<locals>.<listcomp>rrcsg|]}����qSr)r)rr)rrrr.sr )r�r!rr"r#r$r%r&r'r(r)rrr)r*r)rrr+ s"zTestSubclass.test_basicscCs�td�}|��}|�t|�t|��|�t|�t|��t|�}|�t|�t|��|�t|�t|��xhttjd�D]V}t�||�}t�	|�}|�
t|�t|��|�t|�t|��|�t|�t|��qxWtddd�}|��}|�t|�t|��|�t|�t|��t|�}|�t|�t|��|�t|�t|��xjttjd�D]X}t�||�}t�	|�}|�
t|�t|��|�t|�t|��|�t|�t|���qNWdS)Nr,rr�rJ)r1)r��__copy__r%r^r&r!r�r�r�r�r�r�)rrr`r�rWrrr�test_copy_pickle6s4

zTestSubclass.test_copy_picklecCs�xttjd�D�]}x�td�tdd�fD]�}|�|�t�t�||��}|�t|�t|��|�	t
|�t
|��|�	|j|j�|��}|��}|�	t|�t|��|�	||�||_
t�t�||��}|�	t|j
�t|��q,Wx,td�tdd�fD]}|�ttj||�q�WqWdS)Nrr,r0rK)r!r�r�r�r"r�r�r�r�r%r^r1rrbr�r8rU)rr�rr`�dd�eerrrr�Zs 
z"TestSubclass.test_pickle_recursivecCs<td�}t�|�}|�t|�t|��d}|�tt|�dS)NZgallahad)rr��proxyr%rBr8�ReferenceError)rr�prrr�test_weakrefos

zTestSubclass.test_weakrefcCs8Gdd�dt�}|dddg�}|dddg�}||kdS)	Nc@seZdZdd�ZdS)z-TestSubclass.test_strange_subclass.<locals>.XcSstg�S)N)r:)rrrrr�xsz6TestSubclass.test_strange_subclass.<locals>.X.__iter__N)rrrr�rrrr�Xwsr�rrKr0rJrRr�)r)rr�Zd1Zd2rrr�test_strange_subclassvsz"TestSubclass.test_strange_subclassc	CsnGdd�dt�}|�}dd�}||_|�t��|dWdQRX|�t��|tdddg�WdQRXdS)	Nc@seZdZdS)z&TestSubclass.test_bug_31608.<locals>.XN)rrrrrrrr��sr�c_sdgS)Nr�r)�clsra�kwargsrrr�bad___new__�sz0TestSubclass.test_bug_31608.<locals>.bad___new__r�rrKr0)r�__new__r8rU)rr�rr�rrr�test_bug_31608szTestSubclass.test_bug_31608N)rrrr+r�r�r�r�rr�r�rrrrr�s$	r�c@seZdZddd�ZdS)�SubclassWithKwargsrcCst�|�dS)N)rr)r�newargrrrr�szSubclassWithKwargs.__init__N)r)rrrrrrrrr��sr�c@seZdZdd�ZdS)�TestSubclassWithKwargscCstdd�dS)Nr)r�)r�)rrrr�test_subclass_with_kwargs�sz0TestSubclassWithKwargs.test_subclass_with_kwargsN)rrrr�rrrrr��sr�c@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�TestSequencecCsdS)Nr)rrrrr|�szTestSequence.test_getitemcCsdS)Nr)rrrr�
test_getslice�szTestSequence.test_getslicecCsdS)Nr)rrrr�test_subscript�szTestSequence.test_subscriptcCs|�d�dS)Nz-Exhausted deque iterator doesn't free a deque)ZskipTest)rrrr�test_free_after_iterating�sz&TestSequence.test_free_after_iteratingN)	rrrrZ	type2testr|rrrrrrrr�s
ra�

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']]]]

�
libreftestcCs�ddl}tttttf}tj|�|r|t|d�r|ddl	}dgd}x2t
t|��D]"}tj|�|��|�
�||<qNWt|�ddlm}t�||�dS)Nr�gettotalrefcountrR)�
test_deque)�sysrr�r�r�rrZrun_unittest�hasattrr�r!r'r�rr��testrZrun_doctest)�verboserZtest_classesr�Zcountsrrrrr�	test_mains"


r�__main__T)r
)N)�collectionsrZunittestr	rrr�r�r�r�rvr�r�r	r
rZTestCaserr�r�r�r�r�r�Z
CommonTestrrZ__test__rrrrrr�<module>s<gqw