403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.217.130
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_codecs.cpython-36.pyc
3

�w2_~��n@s ddlZddlZddlZddlZddlZddlZddlZddlmZyddl	Z	Wne
k
rndZ	�d5ZYnXe	je	j
�Zdd�ZGdd�de�ZGdd	�d	�ZGd
d�de�ZGdd
�d
eej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�Zejejdkd�Gdd�deej��ZGdd�deej�ZGd d!�d!ej�ZGd"d#�d#ej�Z Gd$d%�d%eej�Z!Gd&d'�d'ej�Z"Gd(d)�d)ej�Z#�d6�d7�d8�d9�d:�d;�d<�d=�d>�d?�d@�dA�dB�dC�dD�dE�dF�dG�dHgZ$x(e$D] Z%e&e%�dPk�r*e'e(e%���q*WGdQdR�dRej�Z)GdSdT�dTej�Z*�dI�dJ�dK�dL�dM�dN�dO�dP�dQ�dR�dS�dT�dU�dV�dW�dX�dY�dZ�d[�d\�d]�d^�d_�d`�da�db�dc�dd�de�df�dg�dh�di�dj�dk�dl�dm�dn�do�dp�dq�dr�ds�dt�dug-Z+Gd�d��d�ej�Z,Gd�d��d�ej�Z-Gd�d��d�ej�Z.Gd�d��d�ej�Z/Gd�d��d�ej�Z0d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�gfZ1e2ed���rje1j3d��e2ed���r�e1j3d��d�d�gZ4G�d�d��deje�Z5G�d�d��dej�Z6G�d�d��dej�Z7G�d�d��dej�Z8G�d�d	��d	ej�Z9G�d
�d��dej�Z:G�d�d
��d
ej�Z;G�d�d��dej�Z<G�d�d��dej�Z=�d�d�d�dgZ>�d�dg�dg�d�d�dg�dg�dg�d�Z?yddl@Z@Wne
k
�r�dZ@Yn Xe>j3�d��d �d!ge?�d<yddlAZAWne
k
�rYnXe>j3�d"��d#ge?�d"<G�d$�d%��d%ej�ZBiZC�d&�d'�ZDejEeD�yd�d(lFmGZGWn"e
k
�r��d)�d*�ZGYnXG�d+�d,��d,ej�ZHejejdk�d-�G�d.�d/��d/ej��ZIG�d0�d1��d1ej�ZJG�d2�d3��d3ej�ZKeL�d4k�rejM�dS(v�N)�support�cs��fdd�}|S)Ncs�j�|�|t|�f�dS)N)�assertEqual�len)�inputZexpect)�coder�self��5/opt/alt/python36/lib64/python3.6/test/test_codecs.py�checkszcoding_checker.<locals>.checkr	)rrrr	)rrr
�coding_checkersrc@s*eZdZdZdd�Zdd�Zddd�Zd	S)�QueuezF
    queue: write bytes at one end, read bytes from the other end
    cCs
||_dS)N)�_buffer)r�bufferr	r	r
�__init__szQueue.__init__cCs|j|7_dS)N)r)r�charsr	r	r
�write szQueue.writercCsH|dkr"|j}|jdd�|_|S|jd|�}|j|d�|_|SdS)Nr)r)r�size�sr	r	r
�read#sz
Queue.readN���)r)�__name__�
__module__�__qualname__�__doc__rrrr	r	r	r
r
sr
c@seZdZdd�Zdd�ZdS)�MixInCheckStateHandlingc	Cs�x�tt|�d�D]�}tj|��}|j|d|��}|j�}|j|dt�|ds�|j|ddd�df�|j	|j|d��|j
||j��tj|��}|j|�|j||d�d�}|j
|||�qWdS)NrrT)�ranger�codecs�getincrementaldecoder�decode�getstate�assertIsInstance�int�setstate�
assertTruer)	r�encoding�ur�i�d�part1�state�part2r	r	r
�check_state_handling_decode/s
z3MixInCheckStateHandling.check_state_handling_decodec	Cs~xxtt|�d�D]d}tj|��}|j|d|��}|j�}tj|��}|j|�|j||d�d�}|j|||�qWdS)NrT)rrr�getincrementalencoder�encoder r#r)	rr%r&rr'r(r)r*r+r	r	r
�check_state_handling_encodeEs
z3MixInCheckStateHandling.check_state_handling_encodeN)rrrr,r/r	r	r	r
r.src@sPeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dZ
dd�ZdS)�ReadTestc
Cs�td�}tj|j�|�}d}xFt|j|j�|�D]0\}}|jt|g��||j�7}|j	||�q0W|j	|j�d�|j	|j
d�tj|j��}d}x>t|j|j�|�D](\}}||jt|g��7}|j	||�q�W|j	|jdd�d�|j	|j
d�|j�d}x@t|j|j�|�D]*\}}||jt|g��7}|j	||��qW|j	|jdd�d�|j	|j
d�|j|j�}	|j	|djtjdd�|	D�|j���dS)N��TcSsg|]}t|g��qSr	)�bytes)�.0�cr	r	r
�
<listcomp>ysz*ReadTest.check_partial.<locals>.<listcomp>)r
r�	getreaderr%�zipr.rr3rr�
bytebufferrrr�reset�join�
iterdecode)
rrZpartialresults�q�r�resultr5Z
partialresultr(�encodedr	r	r
�
check_partialQs6zReadTest.check_partialcs��fdd��d�fdd�	}d}d}d}�j||d�|��j||d	�|��j||dd
�|��j||d	d
�|�d}g}g}xDt|�D]8\}}	|j|ddd|	�|j|ddd�q�W�j|dj|�d�dj|���j|dj|�d	�dj|��x�td�D]�}
x�|D]�}	d
|
d|	d}�|�}xBtd
�D]6}�j|jdd�|
d|	��j|jdd�d��q>W�|�}x>td
�D]2}�j|jd	d�|
d��j|jd	d�d��q�W�qW�q
WdS)Ncs"tj|j�j��}tj�j�|�S)N)�io�BytesIOr.r%rr7)r�stream)rr	r
r7}sz)ReadTest.test_readline.<locals>.getreaderTcs:�|�}g}x"|j||d�}|s"P|j|�qWdj|�S)N)r�keepends�|)�readline�appendr;)rrEr�reader�lines�line)r7r	r
�readalllines�sz,ReadTest.test_readline.<locals>.readalllinesufoo
bar
baz
spam
eggsufoo
|bar
|baz
|spam
|eggszfoo|bar|baz|spam|eggsF�
�
�
�
�
��uあr2rF�P�azxxx
)rE�xxx)TN)rNrOrPrQ)r�	enumeraterHr;rrG)rrLrZ	sexpectedZsexpectednoendsZlineendsZvwZvwor'ZlineendrrIr	)r7rr
�
test_readline|sH






zReadTest.test_readlinecs6ddddg}dj|����fdd�}|�}�j|j�|d��j|j�dj|d	d����j|j�d�|�}�j|j�|d��j|jd	�|d	d��j|jd�d��j|jd
��t|d�d	d�dd
��|�}�j|j�|d��j|j�|d	d���j|j�d�|�}�j|jddd
��dd���j|j��dd���j|j�d�|�}�j|jddd
��dd���j|jd	��d��j|jd�d��j|jd
��dd��|�}�j|jddd
��dd���j|j�|ddd�g|d	d���j|j�d�dS)NzHumpty Dumpty sat on a wall,
z!Humpty Dumpty had a great fall.
z-All the king's horses and all the king's men
z#Couldn't put Humpty together again.r2cs"tj�j�j��}tj�j�|�S)N)rBrCr.r%rr7)rD)�datarr	r
r7�sz8ReadTest.test_mixed_readline_and_read.<locals>.getreaderrr�d�(�)rr��j)r;rrGrr�	readlines)rrJr7�fr	)rXrr
�test_mixed_readline_and_read�s@
.*z%ReadTest.test_mixed_readline_and_readc=Cs�ddddddddd	d
ddd
ddddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d d+d,d-d.d/d0d1d2d3d4d5d6g=}tjd7j|�j|j��}tj|j�|�}x$t|�D]\}}|j|||�q�WdS)8Nz:<%!--===================================================
z,    BLOG index page: show recent articles,
z7    today's articles, or articles of a specific date.
z>========================================================--%>
z!<%@inputencoding="ISO-8859-1"%>
z<%@pagetemplate=TEMPLATE.y%>
z$<%@import=import frog.util, frog%>
z!<%@import=import frog.objects%>
z9<%@import=from frog.storageerrors import StorageError%>
z<%
z
zimport logging
z+log=logging.getLogger("Snakelets.logger")
zuser=self.SessionCtx.user
z-storageEngine=self.SessionCtx.storageEngine
z-def readArticlesFromDate(date, count=None):
z2    entryids=storageEngine.listBlogEntries(date)
z%    entryids.reverse() # descending
z    if count:
z#        entryids=entryids[:count]
z
    try:
z\        return [ frog.objects.BlogEntry.load(storageEngine, date, Id) for Id in entryids ]
z    except StorageError,x:
z6        log.error("Error loading articles: "+str(x))
z,        self.abort("cannot load articles")
zshowdate=None
zarg=self.Request.getArg()
zif arg=="today":
z,    #-------------------- TODAY'S ARTICLES
z-    self.write("<h2>Today's articles</h2>")
z(    showdate = frog.util.isodatestr() 
z.    entries = readArticlesFromDate(showdate)
zelif arg=="active":
z4    #-------------------- ACTIVE ARTICLES redirect
z     self.Yredirect("active.y")
zelif arg=="login":
z/    #-------------------- LOGIN PAGE redirect
z    self.Yredirect("login.y")
zelif arg=="date":
z7    #-------------------- ARTICLES OF A SPECIFIC DATE
z2    showdate = self.Request.getParameter("date")
zV    self.write("<h2>Articles written on %s</h2>"% frog.util.mediumdatestr(showdate))
zelse:
z+    #-------------------- RECENT ARTICLES
z,    self.write("<h2>Recent articles</h2>")
z.    dates=storageEngine.listBlogEntryDates()
z    if dates:
z        entries=[]
z        SHOWAMOUNT=10
z         for showdate in dates:
zW            entries.extend( readArticlesFromDate(showdate, SHOWAMOUNT-len(entries)) )
z*            if len(entries)>=SHOWAMOUNT:
z                break
z                
r2)	rBrCr;r.r%rr7rVr)rrrDrIr'rKr	r	r
�test_bug1175396�s�zReadTest.test_bug1175396cCsNtd�}tj|j�|�}tj|j�|�}|jd�|j|jdd�d�|jd�|j|jdd�d�|j|jdd�d�|jd	�|j|jdd�d	�|j|jdd�d�|jd�|j|jd
d�d�|jd�|j|jd
d�d�|j|jd
d�d�|jd	�|j|jd
d�d	�|j|jd
d�d�|jd
�|j|jd
d�d
�dS)Nr1zfoo
F)rE�fooz
bar
r2ZbarZbazTrNzbar
zfoo
)r
r�	getwriterr%r7rrrG)rr=�writerrIr	r	r
�test_readlinequeue,s*






