Your IP : 216.73.217.129


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_codecs.cpython-35.pyc



��Yf,��n@s�	ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ej
dkr�ej�jdkZ
ndZ
yddlZWnek
r�dZdZYnXejej�Zdd�ZGd	d
�d
e�ZGdd�d�ZGd
d�de�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�Zej ej
dkd�Gdd�deej��Z!Gd d!�d!eej�Z"Gd"d#�d#ej�Z#Gd$d%�d%ej�Z$Gd&d'�d'eej�Z%Gd(d)�d)ej�Z&Gd*d+�d+ej�Z'd,d-fd.d/fd0d1fd2d3fd4d5fd6d7fd8d9fd:d;fd<d=fd>d?fd@dAfdBdCfdDdEfdFdGfdHdIfdJdKfdLdMfdNdOfdPdQfgZ(x0e(D](Z)e*e)�dRkr�e+e,e)��q{WGdSdT�dTej�Z-GdUdV�dVej�Z.dWdXfdYdZfd[d\fd]d^fd_d`fddfdadbfdcddfdedefdfdffdgdgfdhdhfdidifdjdjfdkdjfdldfdmdjfdndofdpdjfdqdqfdrdfdsdfdtdofdudfdvdfdwdfdxdfdydfdzdfd{dfd|dfd}dfd~dfd�dfd�dfd�dfd�dfd�dfd�dfd�d�fd�dfd�d�fddfd�d�fd�d�fg-Z/Gd�d��d�ej�Z0Gd�d��d�ej�Z1Gd�d��d�ej�Z2Gd�d��d�ej�Z3Gd�d��d�ej�Z4d�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�gfZ5e6ed��rEe5j7d��d�d�gZ8Gdd�deje�Z9Gdd�dej�Z:Gdd�dej�Z;Gdd�dej�Z<Gdd	�d	ej�Z=Gd
d�dej�Z>Gdd
�d
ej�Z?Gdd�dej�Z@Gdd�dej�ZAddddgZBdddgddgddddgddgddgiZCyddlDZDWnek
r�dZDYnXeBj7d�d d!geCd<yddlEZEWnek
r�YnXeBj7d"�d#geCd"<Gd$d%�d%ej�ZFiZGd&d'�ZHejIeH�ydd(lJmKZKWnek
rv	d)d*�ZKYnXGd+d,�d,ej�ZLej ej
dkd-�Gd.d/�d/ej��ZMeNd0kr�	ejO�dS(1�N)�support�win32�F�cs��fdd�}|S)Ncs&�j�|�|t|�f�dS)N)�assertEqual�len)�inputZexpect)�coder�self��5/opt/alt/python35/lib64/python3.5/test/test_codecs.py�checkszcoding_checker.<locals>.checkr)r
r	r
r)r	r
r�coding_checkersrc@s=eZdZdZdd�Zdd�Zd
dd�Zd	S)�QueuezF
    queue: write bytes at one end, read bytes from the other end
    cCs
||_dS)N)�_buffer)r
�bufferrrr�__init__"szQueue.__init__cCs|j|7_dS)N)r)r
�charsrrr�write%szQueue.writercCs`|dkr/|j}|jdd�|_|S|jd|�}|j|d�|_|SdS)Nr)r)r
�size�srrr�read(s	z
Queue.readN���)�__name__�
__module__�__qualname__�__doc__rrrrrrrrsrc@s(eZdZdd�Zdd�ZdS)�MixInCheckStateHandlingc	Csxtt|�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�part2rrr�check_state_handling_decode3s
!
z3MixInCheckStateHandling.check_state_handling_decodec	Cs�x�tt|�d�D]�}tj|��}|j|d|��}|j�}tj|��}|j|�|j||d�d�}|j|||�qWdS)NrT)rrr�getincrementalencoder�encoder"r%r)	r
r'r(rr)r*r+r,r-rrr�check_state_handling_encodeIs
z3MixInCheckStateHandling.check_state_handling_encodeN)rrrr.r1rrrrr2src@sveZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dZ
dd�ZdS)�ReadTestc
Cs9td�}tj|j�|�}d}x_t|j|j�|�D]B\}}|jt|g��||j�7}|j	||�qFW|j	|j�d�|j	|j
d�tj|j��}d}xUt|j|j�|�D]8\}}||jt|g��7}|j	||�q�W|j	|jdd�d�|j	|j
d�|j�d}xUt|j|j�|�D]8\}}||jt|g��7}|j	||�q�W|j	|jdd�d�|j	|j
d�|j|j�}	|j	|djtjdd�|	D�|j���dS)N��TcSsg|]}t|g��qSr)�bytes)�.0�crrr�
<listcomp>|s	z*ReadTest.check_partial.<locals>.<listcomp>)rr�	getreaderr'�zipr0rr5rr�
bytebufferr r!r�reset�join�
iterdecode)
r
rZpartialresults�q�r�resultr7Z
partialresultr*�encodedrrr�
check_partialTs6((
(zReadTest.check_partialcse�fdd��dd�fdd�}d}d}d}�j||d�|��j||d	�|��j||dd
�|��j||d	d
�|�d}g}g}xPt|�D]B\}}	|j|ddd|	�|j|ddd�q�W�j|dj|�d�dj|���j|dj|�d	�dj|��x�td�D]�}
x�|D]�}	d
|
d|	d}�|�}xTtd
�D]F}�j|jdd�|
d|	��j|jdd�d�q�W�|�}xPtd
�D]B}�j|jdd	�|
d��j|jdd	�d�qWq{WqnWdS)Ncs1tj|j�j��}tj�j�|�S)N)�io�BytesIOr0r'rr9)r�stream)r
rrr9�sz)ReadTest.test_readline.<locals>.getreaderTcsR�|�}g}x0|jd|d|�}|s4P|j|�qWdj|�S)Nr�keepends�|)�readline�appendr=)rrGr�reader�lines�line)r9rr�readalllines�sz,ReadTest.test_readline.<locals>.readalllinesufoo
bar
baz
spam
eggsufoo
|bar
|baz
|spam
|eggszfoo|bar|baz|spam|eggsF�
�
�
�
�
��uあr4rH�P�azxxx
rG�xxx)rPrQrRrS)r�	enumeraterJr=rrI)r
rNrZ	sexpectedZsexpectednoendsZlineendsZvwZvwor)ZlineendrrKr)r9r
r�
test_readlinesH
++
zReadTest.test_readlinecs�ddddg}dj|����fdd�}|�}�j|j�|d��j|j�dj|d	d����j|j�d�|�}�j|j�|d��j|j�|d	d���j|j�d�|�}�j|jd
ddd
��dd
���j|j��d
d���j|j�d�|�}�j|jd
dd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.r4cs1tj�j�j��}tj�j�|�S)N)rDrEr0r'rr9)rF)�datar
rrr9�sz8ReadTest.test_mixed_readline_and_read.<locals>.getreaderrrr�(r�)r=rrIr�	readlines)r
rLr9�fr)rZr
r�test_mixed_readline_and_read�s,		)	 	, 	,5z%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|||�qWdS)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                
r4)	rDrEr=r0r'rr9rXr)r
rrFrKr)rMrrr�test_bug1175396�s�	$zReadTest.test_bug1175396cCs�td�}tj|j�|�}tj|j�|�}|jd�|j|jdd�d�|jd�|j|jdd�d�|j|jdd�d�|jd	�|j|jdd�d	�|j|jdd�d�|jd�|j|jdd
�d�|jd�|j|jdd
�d�|j|jdd
�d�|jd	�|j|jdd
�d	�|j|jdd
�d�|jd
�|j|jdd
�d
�dS)Nr3zfoo
rGF�fooz
bar
r4ZbarZbazTrPzbar
zfoo
)rr�	getwriterr'r9rrrI)r
r?�writerrKrrr�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.
r4)r0r'rDrErr9rrI)r
�s1�s2�s3rrFrKrrr�test_bug1098990_a<szReadTest.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.
r4)r0r'rDrErr9rrI)	r
rerfrgZs4Zs5rrFrKrrr�test_bug1098990_bIs"zReadTest.test_bug1098990_bu�c	Csw|jtdj|j�|jdj|jd�dj|j��|jdj|jd�dj|j��|jdj|jd�dj|j��|jdj|jd�d	j|j��|jdj|jd
�dj|j��dj|j�}xndddgD]]\}}|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	|�dj
dd�|jD��}|j|j|jd�|||�qWdS)Nu�u[�]�backslashreplacez[\udc80]�namereplace�xmlcharrefreplacez
[&#56448;]�ignorez[]�replacez[?]r4�𐿿�A�[�]u��
surrogatepasscss|]}d|VqdS)z\x%02xNr)r6�brrr�	<genexpr>}sz0ReadTest.test_lone_surrogates.<locals>.<genexpr>)rorp)rqrr)rpro)�assertRaises�UnicodeEncodeErrorr0r'rr�ill_formed_sequence�UnicodeDecodeErrorr!�ill_formed_sequence_replacer=)	r
ZbomZbefore�afterZbefore_sequenceZafter_sequenceZtest_stringZ
test_sequencerjrrr�test_lone_surrogates\sD	""
zReadTest.test_lone_surrogatesN)rrrrCrYr_r`rdrhrirzr|rrrrr2Ss+;"E
r2c@s�eZdZdZejdkr*dZndZdZdZdd�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||jkp}||j	k�tj|�}||�}|j
|j�d�dS)N�spam�spamspam)r�lookupr'rDrEr�getvaluer&�spamle�spamberr)r
�_rKrcrr^r*rrr�test_only_one_bom�s

