Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/test_codecs.cpython-34.pyo

�
f fq��l@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(x3e(D]+Z)e*e)�dRkr�e+e,e)��nq{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�gdZ5e6ed��rEe5j7d��nd�d�gZ8Gd�d��d�eje�Z9Gdd�dej�Z:Gdd�dej�Z;Gdd�dej�Z<Gdd�dej�Z=Gdd	�d	ej�Z>Gd
d�dej�Z?Gdd
�d
ej�Z@ddddgZAiddgd6dgd6dddgd6dgd6dgd6ZByddlCZCWnek
r�dZCYnXeAj7d�ddgeBd<yddlDZDWnek
r�YnXeAj7d�dgeBd<Gd d!�d!ej�ZEiZFd"d#�ZGejHeG�ydd$lImJZJWnek
rb	d%d&�ZJYnXGd'd(�d(ej�ZKej ej
dkd)�Gd*d+�d+ej��ZLeMd,kr�	ejN�ndS(-�N)�support�win32�F�cs��fdd�}|S)Ncs&�j�|�|t|�f�dS)N)�assertEqual�len)�inputZexpect)�coder�self��5/opt/alt/python34/lib64/python3.4/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��ntj|��}|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>.getreaderTcsU�|�}g}x3|jd|d|�}|s7Pn|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�cCs|jtdj|j�|jdj|jd�dj|j��|jdj|jd�dj|j��|jdj|jd�dj|j��|jdj|jd	�d
j|j��dj|j�}x(dddgD]\}}|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	|�q�WdS)Nu�u[�]�backslashreplacez[\udc80]�xmlcharrefreplacez
[&#56448;]�ignorez[]�replacez[?]r4�𐿿�A�[�]u��
surrogatepass)rnro)rprq)rorn)
�assertRaises�UnicodeEncodeErrorr0r'rr�ill_formed_sequence�UnicodeDecodeErrorr!�ill_formed_sequence_replace)r
ZbomZbefore�afterZbefore_sequenceZafter_sequenceZtest_stringZ
test_sequencerrr�test_lone_surrogates\s8	""
zReadTest.test_lone_surrogatesN)rrrrCrYr_r`rdrhrirwryrrrr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'rs�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��rsrmTr4rl)r�r)r4r)rr�
utf_32_decode)r
rrr�
test_handlers�s		zUTF32Test.test_handlerscCs |jttjddd�dS)Ns��strictT)rsrvrr�)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�	byteorderrur�r�r�r�r�r�r�r�r�rrrrrz|s		rzc@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_simple�szUTF32LETest.test_simplecCs |jttjddd�dS)Ns�r�T)rsrvr�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'rur�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)rsrvr�utf_32_be_decode)r
rrrr�*szUTF32BETest.test_errorscCs/dd}|jddtj|�d�dS)Nsiu𐀀r)rrr�)r
rBrrrr�.s

zUTF32BETest.test_issue8941N)	rrrr'rur�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)Nr|r})rr~r'rDrErrr&r�r�rr)r
r�rKrcrr^r*rrrr�@s

%zUTF16Test.test_only_one_bomcCsxtjd�}tj|j�|�}|jt|j�tjd�}tj|j�|�}|jt|j�dS)Ns��s����)rDrErr9r'rsr�r)r
rr^rrrr�OszUTF16Test.test_badbomcCs>|jdddddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr�Xs zUTF16Test.test_partialcCsB|jdtjddd��|jd	tjddd��dS)
N��rsrmTr4rl)r�r)r4r)rr�
utf_16_decode)r
rrrr�ms		zUTF16Test.test_handlerscCs |jttjddd�dS)Ns�r�T)rsrvrr�)r
rrrr�sszUTF16Test.test_errorscCs6|j|jd|j�|j|jd|j�dS)Nr})r.r'r�r�)r
rrrr�ws
zUTF16Test.test_decoder_statecCs�d}|j|j�}|jtjtj�ttjd��}|j|�WdQXtjdt	f��#t
jtjdd|j�}WdQX|�|j|j�|�WdQXdS)NzHello
world
�wbr4�Ur')
r0r'�
addCleanupr�unlink�TESTFN�openr�check_warnings�DeprecationWarningrrr)r
rer�fprKrrr�test_bug691291}s$zUTF16Test.test_bug691291N)rrrr'r�r�rur�r�r�r�r�r�r�r�r�rrrrr�6s		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-16lerm)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rsrvr�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'rur�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-16berm)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rsrvr�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'rur�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[�])�superryrr0)r
)�	__class__rrrys
zUTF8Test.test_lone_surrogatescCs�|jdjdd�d�|jdjdd�d�|jdjdd�d�|jdjdd�d�|jtjd��|jt��djdd�WdQX|jt��djdd�WdQXdS)	Nu	abc�defzutf-8rrs	abc�defu𐿿�s𐿿�sabc�sabc�z)rr0r!r&r�lookup_errorrsrv)r
rrr�test_surrogatepass_handlersz#UTF8Test.test_surrogatepass_handleru	���)
rrrr'rurwr�r�ryr�rr)r�rr��sr�zcp65001 is a Windows-only codecc@sveZdZdZdd�Zdd�Zejed�dd��Z	ejed�d	d
��Z
dd�Zd
S)�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�é€�é€�􏿿�􏿿��rlr3rm�?rj�\udc80rr��r�z1Unable to encode %a to cp65001 with errors=%r: %sz!%a.encode("cp65001", %r)=%a != %a)zabc�strictr�)r�r�r�)r�r�r��r�r�N�r�zignorer3�r�zreplacer��r�zbackslashreplacer��r�z
surrogatepassr�)r�r�r�r�r�)r�r�r�)�VISTA_OR_LATER�extendrJr0rt�failrrs)r
r��text�errorsr�rB�errrrr�test_encodes.	

	$	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��é€�é€�􏿿�􏿿�����[é]�[é]�[�]rl�[]rm�[�]r��[�]�[�]�[���]�[�]r�z3Unable to decode %a from cp65001 with errors=%r: %sz!%a.decode("cp65001", %r)=%a != %a)r��strictzabc)r�r�r�)r�r�r�)r�r�r�)r�r�r�)r�r�N)r��ignorer�)r��replacer�)r�zsurrogateescaper��r�r�N�r�r�r��r�r�r�)r�r�r��r�r�r�)r�)r�r�r!rvr�rrs)r
r�r�r�r��decodedr�rrr�test_decode=s8	
	$	zCP65001Test.test_decodezrequire Windows Vista or latercCs�|jtdjd�|jtdjd�|jdjdd�d�|jdjdd�d�|jdjdd	�d
�|jdjdd�d�|jdjdd
�d�dS)Nu�r�s�u[�]rjs[\udc80]rks
[&#56448;]r�s[�]rls[]rms[?])rsrtr0rvr!r)r
rrrrybsz CP65001Test.test_lone_surrogatescCs�|jdjdd�d�|jdjdd�d�|jdjdd�d�|jdjdd�d�|jtjd��dS)Nu	abc�defr�rrs	abc�defu𐿿�s𐿿�)rr0r!r&rr�)r
rrrr�qsz&CP65001Test.test_surrogatepass_handlercCs|jd�dS)NzHissue #20571: code page 65001 codec does not support partial decoder yet)�skipTest)r
rrrrY}szCP65001Test.test_readlineN)rrrr'r�r��unittest�
skipUnlessr�ryr�rYrrrr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}xe|D]]\}}|jd!|��=|jttj|d"d#�|j|jd$d%�|�WdQXqIWdS):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-7rm)rr)rr	)r
r)rr
)rr	)rr	)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)r r!)r"r!)r#r$)r%r)�subTestrsrvr�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
}xI|D]A\}}|jd|��!|j|jdd�|�WdQXq4WdS)&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-7rm)r(r))r*r+)r,r-)r.r+)r/r+)r0r1)r2r3)r4r3)r5r3)r6r7)r8r9)r:r;)r<r9)r&rr!)r
r�r�r�rrrry�s 	zUTF7Test.test_lone_surrogatesN)	rrrr'rr�r�r�ryrrrrr��s'r�c@s(eZdZdd�Zdd�ZdS)�UTF16ExTestcCs#|jttjdddd�dS)Ns�r�rT)rsrvr�utf_16_ex_decode)r
rrrr�	szUTF16ExTest.test_errorscCs|jttj�dS)N)rs�	TypeErrorrr>)r
rrr�
test_bad_argsszUTF16ExTest.test_bad_argsN)rrrr�r@rrrrr=sr=c@s4eZdZdd�Zdd�Zdd�ZdS)�ReadBufferTestcCs5ddl}|jtj|jdd��d�dS)Nr�b�spamr�)rCr�)�arrayrr�readbuffer_encode)r
rDrrr�
test_arrayszReadBufferTest.test_arraycCs|jtjd�d�dS)Nr4r3r)r3r)rrrE)r
rrr�
test_emptyszReadBufferTest.test_emptycCs-|jttj�|jttjd�dS)N�*)rsr?rrE)r
rrrr@szReadBufferTest.test_bad_argsN)rrrrFrGr@rrrrrAsrAc@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_bug1601501>szUTF8SigTest.test_bug1601501cCs>tjd��}d}|j|j|jd��|�dS)Nz	utf-8-sigr|)rr rr!r0)r
r*rrrr�test_bomBszUTF8SigTest.test_bomc	Cs�d}tjd}tjd�}x�dgttdd��dddd	d
gD]�}|tj|��}tj�}xE|dk	r�|j|�}n|j�}|s�Pn|j	|�q|W|j
�}|j||�qRWdS)NuABC¡∀XYZsABC¡∀XYZz	utf-8-sigr��@r�ii)r�BOM_UTF8r9�listrrDrE�StringIOrrrr)	r
�	unistring�
bytestringrK�sizehint�istream�ostreamrZ�gotrrr�test_stream_bomGs 
zUTF8SigTest.test_stream_bomc	Cs�d}d}tjd�}x�dgttdd��dddd	d
gD]�}|tj|��}tj�}xE|dk	r�|j|�}n|j�}|s�Pn|j|�quW|j	�}|j
||�qKWdS)NuABC¡∀XYZsABC¡∀XYZz	utf-8-sigrrMrNrrOii)rr9rQrrDrErRrrrr)	r
rSrTrKrUrVrWrZrXrrr�test_stream_bare]s zUTF8SigTest.test_stream_bareN)	rrrr'r�rKrLrYrZrrrrrIsrIc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�EscapeDecodeTestcCs|jtjd�d�dS)Nr3r)r3r)rr�
escape_decode)r
rrrrGtszEscapeDecodeTest.test_emptycCsftj}xVtd�D]H}t|g�}|dkr|j||d�|ddf�qqWdS)NrOs\�0�)rr\rr5r)r
r!rBrrr�test_rawws
	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"�xGtd'�D]9}|d(krCt|g�}|d)|d)|�qCqCWdS)*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]rOs
"'\abtnvfr01234567xs\)rr\rrr5)r
r!r
rBrrr�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]\xrl�[]rrm�[?]?s\x0s[\x0]s[\x0]\x0r�)rar)rbr)rar�)rbr�)rr\rs�
ValueErrorr)r
r!rrrr��s	zEscapeDecodeTest.test_errorsN)rrrrGr_r`r�rrrrr[ssr[c@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)rrrrjrrrrrd�srdu"ليهمابتكلموشعربي؟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_testcasesrrJr0�lower)r
�uni�punyrrrr�szPunycodeTest.test_encodecCsex^tD]V\}}|j||jd��|jd�jd�}|j||jd��qWdS)Nrlr)rmrr!r0)r
rorprrrr�+szPunycodeTest.test_decodeN)rrrr�r�rrrrrksrkc@s�eZdZejedkd�dd��Zejedkd�dd��Zejedkd�dd��Zd	d
�Z	dS)�UnicodeInternalTestr�zspecific to 32-bit wchar_tcCsldddg}ddd	d
dg}xd|D]\\}}tjdkr[tt|��}ntj��|j||jd
��WdQXq+Wxd|D]\}tjdkr�tt|��}ntjdtf��|j	t
|jd
�WdQXq�Wtjdkr
d}nd}tj��|j	t
|jd
�WdQXtj��!|j|jd
d�d�WdQXdS)N����􏿿��ār3r4s���s�s�ssr{rez*unicode_internal codec has been deprecatedssrmu�)rrrs)rtru)r3r4)r�r�r5�reversedrr�rr!r�rsrv)r
�okZnot_okZinternalroZinvalidrrr�test_bug12513002s:		
#
	
	
	