zReadTest.test_readlinequeuecCs~d}d}d}|||j|j�}tj|�}tj|j�|�}|j|j�|�|j|j�|�|j|j�|�|j|j�d�dS)NzAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z`offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!!
znext line.
r2)r.r%rBrCrr7rrG)r�s1�s2�s3rrDrIr	r	r
�test_bug1098990_aGs
zReadTest.test_bug1098990_ac	Cs�d}d}d}d}d}|||||j|j�}tj|�}tj|j�|�}|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j|j�d�dS)Nzaaaaaaaaaaaaaaaaaaaaaaaa
zbbbbbbbbbbbbbbbbbbbbbbbb
zstillokay:bbbbxx
zbroken!!!!badbad
zagainokay.
r2)r.r%rBrCrr7rrG)	rrfrgrhZs4Zs5rrDrIr	r	r
�test_bug1098990_bTs
zReadTest.test_bug1098990_bu�c	Cs|jtdj|j�|jdj|jd�dj|j��|jdj|jd�dj|j��|jdj|jd�dj|j��|jdj|jd�d	j|j��|jdj|jd
�dj|j��|jdj|jd�d	j|j��|jdj|jd
�d
j|j��dj|j�}�xdD�]\}}|j|j�t|�d�}|j|j�t|�d�}|d|}|||j|}|jt|j|j�|j|j|jd�|�|j|j|jd�|�|j|j|jd�||�|j|j|jd
�||j	|�dj
dd�|jD��}|j|j|jd�|||��q�WdS)Nu�u[�]�backslashreplacez[\udc80]�namereplace�xmlcharrefreplacez
[&#56448;]�ignorez[]�replacez[?]u[��]z[??]r2�𐿿�A�[�]u��
surrogatepasscss|]}d|VqdS)z\x%02xNr	)r4�br	r	r
�	<genexpr>�sz0ReadTest.test_lone_surrogates.<locals>.<genexpr>�rprq�rrrs�rqrp)rwrxry)�assertRaises�UnicodeEncodeErrorr.r%rr�ill_formed_sequence�UnicodeDecodeErrorr�ill_formed_sequence_replacer;)	rZbomZbefore�afterZbefore_sequenceZafter_sequenceZtest_stringZ
test_sequencerkr	r	r
�test_lone_surrogatesgsL


zReadTest.test_lone_surrogatesN)rrrrArWr`rarerirjr~r�r	r	r	r
r0Ps+;0E
r0c@sdeZdZdZejdkrdZndZdZdZdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�ZdS)�	UTF32Testzutf-32�littles��s܀s$��spamspams$��spamspamcCs�tj|j�\}}}}tj�}||�}|jd�|jd�|j�}|j||jkpV||j	k�tj|�}||�}|j
|j�d�dS)N�spam�spamspam)r�lookupr%rBrCr�getvaluer$�spamle�spamberr)r�_rIrdrr_r(r	r	r
�test_only_one_bom�s


zUTF32Test.test_only_one_bomcCsTtjd�}tj|j�|�}|jt|j�tjd�}tj|j�|�}|jt|j�dS)N����s����s��������)rBrCrr7r%rz�UnicodeErrorr)rrr_r	r	r
�test_badbom�s

zUTF32Test.test_badbomcCs@|jdddddddddddddddddddddddddg�dS)NuÿĀ￿𐀀r2�uÿuÿĀuÿĀ￿)rA)rr	r	r
�test_partial�s4zUTF32Test.test_partialcCs0|jdtjddd��|jd	tjddd��dS)
N��r�roTr2rn)r�r)r2r)rr�
utf_32_decode)rr	r	r
�
test_handlers�szUTF32Test.test_handlerscCs|jttjddd�dS)Nr��strictT)rzr}rr�)rr	r	r
�test_errors�s
zUTF32Test.test_errorscCs(|j|jd|j�|j|jd|j�dS)Nr�)r,r%r�r�)rr	r	r
�test_decoder_state�s
zUTF32Test.test_decoder_statecCsPddd}|jddtj|�d�ddd}|jddtj|�d�dS)Ns��siu𐀀rs��s)rrr�)rZ
encoded_leZ
encoded_ber	r	r
�test_issue8941�s

zUTF32Test.test_issue8941N)rrrr%�sys�	byteorderr|r�r�r�r�r�r�r�r�r�r	r	r	r
r��s
	r�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�UTF32LETestz	utf-32-les��cCs8|jdddddddddddddddddddddg�dS)NuÿĀ￿𐀀r2r�uÿuÿĀuÿĀ￿)rA)rr	r	r
r��s,zUTF32LETest.test_partialcCs|jdj|j�d�dS)Nu𐈃s)rr.r%)rr	r	r
�test_simpleszUTF32LETest.test_simplecCs|jttjddd�dS)Nr�r�T)rzr}r�utf_32_le_decode)rr	r	r
r�s
zUTF32LETest.test_errorscCs&dd}|jddtj|�d�dS)Nsiu𐀀r)rrr�)rr@r	r	r
r�s
zUTF32LETest.test_issue8941N)	rrrr%r|r�r�r�r�r	r	r	r
r��sr�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�UTF32BETestz	utf-32-bes܀cCs8|jdddddddddddddddddddddg�dS)NuÿĀ￿𐀀r2r�uÿuÿĀuÿĀ￿)rA)rr	r	r
r�&s,zUTF32BETest.test_partialcCs|jdj|j�d�dS)Nu𐈃s)rr.r%)rr	r	r
r�AszUTF32BETest.test_simplecCs|jttjddd�dS)Nr�r�T)rzr}r�utf_32_be_decode)rr	r	r
r�Ds
zUTF32BETest.test_errorscCs&dd}|jddtj|�d�dS)Nsiu𐀀r)rrr�)rr@r	r	r
r�Hs
zUTF32BETest.test_issue8941N)	rrrr%r|r�r�r�r�r	r	r	r
r�"sr�c@sdeZdZdZejdkrdZndZdZdZdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�ZdS)�	UTF16Testzutf-16r�s��s܀s��spamspams��spamspamcCs�tj|j�\}}}}tj�}||�}|jd�|jd�|j�}|j||jkpV||j	k�tj|�}||�}|j
|j�d�dS)Nr�r�)rr�r%rBrCrr�r$r�r�rr)rr�rIrdrr_r(r	r	r
r�Zs


zUTF16Test.test_only_one_bomcCsTtjd�}tj|j�|�}|jt|j�tjd�}tj|j�|�}|jt|j�dS)Ns��s����)rBrCrr7r%rzr�r)rrr_r	r	r
r�is

zUTF16Test.test_badbomcCs,|jdddddddddddddddg�dS)NuÿĀ￿𐀀r2r�uÿuÿĀuÿĀ￿)rA)rr	r	r
r�rs zUTF16Test.test_partialcCs0|jdtjddd��|jd	tjddd��dS)
N��rr�roTr2rn)r�r)r2r)rr�
utf_16_decode)rr	r	r
r��szUTF16Test.test_handlerscCs|jttjddd�dS)Nr�r�T)rzr}rr�)rr	r	r
r��s
zUTF16Test.test_errorscCs(|j|jd|j�|j|jd|j�dS)Nr�)r,r%r�r�)rr	r	r
r��s
zUTF16Test.test_decoder_statecCs�d}|j|j�}|jtjtj�ttjd��}|j|�WdQRXtjdt	f��t
jtjd|jd�}WdQRX|�|j|j�|�WdQRXdS)NzHello
world
�wbr2�U)r%)
r.r%�
addCleanupr�unlink�TESTFN�openr�check_warnings�DeprecationWarningrrr)rrfr�fprIr	r	r
�test_bug691291�szUTF16Test.test_bug691291N)rrrr%r�r�r|r�r�r�r�r�r�r�r�r�r	r	r	r
r�Ps
	r�c@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
�UTF16LETestz	utf-16-les��cCs(|jdddddddddddddg�dS)NuÿĀ￿𐀀r2r�uÿuÿĀuÿĀ￿)rA)rr	r	r
r��szUTF16LETest.test_partialcCsPdddddddg}x8|D]0\}}|jttj|dd
�|j|jdd�|�qWdS)Nr����AZ�A��	ABCDZ�ABCD�����A��A��A��Ar�Tzutf-16lero)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rzr}r�utf_16_le_decoderr)r�tests�raw�expectedr	r	r
r��s

zUTF16LETest.test_errorscCs,|jdj|j�d�|jdj|j�d�dS)Nu𐈃s��)rr.r%r)rr	r	r
�test_nonbmp�szUTF16LETest.test_nonbmpN)rrrr%r|r�r�r�r	r	r	r
r��s
r�c@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
�UTF16BETestz	utf-16-bes܀cCs(|jdddddddddddddg�dS)NuÿĀ￿𐀀r2r�uÿuÿĀuÿĀ￿)rA)rr	r	r
r��szUTF16BETest.test_partialcCsPdddddddg}x8|D]0\}}|jttj|dd
�|j|jdd�|�qWdS)Nr����A��A��	ABCDZ�ABCD��������A��A��Ar�Tzutf-16bero)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rzr}r�utf_16_be_decoderr)rr�r�r�r	r	r
r��s