%zUTF32Test.test_only_one_bomcCsxtjd�}tj|j�|�}|jt|j�tjd�}tj|j�|�}|jt|j�dS)N�s��s����s��������)rDrErr9r'rv�UnicodeErrorr)r
rr^rrr�test_badbom�szUTF32Test.test_badbomcCs\|jdddddddddddddddddddddddddg�dS)NuÿĀ￿𐀀r4�uÿuÿĀuÿĀ￿)rC)r
rrr�test_partial�s4zUTF32Test.test_partialcCsB|jdtjddd��|jd	tjddd��dS)
N��rsrnTr4rm)r�r)r4r)rr�
utf_32_decode)r
rrr�
test_handlers�s		zUTF32Test.test_handlerscCs |jttjddd�dS)Ns��strictT)rvryrr�)r
rrr�test_errors�szUTF32Test.test_errorscCs6|j|jd|j�|j|jd|j�dS)Nr�)r.r'r�r�)r
rrr�test_decoder_state�s
zUTF32Test.test_decoder_statecCsbddd}|jddtj|�d�ddd}|jddtj|�d�dS)Ns��siu𐀀rs��s)rrr�)r
Z
encoded_leZ
encoded_berrr�test_issue8941�s

zUTF32Test.test_issue8941N)rrrr'�sys�	byteorderrxr�r�r�r�r�r�r�r�r�rrrrr}�s		r}c@sLeZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�UTF32LETestz	utf-32-les��cCsP|jdddddddddddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr��s,zUTF32LETest.test_partialcCs |jdj|j�d�dS)Nu𐈃s)rr0r')r
rrr�test_simpleszUTF32LETest.test_simplecCs |jttjddd�dS)Ns�r�T)rvryr�utf_32_le_decode)r
rrrr�szUTF32LETest.test_errorscCs/dd}|jddtj|�d�dS)Nsiu𐀀r)rrr�)r
rBrrrr�s

zUTF32LETest.test_issue8941N)	rrrr'rxr�r�r�r�rrrrr��sr�c@sLeZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�UTF32BETestz	utf-32-bes܀cCsP|jdddddddddddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr�s,zUTF32BETest.test_partialcCs |jdj|j�d�dS)Nu𐈃s)rr0r')r
rrrr�-szUTF32BETest.test_simplecCs |jttjddd�dS)Ns�r�T)rvryr�utf_32_be_decode)r
rrrr�0szUTF32BETest.test_errorscCs/dd}|jddtj|�d�dS)Nsiu𐀀r)rrr�)r
rBrrrr�4s

zUTF32BETest.test_issue8941N)	rrrr'rxr�r�r�r�rrrrr�sr�c@s�eZdZdZejdkr*dZndZdZdZdd�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||jkp}||j	k�tj|�}||�}|j
|j�d�dS)Nrr�)rr�r'rDrErr�r&r�r�rr)r
r�rKrcrr^r*rrrr�Fs

%zUTF16Test.test_only_one_bomcCsxtjd�}tj|j�|�}|jt|j�tjd�}tj|j�|�}|jt|j�dS)Ns��s����)rDrErr9r'rvr�r)r
rr^rrrr�UszUTF16Test.test_badbomcCs>|jdddddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr�^s zUTF16Test.test_partialcCsB|jdtjddd��|jd	tjddd��dS)
N��rsrnTr4rm)r�r)r4r)rr�
utf_16_decode)r
rrrr�ss		zUTF16Test.test_handlerscCs |jttjddd�dS)Ns�r�T)rvryrr�)r
rrrr�yszUTF16Test.test_errorscCs6|j|jd|j�|j|jd|j�dS)Nr�)r.r'r�r�)r
rrrr�}s
zUTF16Test.test_decoder_statecCs�d}|j|j�}|jtjtj�ttjd��}|j|�WdQRXtjdt	f��#t
jtjdd|j�}WdQRX|�|j|j�|�WdQRXdS)NzHello
world
�wbr4�Ur')
r0r'�
addCleanupr�unlink�TESTFN�openr�check_warnings�DeprecationWarningrrr)r
rer�fprKrrr�test_bug691291�s%zUTF16Test.test_bug691291N)rrrr'r�r�rxr�r�r�r�r�r�r�r�r�rrrrr�<s		r�c@s@eZdZdZdZdd�Zdd�Zdd�Zd	S)
�UTF16LETestz	utf-16-les��cCs8|jdddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr��szUTF16LETest.test_partialcCsndddddddg}xL|D]D\}}|jttj|dd
�|j|jdd�|�q"WdS)N�����AZ�A��	ABCDZ�ABCD�����A��A��A��Ar�Tzutf-16lern)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rvryr�utf_16_le_decoderr!)r
�tests�raw�expectedrrrr��s	
zUTF16LETest.test_errorscCs<|jdj|j�d�|jdj|j�d�dS)Nu𐈃s��)rr0r'r!)r
rrr�test_nonbmp�szUTF16LETest.test_nonbmpN)rrrr'rxr�r�r�rrrrr��s
r�c@s@eZdZdZdZdd�Zdd�Zdd�Zd	S)
�UTF16BETestz	utf-16-bes܀cCs8|jdddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr��szUTF16BETest.test_partialcCsndddddddg}xL|D]D\}}|jttj|dd
�|j|jdd�|�q"WdS)N�����A��A��	ABCDZ�ABCD��������A��A��Ar�Tzutf-16bern)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rvryr�utf_16_be_decoderr!)r
r�r�r�rrrr��s	
zUTF16BETest.test_errorscCs<|jdj|j�d�|jdj|j�d�dS)Nu𐈃s��)rr0r'r!)r
rrrr��szUTF16BETest.test_nonbmpN)rrrr'rxr�r�r�rrrrr��s
r�csXeZdZdZdZd
Zdd�Zdd�Z�fd	d
�Zdd�Z	�S)�UTF8Testzutf-8s�u��cCsA|jddddddddddddddddg�dS)Nuÿ߿ࠀ￿𐀀r�uÿuÿ߿uÿ߿ࠀuÿ߿ࠀ￿)rC)r
rrrr��s"zUTF8Test.test_partialcCs,d}|j|j||j|j��dS)Nu€ÿĀ߿ࠀ￿􏿿)r.r'r0)r
r(rrrr�szUTF8Test.test_decoder_statecs-t�j�|jdjdd�d�dS)Nu[�]zutf-8�surrogateescapes[�])�superr|rr0)r
)�	__class__rrr|
s
zUTF8Test.test_lone_surrogatescCs�|jdjdd�d�|jdjdd�d�|jdjdd�d�|jdjdd�d�|jtjd��|jt��djdd�WdQRX|jt��djdd�WdQRXdS)	Nu	abc�defzutf-8rss	abc�defu𐿿�s𐿿�sabc�sabc�z)rr0r!r&r�lookup_errorrvry)r
rrr�test_surrogatepass_handlersz#UTF8Test.test_surrogatepass_handleru	���)
rrrr'rxrzr�r�r|r�rr)r�rr��sr�zcp65001 is a Windows-only codecc@sjeZdZdZdd�Zdd�Zejed�dd��Z	ejed�d	d
��Z
dS)�CP65001Test�cp65001cCs�dddg}tr%|jd�n
|jd�x�|D]�\}}}|dk	r�y|jd|�}Wn?tk
r�}z|jd|||f�WYdd}~XnX|j||d||||f�q9|jt|jd|�q9WdS) N�abcr��abc�é€�é€�􏿿�􏿿��rmr3rn�?rj�\udc80rkrs��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�rmr3�r�rnr��r�rjr��r�rkr��r�rsr�)r�r�r�r�r�r�)r�r�r�)�VISTA_OR_LATER�extendrJr0rw�failrrv)r
r��text�errorsr�rB�errrrr�test_encode%s0	

	$	zCP65001Test.test_encodecCsdddddddd d!g	}tr7|jd%�n