z#UnicodeInternalTest.test_bug1251300cCs�y-tjdtf��djd�WdQXWnqtk
r�}zQ|jd|j�|jd|j�|jd|j�|jd|j	�WYdd}~XnX|j
�dS)Nz*unicode_internal codec has been deprecatedsrer�r�)rr�r�r!rvrr'�object�start�endr�)r
Zexrrr�test_decode_error_attributesYs	
&z0UnicodeInternalTest.test_decode_error_attributescCs�tjdtj�tjd�}tjdtf��Pdjd�j�}|t	d|dd�|dd�fd�d�}WdQX|j
d	|�dS)
Nrqrez*unicode_internal codec has been deprecated�abz%s""""%sr�r�)zabr~)r�register_error�
ignore_errors�
getdecoderrr�r�r0r!r5r)r
�decoderr}Zignoredrrr�test_decode_callbackgs	
'z(UnicodeInternalTest.test_decode_callbackc
Cs�tjdtf��etjd�}|j|d�dd�|j|d�dd�|jtjd�dd�WdQXdS)	Nz*unicode_internal codec has been deprecatedrerVruéłr^s\x00r�)rr�r�r�
getencoderr�
escape_encode)r
�encoderrrr�test_encode_lengthss	
z&UnicodeInternalTest.test_encode_lengthN)
rrrr�r��SIZEOF_WCHAR_Trxr|r�r�rrrrrq1s$'$$rqs%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]�\}\}}|dkrAqnt|dd�}|dkru|jt||�qt|dd�}y|j||�|�Wqtk
r�}z(t	j
d|dt|�f��WYdd}~XqXqWdS)Nr)�nameprepzutf-8rrz
Test 3.%d: %sr)Zencodings.idnar�rX�nameprep_testsrJrsr�r�	ExceptionrZ
TestFailed)r
r��posZorigZprepped�errr�
test_namepreps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.)rrJ)r
rrr�test_builtin_decode+sz!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_encode1sz!IDNACodecTest.test_builtin_encodecCsEtjd�tjd��}|jd�|j|j�d�dS)Nr�sabcr�r4)rr9rDrErr)r
r@rrr�test_stream7s
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�	<genexpr>>sz8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>s
python.orgr�z
python.orgcss|]}t|g�VqdS)N)r5)r6r7rrrr�Bsspython.org.zpython.org.css|]}t|g�VqdS)N)r5)r6r7rrrr�Fssxn--pythn-mua.org.upythön.org.css|]}t|g�VqdS)N)r5)r6r7rrrr�Jssxn--xams	ple-9ta.ou	äxample.srgr3TZorgsrg.zorg.)rr=rr>r r!r<)r
r�rrr�test_incremental_decode<s,%%%%
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_encodeZs(
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.orgrlrmrjr�N)zignorezreplacezbackslashreplacezsurrogateescape)r0r!rsr�)r
r�rrrr�vs
	zIDNACodecTest.test_errorsN)	rrrr�r�r�r�r�r�rrrrr�*sr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�CodecsModuleTestcCse|jtjdd�d�|jttj�|jtjd�d�|jttjdd�dS)Ns�zlatin-1uäöüsabcr�s�r)rrr!rsr?rv)r
rrrr��s
zCodecsModuleTest.test_decodecCs~|jtjdd�d�|jttj�|jttjdd�|jtjd�d�|jttjdd	�dS)
Nuäöüzlatin-1s�ra�__spam__r�sabcuÿffr)rrr0rsr?�LookupErrorrt)r
rrrr��szCodecsModuleTest.test_encodecCs-|jttj�|jttjd�dS)NrH)rsr?r�register)r
rrr�
test_register�szCodecsModuleTest.test_registercCsC|jttj�|jttjd�|jttjd�dS)Nr�� )rsr?rr~r�)r
rrr�test_lookup�szCodecsModuleTest.test_lookupcCs-|jttj�|jttjd�dS)Nr�)rsr?rr�r�)r
rrr�test_getencoder�sz CodecsModuleTest.test_getencodercCs-|jttj�|jttjd�dS)Nr�)rsr?rr�r�)r
rrr�test_getdecoder�sz CodecsModuleTest.test_getdecodercCs-|jttj�|jttjd�dS)Nr�)rsr?rr9r�)r
rrr�test_getreader�szCodecsModuleTest.test_getreadercCs-|jttj�|jttjd�dS)Nr�)rsr?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��Errorr�rr~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 r9rbrr��
strict_errors�replace_errorsr��xmlcharrefreplace_errors�backslashreplace_errorsr�rfr�r>�BOM�BOM_BE�BOM_LErP�	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)+zencodezdecodezregisterz	CodecInfozCodeczIncrementalEncoderzIncrementalDecoderzStreamReaderzStreamWriterzlookupz
getencoderz
getdecoderzgetincrementalencoderzgetincrementaldecoderz	getreaderz	getwriterzregister_errorzlookup_errorz
strict_errorszreplace_errorsz
ignore_errorszxmlcharrefreplace_errorszbackslashreplace_errorszopenzEncodedFilez
iterencodez
iterdecodezBOMzBOM_BEzBOM_LEzBOM_UTF8z	BOM_UTF16zBOM_UTF16_BEzBOM_UTF16_LEz	BOM_UTF32zBOM_UTF32_BEzBOM_UTF32_LEzBOM32_BEzBOM32_LEzBOM64_BEzBOM64_LEzStreamReaderWriterz
StreamRecoder)ZassertCountEqualr�__all__�getattr)r
Zapirrr�test_all�s$zCodecsModuleTest.test_allcCsu|jtjtj�xXdD]P}|j|��9tjtj|d��}|j|tj�WdQXWdQXqWdS)	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�rlrmrj)zstrictzignorezreplacezbackslashreplace)rsr�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�)rDrErrfrrrr)r
r^�efrrr�
test_basic�s
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_u�latin_1�mac_cyrillic�	mac_greek�mac_iceland�
mac_latin2�	mac_roman�mac_turkishZpalmos�ptcp154rlZraw_unicode_escape�	shift_jis�shift_jis_2004�shift_jisx0213�tis_620Zunicode_escapere�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}xtD]�}tj|�j}|jd�rA|d7}n|dkrVd}n|j|jdd�|jdd��tj��otj	|�|�\}}|j|t
|�d|�tj|�|�\}}|j||d|�WdQX|tkr�t
d�}tj|�|�}d}	xS|D]K}
|j|
�|j�}|jt|�tkt|��|	|7}	q5Wt
d�}tj|�|�}d}
x4|	D],}
|jt|
g��|
|j�7}
q�W|j|
|d|�n|tkr
ytj|���Wntk
r2Yn(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�YqXdj�fd
d�|D��}	tj|�d��dj�fdd�|	D��}
|j|
|d|�q
q
q
WdS)N�abc123Z_codecrr��-zencoding=%rr3r4Tr�r,rlc3s|]}�j|�VqdS)N)r0)r6r7)r�rrr��sz/BasicUnicodeTest.test_basics.<locals>.<genexpr>c3s'|]}�jt|g��VqdS)N)r!r5)r6r7)r�rrr��s)zidnazmbcs)�all_unicode_encodingsrr~r��endswithrrmrr�r�rr��broken_unicode_with_statefulrrbrrr&�typer5r9r/r�r0r r!r=r>r�)r
rr'r�rBrrr?rc�
encodedresultr7�chunkrK�
decodedresultrAr)r�r�r�test_basicsjs|

	(


"



 
"
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�q#q#WdS)Nr)�codec_incrementalencoder�codec_incrementaldecoderr.r3r4Tzencoding=%rr�r,rlc3s|]}�j|�VqdS)N)r0)r6r7)�cencoderrrr��sz4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>c3s'|]}�jt|g��VqdS)N)r!r5)r6r7)�cdecoderrrr��s)zidnazmbcs)Z	_testcapir8r9r0r2r�r0r!r5rr=)r
r8r9rr'r4r7r6r)r;r:r�test_basics_capi�s<



 
"
z!BasicUnicodeTest.test_basics_capicCs�dddddf}x�tD]�}|dkr7qn|tkrIqntj|�tj|j|���}x@td�D]2}|jdd�|j	�}|j
||�q}WqWdS)Nz%s
%s
�dr.Zdef456r�r\r)r0r2rr9rDrEr0r�seekrr)r
rr'rK�trZrrr�	test_seek�s
'zBasicUnicodeTest.test_seekcCsVxOtD]G}tj|�}|jt|�|dkr|jt|d�qqWdS)Nr�rlrH)zidnazpunycode)r0rr�rsr?)r
r'r�rrr�test_bad_decode_args�s

z%BasicUnicodeTest.test_bad_decode_argscCsGx@tD]8}tj|�}tj��|jt|�WdQXqWdS)N)r0rr�rr�rsr?)r
r'r�rrr�test_bad_encode_args�s

z%BasicUnicodeTest.test_bad_encode_argscCs3ddlm}t|j�}|j||�dS)Nr)r�)�	encodingsr�r3Zencoding_tabler)r
r�Z
table_typerrr�"test_encoding_map_type_initialized�sz3BasicUnicodeTest.test_encoding_map_type_initializedcCsbd}xUtD]M}|tkr
|j|||j|��|j|||j|��q
q
WdS)Nr.)r0r2r.r0r1)r
r(r'rrrr�s

z#BasicUnicodeTest.test_decoder_stateN)rrrr7rZcpython_onlyr<r@rArBrDr�rrrrr-isO'r-c@s4eZdZdd�Zdd�Zdd�ZdS)�CharmapTestcCs3|jtjddd�d
�|jtjddd�d�|jttjddd�|jttjddd�|jtjddd�d�|jtjddd�d�|jtjdd
d�d�|jtjdd
d�d�ttd��}|jtj|d
d�dt|�f�dS)Nsr�r�r��􏿿bcr}uab￾rm�ab�rlrOr4)zabcr�)rFr�)rGr�)rGr�)�abr�)rHr�)rr�charmap_decodersrvr5rr)r
�allbytesrrr�test_decode_with_string_maps4		z'CharmapTest.test_decode_with_string_mapcCs�|jtjddidd6dd6dd6�d�|jtjddidd6dd6d
d6�d�|jtjddidd6dd6dd6�d�|jtjddidd6dd6dd6�d�|jttjddidd6dd6�|jttjddidd6dd6dd6�|jttjddidd6dd6dd6�|jtjddidd6dd6�d�|jtjddidd6dd6dd6�d�|jtjddidd6dd6dd6�d�|jtjddidd6dd6�d�|jtjddidd6dd6dd6�d �|jtjddidd6dd6dd6�d!�ttd��}|jtj|di�dt|�f�dS)"Nsr�rVrrBrr7r^r�r�ZAaZBbZCc�AaBbCcu􏿿�􏿿bcr4r}u￾rm�ab�rlrO)zabcr�)rLr�)rMr�)�abr�)rNr�)rNr�)rNr�)rOr�)rOr�)rOr�)rrrIrsrvr5rr)r
rJrrr�test_decode_with_int2str_map9sj			z(CharmapTest.test_decode_with_int2str_mapcCs/td�}td�}td�}|jtjddi|d6|d6|d6�d�|jtjddidd6|d6|d6�d�|jtjdditjd6|d6|d6�ttj�d
d
f�|jttjdditjdd6|d6|d6�|jt	tjddi|d6|d6�|jt	tjddi|d6|d6dd6�|jtjddi|d6|d6�d�|jtjddi|d6|d6dd6�d�|jtjddi|d6|d6�d�|jtjddi|d6|d6dd6�d�dS)NrVrBr7sr�rrr^r�r�i���􏿿bcZbci��rm�ab�rlr})zabcr�)rQr�)rRr�)rRr�)�abr�)rSr�)
�ordrrrIr��
maxunicode�chrrsr?rv)r
rVrBr7rrr�test_decode_with_int2int_map�sP	#		z(CharmapTest.test_decode_with_int2int_mapN)rrrrKrPrWrrrrrEs-UrEc@s(eZdZdd�Zdd�ZdS)�WithStmtTestc
CsWtjd�}tj|dd��}|j|j�d�WdQX|j|j�dS)Nsüzlatin-1zutf-8s�)rDrErrfrrr&rh)r
r^r�rrr�test_encodedfile�szWithStmtTest.test_encodedfilec
Cs_tjd�}tjd�}tj||j|jd��}|j|j�d�WdQXdS)Nsüzutf-8r��ü)	rDrErr~r��streamreader�streamwriterrr)r
r^�info�srwrrr�test_streamreaderwriter�s
z$WithStmtTest.test_streamreaderwriterN)rrrrYr_rrrrrX�srXc@s(eZdZdd�Zdd�ZdS)�	TypesTestcCs�tjtjtjtjtjtjtjtjtj	tj
tjtjg}t
td�rp|jtj�nx!|D]}|jt|d�qwWdS)N�mbcs_decoderW)rr'�utf_8_decoder�r�r>r�r�r��utf_32_ex_decode�latin_1_decode�ascii_decoderI�hasattrrJrarsr?)r
Zdecodersr�rrr�test_decode_unicode�s 
zTypesTest.test_decode_unicodecCs�|jtjd�d
�|jtjd�d�|jtjd�d�|jtjd�d
�|jttjd�|jtjdd�d�|jttjd�|jtjdd�d�dS)Nz\u1234�ሴrs\u1234s
\U00110000z
\U00110000rm��rO)rhr)rhr)rhr)rhr)rirO)rirO)rr�unicode_escape_decode�raw_unicode_escape_decodersrv)r
rrr�test_unicode_escape�szTypesTest.test_unicode_escapeN)rrrrgrlrrrrr`�sr`c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�UnicodeEscapeTestcCs6|jtjd�d�|jtjd�d�dS)Nr4r3r)r3r)r4r)rr�unicode_escape_encoderj)r
rrrrG	szUnicodeEscapeTest.test_emptycCsatj}xQtdd�D]@}|dkr|j|t|��t|g�df�qqWdS)N� �s\rr�\)rrnrrrVr5)r
r0rBrrr�test_raw_encode	s	z!UnicodeEscapeTest.test_raw_encodecCsftj}xVtd�D]H}|dkr|j|t|g�d�t|�ddf�qqWdS)NrOs\rr]�0r^rq)rrjrrr5rV)r
r!rBrrr�test_raw_decode	s	z!UnicodeEscapeTest.test_raw_decodecCs�tj}t||�}|dd�|dd�|dd�|dd�xFtd	�D]8}t|�d
krY|t|�d|j��qYqYWx4tdd
�D]#}|t|�d|j��q�W|dd�|dd�dS)N�	s\trPs\nrRs\r�\s\\roz	

z\x%02xrprOu€s\u20acu𝄠s
\U0001d120)rrnrrrVr0)r
r0r
rBrrr�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'�|d(d)�xGtd*�D]9}|d+krC|d,t|g�d-t|��qCqCWdS).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𝄠rOs
"'\abtnvfr01234567xuUNs\rv)rrjrrr5rV)r
r!r
rBrrr�test_escape_decode!	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]\rlz[]rmu[�]�s
\U00110000r4rO���ryr^�rzr��r{r�)r~rr�)r4rO)r}rO)rrjrrsrvrr)r
r!r7r*r)rZrrr�test_decode_errors>	s	"%z$UnicodeEscapeTest.test_decode_errorsN)	rrrrGrrrtrwrxr�rrrrrm	srmc@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�RawUnicodeEscapeTestcCs6|jtjd�d�|jtjd�d�dS)Nr4r3r)r3r)r4r)rr�raw_unicode_escape_encoderk)r
rrrrGP	szRawUnicodeEscapeTest.test_emptycCsOtj}x?td�D]1}|j|t|��t|g�df�qWdS)NrOr)rr�rrrVr5)r
r0rBrrrrrT	s	z$RawUnicodeEscapeTest.test_raw_encodecCsWtj}xGtd�D]9}|j|t|g�d�t|�ddf�qWdS)NrOr]rsr^)rrkrrr5rV)r
r!rBrrrrtY	s	z$RawUnicodeEscapeTest.test_raw_decodecCs�tj}t||�}xGtd�D]9}|dkr%|dt|�dt|g��q%q%W|dd�|dd�dS)	NrOsuUrvs\u€s\u20acu𝄠s
\U0001d120)rr�rrrVr5)r
r0r
rBrrrrw^	s	+
z'RawUnicodeEscapeTest.test_escape_encodecCs�tj}t||�}xGtd�D]9}|dkr%|dt|g�dt|��q%q%W|dd�|dd�dS)	NrOsuUs\rvs\u20acu€s
\U0001d120u𝄠)rrkrrr5rV)r
r!r
rBrrrrxg	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)Nrzr�r{s\r]s[\r|s]\rlz[]rmu[�]�s
\U00110000r4rO���rzr��r{r�)r�r�)r4rO)r�rO)rrkrrsrvrr)r
r!r7r*r)rZrrrr�p	s	"%z'RawUnicodeEscapeTest.test_decode_errorsN)	rrrrGrrrtrwrxr�rrrrr�O	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�barrr�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�WdQXtjtjdd	|��k}|j|d
�|j
|j�d
�|jd
�|j|�|jd
�|j|j	�|�WdQXtjtjdd	|��w}|jj|d
�|j
|jj�d
�|jjd
�|jj|�|jd
�|j|j	�|�WdQXtjtjdd	|��[}|j|�|j|j��|j|�|jd
�|j|j	�|d�WdQXtjtjdd	|��g}|jj|�|jj|jj��|jj|�|jd
�|j|j	�|d�WdQXq)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�rot13�rot_13�
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||�WdQXqWdS)NrOr')	r5r�bytes_transform_encodingsr&rr�rrr�)r
Zbinputr'�orr)rrrr7�	s
zTransformCodecTest.test_basicscCszxstD]k}|jd|��Qtjd|�}tj|�tj|��}|j�}|j|d�WdQXqWdS)Nr's�)	r�r&rr0r9rDrErr)r
r'�sinrK�soutrrr�	test_read
s
zTransformCodecTest.test_readcCszxstD]k}|jd|��Qtjd|�}tj|�tj|��}|j�}|j|d�WdQXqWdS)Nr's�)	r�r&rr0r9rDrErIr)r
r'r�rKr�rrrrY
s
z TransformCodecTest.test_readlinecCs�d}x�tD]�}|jd|���|}t|�}tj||�}tj||�}|j||�t|�}tj||�}|j||�tj||�}|j||�WdQXq
WdS)Ns12345�r')r�r&�
memoryviewrr0rr!)r
Zoriginalr'rZZviewZview_encodedZview_decodedrrr�test_buffer_api_usage
s
z(TransformCodecTest.test_buffer_api_usagecCs�d}xwtD]o}|jd|��Ud}|j|�}|jt|��}|j|�WdQX|j|jj�WdQXq
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	Cs0d}|jt|��djd�WdQXdS)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_transforms5
szATransformCodecTest.test_text_to_binary_blacklists_text_transformscCs�d}x�tD]�}|jd|��~tj||�}d}|j|�}|jt|��|j|�WdQX|jt|��t|�j|�WdQXWdQXq
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!�	bytearray)r
rZr'Zencoded_datar�r�rrr�0test_binary_to_text_blacklists_binary_transforms<
s
zCTransformCodecTest.test_binary_to_text_blacklists_binary_transformscCs{xtdtd�fD]`}|jd|��Fd}|jt|��}|jd�WdQX|j|jj�WdQXqWdS)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_transformsK
szATransformCodecTest.test_binary_to_text_blacklists_text_transformszRequires zlib supportc
CsTd}|jt|��}tjdd�WdQX|j|jjt|j��dS)Nz(^decoding with 'zlib_codec' codec failedshellor�)r�r�rr!r#r�r�r3)r
r�r�rrr�!test_custom_zlib_error_is_wrappedU
s
z4TransformCodecTest.test_custom_zlib_error_is_wrappedc
CsTd}|jt|��}tjdd�WdQX|j|jjt|j��dS)Nz'^decoding with 'hex_codec' codec failedshellor�)r�r�rr!r#r�r�r3)r
r�r�rrr� test_custom_hex_error_is_wrapped^
s
z3TransformCodecTest.test_custom_hex_error_is_wrappedcCsxxtj�D]j\}}tj|�j}xI|D]A}|jd|��'tj|�}|j|j|�WdQXq2Wq
WdS)N�alias)�transform_aliases�itemsrr~r�r&r)r
�
codec_name�aliasesZ
expected_namer�r]rrr�test_aliasesj
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_statelessr
sz(TransformCodecTest.test_quopri_statelesscCs|jttjdd�dS)Nr3zuu-codec)rsrcrr!)r
rrr�test_uu_invalidz
sz"TransformCodecTest.test_uu_invalidN)rrrr7r�rYr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��	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)	�reprrJ�idrC�normalize_encodingrnr��RuntimeError�obj_to_raise)r
Z	unique_idrrrr��
s		zExceptionChainingTest.setUpcCsStj|jd�tjj|jd�yt|j�Wntk
rNYnXdS)N)r��popr�rC�_cacher��KeyError)r
rrr�tearDown�
s
zExceptionChainingTest.tearDowncCs,tj||d|j�}|t|j<dS)Nr�)rr�r�r�)r
r0r!Z
codec_inforrr�	set_codec�
szExceptionChainingTest.set_codecc	csndj||j|j|�}|j||��}|VWdQX|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�
assertWrapped�
sz#ExceptionChainingTest.assertWrappedcOs
|j�dS)N)r�)r
�args�kwdsrrr�	raise_obj�
szExceptionChainingTest.raise_objcCs�||_|j|j|j�|jd||��dj|j�WdQX|jd||��tjd|j�WdQX|jd||��dj|j�WdQX|jd||��tjd|j�WdQXdS)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_value�
sz)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�MyRuntimeError�
sr�)r�r�)r
r�r�rrr�)test_raise_grandchild_subclass_exact_size�
sz?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�WdQX|jt|��tjd|j�WdQX|jt|��dj|j�WdQX|jt|��tjd|j�WdQXdS)Ncs
��dS)Nr)r�r�)r�rrr��
sz:ExceptionChainingTest.check_not_wrapped.<locals>.raise_objz	str inputsbytes input)r�r�r�r0r�rr!)r
r�r�r�r)r�r�check_not_wrapped�
sz'ExceptionChainingTest.check_not_wrappedcCs*Gdd�dt�}|j|d�dS)Nc@seZdZdd�ZdS)zKExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInitcSsdS)Nr)r
rrrr�
szTExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInit.__init__N)rrrrrrrr�
CustomInit�
sr�r4)r�r�)r
r�rrr�!test_init_override_is_not_wrapped�
sz7ExceptionChainingTest.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��
szQExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNew.__new__)rrrr�rr)r�r�	CustomNew�
sr�r4)r�r�)r
r�rrr� test_new_override_is_not_wrapped�
sz6ExceptionChainingTest.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_wrapped�
s	z<ExceptionChainingTest.test_instance_attribute_is_not_wrappedcCs|jtd�d�dS)Nr�1)r�r�)r
rrr�test_non_str_arg_is_not_wrappedsz5ExceptionChainingTest.test_non_str_arg_is_not_wrappedcCs&d}|jtddd�|�dS)Nz^\('a', 'b', 'c'\)$rVrBr7)r�r�)r
Zmsg_rerrr�!test_multiple_args_is_not_wrappedsz7ExceptionChainingTest.test_multiple_args_is_not_wrappedcCs�dj|j�}|jt|��dj|j�WdQX|jt|��tjd|j�WdQX|jt|��dj|j�WdQX|jt|��tjd|j�WdQXdS)Nz^unknown encoding: {}$z	str inputsbytes input)r�r�r�r�r0rr!)r
r�rrr�%test_codec_lookup_failure_not_wrapped
sz;ExceptionChainingTest.test_codec_lookup_failure_not_wrappedcCs�dd�}dd�}|j||�tjd|j�}|j|d�tjd|j�}|j|d�d}|j|j�}|jt|��dj|j�WdQXd	}|j|j�}|jt|��d
j|j�WdQXdS)Nc_sdS)N�
not bytes!r)r�rr)r�r�rrr�
encode_to_strszSExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_strc_sdS)N�not str!r)r�rr)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_handlingsz<ExceptionChainingTest.test_unflagged_non_text_codec_handlingN)rrrr�r�r��
contextlib�contextmanagerr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�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)rsrcr�code_page_encode�code_page_decode�OSError)r
rrr�test_invalid_code_page=sz#CodePageTest.test_invalid_code_pagecCs[|jtdtjdd�|jtdtjdd�|jtdtj|jd�dS)Nr�i��ÿs��CP_UTF8s�)r�rtrr�rvr�r�)r
rrr�test_code_page_nameCsz CodePageTest.test_code_page_namecCsx�|D]�\}}}|dk	r�ytj|||�}WnBtk
r}z"|jd||||f�WYdd}~XnX|j|d|d||||d|f�|j|dd�|j|dt|��q|jttj|||�qWdS)Nz2Unable to decode %a from "cp%s" with errors=%r: %srz%a.decode("cp%s", %r)=%a != %ar)	rr�rvr�rZassertGreaterEqualZassertLessEqualrrs)r
�cpr�r�r�r�r�r�rrr�check_decodeKs	'	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)rr�rtr�rrrs)r
rr�r�r�r�rBr�rrr�check_encode]s	'	zCodePageTest.check_encodec
Cs$|jdd#�|jdd-�dS).Ni�r�r��abc�d騾����r��[ÿ]rl�[]rm�[y]�[€]�[?]rj�[\xff]rk�[&#255;]�[�]�[]�[�]r��[�]��abc�abc��abc��abc�strictr�rrr�r�rN�r�ignorer�r�replacer	�r
rr�rzbackslashreplacer�rzxmlcharrefreplacer
)rrrrrrrr �rrr�rrr�rrN�rrr�rrr�rzsurrogateescaper�rrN�rrr�rrr)	r!r"r#r$r%r&r'r(r))rr)r
rrr�
test_cp932ms&		zCodePageTest.test_cp932c
Cs$|jdd�|jdd�dS)Ni�r�r��abc�é€��r����Łrlr3rm�L��abc�strictr+�r,r3r-�r�r3r.�r/r3N�r/zignorer3�r/zreplacer0)r1r4r5r6r7r8�r+r3r2�r-r3r,�r.r3r�)r9r: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-�[+/]�[]�[�]�[ÿ]��abc�strictr=�r>rLr?�r@rLrA�rBrLrC�rDrLrE)rJrMrNrOrP�r=rLrK�r?rLr>�rArLr@�rCrLrB�rErLrD�rFrLrG�rHrLrI)rQrRrSrTrUrVrW)rr)r
rrrr�test_cp_utf7�s		zCodePageTest.test_cp_utf7cCsC|jdd�|j|jd�tr?|j|jd�ndS)Ni����rl�騾rm��騾��􏿿�􏿿��􏿿�	[􏿿�]�[􏿿]�[􏿿?]�rY�ignorerZ�rY�replacer[)rbrd�r\rcr]�r\rer^)rfrg�r_rcr`�r_rera)rhri)rr�r�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)rkr^)rlr�)zabcr�)rr�r)r
r�rrr�test_incremental�s						zCodePageTest.test_incrementalN)
rrrr�r�rrrr*r<rXrjrmrrrrr�7sr��__main__)Orr�rDr�r�r��warningsrCZtestr�platformZgetwindowsversion�majorr�Zctypes�ImportErrorr��sizeofZc_wcharrryrrr2ZTestCaserzr�r�r�r�r�r�r�r�r�r=rArIr[rdrmr)r�printr�rkrqr�r�r�r�r�r�r0rfrJr2r-rErXr`rmr�r�r�r�r�r�r�r�r�r�r��_codecsr�r�r�r�mainrrrr�<module>s�
!�*_-.V,,6f�T4
O		V_

		��%N2":	








�

��