zUTF16BETest.test_errorscCs,|jdj|j�d�|jdj|j�d�dS)Nu𐈃s��)rr.r%r)rr	r	r
r��szUTF16BETest.test_nonbmpN)rrrr%r|r�r�r�r	r	r	r
r��s
r�csLeZdZdZdZdZdZdd�Zdd	�Zd
d�Z	�fdd
�Z
dd�Z�ZS)�UTF8Testzutf-8s�u��r1cCs.|jddddddddddddddddg�dS)Nuÿ߿ࠀ￿𐀀r�uÿuÿ߿uÿ߿ࠀuÿ߿ࠀ￿)rA)rr	r	r
r�s"zUTF8Test.test_partialcCs d}|j|j||j|j��dS)Nu€ÿĀ߿ࠀ￿􏿿)r,r%r.)rr&r	r	r
r�szUTF8Test.test_decoder_statecCsJxDdD]<\}}}|j|||d
��|j|j|j|�|�WdQRXqWdS)N�[��]rn�[]ro�[��]�surrogateescape�[��]rk�
[\x80\xff])rX�
error_handlerr��r�rnr��r�ror��r�r�r��r�rkr�)r�r�r�r�)�subTestrrr%)rrXr�r�r	r	r
�test_decode_errors
zUTF8Test.test_decode_errorcsnt�j�|jdj|jd�|jd�|jt��}dj|jd�WdQRX|j}|j|j	|j
|j�d�dS)Nu[�]r�s[�]u[���]u��)�superr�rr.r%�BOMrzr{�	exception�object�start�end)r�cm�exc)�	__class__r	r
r�+s
zUTF8Test.test_lone_surrogatescCs�|jdj|jd�|jd�|jdj|jd�|jd�|jdj|jd�|jd�|jdj|jd�d�|jdj|jd�d�|jtjd��|jt	��dj|jd�WdQRX|jt	��d	j|jd�WdQRXdS)
Nu	abc�defrts	abc�defu𐿿�s𐿿�u[��]s[��]sabc�sabc�z)
rr.r%r�rr$r�lookup_errorrzr})rr	r	r
�test_surrogatepass_handler7sz#UTF8Test.test_surrogatepass_handleru	���)
rrrr%r|r~r�r�r�r�r�r��
__classcell__r	r	)r�r
r��sr�Zwin32zcp65001 is a Windows-only codecc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�CP65001Test�cp65001cCs�dddddddddg	}x�|D]�\}}}|dk	r�y|jd|�}Wn6tk
rt}z|jd|||f�WYdd}~XnX|j||d||||f�q|jt|jd|�qWdS)N�abcr��abc�é€�é€�􏿿�􏿿��rnr1ro�?rk�\udc80rlrt��r�z1Unable to encode %a to cp65001 with errors=%r: %sz!%a.encode("cp65001", %r)=%a != %a)r�r�r�)r�r�r�)r�r�r�)r�r�N)r�rnr1)r�ror�)r�rkr�)r�rlr�)r�rtr�)r.r{�failrrz)rr��text�errorsr�r@�errr	r	r
�test_encodePs* zCP65001Test.test_encodecCs�ddddddddd d!d"d#g}x�|D]�\}}}|dk	r�y|jd|�}Wn6tk
rz}z|jd|||f�WYdd}~XnX|j||d||||f�q"|jt|jd|�q"WdS)$N�abcr�r��é€�é€�􏿿�􏿿�����[é]�[é]�[�]rn�[]ro�[�]r��[�]�[�]�[���]r�z3Unable to decode %a from cp65001 with errors=%r: %sz!%a.decode("cp65001", %r)=%a != %a)r�r�r�)r�r�r�)r�r�r�)r�r�r�)r�r�r�)r�r�N)r�rnr)r�ror)r�r�r)rr�N)rrnr)rror)rr}r�rrz)rr�r�r�r��decodedr�r	r	r
�test_decodejs0 zCP65001Test.test_decodecCs�|jtdjd�|jtdjd�|jdjdd�d�|jdjdd�d�|jdjdd�d	�|jdjdd
�d�|jdjdd�d
�|jdjdd�d�dS)Nu�r�s�u[�]rks[\udc80]rlrms
[&#56448;]r�s[�]rns[]ros[?])rzr{r.r}rr)rr	r	r
r��sz CP65001Test.test_lone_surrogatescCsd|jdjdd�d�|jdjdd�d�|jdjdd�d�|jdjdd�d�|jtjd��dS)Nu	abc�defr�rts	abc�defu𐿿�s𐿿�)rr.rr$rr�)rr	r	r
r��sz&CP65001Test.test_surrogatepass_handlerN)rrrr%r�rr�r�r	r	r	r
r�Ks
r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�UTF7Testzutf-7cCsd}|j|j|j�|jd��|j|jd�j|j�|�d}|j|j|j�|jd��|j|jd�j|j�|�|jdj|j�d�|jdj|j�d�d}|j|j|j�|jd��|j|jd�j|j�|�djttttd��j��t||d	|���}|j|j|j�d
�dS)NzGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?�asciiz !"#$%&*;<=>@[]^_`{|}za+bsa+-bz 	

r2��+sX+AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	rr.r%rr;�sorted�setr3r)rZset_dZset_oZwsZother_asciir	r	r
�
test_ascii�szUTF7Test.test_asciic"CsP|jdddddddddddddddddd	d	d	d	d	d
ddddddddddg �dS)
Nua+-bc€dĀe𐀀frTza+za+-za+-bza+-bza+-bcua+-bc€u	a+-bc€dua+-bc€dĀua+-bc€dĀeua+-bc€dĀe𐀀)rA)rr	r	r
r��sDzUTF7Test.test_partialcCs�d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9g}xP|D]H\}}|j|d!��.|jttj|d"d#�|j|jd$d%�|�WdQRXq2WdS):N��b��b�a�b�a�b�a��b�a��b�a+IK�a��a+IK-b�a+IK,b�a+IKx�a€��a+IKx-b�a€�b�a+IKwgr�	a+IKwgr-b�a+IKwgr,�
a+IKwgr,-b�	a€�-b�a+IKwgrB�
a€€��
a+IKwgrB-b�a€€�b�
a+/,+IKw-b�a�€b�a+//,+IKw-b�a+///,+IKw-b�a￿�€b�
a+////,+IKw-b�a+IKw-b��a€b��a+IKw�b)r�r�Tzutf-7ro)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr )r!r")r#r$)r%r&)r'r&)r(r))r*r))r+r,)r-r)r�rzr}r�utf_7_decoderr)rr�r�r�r	r	r
r��s2

zUTF7Test.test_errorscCs�|jdj|j�d�|jdj|j�d�|jdj|j�d�|jdj|j�d�|jdj|j�d�|jdj|j�d�|jdj|j�d�|jdj|j�d	�|jd	j|j�d�|jd
j|j�d�dS)Nu𐒠s+2AHcoA-u��s+2AHcoAu€𐒠s
+IKzYAdyg-s	+IKzYAdygu
€€𐒠s
+IKwgrNgB3KA-s+IKwgrNgB3KA)rr.r%r)rr	r	r
r�szUTF7Test.test_nonbmpcCs`dddddddd d!d"d#d$d%g
}x<|D]4\}}|j|d��|j|jdd�|�WdQRXq$WdS)&N�a+2AE-b�a�b�a+2AE�b�a�b�a+2AE�a��a+2AEA-b�a+2AH-b�
a+IKzYAQ-b�a€�b�
a+IKzYAQ�b�a€�b�a+IKzYAQA-b�
a+IKzYAd-b�a+IKwgrNgB-b�a€€�b�a+IKwgrNgB�b�a€€�b�
a+IKwgrNgB�
a€€��
a+IKwgrNgBA-b)r�zutf-7ro)r/r0)r1r2)r3r4)r5r2)r6r2)r7r8)r9r:)r;r:)r<r:)r=r>)r?r@)rArB)rCr@)r�rr)rr�r�r�r	r	r
r�s zUTF7Test.test_lone_surrogatesN)	rrrr%r
r�r�r�r�r	r	r	r
r�s'rc@seZdZdd�Zdd�ZdS)�UTF16ExTestcCs|jttjdddd�dS)Nr�r�rT)rzr}r�utf_16_ex_decode)rr	r	r
r�+szUTF16ExTest.test_errorscCs|jttj�dS)N)rz�	TypeErrorrrE)rr	r	r
�
test_bad_args.szUTF16ExTest.test_bad_argsN)rrrr�rGr	r	r	r
rD)srDc@s$eZdZdd�Zdd�Zdd�ZdS)�ReadBufferTestcCs&ddl}|jtj|jdd��d�dS)Nrru�spamr�)rIr�)�arrayrr�readbuffer_encode)rrJr	r	r
�
test_array3szReadBufferTest.test_arraycCs|jtjd�d�dS)Nr2r1r)r1r)rrrK)rr	r	r
�
test_empty:szReadBufferTest.test_emptycCs"|jttj�|jttjd�dS)N�*)rzrFrrK)rr	r	r
rG=szReadBufferTest.test_bad_argsN)rrrrLrMrGr	r	r	r
rH1srHc@s>eZdZdZejZdd�Zdd�Zdd�Z	dd	�Z
d
d�ZdS)
�UTF8SigTestz	utf-8-sigcCs:|jddddddddddddddddddddddg�dS)	Nuÿ߿ࠀ￿𐀀r2uuuÿuÿ߿uÿ߿ࠀuÿ߿ࠀ￿)rA)rr	r	r
r�Es.zUTF8SigTest.test_partialcCs|jtdd�d�dS)Nsz	utf-8-sigr2)r�str)rr	r	r
�test_bug1601501aszUTF8SigTest.test_bug1601501cCs,tjd��}d}|j|j|jd��|�dS)Nz	utf-8-sigr�)rrrrr.)rr(rr	r	r
�test_bomeszUTF8SigTest.test_bomc	Cs�d}tjd}tjd�}x�dgttdd��dddd	d
gD]`}|tj|��}tj�}x0|dk	rl|j|�}n|j�}|szP|j	|�qXW|j
�}|j||�q<WdS)NuABC¡∀XYZsABC¡∀XYZz	utf-8-sigr��@r	�ii)r�BOM_UTF8r7�listrrBrC�StringIOrrr�r)	r�	unistring�
bytestringrI�sizehint�istream�ostreamrX�gotr	r	r
�test_stream_bomjs 

zUTF8SigTest.test_stream_bomc	Cs�d}d}tjd�}x�dgttdd��dddd	d
gD]`}|tj|��}tj�}x0|dk	rf|j|�}n|j�}|stP|j|�qRW|j	�}|j
||�q6WdS)NuABC¡∀XYZsABC¡∀XYZz	utf-8-sigrrSrTr	rUii)rr7rWrrBrCrXrrr�r)	rrYrZrIr[r\r]rXr^r	r	r
�test_stream_bare�s 
zUTF8SigTest.test_stream_bareN)rrrr%rrVr�r�rQrRr_r`r	r	r	r
rOAsrOc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�EscapeDecodeTestcCs*|jtjd�d�|jtjt��d�dS)Nr1r)r1r)r1r)rr�
escape_decode�	bytearray)rr	r	r
rM�szEscapeDecodeTest.test_emptycCsJtj}x>td�D]2}t|g�}|dkr|j||d�|ddf�qWdS)NrU�\�0�)rrbrr3r)rrrur	r	r
�test_raw�s