|jd'�x�|D]�\}}}|dk	r�y|jd|�}Wn?tk
r�}z|jd|||f�WYdd}~XnX|j||d||||f�qK|jt|jd|�qKWdS)(N�abcr�r��é€�é€�􏿿�􏿿�����[é]�[é]�[�]rm�[]rn�[�]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�rmr�)r�rnr�)r�r�r��r�r�N�r�rmr��r�rnr�)r�r�r��r�r�r�)r�)r�r�r!ryr�rrv)r
r�r�r�r��decodedr�rrr�test_decodeDs8	
	$	zCP65001Test.test_decodezrequire Windows Vista or latercCs�|jtdjd�|jtdjd�|jdjdd�d�|jdjdd�d�|jdjdd�d	�|jdjdd
�d�|jdjdd�d
�|jdjdd�d�dS)Nu�r�s�u[�]rjs[\udc80]rkrls
[&#56448;]r�s[�]rms[]rns[?])rvrwr0ryr!r)r
rrrr|isz CP65001Test.test_lone_surrogatescCs�|jdjdd�d�|jdjdd�d�|jdjdd�d�|jdjdd�d�|jtjd��dS)Nu	abc�defr�rss	abc�defu𐿿�s𐿿�)rr0r!r&rr�)r
rrrr�zsz&CP65001Test.test_surrogatepass_handlerN)rrrr'r�r��unittest�
skipUnlessr�r|r�rrrrr� s
%r�c@sReZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�UTF7Testzutf-7cCs�d}|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 	

r4��+sX+AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	rr0r'r!r=�sorted�setr5r)r
Zset_dZset_oZwsZother_asciirrr�
test_ascii�s%%%%%%$zUTF7Test.test_asciic"Cst|jdddddddddddddddddd	d	d	d	d	d
ddddddddddg �dS)
Nua+-bc€dĀe𐀀frVza+za+-za+-bza+-bza+-bcua+-bc€u	a+-bc€dua+-bc€dĀua+-bc€dĀeua+-bc€dĀe𐀀)rC)r
rrrr��sDzUTF7Test.test_partialcCs�d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9g}xf|D]^\}}|jd!|��=|jttj|d"d#�|j|jd$d%�|�WdQRXqIWdS):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�br�r�Tzutf-7rn)rr)rr)r	r
)rr)r
r)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr )r!r )r"r#)r$r)�subTestrvryr�utf_7_decoderr!)r
r�r�r�rrr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)rr0r'r!)r
rrrr��szUTF7Test.test_nonbmpcCs~dddddddd d!d"d#d$d%g
}xJ|D]B\}}|jd|��!|j|jdd�|�WdQRXq4WdS)&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-br�zutf-7rn)r'r()r)r*)r+r,)r-r*)r.r*)r/r0)r1r2)r3r2)r4r2)r5r6)r7r8)r9r:)r;r8)r%rr!)r
r�r�r�rrrr|�s 	zUTF7Test.test_lone_surrogatesN)	rrrr'rr�r�r�r|rrrrr��s'r�c@s(eZdZdd�Zdd�ZdS)�UTF16ExTestcCs#|jttjdddd�dS)Ns�r�rT)rvryr�utf_16_ex_decode)r
rrrr�szUTF16ExTest.test_errorscCs|jttj�dS)N)rv�	TypeErrorrr=)r
rrr�
test_bad_argsszUTF16ExTest.test_bad_argsN)rrrr�r?rrrrr<sr<c@s4eZdZdd�Zdd�Zdd�ZdS)�ReadBufferTestcCs5ddl}|jtj|jdd��d�dS)Nrrt�spamr�)rAr�)�arrayrr�readbuffer_encode)r
rBrrr�
test_arrayszReadBufferTest.test_arraycCs|jtjd�d�dS)Nr4r3r)r3r)rrrC)r
rrr�
test_emptyszReadBufferTest.test_emptycCs-|jttj�|jttjd�dS)N�*)rvr>rrC)r
rrrr? szReadBufferTest.test_bad_argsN)rrrrDrEr?rrrrr@sr@c@sReZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�UTF8SigTestz	utf-8-sigcCsS|jddddddddddddddddddddddg�dS)	Nuÿ߿ࠀ￿𐀀r4uuuÿuÿ߿uÿ߿ࠀuÿ߿ࠀ￿)rC)r
rrrr�'s.zUTF8SigTest.test_partialcCs|jtdd�d�dS)Nsz	utf-8-sigr4)r�str)r
rrr�test_bug1601501CszUTF8SigTest.test_bug1601501cCs>tjd��}d}|j|j|jd��|�dS)Nz	utf-8-sigr)rr rr!r0)r
r*rrrr�test_bomGszUTF8SigTest.test_bomc	Cs�d}tjd}tjd�}x�dgttdd��dddd	d
gD]�}|tj|��}tj�}xB|dk	r�|j|�}n|j�}|s�P|j	|�q|W|j
�}|j||�qRWdS)NuABC¡∀XYZsABC¡∀XYZz	utf-8-sigr��@r�ii)r�BOM_UTF8r9�listrrDrE�StringIOrrr�r)	r
�	unistring�
bytestringrK�sizehint�istream�ostreamrZ�gotrrr�test_stream_bomLs 
zUTF8SigTest.test_stream_bomc	Cs�d}d}tjd�}x�dgttdd��dddd	d
gD]�}|tj|��}tj�}xB|dk	r�|j|�}n|j�}|s�P|j|�quW|j	�}|j
||�qKWdS)NuABC¡∀XYZsABC¡∀XYZz	utf-8-sigrrKrLrrMii)rr9rOrrDrErPrrr�r)	r
rQrRrKrSrTrUrZrVrrr�test_stream_barebs zUTF8SigTest.test_stream_bareN)	rrrr'r�rIrJrWrXrrrrrG$srGc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�EscapeDecodeTestcCs9|jtjd�d�|jtjt��d�dS)Nr3r)r3r)r3r)rr�
escape_decode�	bytearray)r
rrrrEyszEscapeDecodeTest.test_emptycCsctj}xStd�D]E}t|g�}|dkr|j||d�|ddf�qWdS)NrMs\�0�)rrZrr5r)r
r!rtrrr�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�|dd �|d!d"�|d#d �|d$d �|d%d%�|d&d"�xDtd'�D]6}|d(krCt|g�}|d)|d)|�qCWdS)*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[\8]s[\78]s[8]s[\41]s[!]s[\418]s[!8]s[\101]s[A]s[\1010]s[A0]s[\501]s[\x41]s[\X41]s[\x410]rMs
"'\abtnvfr01234567xs\)rrZrrr5)r
r!r
rtrrr�test_escape�s8	





















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]\xrm�[]rrn�[?]?s\x0s[\x0]s[\x0]\x0r�)r`r)rar)r`r�)rar�)rrZrv�
ValueErrorr)r
r!rrrr��s	zEscapeDecodeTest.test_errorsN)rrrrEr^r_r�rrrrrYxsrYc@seZdZdd�ZdS)�RecodingTestcCsLtj�}tj|dd�}|jd�|j�|j|j�dS)N�unicode_internalzutf-8rV)rDrEr�EncodedFiler�closer&�closed)r
r^�f2rrr�
test_recoding�s