zEscapeDecodeTest.test_rawcCs�tj}t||�}|dd�|dd�|dd�|dd�|d	d
�|dd�|d
d�|dd�|dd�|dd�|dd�|dd
�|dd�|dd�|dd�|dd�|d d!�|d"d�|d#d�|d$d!�x~td%d&�D]p}t|g�}|d'k�r$|jt��|d(|d(|�WdQRX|jt�� |d(|j�d(|j��WdQRXq�W|jt��|d)d)�WdQRX|jt��|d*d*�WdQRX|jt��|d+d+�WdQRXdS),Ns[\
]s[]s[\"]s["]s[\']s[']s[\\]s[\]s[\a]s[]s[\b]s[]s[\t]s[	]s[\n]s[
]s[\v]s[]s[\f]s[]s[\r]s[
]s[\7]s[\78]s[8]s[\41]s[!]s[\418]s[!8]s[\101]s[A]s[\1010]s[A0]s[\501]s[\x41]s[\x410]�a�{sabfnrtvxrds\8s\9s\�)rrbrrr3�assertWarnsr��upper)rrrr'rur	r	r
�test_escape�sF






















(zEscapeDecodeTest.test_escapecCs�tj}|jt|d�|jt|d�|j|dd�d
�|j|dd�d�|jt|d	�|jt|d
�|j|dd�d�|j|dd�d�dS)Ns\xs[\x]s[\x]\xrn�[]r\ro�[?]?s\x0s[\x0]s[\x0]\x0r�)rmr\)rnr\)rmr�)rnr�)rrbrz�
ValueErrorr)rrr	r	r
r��szEscapeDecodeTest.test_errorsN)rrrrMrgrlr�r	r	r	r
ra�s%rac@seZdZdd�ZdS)�RecodingTestcCs8tj�}tj|dd�}|jd�|j�|j|j�dS)N�unicode_internalzutf-8rT)rBrCr�EncodedFiler�closer$�closed)rr_�f2r	r	r
�
test_recoding�s

zRecodingTest.test_recodingN)rrrrvr	r	r	r
rp�srp�"ليهمابتكلموشعربي؟�egbpdaj6bu4bxfgehfvwxn�他们为什么不说中文�ihqwcrb4cv8a8dqg056pqjye�他們爲什麽不說中文�ihqwctvzc91f659drss3x8bo0yb�Pročprostěnemluvíčesky�Proprostnemluvesky-uyb24dma41a�,למההםפשוטלאמדבריםעברית�4dbcagdahymbxekheh6e0a7fei0b�Zयहलोगहिन्दीक्योंनहींबोलसकतेहैं�,i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd�6なぜみんな日本語を話してくれないのか�&n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa�H세계의모든사람들이한국어를이해한다면얼마나좋을까�E989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c�8почемужеонинеговорятпорусски� b1abfaaepdrnnbgefbaDotcwatmq2g4l�*PorquénopuedensimplementehablarenEspañol�-PorqunopuedensimplementehablarenEspaol-fmd56a�-TạisaohọkhôngthểchỉnóitiếngViệt�,TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g�3年B組金八先生�3B-ww4c5e180e575a65lsy2b�"安室奈美恵-with-SUPER-MONKEYS�(-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n�'Hello-Another-Way-それぞれの場所�(Hello-Another-Way--fc4qua05auwb3674vfr0b�ひとつ屋根の下2�2-u9tlzr9756bt3uc0v�MajiでKoiする5秒前�MajiKoi5-783gue6qz075azm5e�パフィーdeルンバ�de-jg4avhby1noc0d�そのスピードで�d9juau41awczczp�-> $1.00 <-�-> $1.00 <--rfc@seZdZdd�Zdd�ZdS)�PunycodeTestcCs<x6tD].\}}|jt|jd�d�j�t|d�j��qWdS)N�punycoder)�punycode_testcasesrrPr.�lower)r�uni�punyr	r	r
r�LszPunycodeTest.test_encodecCsJxDtD]<\}}|j||jd��|jd�jd�}|j||jd��qWdS)Nr�r)r�rrr.)rr�r�r	r	r
rXszPunycodeTest.test_decodeN)rrrr�rr	r	r	r
r�Ksr�c@s\eZdZejedkd�dd��Zejedkd�dd��Zejedkd�dd��Zd	d
�Z	dS)�UnicodeInternalTestr�zspecific to 32-bit wchar_tcCsHdddg}ddd	d
dg}xL|D]D\}}tjdkr<tt|��}tj��|j||jd
��WdQRXqWxL|D]D}tjdkr�tt|��}tjdtf��|j	t
|jd
�WdQRXqlWtjdkr�d}d}nd}d}tj��|j	t
|jd
�WdQRXtj��|j|jd
d�d�WdQRXtj��|j|jd
d�|�WdQRXdS)N����􏿿��ār1r2s���s�s��sr�rqz*unicode_internal codec has been deprecatedsz\x00\x00\x11\x00sz\x00\x11\x00\x00rou�rk)r�r�)r�r�)r1r2)r�r�r3�reversedrr�rrr�rzr})r�okZnot_okZinternalr�ZinvalidZinvalid_backslashreplacer	r	r
�test_bug1251300`sD

 







z#UnicodeInternalTest.test_bug1251300cCs�y(tjdtf��djd�WdQRXWnZtk
r�}z>|jd|j�|jd|j�|jd|j�|jd|j	�WYdd}~Xn
X|j
�dS)Nz*unicode_internal codec has been deprecatedsrqr�r�)rr�r�rr}rr%r�r�r�r�)rZexr	r	r
�test_decode_error_attributes�s
 z0UnicodeInternalTest.test_decode_error_attributescCsxtjdtj�tjd�}tjdtf��<djd�j�}|t	d|dd�|dd�fd�d�}WdQRX|j
d	|�dS)
Nr�rqz*unicode_internal codec has been deprecated�abz%s""""%sr�r�)r�r�)r�register_error�
ignore_errors�
getdecoderrr�r�r.rr3r)r�decoderr�Zignoredr	r	r
�test_decode_callback�s

z(UnicodeInternalTest.test_decode_callbackc
Csftjdtf��Ntjd�}|j|d�dd�|j|d�dd�|jtjd�dd�WdQRXdS)	Nz*unicode_internal codec has been deprecatedrqrTruéłrfs\x00r�)rr�r�r�
getencoderr�
escape_encode)r�encoderr	r	r
�test_encode_length�s

z&UnicodeInternalTest.test_encode_lengthN)
rrr�unittest�
skipUnless�SIZEOF_WCHAR_Tr�r�r�r�r	r	r	r
r�_s,r��%foo­͏᠆᠋bar​⁠baz︀︈️�	foobarbaz�CAFE�cafe�ß�ss�İ�i̇�Ńͺ�ń ι�ǰ ª�ǰ a�ᾷ�ᾶι�ǰ�ΐ�ΰ�ẖ�ὖ� � � � �​r1� ��…�᠎��𝅵��󱈴�􏈴�򏿾�􏿿�����⿵�́�́�‎�‪�󠀁�󠁂�foo־bar�	fooﵐbar�	fooﹶbar�	foo َbar�ا1�ا1ب�X­ßİ℡ǰ ªΰ �xssi̇telǰ aΰ �Xß㌖İ℡⒟㌀�*xssキロメートルi̇tel(d)アパートc@seZdZdd�ZdS)�NameprepTestcCs�ddlm}x�tt�D]�\}\}}|dkr,qt|dd�}|dkrP|jt||�qt|dd�}y|j||�|�Wqtk
r�}z t	j
d|dt|�f��WYdd}~XqXqWdS)Nr)�nameprepzutf-8rtz
Test 3.%d: %sr)Zencodings.idnar�rV�nameprep_testsrPrzr�r�	ExceptionrZ
TestFailed)rr��posZorigZprepped�er	r	r
�
test_nameprepKszNameprepTest.test_nameprepN)rrrr�r	r	r	r
r�Jsr�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�
IDNACodecTestcCsL|jtdd�d�|jtdd�d�|jtdd�d�|jtdd�d	�dS)
Ns
python.org�idnaz
python.orgspython.org.zpython.org.sxn--pythn-mua.orgupythön.orgsxn--pythn-mua.org.upythön.org.)rrP)rr	r	r
�test_builtin_decode_sz!IDNACodecTest.test_builtin_decodecCsL|jdjd�d�|jdjd�d�|jdjd�d�|jdjd�d	�dS)
Nz
python.orgr�s
python.orgzpython.org.spython.org.upythön.orgsxn--pythn-mua.orgupythön.org.sxn--pythn-mua.org.)rr.)rr	r	r
�test_builtin_encodeesz!IDNACodecTest.test_builtin_encodecCs2tjd�tjd��}|jd�|j|j�d�dS)Nr�sabcr�r2)rr7rBrCrr)rr>r	r	r
�test_streamks
zIDNACodecTest.test_streamcCs<|jdjtjdd�dD�d��d�|jdjtjdd�dD�d��d	�|jdjtjd
d�dD�d��d�|jdjtjd
d�dD�d��d�tjd��}|j|jd�d�|j|jd�d�|j|jd�d�|j|jdd�d�|j�|j|jd�d�|j|jd�d�|j|jd�d�|j|jdd�d�dS)Nr2css|]}t|g�VqdS)N)r3)r4r5r	r	r
rvrsz8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>s
python.orgr�z
python.orgcss|]}t|g�VqdS)N)r3)r4r5r	r	r
rvvsspython.org.zpython.org.css|]}t|g�VqdS)N)r3)r4r5r	r	r
rvzssxn--pythn-mua.org.upythön.org.css|]}t|g�VqdS)N)r3)r4r5r	r	r
rv~ssxn--xams	ple-9ta.ou	äxample.srgr1TZorgsrg.zorg.)rr;rr<rrr:)rr�r	r	r
�test_incremental_decodeps,z%IDNACodecTest.test_incremental_decodecCs�|jdjtjdd��d�|jdjtjdd��d�|jdjtjdd��d�|jdjtjdd��d�tjd��}|j|jd	�d�|j|jd
�d�|j|jdd
�d�|j�|j|jd	�d�|j|jd�d�|j|jdd
�d�dS)Nr1z
python.orgr�s
python.orgzpython.org.spython.org.upythön.org.sxn--pythn-mua.org.uäxz	ample.orgsxn--xample-9ta.r2Tsorgz
ample.org.sxn--xample-9ta.org.)rr;r�
iterencoder-r.r:)rr�r	r	r
�test_incremental_encode�s(z%IDNACodecTest.test_incremental_encodecCsNdjdd�djdd�x0d
D](}|jtdjd|�|jtdjd|�qWd	S)z$Only supports "strict" error handlerz
python.orgr�r�s
python.orgrnrorkr�N)rnrorkr�)r.rrzr�)rr�r	r	r
r��szIDNACodecTest.test_errorsN)	rrrr�r�r�r�r�r�r	r	r	r
r�^sr�c@sleZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�CodecsModuleTestcCsx|jtjdd�d�|jttj�|jtjd�d�|jttjdd�|jtjddd�d�|jtjd	dd
d�d�dS)
Ns�zlatin-1uäöüsabcr�r�r)�objr%s[�]rn)r�z[])rrrrzrFr})rr	r	r
r�szCodecsModuleTest.test_decodecCs�|jtjdd�d�|jttj�|jttjdd�|jtjd�d�|jttjdd	�|jtjddd
�d�|jtjdd	dd
�d�dS)Nuäöüzlatin-1s�rb�__spam__r�sabcuÿffr)rr%u[ÿ]rn)r�s[])rrr.rzrF�LookupErrorr{)rr	r	r
r��szCodecsModuleTest.test_encodecCs"|jttj�|jttjd�dS)NrN)rzrFr�register)rr	r	r
�
test_register�szCodecsModuleTest.test_registercCs2|jttj�|jttjd�|jttjd�dS)Nr� )rzrFrr�r)rr	r	r
�test_lookup�szCodecsModuleTest.test_lookupcCs"|jttj�|jttjd�dS)Nr)rzrFrr�r)rr	r	r
�test_getencoder�sz CodecsModuleTest.test_getencodercCs"|jttj�|jttjd�dS)Nr)rzrFrr�r)rr	r	r
�test_getdecoder�sz CodecsModuleTest.test_getdecodercCs"|jttj�|jttjd�dS)Nr)rzrFrr7r)rr	r	r
�test_getreader�szCodecsModuleTest.test_getreadercCs"|jttj�|jttjd�dS)Nr)rzrFrrcr)rr	r	r
�test_getwriter�szCodecsModuleTest.test_getwritercCsntjtj�}|jtjtj|�ytjtjd�Wn tjk
rP|jd�YnXtjd�}|j|j	d�dS)NZtr_TRztest needs Turkish locale�ASCIIr)
�locale�	setlocale�LC_CTYPEr��ErrorZskipTestrr�r�name)rZ	oldlocaler5r	r	r
�test_lookup_issue1813�s
z&CodecsModuleTest.test_lookup_issue1813c,Cs0d-}|j|tj�xtjD]}tt|�qWdS).Nr.rr�	CodecInfo�Codec�IncrementalEncoder�IncrementalDecoder�StreamReader�StreamWriterr�r�r�r-rr7rcr�r��
strict_errors�replace_errorsr��xmlcharrefreplace_errors�backslashreplace_errors�namereplace_errorsr�rrr�r<r��BOM_BE�BOM_LErV�	BOM_UTF16�BOM_UTF16_BE�BOM_UTF16_LE�	BOM_UTF32�BOM_UTF32_BE�BOM_UTF32_LE�BOM32_BE�BOM32_LE�BOM64_BE�BOM64_LE�StreamReaderWriter�
StreamRecoder),r.rrrrrrrrr�r�r�r-rr7rcr�r�rrr�rrrr�rrr�r<r�rrrVr r!r"r#r$r%r&r'r(r)r*r+)ZassertCountEqualr�__all__�getattr)rZapir	r	r
�test_all�s&zCodecsModuleTest.test_allcCsb|jtjtj�xLdD]D}|j|��0tjtj|d��}|j|tj�WdQRXWdQRXqWdS)	N�wr>�r+�w+rT�a+r)r/r>r0r1rTr2)	r�rr�r�r�rr�r!r*)r�mode�filer	r	r
�	test_opens

zCodecsModuleTest.test_opencCs�|jttjdd�|jttjdd�|jttjdd�|jttjdd�x4d
D],}|jttjdd|�|jttjdd|�qNWdS)Nr�Z	undefinedsabcr2r1r�rnrork)r�rnrork)rzr�rr.r)rr�r	r	r
�test_undefineds
zCodecsModuleTest.test_undefinedN)rrrrr�rrrr	r
rrr.r5r6r	r	r	r
r�s

rc@seZdZdd�Zdd�ZdS)�StreamReaderTestcCstjd�|_tjd�|_dS)Nzutf-8s한
글)rr7rIrBrCrD)rr	r	r
�setUp$szStreamReaderTest.setUpcCs$|j|j�}|j|j�ddg�dS)Nu한
u글)rIrDrr^)rr_r	r	r
�test_readlines(szStreamReaderTest.test_readlinesN)rrrr8r9r	r	r	r
r7"sr7c@seZdZdd�ZdS)�EncodedFileTestcCs\tjd�}tj|dd�}|j|j�d�tj�}tj|dd�}|jd�|j|j�d�dS)Ns한
글z	utf-16-lezutf-8s\�
�zlatin-1sü��)rBrCrrrrrrr�)rr_�efr	r	r
�
test_basic/s

zEncodedFileTest.test_basicN)rrrr=r	r	r	r
r:-sr:r�big5�	big5hkscs�charmap�cp037Zcp1006�cp1026�cp1125�cp1140�cp1250�cp1251�cp1252�cp1253�cp1254�cp1255�cp1256�cp1257�cp1258�cp424�cp437�cp500Zcp720Zcp737�cp775�cp850�cp852�cp855Zcp856�cp857�cp858�cp860�cp861�cp862�cp863�cp864�cp865�cp866�cp869Zcp874Zcp875�cp932�cp949�cp950�euc_jis_2004�euc_jisx0213�euc_jp�euc_kr�gb18030�gb2312�gbk�	hp_roman8�hzr��
iso2022_jp�iso2022_jp_1�iso2022_jp_2�iso2022_jp_2004�iso2022_jp_3�iso2022_jp_ext�
iso2022_kr�	iso8859_1�
iso8859_10�
iso8859_11�
iso8859_13�
iso8859_14�
iso8859_15�
iso8859_16�	iso8859_2�	iso8859_3�	iso8859_4�	iso8859_5�	iso8859_6�	iso8859_7�	iso8859_8�	iso8859_9�johab�koi8_rZkoi8_tZkoi8_u�kz1048�latin_1�mac_cyrillic�	mac_greek�mac_iceland�
mac_latin2�	mac_roman�mac_turkishZpalmos�ptcp154r�Zraw_unicode_escape�	shift_jis�shift_jis_2004�shift_jisx0213�tis_620Zunicode_escaperq�utf_16�	utf_16_be�	utf_16_le�utf_7�utf_8Zmbcs_encode�mbcsZ
oem_encodeZoemc@sJeZdZdd�Zejdd��Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�ZdS)�BasicUnicodeTestcs
d}�x�tD�]�}tj|�j}|jd�r2|d7}n|dkr>d}|j|jdd�|jdd��tj��Rtj	|�|�\}}|j|t
|�d|�tj|�|�\}}|j||d|�WdQRX|tk�rvt
d�}tj|�|�}d}	x>|D]6}
|j|
�|j�}|jt|�tkt|��|	|7}	q�Wt
d�}tj|�|�}d}
x*|	D]"}
|jt|
g��|
|j�7}
�q>W|j|
|d|�|tkrytj|���Wntk
�r�Yn�Xd}	x|D]}
|	�j|
�7}	�q�W|	�jdd	�7}	tj|���d}
x"|	D]}
|
�jt|
g��7}
�q�W|
�jdd	�7}
|j|
|d|�djtjtj||�|��}|j||d|�djtjtjd|�|��}|j|d�|dkrytj|�d��Wntk
�r�YqXdj�fd
d�|D��}	tj|�d��dj�fdd�|	D��}
|j|
|d|�qWdS)N�abc123Z_codecr�r��-zencoding=%rr1r2Tr�r�rnc3s|]}�j|�VqdS)N)r.)r4r5)r�r	r
rv�sz/BasicUnicodeTest.test_basics.<locals>.<genexpr>c3s|]}�jt|g��VqdS)N)rr3)r4r5)r�r	r
rv�s)r�r�)�all_unicode_encodingsrr�r�endswithrrorr�r�rr��broken_unicode_with_statefulr
rcrrr$�typer3r7r-rr.rrr;r<r�)rrr%rrurrr=rd�
encodedresultr5�chunkrI�
decodedresultr?r	)r�r�r
�test_basics�s|










zBasicUnicodeTest.test_basicscsLddlm}m}d}�x0tD�]&}|tkry||��Wntk
rJYn�Xd}x|D]}|�j|�7}qVW|�jdd�7}||��d}x |D]}|�jt|g��7}q�W|�jdd�7}|j	||d|�|dkry||d
��Wntk
r�YqXdj
�fdd�|D��}||d
��dj
�fd
d�|D��}|j	||d|�qWdS)Nr)�codec_incrementalencoder�codec_incrementaldecoderr�r1r2Tzencoding=%rr�r�rnc3s|]}�j|�VqdS)N)r.)r4r5)�cencoderr	r
rv"sz4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>c3s|]}�jt|g��VqdS)N)rr3)r4r5)�cdecoderr	r
rv$s)r�r�)Z	_testcapir�r�r�r�rr.rr3rr;)rr�r�rr%r�r5r�r	)r�r�r
�test_basics_capis<




z!BasicUnicodeTest.test_basics_capicCs�dddddf}xltD]d}|dkr(q|tkr2qtj|�tj|j|���}x0td�D]$}|jdd�|j	�}|j
||�qVWqWdS)Nz%s
%s
rYr�Zdef456r�r[r)r�r�rr7rBrCr.r�seekrr)rrr%rI�trXr	r	r
�	test_seek)s
zBasicUnicodeTest.test_seekcCs>x8tD]0}tj|�}|jt|�|dkr|jt|d�qWdS)Nr�r�rN)r�r�)r�rr�rzrF)rr%r�r	r	r
�test_bad_decode_args8s


z%BasicUnicodeTest.test_bad_decode_argscCs<x6tD].}tj|�}tj��|jt|�WdQRXqWdS)N)r�rr�rr�rzrF)rr%r�r	r	r
�test_bad_encode_args?s


z%BasicUnicodeTest.test_bad_encode_argscCs&ddlm}t|j�}|j||�dS)Nr)rD)�	encodingsrDr��encoding_tabler)rrDZ
table_typer	r	r
�"test_encoding_map_type_initializedFs
z3BasicUnicodeTest.test_encoding_map_type_initializedcCsFd}x<tD]4}|tkr
|j|||j|��|j|||j|��q
WdS)Nr�)r�r�r,r.r/)rr&r%r	r	r
r�Ls

z#BasicUnicodeTest.test_decoder_stateN)rrrr�rZcpython_onlyr�r�r�r�r�r�r	r	r	r
r��sO'r�c@s$eZdZdd�Zdd�Zdd�ZdS)�CharmapTestcCs|jtjddd�d�|jtjddd�d�|jttjddd�|jttjddd�|jtjddd�d�|jtjddd�d�|jtjdd
d�d�|jtjdd
d�d�|jtjddd�d�|jtjddd�d�ttd
��}|jtj|dd�dt|�f�dS)Nsr�r�r��􏿿bcr�uab￾ro�ab�rk�ab\x02rnrUr2)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rr�charmap_decoderzr}r3rr)r�allbytesr	r	r
�test_decode_with_string_mapVs@z'CharmapTest.test_decode_with_string_mapc	Cs|jtjdddddd��d�|jtjddd	d
dd��d�|jtjddd
ddd��d�|jtjdddddd��d�|jttjddddd��|jttjdddddd��|jttjdddddd��|jtjddddd��d�|jtjdddddd��d�|jtjdddddd��d�|jtjddddd��d �|jtjdddddd��d!�|jtjdddddd��d"�|jtjddddd��d#�|jtjdddddd��d$�|jtjdddddd��d%�ttd��}|jtj|di�dt|�f�dS)&Nsr�rTrur5)rrrfr�r�ZAaZBbZCc�AaBbCcu􏿿�􏿿bcr2r�)rru￾ro�ab�rk�ab\x02rnrU)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�)rrr�rzr}r3rr)rr�r	r	r
�test_decode_with_int2str_map�s�


z(CharmapTest.test_decode_with_int2str_mapc	Cs�td�}td�}td�}|jtjdd|||d��d�|jtjddd	||d��d�|jtjddtj||d��ttj�ddf�|jttjddtjd||d��|jt	tjdd||d
��|jt	tjdd||dd��|jtjdd||d
��d�|jtjdd||dd��d�|jtjdd||d
��d�|jtjdd||dd��d�|jtjdd||d
��d�|jtjdd||dd��d�dS)NrTrur5sr�)rrrfr�r�i���􏿿bcZbcr)rri��ro�ab�rk�ab\x02rnr�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)
�ordrrr�r��
maxunicode�chrrzrFr})rrTrur5r	r	r
�test_decode_with_int2int_map�s`