zRecodingTest.test_recodingN)rrrrirrrrrc�srcu"ليهمابتكلموشعربي؟segbpdaj6bu4bxfgehfvwxnu他们为什么不说中文sihqwcrb4cv8a8dqg056pqjyeu他們爲什麽不說中文sihqwctvzc91f659drss3x8bo0ybuPročprostěnemluvíčeskysProprostnemluvesky-uyb24dma41au,למההםפשוטלאמדבריםעבריתs4dbcagdahymbxekheh6e0a7fei0buZयहलोगहिन्दीक्योंनहींबोलसकतेहैंs,i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cdu6なぜみんな日本語を話してくれないのかs&n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxauH세계의모든사람들이한국어를이해한다면얼마나좋을까sE989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98cu8почемужеонинеговорятпорусскиs b1abfaaepdrnnbgefbaDotcwatmq2g4lu*PorquénopuedensimplementehablarenEspañols-PorqunopuedensimplementehablarenEspaol-fmd56au-TạisaohọkhôngthểchỉnóitiếngViệts,TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9gu3年B組金八先生s3B-ww4c5e180e575a65lsy2bu"安室奈美恵-with-SUPER-MONKEYSs(-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9nu'Hello-Another-Way-それぞれの場所s(Hello-Another-Way--fc4qua05auwb3674vfr0buひとつ屋根の下2s2-u9tlzr9756bt3uc0vuMajiでKoiする5秒前sMajiKoi5-783gue6qz075azm5euパフィーdeルンバsde-jg4avhby1noc0duそのスピードでsd9juau41awczczpz-> $1.00 <-s-> $1.00 <--r]c@s(eZdZdd�Zdd�ZdS)�PunycodeTestcCsRxKtD]C\}}|jt|jd�d�j�t|d�j��qWdS)N�punycoder�)�punycode_testcasesrrHr0�lower)r
�uni�punyrrrr�%szPunycodeTest.test_encodecCsex^tD]V\}}|j||jd��|jd�jd�}|j||jd��qWdS)Nrkr�)rlrr!r0)r
rnrorrrr�1szPunycodeTest.test_decodeN)rrrr�r�rrrrrj$srjc@s�eZdZejedkd�dd��Zejedkd�dd��Zejedkd�dd��Zd	d
�Z	dS)�UnicodeInternalTestr�zspecific to 32-bit wchar_tcCs�dddg}ddd	d
dg}xb|D]Z\}}tjdkrXtt|��}tj��|j||jd
��WdQRXq+Wxb|D]Z}tjdkr�tt|��}tjdtf��|j	t
|jd
�WdQRXq�Wtjdkrd}d}nd}d}tj��|j	t
|jd
�WdQRXtj��!|j|jd
d�d�WdQRXtj��!|j|jd
d�|�WdQRXdS)N����􏿿��ār3r4s���s�s�ssr~rdz*unicode_internal codec has been deprecatedsz\x00\x00\x11\x00sz\x00\x11\x00\x00rnu�rj)rqrr)rsrt)r3r4)r�r�r5�reversedrr�rr!r�rvry)r
�okZnot_okZinternalrnZinvalidZinvalid_backslashreplacerrr�test_bug12513008sD		
$
	
	
	