z(CharmapTest.test_decode_with_int2int_mapN)rrrr�r�r�r	r	r	r
r�Us7hr�c@seZdZdd�Zdd�ZdS)�WithStmtTestc
CsDtjd�}tj|dd��}|j|j�d�WdQRX|j|j�dS)Nsüzlatin-1zutf-8r;)rBrCrrrrrr$rt)rr_r<r	r	r
�test_encodedfileB	s
zWithStmtTest.test_encodedfilec
CsHtjd�}tjd�}tj||j|jd��}|j|j�d�WdQRXdS)Nsüzutf-8r��ü)	rBrCrr�r*�streamreader�streamwriterrr)rr_�info�srwr	r	r
�test_streamreaderwriterH	s



z$WithStmtTest.test_streamreaderwriterN)rrrr�r�r	r	r	r
r�A	sr�c@seZdZdd�Zdd�ZdS)�	TypesTestcCsjtjtjtjtjtjtjtjtjtj	tj
tjtjg}t
td�rJ|jtj�x|D]}|jt|d�qPWdS)N�mbcs_decoderU)rr.�utf_8_decoder�r�rEr�r�r��utf_32_ex_decode�latin_1_decode�ascii_decoder��hasattrrHr�rzrF)rZdecodersr�r	r	r
�test_decode_unicodeQ	s 

zTypesTest.test_decode_unicodecCs�|jtjd�d�|jtjd�d
�|jtjd�d�|jtjd�d�|jttjd�|jtjdd�d�|jtjdd
�d�|jttjd�|jtjdd�d�|jtjdd
�d�dS)Nz\u1234�ሴr\s\u1234s
\U00110000z
\U00110000ro��rMrk�(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30)r�r\)r�r\)r�r\)r�r\)r�rM)r�rM)r�rM)r�rM)rr�unicode_escape_decode�raw_unicode_escape_decoderzr})rr	r	r
�test_unicode_escapef	szTypesTest.test_unicode_escapeN)rrrr�r�r	r	r	r
r�P	sr�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�UnicodeEscapeTestcCs(|jtjd�d�|jtjd�d�dS)Nr2r1r)r1r)r2r)rr�unicode_escape_encoder�)rr	r	r
rMz	szUnicodeEscapeTest.test_emptycCsDtj}x8tdd�D]*}|dkr|j|t|��t|g�df�qWdS)N� �rdrr�\)rr�rrr�r3)rr.rur	r	r
�test_raw_encode~	sz!UnicodeEscapeTest.test_raw_encodecCsJtj}x>td�D]2}|dkr|j|t|g�d�t|�ddf�qWdS)NrUrdrre�0rfr�)rr�rrr3r�)rrrur	r	r
�test_raw_decode�	sz!UnicodeEscapeTest.test_raw_decodecCs�tj}t||�}|dd�|dd�|dd�|dd�x2td	�D]&}t|�d
krB|t|�d|j��qBWx(tdd
�D]}|t|�d|j��qxW|dd�|dd�dS)N�	s\trNs\nrPs\r�\s\\r�z	

z\x%02xr�rUu€s\u20acu𝄠s
\U0001d120)rr�rrr�r.)rr.rrur	r	r
�test_escape_encode�	s





z$UnicodeEscapeTest.test_escape_encodecCs�tj}t||�}|dd�|dd�|dd�|dd�|d	d
�|dd�|d
d�|dd�|dd�|dd�|dd�|dd
�|dd�|dd�|dd�|dd�|d d!�|d"d�|d#d!�|d$d%�|d&d'�x�td(d)�D]�}t|g�}|d*k�r2|jt��|d+|d,t|��WdQRX|j�d-kr�|jt��$|d+|j�d,t|d.��WdQRXq�W|jt��|d/d0�WdQRX|jt��|d1d2�WdQRX|jt��|d3d4�WdQRXdS)5Ns[\
]z[]s[\"]z["]s[\']z[']s[\\]z[\]s[\a]z[]s[\b]z[]s[\t]z[	]s[\n]z[
]s[\v]z[]s[\f]z[]s[\r]z[
]s[\7]s[\78]z[8]s[\41]z[!]s[\418]z[!8]s[\101]z[A]s[\1010]z[A0]s[\x41]s[\x410]s\u20acu€s
\U0001d120u𝄠rhris	abfnrtuvxrdr�sUNr�s\8z\8s\9z\9s\�u\ú)	rr�rrr3rjr�r�rk)rrrr'rur	r	r
�test_escape_decode�	sJ























 ,z$UnicodeEscapeTest.test_escape_decodecCs�tj}x�dD]�\}}x�t|�D]�}|jt|d|d|�|jt|d|d|d	�d|d|d
|d|}|j||d�dt|�f�|j||d
�dt|�f�qWqW|jt|d�|j|dd�d�|j|dd
�d�dS)N�xrf�ur��Urdres[\�]s]\rnz[]rou[�]�s
\U00110000r2rM���r�rf�r�r��r�r�)r�r�r�)r2rM)r�rM)rr�rrzr}rr)rrr5r(r'rXr	r	r
�test_decode_errors�	s z$UnicodeEscapeTest.test_decode_errorsN)	rrrrMr�r�r�r�r�r	r	r	r
r�y	s'r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�RawUnicodeEscapeTestcCs(|jtjd�d�|jtjd�d�dS)Nr2r1r)r1r)r2r)rr�raw_unicode_escape_encoder�)rr	r	r
rM�	szRawUnicodeEscapeTest.test_emptycCs:tj}x.td�D]"}|j|t|��t|g�df�qWdS)NrUr)rr�rrr�r3)rr.rur	r	r
r��	sz$RawUnicodeEscapeTest.test_raw_encodecCsBtj}x6td�D]*}|j|t|g�d�t|�ddf�qWdS)NrUrer�rf)rr�rrr3r�)rrrur	r	r
r��	sz$RawUnicodeEscapeTest.test_raw_decodecCs^tj}t||�}x4td�D](}|dkr|dt|�dt|g��qW|dd�|dd�dS)	NrUsuUr�rdu€s\u20acu𝄠s
\U0001d120)rr�rrr�r3)rr.rrur	r	r
r��	s
 
z'RawUnicodeEscapeTest.test_escape_encodecCs^tj}t||�}x4td�D](}|dkr|dt|g�dt|��qW|dd�|dd�dS)	NrUsuUrdr�s\u20acu€s
\U0001d120u𝄠)rr�rrr3r�)rrrrur	r	r
r��	s
 
z'RawUnicodeEscapeTest.test_escape_decodecCs�tj}x�dD]�\}}x�t|�D]�}|jt|d|d|�|jt|d|d|d�d|d|d|d|}|j||d	�d
t|�f�|j||d�dt|�f�qWqW|jt|d
�|j|d
d	�d�|j|d
d�d�dS)Nr�r�r�rdres[\r�s]\rnz[]rou[�]�s
\U00110000r2rM���r�r��r�r�)r�r�)r2rM)r�rM)rr�rrzr}rr)rrr5r(r'rXr	r	r
r��	s z'RawUnicodeEscapeTest.test_decode_errorsN)	rrrrMr�r�r�r�r�r	r	r	r
r��	s		r�c@seZdZdd�ZdS)�EscapeEncodeTestcCsxdddddd!d#d%g}x:|D]2\}}|j|d��|jtj|�|�WdQRXqW|jttjd�|jttjtd��dS)&Nr1r�foobarr\�	spameggs�spam\x00eggs�	�a'b�a\'br��b\c�b\\c�c
d�c\nd�d
e�d\re�fg�f\x7fg)rXr�sspam�r1r)r1r�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�rrr�rzrFrc)rr�rX�outputr	r	r
r�
s z#EscapeEncodeTest.test_escape_encodeN)rrrr�r	r	r	r
r�
sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�SurrogateEscapeTestcCsT|jdjdd�d�|jdjdd�d�|jdjdd�d�|jdjdd�d�dS)Nsfoo�barzutf-8r�u	foo�bars�u	���)rrr.)rr	r	r
�	test_utf8
szSurrogateEscapeTest.test_utf8cCs,|jdjdd�d�|jdjdd�d�dS)Nsfoo�barrr�u	foo�bar)rrr.)rr	r	r
r
%
szSurrogateEscapeTest.test_asciicCs,|jdjdd�d�|jdjdd�d�dS)Nsfoo�barz
iso-8859-3r�u	foo�bar)rrr.)rr	r	r
�test_charmap,
sz SurrogateEscapeTest.test_charmapcCs|jdjdd�d�dS)Nu�����zlatin-1r�s���)rr.)rr	r	r
�test_latin13
szSurrogateEscapeTest.test_latin1N)rrrr
r
rrr	r	r	r
r	
sr	c@seZdZdd�ZdS)�BomTestc(Cs<d}d}|jtjtj��x|D�]}tjtjd|d	��V}|j|�|j|�|jd
�|j|j	�|d�|jd
�|j|j	�|d�WdQRXtjtjd|d	��R}|j|d
�|j
|j�d
�|jd
�|j|�|jd
�|j|j	�|�WdQRXtjtjd|d	��Z}|jj|d
�|j
|jj�d
�|jjd
�|jj|�|jd
�|j|j	�|�WdQRXtjtjd|d	��F}|j|�|j|j��|j|�|jd
�|j|j	�|d�WdQRXtjtjd|d	��N}|jj|�|jj|jj��|jj|�|jd
�|j|j	�|d�WdQRXq WdS)
NZ
1234567890�utf-16�	utf-16-le�	utf-16-be�utf-32�	utf-32-le�	utf-32-bezw+)r%rrf)rrrrrr)
r�rr�r�rr�rr�rrZassertNotEqual�tellrd)rrXr�r%r_r	r	r
�
test_seek0:
sT











zBomTest.test_seek0N)rrrrr	r	r	r
r
9
sr
�base64_codec�uu_codec�quopri_codec�	hex_codec�base64�base_64�uu�quopri�quoted_printable�quotedprintable�hex�rot13)rrrr�rot_13�
zlib_codecr8�zlib�	bz2_codec�bz2c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
eje
d�dd��Zdd�Zdd�Zdd�Zdd�ZdS)�TransformCodecTestcCs�ttd��}xttD]l}|j|d��Vtj|�|�\}}|j|t|��tj|�|�\}}|j|t|��|j||�WdQRXqWdS)NrU)r%)	r3r�bytes_transform_encodingsr�rr�rrr�)rZbinputr%�orr'r	r	r
r��
s
zTransformCodecTest.test_basicscCs^xXtD]P}|j|d��:tjd|�}tj|�tj|��}|j�}|j|d�WdQRXqWdS)N)r%��)	r(r�rr.r7rBrCrr)rr%�sinrI�soutr	r	r
�	test_read�
s
zTransformCodecTest.test_readcCs^xXtD]P}|j|d��:tjd|�}tj|�tj|��}|j�}|j|d�WdQRXqWdS)N)r%r*)	r(r�rr.r7rBrCrGr)rr%r+rIr,r	r	r
rW�
s
z TransformCodecTest.test_readlinecCs�d}x�tD]�}|j|d��n|}t|�}tj||�}tj||�}|j||�t|�}tj||�}|j||�tj||�}|j||�WdQRXq
WdS)Ns12345�)r%)r(r��
memoryviewrr.rr)rZoriginalr%rXZviewZview_encodedZview_decodedr	r	r
�test_buffer_api_usage�
s
z(TransformCodecTest.test_buffer_api_usagecCsld}xbtD]Z}|j|d��Dd}|j|�}|jt|��}|j|�WdQRX|j|jj�WdQRXq
WdS)Nzbad input type)r%zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	r(r��format�assertRaisesRegexrr.�assertIsNoner��	__cause__)r�	bad_inputr%�fmt�msg�failurer	r	r
�0test_text_to_binary_blacklists_binary_transforms�
s

zCTransformCodecTest.test_text_to_binary_blacklists_binary_transformsc	Cs*d}|jt|��djd�WdQRXdS)NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager")r1rr.)rr6r	r	r
�.test_text_to_binary_blacklists_text_transforms�
szATransformCodecTest.test_text_to_binary_blacklists_text_transformscCs�d}x�tD]~}|j|d��htj||�}d}|j|�}|jt|��|j|�WdQRX|jt|��t|�j|�WdQRXWdQRXq
WdS)Ns6encode first to ensure we meet any format restrictions)r%zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	r(r�rr.r0r1rrrc)rrXr%Zencoded_datar5r6r	r	r
�0test_binary_to_text_blacklists_binary_transforms�
s