z#UnicodeInternalTest.test_bug1251300cCs�y.tjdtf��djd�WdQRXWnqtk
r�}zQ|jd|j�|jd|j�|jd|j�|jd|j	�WYdd}~XnX|j
�dS)Nz*unicode_internal codec has been deprecatedsrdr�r�)rr�r�r!ryrr'�object�start�endr�)r
Zexrrr�test_decode_error_attributesds	
&z0UnicodeInternalTest.test_decode_error_attributescCs�tjdtj�tjd�}tjdtf��Pdjd�j�}|t	d|dd�|dd�fd�d�}WdQRX|j
d	|�dS)
Nrprdz*unicode_internal codec has been deprecated�abz%s""""%sr�r��)r|r})r�register_error�
ignore_errors�
getdecoderrr�r�r0r!r5r)r
�decoderr|Zignoredrrr�test_decode_callbackrs	
'z(UnicodeInternalTest.test_decode_callbackc
Cs�tjdtf��etjd�}|j|d�dd�|j|d�dd�|jtjd�dd�WdQRXdS)	Nz*unicode_internal codec has been deprecatedrdrVruéłr]s\x00r�)rr�r�r�
getencoderr�
escape_encode)r
�encoderrrr�test_encode_length~s	
z&UnicodeInternalTest.test_encode_lengthN)
rrrr�r��SIZEOF_WCHAR_Trwr{r�r�rrrrrp7s$,$$rps%foo­͏᠆᠋bar​⁠baz︀︈️s	foobarbazsCAFEscafesßssssİsi̇sŃͺsń ιsǰ ªsǰ asᾷsᾶιsǰsΐsΰsẖsὖ� s s s s​r3s ss…s᠎ss𝅵ss󱈴s􏈴s򏿾s􏿿s�s�s⿵śśs‎s‪s󠀁s󠁂sfoo־bars	fooﵐbars	fooﹶbars	foo َbarsا1sا1بsX­ßİ℡ǰ ªΰ sxssi̇telǰ aΰ sXß㌖İ℡⒟㌀s*xssキロメートルi̇tel(d)アパートc@seZdZdd�ZdS)�NameprepTestcCs�ddlm}x�tt�D]�\}\}}|dkr>qt|dd�}|dkrr|jt||�qt|dd�}y|j||�|�Wqtk
r�}z(t	j
d|dt|�f��WYdd}~XqXqWdS)Nr)�nameprepzutf-8rsz
Test 3.%d: %sr)Zencodings.idnar�rX�nameprep_testsrHrvr�r�	ExceptionrZ
TestFailed)r
r��posZorigZprepped�errr�
test_nameprep#szNameprepTest.test_nameprepN)rrrr�rrrrr�"sr�c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�
IDNACodecTestcCsh|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.)rrH)r
rrr�test_builtin_decode6sz!IDNACodecTest.test_builtin_decodecCsh|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.)rr0)r
rrr�test_builtin_encode<sz!IDNACodecTest.test_builtin_encodecCsEtjd�tjd��}|jd�|j|j�d�dS)Nr�sabcr�r4)rr9rDrErr)r
r@rrr�test_streamBs
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)Nr4css|]}t|g�VqdS)N)r5)r6r7rrrruIsz8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>s
python.orgr�z
python.orgcss|]}t|g�VqdS)N)r5)r6r7rrrruMsspython.org.zpython.org.css|]}t|g�VqdS)N)r5)r6r7rrrruQssxn--pythn-mua.org.upythön.org.css|]}t|g�VqdS)N)r5)r6r7rrrruUssxn--xams	ple-9ta.ou	äxample.srgr3TZorgsrg.zorg.)rr=rr>r r!r<)r
r�rrr�test_incremental_decodeGs,%%%%
z%IDNACodecTest.test_incremental_decodecCsP|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)Nr3z
python.orgr�s
python.orgzpython.org.spython.org.upythön.org.sxn--pythn-mua.org.uäxz	ample.orgsxn--xample-9ta.r4Tsorgz
ample.org.sxn--xample-9ta.org.)rr=r�
iterencoder/r0r<)r
r�rrr�test_incremental_encodees(
z%IDNACodecTest.test_incremental_encodecCsgdjdd�djdd�x@d
D]8}|jtdjd|�|jtdjd|�q'Wd	S)z$Only supports "strict" error handlerz
python.orgr�r�s
python.orgrmrnrjr�N)rmrnrjr�)r0r!rvr�)r
r�rrrr��s
	zIDNACodecTest.test_errorsN)	rrrr�r�r�r�r�r�rrrrr�5sr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�CodecsModuleTestcCs�|jtjdd�d�|jttj�|jtjd�d�|jttjdd�|jtjddd	d�d�|jtjd
ddd�d
�dS)Ns�zlatin-1uäöüsabcr�s�r��objr's[�]r�rmz[])rrr!rvr>ry)r
rrrr��szCodecsModuleTest.test_decodecCs�|jtjdd�d�|jttj�|jttjdd�|jtjd�d�|jttjdd	�|jtjd
ddd�d�|jtjdd	d
d�d�dS)Nuäöüzlatin-1s�ra�__spam__r�sabcuÿffr�r�r'u[ÿ]r�rms[])rrr0rvr>�LookupErrorrw)r
rrrr��szCodecsModuleTest.test_encodecCs-|jttj�|jttjd�dS)NrF)rvr>r�register)r
rrr�
test_register�szCodecsModuleTest.test_registercCsC|jttj�|jttjd�|jttjd�dS)Nr�� )rvr>rr�r�)r
rrr�test_lookup�szCodecsModuleTest.test_lookupcCs-|jttj�|jttjd�dS)Nr�)rvr>rr�r�)r
rrr�test_getencoder�sz CodecsModuleTest.test_getencodercCs-|jttj�|jttjd�dS)Nr�)rvr>rr�r�)r
rrr�test_getdecoder�sz CodecsModuleTest.test_getdecodercCs-|jttj�|jttjd�dS)Nr�)rvr>rr9r�)r
rrr�test_getreader�szCodecsModuleTest.test_getreadercCs-|jttj�|jttjd�dS)Nr�)rvr>rrbr�)r
rrr�test_getwriter�szCodecsModuleTest.test_getwritercCs�tjtj�}|jtjtj|�ytjtjd�Wn"tjk
rf|jd�YnXtjd�}|j|j	d�dS)NZtr_TRztest needs Turkish locale�ASCIIr�)
�locale�	setlocale�LC_CTYPEr��ErrorZskipTestrr�r�name)r
Z	oldlocaler7rrr�test_lookup_issue1813�sz&CodecsModuleTest.test_lookup_issue1813c,Cs>d-}|j|tj�xtjD]}tt|�q#WdS).Nr0r!r��	CodecInfo�Codec�IncrementalEncoder�IncrementalDecoder�StreamReader�StreamWriterr�r�r�r/r r9rbr~r��
strict_errors�replace_errorsr�xmlcharrefreplace_errors�backslashreplace_errors�namereplace_errorsr�rer�r>�BOM�BOM_BE�BOM_LErN�	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),r0r!r�r�r�r�r�r�r�r�r�r�r/r r9rbr~r�r�r�rr�r�r�r�rer�r>r�r�r�rNr�r�r�r�r�r�r�r�r�r�r�r�)ZassertCountEqualr�__all__�getattr)r
Zapirrr�test_all�s&zCodecsModuleTest.test_allcCsw|jtjtj�xZdD]R}|j|��:tjtj|d��}|j|tj�WdQRXWdQRXqWdS)	N�wr@�r+�w+rV�a+r�)r�r@r�r�rVr�)	r�rr�r�r%rr�r#r�)r
�mode�filerrr�	test_open�s

zCodecsModuleTest.test_opencCs�|jttjdd�|jttjdd�|jttjdd�|jttjdd�xFd
D]>}|jttjdd|�|jttjdd|�qkWdS)Nr�Z	undefinedsabcr4r3r�rmrnrj)r�rmrnrj)rvr�rr0r!)r
r�rrr�test_undefined�s
		zCodecsModuleTest.test_undefinedN)rrrr�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s

r�c@s(eZdZdd�Zdd�ZdS)�StreamReaderTestcCs(tjd�|_tjd�|_dS)Nzutf-8s한
글)rr9rKrDrErF)r
rrr�setUp�szStreamReaderTest.setUpcCs2|j|j�}|j|j�ddg�dS)Nu한
u글)rKrFrr])r
r^rrr�test_readlines�szStreamReaderTest.test_readlinesN)rrrr�r�rrrrr��sr�c@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üs�)rDrErrerrrr�)r
r^�efrrr�
test_basics
zEncodedFileTest.test_basicN)rrrr�rrrrr�sr�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�ptcp154rkZraw_unicode_escape�	shift_jis�shift_jis_2004�shift_jisx0213�tis_620Zunicode_escaperd�utf_16�	utf_16_be�	utf_16_le�utf_7�utf_8Zmbcs_encode�mbcsc@smeZdZdd�Zejdd��Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�ZdS)�BasicUnicodeTestcsd}x�tD]�}tj|�j}|jd�rA|d7}n|dkrSd}|j|jdd�|jdd��tj��otj	|�|�\}}|j|t
|�d|�tj|�|�\}}|j||d|�WdQRX|tkr�t
d�}tj|�|�}d}	xS|D]K}
|j|
�|j�}|jt|�tkt|��|	|7}	q3Wt
d�}tj|�|�}d}
x4|	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_codecrr��-zencoding=%rr3r4Tr�r-rmc3s|]}�j|�VqdS)N)r0)r6r7)r�rrru�sz/BasicUnicodeTest.test_basics.<locals>.<genexpr>c3s'|]}�jt|g��VqdS)N)r!r5)r6r7)r�rrru�s)r�r-)�all_unicode_encodingsrr�r��endswithrrnrr�r�rr��broken_unicode_with_statefulrrbrrr&�typer5r9r/r�r0r r!r=r>r�)r
rr'r�rtrrr?rc�
encodedresultr7�chunkrK�
decodedresultrAr)r�r�r�test_basics�s|

(


"



 
"
zBasicUnicodeTest.test_basicscs�ddlm}m}d}x�tD]�}|tkr#y||��Wntk
rYYn�Xd}x!|D]}|�j|�7}qgW|�jdd�7}||��d}x*|D]"}|�jt|g��7}q�W|�jdd�7}|j	||d|�|dkr#y||d
��Wntk
r9Yq#Xdj
�fdd�|D��}||d
��dj
�fd
d�|D��}|j	||d|�q#WdS)Nr)�codec_incrementalencoder�codec_incrementaldecoderr/r3r4Tzencoding=%rr�r-rmc3s|]}�j|�VqdS)N)r0)r6r7)�cencoderrrru�sz4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>c3s'|]}�jt|g��VqdS)N)r!r5)r6r7)�cdecoderrrru�s)r�r-)Z	_testcapir9r:r1r3r�r0r!r5rr=)r
r9r:rr'r5r7r7r)r<r;r�test_basics_capi�s<



 
"
z!BasicUnicodeTest.test_basics_capicCs�dddddf}x�tD]�}|dkr4q|tkrCqtj|�tj|j|���}x@td�D]2}|jdd�|j	�}|j
||�qwWqWdS)Nz%s
%s
�dr/Zdef456r�r\r)r1r3rr9rDrEr0r�seekrr)r
rr'rK�trZrrr�	test_seek�s
'zBasicUnicodeTest.test_seekcCsSxLtD]D}tj|�}|jt|�|dkr|jt|d�qWdS)Nr�rkrF)r�rk)r1rr�rvr>)r
r'r�rrr�test_bad_decode_args	s

z%BasicUnicodeTest.test_bad_decode_argscCsHxAtD]9}tj|�}tj��|jt|�WdQRXqWdS)N)r1rr�rr�rvr>)r
r'r�rrr�test_bad_encode_argss

z%BasicUnicodeTest.test_bad_encode_argscCs3ddlm}t|j�}|j||�dS)Nr)r�)�	encodingsr�r4Zencoding_tabler)r
r�Z
table_typerrr�"test_encoding_map_type_initializedsz3BasicUnicodeTest.test_encoding_map_type_initializedcCs_d}xRtD]J}|tkr
|j|||j|��|j|||j|��q
WdS)Nr/)r1r3r.r0r1)r
r(r'rrrr�s

z#BasicUnicodeTest.test_decoder_stateN)rrrr8rZcpython_onlyr=rArBrCrEr�rrrrr.�sO'r.c@s4eZdZdd�Zdd�Zdd�ZdS)�CharmapTestcCsq|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￾rn�ab�rj�ab\x02rmrMr4)r�r�)rGr�)rHr�)rHr�)rIr�)rIr�)r|r�)r|r�)rr�charmap_decodervryr5rr)r
�allbytesrrr�test_decode_with_string_map&s@		z'CharmapTest.test_decode_with_string_mapcCs0|jtjddddddddi�d�|jtjdddddddd
i�d�|jtjddddddddi�d�|jtjddddddddi�d�|jttjddddddi�|jttjddddddddi�|jttjddddddddi�|jtjddddddi�d�|jtjddddddddi�d�|jtjddddddddi�d �|jtjddddddi�d!�|jtjddddddddi�d"�|jtjddddddddi�d#�|jtjddddddi�d$�|jtjddddddddi�d%�|jtjddddddddi�d&�ttd��}|jtj|di�dt|�f�dS)'Nsr�rrVrrtr]r7r�r�ZAaZBbZCc�AaBbCcu􏿿�􏿿bcr4r|u￾rn�ab�rj�ab\x02rmrM)r�r�)rMr�)rNr�)r|r�)rOr�)rOr�)rOr�)rPr�)rPr�)rPr�)r|r�)r|r�)r|r�)rrrJrvryr5rr)r
rKrrr�test_decode_with_int2str_map]s�			z(CharmapTest.test_decode_with_int2str_mapcCsptd�}td�}td�}|jtjddd|d|d|i�d�|jtjddddd|d|i�d�|jtjdddtjd|d|i�ttj�d
d
f�|jttjdddtjdd|d|i�|jt	tjddd|d|i�|jt	tjddd|d|ddi�|jtjddd|d|i�d�|jtjddd|d|ddi�d�|jtjddd|d|i�d�|jtjddd|d|ddi�d�|jtjddd|d|i�d�|jtjddd|d|ddi�d�dS)NrVrtr7sr�rrr]r�r�i���􏿿bcZbci��rn�ab�rj�ab\x02rmr|)r�r�)rRr�)rSr�)rSr�)rTr�)rTr�)r|r�)r|r�)
�ordrrrJr��
maxunicode�chrrvr>ry)r
rVrtr7rrr�test_decode_with_int2int_map�s`	 		z(CharmapTest.test_decode_with_int2int_mapN)rrrrLrQrXrrrrrF%s7hrFc@s(eZdZdd�Zdd�ZdS)�WithStmtTestc
CsXtjd�}tj|dd��}|j|j�d�WdQRX|j|j�dS)Nsüzlatin-1zutf-8s�)rDrErrerrr&rg)r
r^r�rrr�test_encodedfile	szWithStmtTest.test_encodedfilec
Cs`tjd�}tjd�}tj||j|jd��}|j|j�d�WdQRXdS)Nsüzutf-8r��ü)	rDrErr�r��streamreader�streamwriterrr)r
r^�info�srwrrr�test_streamreaderwriter	s
z$WithStmtTest.test_streamreaderwriterN)rrrrZr`rrrrrY	srYc@s(eZdZdd�Zdd�ZdS)�	TypesTestcCs�tjtjtjtjtjtjtjtjtj	tj
tjtjg}t
td�rm|jtj�x!|D]}|jt|d�qtWdS)N�mbcs_decoderW)rr&�utf_8_decoder�r�r=r�r�r��utf_32_ex_decode�latin_1_decode�ascii_decoderJ�hasattrrJrbrvr>)r
Zdecodersr�rrr�test_decode_unicode 	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�ሴrs\u1234s
\U00110000z
\U00110000rn��rOrj�(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30)rir)rir)rir)rir)rjrO)rkrO)rjrO)rkrO)rr�unicode_escape_decode�raw_unicode_escape_decodervry)r
rrr�test_unicode_escape5	szTypesTest.test_unicode_escapeN)rrrrhrnrrrrra	srac@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�UnicodeEscapeTestcCs6|jtjd�d�|jtjd�d�dS)Nr4r3r)r3r)r4r)rr�unicode_escape_encoderl)r
rrrrEI	szUnicodeEscapeTest.test_emptycCs^tj}xNtdd�D]=}|dkr|j|t|��t|g�df�qWdS)N� �s\rr�\)rrprrrWr5)r
r0rtrrr�test_raw_encodeM	s	z!UnicodeEscapeTest.test_raw_encodecCsctj}xStd�D]E}|dkr|j|t|g�d�t|�ddf�qWdS)NrMs\rr\�0r]rs)rrlrrr5rW)r
r!rtrrr�test_raw_decodeS	s	z!UnicodeEscapeTest.test_raw_decodecCs�tj}t||�}|dd�|dd�|dd�|dd�xCtd	�D]5}t|�d
krY|t|�d|j��qYWx4tdd
�D]#}|t|�d|j��q�W|dd�|dd�dS)N�	s\trPs\nrRs\r�\s\\rqz	

z\x%02xrrrMu€s\u20acu𝄠s
\U0001d120)rrprrrWr0)r
r0r
rtrrr�test_escape_encodeY	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'�|d(d)�xDtd*�D]6}|d+krC|d,t|g�d-t|��qCWdS).Ns[\
]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[\8]z[\8]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𝄠rMs
"'\abtnvfr01234567xuUNs\rx)rrlrrr5rW)r
r!r
rtrrr�test_escape_decodeh	s6	





















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�q)WqW|jt|d�|j|dd�d�|j|dd
�d�dS)N�xr]�ur��Us\r\s[\�]s]\rmz[]rnu[�]�s
\U00110000r4rO���r{r]�r|r��r}r�)r�r�r�)r4rO)rrO)rrlrrvryrr)r
r!r7r*r)rZrrr�test_decode_errors�	s	"%z$UnicodeEscapeTest.test_decode_errorsN)	rrrrErtrvryrzr�rrrrroH	sroc@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�RawUnicodeEscapeTestcCs6|jtjd�d�|jtjd�d�dS)Nr4r3r)r3r)r4r)rr�raw_unicode_escape_encoderm)r
rrrrE�	szRawUnicodeEscapeTest.test_emptycCsOtj}x?td�D]1}|j|t|��t|g�df�qWdS)NrMr)rr�rrrWr5)r
r0rtrrrrt�	s	z$RawUnicodeEscapeTest.test_raw_encodecCsWtj}xGtd�D]9}|j|t|g�d�t|�ddf�qWdS)NrMr\rur])rrmrrr5rW)r
r!rtrrrrv�	s	z$RawUnicodeEscapeTest.test_raw_decodecCs}tj}t||�}xDtd�D]6}|dkr%|dt|�dt|g��q%W|dd�|dd�dS)	NrMsuUrxs\u€s\u20acu𝄠s
\U0001d120)rr�rrrWr5)r
r0r
rtrrrry�	s	(
z'RawUnicodeEscapeTest.test_escape_encodecCs}tj}t||�}xDtd�D]6}|dkr%|dt|g�dt|��q%W|dd�|dd�dS)	NrMsuUs\rxs\u20acu€s
\U0001d120u𝄠)rrmrrr5rW)r
r!r
rtrrrrz�	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�q)WqW|jt|d
�|j|d
d	�d�|j|d
d�d�dS)Nr|r�r}s\r\s[\r~s]\rmz[]rnu[�]�s
\U00110000r4rO���r|r��r}r�)r�r�)r4rO)r�rO)rrmrrvryrr)r
r!r7r*r)rZrrrr��	s	"%z'RawUnicodeEscapeTest.test_decode_errorsN)	rrrrErtrvryrzr�rrrrr��	s		r�c@seZdZdd�ZdS)�EscapeEncodeTestcCs�dddddd!d#d%g}xG|D]?\}}|jd|��|jtj|�|�WdQRXq%W|jttjd�|jttjtd��dS)&Nr3r�foobarr�	spameggs�spam\x00eggs�	�a'b�a\'br��b\c�b\\c�c
d�c\nd�d
e�d\re�fg�f\x7fgrZrsspam�r3r)r3r��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�rvr>r[)r
r�rZ�outputrrrry�	s	$z#EscapeEncodeTest.test_escape_encodeN)rrrryrrrrr��	sr�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	���)rr!r0)r
rrr�	test_utf8�	szSurrogateEscapeTest.test_utf8cCs<|jdjdd�d�|jdjdd�d�dS)Nsfoo�barr�r�u	foo�bar)rr!r0)r
rrrr�	szSurrogateEscapeTest.test_asciicCs<|jdjdd�d�|jdjdd�d�dS)Nsfoo�barz
iso-8859-3r�u	foo�bar)rr!r0)r
rrr�test_charmap�	sz SurrogateEscapeTest.test_charmapcCs |jdjdd�d�dS)Nu�����zlatin-1r�s���)rr0)r
rrr�test_latin1�	szSurrogateEscapeTest.test_latin1N)rrrr�rr�r�rrrrr��	sr�c@seZdZdd�ZdS)�BomTestc(Cs�d}d}|jtjtj�x�|D]�}tjtjdd	|��o}|j|�|j|�|jd
�|j|j	�|d�|jd
�|j|j	�|d�WdQRXtjtjdd	|��k}|j|d
�|j
|j�d
�|jd
�|j|�|jd
�|j|j	�|�WdQRXtjtjdd	|��w}|jj|d
�|j
|jj�d
�|jjd
�|jj|�|jd
�|j|j	�|�WdQRXtjtjdd	|��[}|j|�|j|j��|j|�|jd
�|j|j	�|d�WdQRXtjtjdd	|��g}|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'rr])r�r�r�r�r�r�)
r�rr�r�rr�rr?rrZassertNotEqual�tellrc)r
rZr�r'r^rrr�
test_seek0�	sT




!






!
zBomTest.test_seek0N)rrrr�rrrrr��	sr��base64_codec�uu_codec�quopri_codec�	hex_codec�base64�base_64�uu�quopri�quoted_printable�quotedprintable�hex�rot_13�rot13�
zlib_codecr:�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��}x�tD]�}|jd|��wtj|�|�\}}|j|t|��tj|�|�\}}|j|t|��|j||�WdQRXqWdS)NrMr')	r5r�bytes_transform_encodingsr%rr�rrr�)r
Zbinputr'�orr)rrrr8W
s
zTransformCodecTest.test_basicscCs{xttD]l}|jd|��Qtjd|�}tj|�tj|��}|j�}|j|d�WdQRXqWdS)Nr's�)	r�r%rr0r9rDrErr)r
r'�sinrK�soutrrr�	test_readb
s
zTransformCodecTest.test_readcCs{xttD]l}|jd|��Qtjd|�}tj|�tj|��}|j�}|j|d�WdQRXqWdS)Nr's�)	r�r%rr0r9rDrErIr)r
r'r�rKr�rrrrYj
s
z TransformCodecTest.test_readlinecCs�d}x�tD]�}|jd|���|}t|�}tj||�}tj||�}|j||�t|�}tj||�}|j||�tj||�}|j||�WdQRXq
WdS)Ns12345�r')r�r%�
memoryviewrr0rr!)r
Zoriginalr'rZZviewZview_encodedZview_decodedrrr�test_buffer_api_usager
s
z(TransformCodecTest.test_buffer_api_usagecCs�d}xytD]q}|jd|��Vd}|j|�}|jt|��}|j|�WdQRX|j|jj�WdQRXq
WdS)Nzbad input typer'zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	r�r%�format�assertRaisesRegexr�r0�assertIsNone�	exception�	__cause__)r
�	bad_inputr'�fmt�msg�failurerrr�0test_text_to_binary_blacklists_binary_transforms�
s
zCTransformCodecTest.test_text_to_binary_blacklists_binary_transformsc	Cs1d}|jt|��djd�WdQRXdS)NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager�)r�r�r0)r
r�rrr�.test_text_to_binary_blacklists_text_transforms�
szATransformCodecTest.test_text_to_binary_blacklists_text_transformscCs�d}x�tD]�}|jd|���tj||�}d}|j|�}|jt|��|j|�WdQRX|jt|��t|�j|�WdQRXWdQRXq
WdS)Ns6encode first to ensure we meet any format restrictionsr'zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	r�r%rr0r�r�r�r!r[)r
rZr'Zencoded_datar�r�rrr�0test_binary_to_text_blacklists_binary_transforms�
s
zCTransformCodecTest.test_binary_to_text_blacklists_binary_transformscCs}xvdtd�fD]b}|jd|��Gd}|jt|��}|jd�WdQRX|j|jj�WdQRXqWdS)Ns	immutablesmutabler�zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr�)r[r%r�r�r!r�r�r�)r
r�r�r�rrr�.test_binary_to_text_blacklists_text_transforms�
szATransformCodecTest.test_binary_to_text_blacklists_text_transformszRequires zlib supportcCsUd}|jt|��}tjdd�WdQRX|j|jjt|j��dS)Nz(^decoding with 'zlib_codec' codec failedshellor�)r�r�rr!r#r�r�r4)r
r�r�rrr�!test_custom_zlib_error_is_wrapped�
s
z4TransformCodecTest.test_custom_zlib_error_is_wrappedcCsUd}|jt|��}tjdd�WdQRX|j|jjt|j��dS)Nz'^decoding with 'hex_codec' codec failedshellor�)r�r�rr!r#r�r�r4)r
r�r�rrr� test_custom_hex_error_is_wrapped�
s
z3TransformCodecTest.test_custom_hex_error_is_wrappedcCs�xytj�D]k\}}tj|�j}xJ|D]B}|jd|��'tj|�}|j|j|�WdQRXq2Wq
WdS)N�alias)�transform_aliases�itemsrr�r�r%r)r
�
codec_name�aliasesZ
expected_namer�r^rrr�test_aliases�
s
zTransformCodecTest.test_aliasescCsHtjdd�}|j|d�d}|jtj|d�|�dS)Nsspace tab	eol 
zquopri-codecsspace=20tab=09eol=20
sspace tab eol
)rr0rr!)r
rBZ	unescapedrrr�test_quopri_stateless�
sz(TransformCodecTest.test_quopri_statelesscCs|jttjdd�dS)Nr3zuu-codec)rvrbrr!)r
rrr�test_uu_invalid�
sz"TransformCodecTest.test_uu_invalidN)rrrr8r�rYr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�U
s
	r�cCs
tj|�S)N)�_TEST_CODECS�get)r�rrr�_get_test_codec�
sr�)�
_forget_codeccCsdS)Nr)r�rrrr��
sr�c@s�eZdZdd�Zdd�Zdd�Zejdd��Zd	d
�Z	e
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&�ExceptionChainingTestcCsAt|�tt|��}tj|�j�|_t|_dS)N)	�reprrH�idrD�normalize_encodingrmr��RuntimeError�obj_to_raise)r
Z	unique_idrrrr��
s		zExceptionChainingTest.setUpcCsStj|jd�tjj|jd�yt|j�Wntk
rNYnXdS)N)r��popr�rD�_cacher��KeyError)r
rrr�tearDowns
zExceptionChainingTest.tearDowncCs,tj||d|j�}|t|j<dS)Nr�)rr�r�r�)r
r0r!Z
codec_inforrr�	set_codecszExceptionChainingTest.set_codecc
csodj||j|j|�}|j||��}|VWdQRX|j|jj|�|j|jjj�dS)Nz${} with {!r} codec failed \({}: {}\))	r�r�rr�r#r�r�ZassertIsNotNone�
__traceback__)r
Z	operation�exc_typer�Zfull_msgZcaughtrrr�
assertWrappedsz#ExceptionChainingTest.assertWrappedcOs
|j�dS)N)r�)r
�args�kwdsrrr�	raise_objszExceptionChainingTest.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)r�r�r�r�r0r�rr!)r
r�r�r�rrr�
check_wrapped"s	z#ExceptionChainingTest.check_wrappedcCs|jtd�dS)Nr4)r�r�)r
rrr�test_raise_by_type.sz(ExceptionChainingTest.test_raise_by_typecCs d}|jt|�|�dS)NzThis should be wrapped)r�r�)r
r�rrr�test_raise_by_value1sz)ExceptionChainingTest.test_raise_by_valuecCs9d}Gdd�dt�}|j||�||�dS)NzThis should be wrappedc@seZdZfZdS)zWExceptionChainingTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrorN)rrr�	__slots__rrrr�MyRuntimeError7sr�)r�r�)r
r�r�rrr�)test_raise_grandchild_subclass_exact_size5sz?ExceptionChainingTest.test_raise_grandchild_subclass_exact_sizecCs9d}Gdd�dt�}|j||�||�dS)NzThis should be wrappedc@seZdZdS)zVExceptionChainingTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)rrrrrrrr�=sr�)r�r�)r
r�r�rrr�(test_raise_subclass_with_weakref_support;sz>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)r�r�)r�rrr�Bsz:ExceptionChainingTest.check_not_wrapped.<locals>.raise_objz	str inputsbytes input)r�r�r�r0r�rr!)r
r�r�r�r)r�r�check_not_wrappedAsz'ExceptionChainingTest.check_not_wrappedcCs*Gdd�dt�}|j|d�dS)Nc@seZdZdd�ZdS)zKExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInitcSsdS)Nr)r
rrrrPszTExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInit.__init__N)rrrrrrrr�
CustomInitOsr�r4)r�r�)r
r�rrr�!test_init_override_is_not_wrappedNsz7ExceptionChainingTest.test_init_override_is_not_wrappedcCs*Gdd�dt�}|j|d�dS)Ncs"eZdZ�fdd�Z�S)zIExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNewcst�j|�S)N)r��__new__)�cls)r�rrr�VszQExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNew.__new__)rrrr�rr)r�r�	CustomNewUsrr4)r�r�)r
rrrr� test_new_override_is_not_wrappedTsz6ExceptionChainingTest.test_new_override_is_not_wrappedcCs8d}t|�}d|_|j|dj|��dS)NzThis should NOT be wrappedrz^{}$)r��attrr�r�)r
r��excrrr�&test_instance_attribute_is_not_wrappedZs	z<ExceptionChainingTest.test_instance_attribute_is_not_wrappedcCs|jtd�d�dS)Nr�1)r�r�)r
rrr�test_non_str_arg_is_not_wrapped`sz5ExceptionChainingTest.test_non_str_arg_is_not_wrappedcCs&d}|jtddd�|�dS)Nz^\('a', 'b', 'c'\)$rVrtr7)r�r�)r
Zmsg_rerrr�!test_multiple_args_is_not_wrappedcsz7ExceptionChainingTest.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)r�r�r�r�r0rr!)r
r�rrr�%test_codec_lookup_failure_not_wrappedhsz;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)r	rr)r�r�rrr�
encode_to_strzszSExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_strc_sdS)N�not str!r)rrr)r�r�rrr�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)	r�rr0r�rr!r�r�r>)r
r
rrBr�r�r�rrr�&test_unflagged_non_text_codec_handlingtsz<ExceptionChainingTest.test_unflagged_non_text_codec_handlingN)rrrr�r�r��
contextlib�contextmanagerr�r�r�r�r�r�r�r�r�r�rrrrrr
rrrrr��
s$		
r�z"code pages are specific to Windowsc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)�CodePageTesti�cCsh|jttjdd�|jttjdd�|jttjdd�|jttjdd�dS)NrrV�a�{rr)rvrbr�code_page_encode�code_page_decode�OSError)r
rrr�test_invalid_code_page�sz#CodePageTest.test_invalid_code_pagecCsg|jtdtjdd�|jtdtjdddd�|jtdtj|jddd�dS)	Nr�i��ÿs�r�T�CP_UTF8s�)r�rwrrryrr)r
rrr�test_code_page_name�sz CodePageTest.test_code_page_namecCs	x|D]�\}}}|dk	r�ytj|||d�}WnBtk
r�}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)	rrryr�rZassertGreaterEqualZassertLessEqualrrv)r
�cpr�r�r�r�r�r�rrr�check_decode�s	'	zCodePageTest.check_decodecCs�x�|D]�\}}}|dk	r�ytj|||�}WnBtk
r}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)rrrwr�rrrv)r
rr�r�r�r�rBr�rrr�check_encode�s	'	zCodePageTest.check_encodecCs$|jdd-�|jdd:�dS);Ni�r�r��abc�d騾����r�[ÿ]rm�[]rn�[y]�[€]�[?]rj�[\xff]rk�)[\N{LATIN SMALL LETTER Y WITH DIAERESIS}]rl�[&#255;]���[�]r��[�]rs�[]�[�]�[\xff]��abc�abc��abc�\x81abc�r�r�r�rr�r�rr�N�r rmr!�r rnr"�r#rnr$�r rjr%�r rkr&�r rlr'�r(r�N�r)r�r*�r)rsN)r2r3r4r5r6r7r8r9r:r;r<r=�rr�r��rr�r�r*r�N�r*rmr+�r*rnr,�r*rjr-�r*r�r)�r*rsN�r.r�N�r.rmr/�r.rnr0�r.rjr1)r>r?r@rArBrCrDrErFrGrHrI)rr)r
rrr�
test_cp932�s6		zCodePageTest.test_cp932cCs$|jdd�|jdd�dS)Ni�r�r��abc�é€��r���Łrmr3rn�L��r���rs�r�r�rK�rLr�rM�rr�rN�rOr�N�rOrmr3�rOrnrP�rQr�rR�rQrsN)rSrTrUrVrWrXrYrZ�rKr�r��rMr�rL�rNr�r)r[r\r])rr)r
rrr�test_cp1252�s		zCodePageTest.test_cp1252cCs*d}|j|d�|j|d�dS)Ni�r�r��abc�é€�+AOkgrA-�􏿿�+2//f/w-���+3IA-���+//0-�[+/]�[]�[�]�[ÿ]�r�r�r_�r`r�ra�rbr�rc�rdr�re�rfr�rg)rlrmrnrorp�r_r�r��rar�r`�rcr�rb�rer�rd�rgr�rf�rhr�ri�rjr�rk)rqrrrsrtrurvrw)rr)r
rrrr�test_cp_utf7�s		zCodePageTest.test_cp_utf7cCs@|jdd�|j|jd�tr<|j|jd�dS)Ni����rm�騾rn��騾��􏿿�􏿿��􏿿�	[􏿿�]�[􏿿]�[􏿿?]�ryrmrz�ryrnr{)r�r��r|rmr}�r|rnr~)r�r��rrmr��rrnr�)r�r�)rrr�r)r
rrr�test_multibyte_encodings	z$CodePageTest.test_multibyte_encodingcCs�tjdddd�}|j|d�tjdddd�}|j|d�tjdd
dd�}|j|d�tjdd
dd�}|j|d�dS)Ni�s�r�Fr4rs��騾r]s��騾騾r�sabcr�r�)r4r)r�r])r�r�)r�r�)rrr)r
r�rrr�test_incrementals						zCodePageTest.test_incrementalN)
rrrrrrrrrJr^rxr�r�rrrrr�s!r�__main__)PrrrDr�r�r��warningsrDZtestr�platformZgetwindowsversion�majorr�Zctypes�ImportErrorr�ZsizeofZc_wcharrrxrrr2ZTestCaser}r�r�r�r�r�r�r�r�r�r<r@rGrYrcrlr)r�printr�rjrpr�r�r�r�r�r�r1rgrJr3r.rFrYraror�r�r�r�r�r�r�r�r�r�r�r��_codecsr�r�rr�mainrrrr�<module>s�
!�0_-.V,,6e�T5
T		Vl

	
	��)N2":			




�

��