zCTransformCodecTest.test_binary_to_text_blacklists_binary_transformscCsfx`dtd�fD]P}|j|d��:d}|jt|��}|jd�WdQRX|j|jj�WdQRXqWdS)Ns	immutablesmutable)r4zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr")rcr�r1rrr2r�r3)rr4r6r7r	r	r
�.test_binary_to_text_blacklists_text_transforms�
szATransformCodecTest.test_binary_to_text_blacklists_text_transformszRequires zlib supportcCsBd}|jt|��}tjdd�WdQRX|j|jjt|j��dS)Nz(^decoding with 'zlib_codec' codec failedshellor#)r1r�rrr!r�r3r�)rr6r7r	r	r
�!test_custom_zlib_error_is_wrapped�
s

z4TransformCodecTest.test_custom_zlib_error_is_wrappedcCsBd}|jt|��}tjdd�WdQRX|j|jjt|j��dS)Nz'^decoding with 'hex_codec' codec failedshellor)r1r�rrr!r�r3r�)rr6r7r	r	r
� test_custom_hex_error_is_wrapped�
s

z3TransformCodecTest.test_custom_hex_error_is_wrappedcCsdx^tj�D]R\}}tj|�j}x<|D]4}|j|d��tj|�}|j|j|�WdQRXq$Wq
WdS)N)�alias)�transform_aliases�itemsrr�rr�r)r�
codec_name�aliasesZ
expected_namer>r�r	r	r
�test_aliasess

zTransformCodecTest.test_aliasescCs4tjdd�}|j|d�d}|jtj|d�|�dS)Nsspace tab	eol 
zquopri-codecsspace=20tab=09eol=20
sspace tab eol
)rr.rr)rr@Z	unescapedr	r	r
�test_quopri_stateless	sz(TransformCodecTest.test_quopri_statelesscCs|jttjdd�dS)Nr1zuu-codec)rzrorr)rr	r	r
�test_uu_invalidsz"TransformCodecTest.test_uu_invalidN)rrrr�r-rWr/r8r9r:r;r�r�r$r<r=rCrDrEr	r	r	r
r'�
s
	r'cCs
tj|�S)N)�_TEST_CODECS�get)rAr	r	r
�_get_test_codec srH)�
_forget_codeccCsdS)Nr	)rAr	r	r
rI(srIc@s�eZdZdd�Zdd�Zdd�Zejdd��Zd	d
�Z	e
fdd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&�ExceptionChainingTestcCs.t|�tt|��}tj|�j�|_t|_dS)N)	�reprrP�idr��normalize_encodingr�rA�RuntimeError�obj_to_raise)rZ	unique_idr	r	r
r8.s		zExceptionChainingTest.setUpcCsFtj|jd�tjj|jd�yt|j�Wntk
r@YnXdS)N)rF�poprAr��_cacherI�KeyError)rr	r	r
�tearDownCszExceptionChainingTest.tearDowncCs tj|||jd�}|t|j<dS)N)r)rrrArF)rr.rZ
codec_infor	r	r
�	set_codecLs
zExceptionChainingTest.set_codecc
csVdj||j|j|�}|j||��}|VWdQRX|j|jj|�|j|jjj�dS)Nz${} with {!r} codec failed \({}: {}\))	r0rArr1r!r�r3ZassertIsNotNone�
__traceback__)rZ	operation�exc_typer6Zfull_msgZcaughtr	r	r
�
assertWrappedQsz#ExceptionChainingTest.assertWrappedcOs
|j�dS)N)rO)r�args�kwdsr	r	r
�	raise_objZszExceptionChainingTest.raise_objcCs�||_|j|j|j�|jd||��dj|j�WdQRX|jd||��tjd|j�WdQRX|jd||��dj|j�WdQRX|jd||��tjd|j�WdQRXdS)Nr%�	str_inputZdecodingsbytes input)rOrTrZrWr.rArr)rrOr6rVr	r	r
�
check_wrapped^sz#ExceptionChainingTest.check_wrappedcCs|jtd�dS)Nr2)r\rN)rr	r	r
�test_raise_by_typejsz(ExceptionChainingTest.test_raise_by_typecCsd}|jt|�|�dS)NzThis should be wrapped)r\rN)rr6r	r	r
�test_raise_by_valuemsz)ExceptionChainingTest.test_raise_by_valuecCs*d}Gdd�dt�}|j||�||�dS)NzThis should be wrappedc@seZdZfZdS)zWExceptionChainingTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrorN)rrr�	__slots__r	r	r	r
�MyRuntimeErrorssr`)rNr\)rr6r`r	r	r
�)test_raise_grandchild_subclass_exact_sizeqsz?ExceptionChainingTest.test_raise_grandchild_subclass_exact_sizecCs*d}Gdd�dt�}|j||�||�dS)NzThis should be wrappedc@seZdZdS)zVExceptionChainingTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)rrrr	r	r	r
r`ysr`)rNr\)rr6r`r	r	r
�(test_raise_subclass_with_weakref_supportwsz>ExceptionChainingTest.test_raise_subclass_with_weakref_supportcs��fdd�}|j||�|jt|��dj|j�WdQRX|jt|��tjd|j�WdQRX|jt|��dj|j�WdQRX|jt|��tjd|j�WdQRXdS)Ncs��dS)Nr	)rXrY)rOr	r
rZ~sz:ExceptionChainingTest.check_not_wrapped.<locals>.raise_objz	str inputsbytes input)rTr1rNr.rArr)rrOr6rZr	)rOr
�check_not_wrapped}sz'ExceptionChainingTest.check_not_wrappedcCs Gdd�dt�}|j|d�dS)Nc@seZdZdd�ZdS)zKExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInitcSsdS)Nr	)rr	r	r
r�szTExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInit.__init__N)rrrrr	r	r	r
�
CustomInit�srdr2)rNrc)rrdr	r	r
�!test_init_override_is_not_wrapped�sz7ExceptionChainingTest.test_init_override_is_not_wrappedcCs Gdd�dt�}|j|d�dS)NcseZdZ�fdd�Z�ZS)zIExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNewcst�j|�S)N)r��__new__)�cls)r�r	r
rf�szQExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNew.__new__)rrrrfr�r	r	)r�r
�	CustomNew�srhr2)rNrc)rrhr	r	r
� test_new_override_is_not_wrapped�sz6ExceptionChainingTest.test_new_override_is_not_wrappedcCs(d}t|�}d|_|j|dj|��dS)NzThis should NOT be wrappedrz^{}$)rN�attrrcr0)rr6r�r	r	r
�&test_instance_attribute_is_not_wrapped�sz<ExceptionChainingTest.test_instance_attribute_is_not_wrappedcCs|jtd�d�dS)Nr�1)rcrN)rr	r	r
�test_non_str_arg_is_not_wrapped�sz5ExceptionChainingTest.test_non_str_arg_is_not_wrappedcCsd}|jtddd�|�dS)Nz^\('a', 'b', 'c'\)$rTrur5)rcrN)rZmsg_rer	r	r
�!test_multiple_args_is_not_wrapped�sz7ExceptionChainingTest.test_multiple_args_is_not_wrappedcCs�dj|j�}|jt|��dj|j�WdQRX|jt|��tjd|j�WdQRX|jt|��dj|j�WdQRX|jt|��tjd|j�WdQRXdS)Nz^unknown encoding: {}$z	str inputsbytes input)r0rAr1rr.rr)rr6r	r	r
�%test_codec_lookup_failure_not_wrapped�sz;ExceptionChainingTest.test_codec_lookup_failure_not_wrappedcCs�dd�}dd�}|j||�tjd|j�}|j|d�tjd|j�}|j|d�d}|j|j�}|jt|��dj|j�WdQRXd	}|j|j�}|jt|��d
j|j�WdQRXdS)Nc_sdS)N�
not bytes!r)rprr	)rXrYr	r	r
�
encode_to_str�szSExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_strc_sdS)N�not str!r)rrrr	)rXrYr	r	r
�decode_to_bytes�szUExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytesz
not bytes!snot str!zd^{!r} encoder returned 'str' instead of 'bytes'; use codecs.encode\(\) to encode to arbitrary types$r[zd^{!r} decoder returned 'bytes' instead of 'str'; use codecs.decode\(\) to decode to arbitrary types$sbytes input)	rTrr.rArrr0r1rF)rrqrsr@rr5r6r	r	r
�&test_unflagged_non_text_codec_handling�sz<ExceptionChainingTest.test_unflagged_non_text_codec_handlingN)rrrr8rSrT�
contextlib�contextmanagerrWrZrNr\r]r^rarbrcrerirkrmrnrortr	r	r	r
rJ,s$		
rJz"code pages are specific to Windowsc@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
ejdddd�dd��ZdS)�CodePageTesti�cCsL|jttjdd�|jttjdd�|jttjdd�|jttjdd�dS)NrrT�arirr)rzror�code_page_encode�code_page_decode�OSError)rr	r	r
�test_invalid_code_page�sz#CodePageTest.test_invalid_code_pagecCsJ|jtdtjdd�|jtdtjdddd�|jtdtj|jddd�dS)	Nr_i��ÿs�r�T�CP_UTF8r�)r1r{rryr}rzr~)rr	r	r
�test_code_page_name�sz CodePageTest.test_code_page_namecCs�x�|D]�\}}}|dk	r�ytj|||d�}Wn8tk
rd}z|jd||||f�WYdd}~XnX|j|d|d||||d|f�|j|dd�|j|dt|��q|jttj|||d�qWdS)NTz2Unable to decode %a from "cp%s" with errors=%r: %srz%a.decode("cp%s", %r)=%a != %ar)	rrzr}r�rZassertGreaterEqualZassertLessEqualrrz)r�cpr�r�r�r�rr�r	r	r
�check_decode�s"zCodePageTest.check_decodecCs�x�|D]�\}}}|dk	r�ytj|||�}Wn8tk
rb}z|jd||||f�WYdd}~XnX|j|d|d||||d|f�|j|dt|��q|jttj|||�qWdS)Nz0Unable to encode %a to "cp%s" with errors=%r: %srz%a.encode("cp%s", %r)=%a != %ar)rryr{r�rrrz)rr�r�r�r�r�r@r�r	r	r
�check_encode�s"zCodePageTest.check_encodecCs|jdd-�|jdd:�dS);Ni�r�r��abc�d騾����r}�[ÿ]rn�[]ro�[y]�[€]�[?]rk�[\xff]rl�)[\N{LATIN SMALL LETTER Y WITH DIAERESIS}]rm�[&#255;]���[�]r��[�]rt�[]�[�]�[\xff]��abc�abc��abc�\x81abc�r�r�r��r�r�r��r}r�N�r�rnr��r�ror��r�ror��r�rkr��r�rlr��r�rmr��r�r�N�r�r�r��r�rtN)r�r�r�r�r�r�r�r�r�r�r�r��r�r�r��r�r�r��r�r�N�r�rnr��r�ror��r�rkr��r�r�r��r�rtN�r�r�N�r�rnr��r�ror��r�rkr�)r�r�r�r�r�r�r�r�r�r�r�r�)r�r�)rr	r	r
�
test_cp932s6zCodePageTest.test_cp932cCs|jdd�|jdd�dS)Ni�r�r��abc�é€��r}r��Łrnr1ro�L��r���rt�r�r�r��r�r�r��r}r�r��r�r�N�r�rnr1�r�ror��r�r�r��r�rtN)r�r�r�r�r�r�r�r��r�r�r��r�r�r��r�r�r})r�r�r�)r�r�)rr	r	r
�test_cp1252%szCodePageTest.test_cp1252cCs d}|j|d�|j|d�dS)Ni�r�r��abc�é€�+AOkgrA-�􏿿�+2//f/w-���+3IA-���+//0-�[+/]�[]�[�]�[ÿ]�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�r�r��r�r�r�)r�r�r�r�r�r�r�)r�r�)rr�r	r	r
�test_cp_utf77szCodePageTest.test_cp_utf7cCs,|jdd�|j|jd�|j|jd�dS)Ni����rn�騾ro��騾��􏿿�􏿿��􏿿�	[􏿿�]�[􏿿]�[􏿿?]�r�rnr��r�ror�)r�r��r�rnr��r�ror�)r�r��r�rnr��r�ror�)r�r�)r�r~r�)rr	r	r
�test_multibyte_encodingKsz$CodePageTest.test_multibyte_encodingcCsttjdddd�}|j|d�tjdddd�}|j|d�tjdd
dd�}|j|d�tjdd
dd�}|j|d�dS)Ni���r�Fr2rs��騾rfs��騾騾r�sabcr�r�)r2r)r�rf)r�r�)r�r�)rrzr)rrr	r	r
�test_incrementalYszCodePageTest.test_incrementalcCsFddl}dd�}|j}||_ztjd�}|j|jd�Wd||_XdS)NrcWsdS)N�cp123r	)rTr	r	r
�_get_fake_codepagepsz8CodePageTest.test_mbcs_alias.<locals>._get_fake_codepager�r�)�_bootlocale�getpreferredencodingrr�rr)rr�r�Zold_getpreferredencoding�codecr	r	r
�test_mbcs_aliasls
zCodePageTest.test_mbcs_aliasrf��F)rZmemuseZdry_runcCs�ddd}|jt|�d�tjd|dd	�}|j|dt|��~|jt|d
�|d�|j|d
dd�d�|j|d
dd�d�dS)Ns01234567rf�rs
��������r�i�r�TrrMZ
0123456701�u(6701234567����������ii���lli��)rrrrz)rr@rr	r	r
�test_large_inputzszCodePageTest.test_large_inputNl)rrrr~r|rr�r�r�r�r�r�r�r�rZ
bigmemtestr�r	r	r	r
rw�s!rwc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�	ASCIITestcCs|jdjd�d�dS)Nr�rsabc123)rr.)rr	r	r
r��szASCIITest.test_encodecCsHxBdD]:\}}}|j|||d��|j|jd|�|�WdQRXqWdS)N�	[€ÿ€]rn�[]ro�[???]rm�[&#128;&#255;&#8364;]�
[€ÿ€򫳞]rk�[\x80\xff\u20ac\U000abcde]�[��]r��[��])rXr�r�r�r�rnr��r�ror�r�rmr�rrkr�rr�r)rrrr	r
)r�rr.)rrXr�r�r	r	r
�test_encode_error�s
zASCIITest.test_encode_errorc
Cs&|jt��djdd�WdQRXdS)Nu�ÿrr�)rzr{r.)rr	r	r
�!test_encode_surrogateescape_error�sz+ASCIITest.test_encode_surrogateescape_errorcCs|jdjd�d�dS)Nsabcrr�)rr)rr	r	r
r�szASCIITest.test_decodecCsHxBdD]:\}}}|j|||d
��|j|jd|�|�WdQRXqWdS)N�[��]rn�[]ro�[��]r��[��]rk�
[\x80\xff])rXr�r�r�r
rnr�r
ror�r
r�r�r
rkr)rrrr)r�rr)rrXr�r�r	r	r
r��s
zASCIITest.test_decode_errorN)rrrr�rrrr�r	r	r	r
r��s
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
Latin1TestcCsBx<d	D]4\}}|j||d��|j|jd�|�WdQRXqWdS)
Nr��abc�€éÿ���)rXr��latin1�r�r�rr)rr)r�rr.)rrXr�r	r	r
r��s
zLatin1Test.test_encodecCsHxBdD]:\}}}|j|||d��|j|jd|�|�WdQRXqWdS)N�[€�]rn�[]ro�[??]�	[€򫳞]rk�[\u20ac\U000abcde]rm�[&#8364;&#56448;]�[��]r��[��])rXr�r�r�rrnr�rror�r rkr!�rrmr"�r#r�r$)r%r&r'r(r))r�rr.)rrXr�r�r	r	r
�test_encode_errors�s
zLatin1Test.test_encode_errorsc
Cs&|jt��djdd�WdQRXdS)Nu�€rr�)rzr{r.)rr	r	r
r�sz,Latin1Test.test_encode_surrogateescape_errorcCsBx<d	D]4\}}|j||d��|j|jd�|�WdQRXqWdS)
N�abcr��[��]�[€ÿ])rXr�r�r+r��r,r-)r.r/)r�rr)rrXr�r	r	r
r�s
zLatin1Test.test_decodeN)rrrr�r*rrr	r	r	r
r�sr�__main__r)rwrx)ryrz)r{r|)r}r~)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�)r�r�)NN)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�N)r�r�)r�r1)r�r�)r�r�)r�N)r�N)r�r1)r�N)r�N)r�N)r�N)r�N)r�N)r�N)r�N)r�N)r�r�)r�N)r�N)r�N)r�N)r�N)r�N)r�r�)r�N)r�r�)NN)r�r�)r�r�)NrrurBr
r�r�r�ZtestrZctypes�ImportErrorr�ZsizeofZc_wcharrr�r
rr0ZTestCaser�r�r�r�r�r�r�r��platformr�rrDrHrOrarpr�r'r�printrKr�r�r�r�r�rr7r:r�r�rHr�r�r�r�r�r�r�r�r	r
r(r?r$r&r'rFrHr�_codecsrIrJrwr�rr�mainr	r	r	r
�<module>s�"F`..V,,MWU=
TWm


$m)X2":


#
>'%

Youez - 2016 - github.com/yon3zu
LinuXploit