Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_codecs.cpython-311.pyc
�

�Ke
��z	�ddlZddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZddl
mZ	ddl
Z
n
#e$rdZ
YnwxYw	ddlZn
#e$rdZYnwxYw	ddlZejej��Zn#e$rdZdZYnwxYwd�Zd�ZGd	�d
e��ZGd�d��ZGd
�de��ZGd�deej��ZGd�deej��ZGd�deej��ZGd�deej��ZGd�deej��ZGd�deej��Z Gd�deej��Z!Gd�deej��Z"Gd�d ej��Z#Gd!�d"ej��Z$Gd#�d$e!ej��Z%Gd%�d&ej��Z&gd'�Z'e'D]%Z(e)e(��d(kre*e+e(�����&Gd)�d*ej��Z,gd+�Z-Gd,�d-ej��Z.Gd.�d/ej��Z/Gd0�d1ej��Z0Gd2�d3ej��Z1Gd4�d5ej��Z2gd6�Z3e4ed7��re3�5d8��e4ed9��re3�5d:��d;gZ6Gd<�d=eje��Z7Gd>�d?ej��Z8Gd@�dAej��Z9GdB�dCej��Z:GdD�dEeej��Z;GdF�dGeej��Z<GdH�dIej��Z=GdJ�dKej��Z>GdL�dMej��Z?gdN�Z@dOdPgdQggdR�dSgdTgdU�ZA	ddlBZBe@�5dV��dWdXgeAdV<n
#e$rdZBYnwxYw	ddlCZCe@�5dY��dZgeAdY<n#e$rYnwxYwGd[�d\ej��ZDiZEd]�ZFGd^�d_ej��ZGejHejId`kda��Gdb�dcej����ZJGdd�deej��ZKGdf�dgej��ZLGdh�diej��ZMejNedudj��Gdk�dlej����ZOGdm�dnej��ZPGdo�dpej��ZQGdq�drej��ZReSdskrejT��dSdS)t�N)�mock)�support)�	os_helper)�warnings_helper���c������fd�}|S)Nc�d�����|��|t|��f��dS�N)�assertEqual�len)�input�expect�coder�selfs  ���:/usr/local/apps/python3/lib/python3.11/test/test_codecs.py�checkzcoding_checker.<locals>.check s2��������u�����E�
�
�';�<�<�<�<�<��)rrrs`` r�coding_checkerrs'����=�=�=�=�=�=��Lrc��
���
���ddlm}m}m}ddlm}m�
m�m�m	}d�d�d�
G�
���
��fd�dtj
��}||�|||����}|d	|d
��f��}|��}	||d|	��S)Nr)�POINTER�WINFUNCTYPE�WinDLL)�BOOL�BYTE�WCHAR�UINT�DWORD��ic�J��eZdZd�fd��zfd��zfd�fd�fd��zfgZdS)�'is_code_page_present.<locals>.CPINFOEXW�MaxCharSize�DefaultChar�LeadByte�UnicodeDefaultChar�CodePage�CodePageNameN)�__name__�
__module__�__qualname__�_fields_)r�MAX_DEFAULTCHAR�
MAX_LEADBYTES�MAX_PATHrrs������r�	CPINFOEXWr",sT�������"�D�)�"�D��$8�9���m�!3�4�)�5�1���&�#�U�8�^�4�6���rr0�GetCPInfoExW�kernel32)�ctypesrrr�ctypes.wintypesrrrrr�	Structure)�cprrrrrr0�	prototype�GetCPInfoEx�inforr-r.r/rrs          @@@@@@r�is_code_page_presentr:%s
��������3�3�3�3�3�3�3�3�3�3�>�>�>�>�>�>�>�>�>�>�>�>�>�>��M��O��H�6�6�6�6�6�6�6�6�6�6�6�6�F�$�6�6�6���D�$��w�w�y�/A�/A�B�B�I��)�^�V�V�J�-?�-?�@�A�A�K��9�;�;�D��;�r�1�d�#�#�#rc�&�eZdZdZd�Zd�Zdd�ZdS)�QueuezF
    queue: write bytes at one end, read bytes from the other end
    c��||_dSr
��_buffer)r�buffers  r�__init__zQueue.__init__=s
������rc�&�|xj|z
c_dSr
r>)r�charss  r�writezQueue.write@s����������rrc��|dkr|j}|jdd�|_|S|jd|�}|j|d�|_|S�Nrr>)r�size�ss   r�readz
Queue.readCsP����6�6���A��<����+�D�L��H���U�d�U�#�A��<����.�D�L��HrN)r)r)r*r+�__doc__rArDrIrrrr<r<9sP�������������������rr<c��eZdZd�Zd�ZdS)�MixInCheckStateHandlingc��tt|��dz��D�]]}tj|����}|�|d|���}|���}|�|dt��|ds||�|ddd�df��|�	|�|d����|�
||�����tj|����}|�|��|�||d�d��}|�
|||z����_dS)N�rT)�ranger�codecs�getincrementaldecoder�decode�getstate�assertIsInstance�int�setstate�
assertTruer�	r�encoding�urH�i�d�part1�state�part2s	         r�check_state_handling_decodez3MixInCheckStateHandling.check_state_handling_decodeOsY���s�1�v�v�a�x���	-�	-�A�6��,�X�6�6�8�8�A��H�H�Q�r��r�U�O�O�E��J�J�L�L�E��!�!�%��(�C�0�0�0���8�
6��
�
�E�!�H�R�a�R�L�!�,�-�-�-����A�H�H�U�1�X�$6�$6� 6�7�7�7�� � ���
�
���5�5�5�7��,�X�6�6�8�8�A�
�J�J�u�����H�H�Q�q�r�r�U�D�)�)�E����Q��e��,�,�,�,�'	-�	-rc��tt|��dz��D]�}tj|����}|�|d|���}|���}tj|����}|�|��|�||d�d��}|�|||z����dS)NrNT)rOrrP�getincrementalencoder�encoderSrVrrXs	         r�check_state_handling_encodez3MixInCheckStateHandling.check_state_handling_encodees����s�1�v�v�a�x���	-�	-�A�6��,�X�6�6�8�8�A��H�H�Q�r��r�U�O�O�E��J�J�L�L�E�6��,�X�6�6�8�8�A�
�J�J�u�����H�H�Q�q�r�r�U�D�)�)�E����Q��e��,�,�,�,�	-�	-rN)r)r*r+r`rdrrrrLrLNs2������-�-�-�,-�-�-�-�-rrLc�H�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dZ
d	�Zd
�ZdS)�ReadTestc	���td��}tj|j��|��}d}t	|�|j��|d���D]U\}}|�t|g����||���z
}|�	||���V|�	|���d��|�	|j
d��tj|j����}d}t	|�|j��|d���D]A\}}||�t|g����z
}|�	||���B|�	|�dd��d��|�	|j
d��|���d}t	|�|j��|d���D]A\}}||�t|g����z
}|�	||���B|�	|�dd��d��|�	|j
d��|�|j��}	|�	|d�tjd�|	D��|j������dS)Nr�T��strictc�.�g|]}t|g����Sr��bytes��.0�cs  r�
<listcomp>z*ReadTest.check_partial.<locals>.<listcomp>�s ��&C�&C�&C�a�u�a�S�z�z�&C�&C�&Cr)r<rP�	getreaderrY�ziprcrDrmrIr�
bytebufferrQrRr@�reset�join�
iterdecode)
rr
�partialresults�q�r�resultrp�
partialresultr\�encodeds
          r�
check_partialzReadTest.check_partialqs���

�#�J�J��+�F��T�]�+�+�A�.�.����"%�e�l�l�4�=�&A�&A�>�Z^�"_�"_�"_�	4�	4��Q�
�
�G�G�E�1�#�J�J�����a�f�f�h�h��F����V�]�3�3�3�3���������2�&�&�&������s�+�+�+�
8�F�(���7�7�9�9����"%�e�l�l�4�=�&A�&A�>�Z^�"_�"_�"_�	4�	4��Q�
��a�h�h�u�a�S�z�z�*�*�*�F����V�]�3�3�3�3�������#�t�,�,�b�1�1�1������3�'�'�'�	
���	�	�	���"%�e�l�l�4�=�&A�&A�>�Z^�"_�"_�"_�	4�	4��Q�
��a�h�h�u�a�S�z�z�*�*�*�F����V�]�3�3�3�3�������#�t�,�,�b�1�1�1������3�'�'�'��,�,�t�}�-�-�������G�G�F�%�&C�&C�7�&C�&C�&C�T�]�S�S�T�T�	
�	
�	
�	
�	
rc� ����fd��d�fd�	}d}d}d}��||d��|����||d��|����||dd��|����||dd��|��d	}g}g}t|��D]D\}}	|�|d
zd
zdz|	z��|�|d
zd
zdz���E��|d�|��d��d
�|������|d�|��d��d
�|����t	d��D�]}
|D]�}	d|
dz|	zdzz}�|��}t	d��D]\}��|�d���|
dz|	z����|�d���d���]�|��}t	d��D]Y}��|�d���|
dz����|�d���d���Z����dS)Nc���tj|��j����}t	j�j��|��Sr
��io�BytesIOrcrYrPrr)r
�streamrs  �rrrz)ReadTest.test_readline.<locals>.getreader�s=����Z����T�]� ;� ;�<�<�F�2�6�#�D�M�2�2�6�:�:�:rTc����|��}g}	|�||���}|sn|�|���0d�|��S)NT)rG�keepends�|)�readline�appendrv)r
r�rG�reader�lines�linerrs      �r�readalllinesz,ReadTest.test_readline.<locals>.readalllines�se����Y�u�%�%�F��E�
#����D�8��D�D��������T�"�"�"�	
#�
�8�8�E�?�?�"rufoo
bar
baz
spam
eggsufoo
|bar
|baz
|spam
|eggszfoo|bar|baz|spam|eggsF�
)�
�
�
u
��uあrhr��P�azxxx
�r��xxx)TN)r�	enumerater�rvrOr�)
rr�rH�	sexpected�sexpectednoends�lineends�vw�vwor[�lineendrGr�rrs
`           @r�
test_readlinezReadTest.test_readline�s����	;�	;�	;�	;�	;�	#�	#�	#�	#�	#�	#�
.��9�	�1�������a��.�.�	�:�:�:������a��/�/��A�A�A������a��r�2�2�I�>�>�>������a���3�3�_�E�E�E�1��
����%�h�/�/�	-�	-�L�Q���I�I�q��u�S�y�(�*�W�4�5�5�5��J�J��#��c�	�8�+�,�,�,�,������b�g�g�b�k�k�4�8�8�#�(�(�2�,�,�G�G�G������b�g�g�b�k�k�5�9�9�3�8�8�C�=�=�I�I�I��"�I�I�	�	�D�#�
�
����S��7�*�W�4�5��"��1�����r�����A��$�$������6�6��S��7�*�����$�$������6�6������#��1�����r�����A��$�$������7�7��S������$�$������7�7�������
�	�	rc�|���gd�}d�|�����fd�}|��}��|���|d����|���d�|dd�������|���d��|��}��|���|d����|�d��|dd����|�d��d����|�d���t	|d��dzd�dd���|��}��|���|d����|���|dd�����|���d��|��}��|�dd�	���dd�����|����dd�����|���d��|��}��|�dd�	���dd�����|�d���d����|�d��d����|�d���d
d���|��}��|�dd�	���dd�����|���|ddd�g|dd�z����|���d��dS)N)zHumpty 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.rhc���tj���j����}t	j�j��|��Sr
r�)r��datars ��rrrz8ReadTest.test_mixed_readline_and_read.<locals>.getreader�s=����Z����D�M� :� :�;�;�F�2�6�#�D�M�2�2�6�:�:�:rrrN�d�(�)rGrC��j)rvrr�rIr�	readlines)rr�rr�fr�s`   @r�test_mixed_readline_and_readz%ReadTest.test_mixed_readline_and_read�s�����8�8�8���w�w�u�~�~��	;�	;�	;�	;�	;�	;�

�I�K�K����������u�Q�x�0�0�0���������2�7�7�5����9�#5�#5�6�6�6���������2�&�&�&�
�I�K�K����������u�Q�x�0�0�0����������E�!�H�Q�K�0�0�0����������B�'�'�'����������d�3�u�Q�x�=�=�1�+<�+=�+=�&>�t��t�&D�E�E�E�
�I�K�K����������u�Q�x�0�0�0����������a�b�b�	�2�2�2���������2�&�&�&�
�I�K�K��������R�q��1�1�4����8�<�<�<���������4����8�,�,�,���������2�&�&�&�
�I�K�K��������R�q��1�1�4����8�<�<�<����������D��G�,�,�,����������B�'�'�'����������d�1�S�5�k�2�2�2�
�I�K�K��������R�q��1�1�4����8�<�<�<����������q��!�"�"����q�r�r��(B�C�C�C���������2�&�&�&�&�&rc�2�gd�}tjd�|���|j����}tj|j��|��}t|��D]!\}}|�|||���"dS)N)=z:<%!--===================================================
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<%
r�zimport logging
z+log=logging.getLogger("Snakelets.logger")
r�r�zuser=self.SessionCtx.user
z-storageEngine=self.SessionCtx.storageEngine
r�r�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")
r�zshowdate=None
r�zarg=self.Request.getArg()
zif arg=="today":
z,    #-------------------- TODAY'S ARTICLES
z-    self.write("<h2>Today's articles</h2>")
z(    showdate = frog.util.isodatestr() 
�.    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))
r�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                
rh)	r�r�rvrcrYrPrrr�r)rrHr�r�r[r�s      r�test_bug1175396zReadTest.test_bug1175396s���>
�>
�>
��~��B�G�G�A�J�J�-�-�d�m�<�<�=�=��0��!�$�-�0�0��8�8��"�6�*�*�	)�	)�I�Q�����T�1�Q�4�(�(�(�(�	)�	)rc�n�td��}tj|j��|��}tj|j��|��}|�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
��dS)Nrzfoo
Fr��fooz
bar
rh�bar�bazTr�zbar
zfoo
)r<rP�	getwriterrYrrrDrr�)rry�writerr�s    r�test_readlinequeuezReadTest.test_readlinequeueLsY���#�J�J��0��!�$�-�0�0��3�3��0��!�$�-�0�0��3�3��	���W����������%��8�8�%�@�@�@����Y����������%��8�8�"�=�=�=�������%��8�8�%�@�@�@����U����������%��8�8�%�@�@�@�������%��8�8�"�=�=�=�	���W����������$��7�7��A�A�A����Y����������$��7�7��>�>�>�������$��7�7��A�A�A����U����������$��7�7��?�?�?�������$��7�7��<�<�<����Y����������$��7�7��C�C�C�C�Crc��d}d}d}||z|z�|j��}tj|��}t	j|j��|��}|�|���|��|�|���|��|�|���|��|�|���d��dS)NzAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z`offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!!
znext line.
rh�rcrYr�r�rPrrrr�)r�s1�s2�s3rHr�r�s       r�test_bug1098990_azReadTest.test_bug1098990_ags���
R��
q��
��
��U�2�X���d�m�,�,����A����0��!�$�-�0�0��8�8��������*�*�B�/�/�/�������*�*�B�/�/�/�������*�*�B�/�/�/�������*�*�B�/�/�/�/�/rc��d}d}d}d}d}||z|z|z|z�|j��}tj|��}t	j|j��|��}|�|���|��|�|���|��|�|���|��|�|���|��|�|���|��|�|���d��dS)Nzaaaaaaaaaaaaaaaaaaaaaaaa
zbbbbbbbbbbbbbbbbbbbbbbbb
zstillokay:bbbbxx
zbroken!!!!badbad
zagainokay.
rhr�)	rr�r�r��s4�s5rHr�r�s	         r�test_bug1098990_bzReadTest.test_bug1098990_bts/��
+��
+��
#��
#��
��
��U�2�X�b�[��^�#�#�D�M�2�2����A����0��!�$�-�0�0��8�8��������*�*�B�/�/�/�������*�*�B�/�/�/�������*�*�B�/�/�/�������*�*�B�/�/�/�������*�*�B�/�/�/�������*�*�B�/�/�/�/�/r��c��|�tdj|j��|�d�|jd��d�|j����|�d�|jd��d�|j����|�d�|jd��d�|j����|�d�|jd��d	�|j����|�d�|jd
��d�|j����|�d�|jd��d	�|j����|�d�|jd
��d
�|j����d�|j��}dD�]�\}}|�|j��t|��d�}|�|j��t|��d�}|dz|z}||z|jz|z}|�t|j|j��|�|�|jd��|��|�|�|jd��|��|�|�|jd��||z��|�|�|jd
��||j	z|z��d�
d�|jD����}|�|�|jd��||z|z�����dS)Nu��[�]�backslashreplacez[\udc80]�namereplace�xmlcharrefreplacez
[&#56448;]�ignore�[]�replacez[?]�[��]z[??]rh))�𐿿�A)�[�])r�r����
surrogatepassc3� K�|]	}d|zV��
dS)�\x%02xNr)ro�bs  r�	<genexpr>z0ReadTest.test_lone_surrogates.<locals>.<genexpr>�sB����'J�'J�+,�(1�1�}�'J�'J�'J�'J�'J�'Jr)�assertRaises�UnicodeEncodeErrorrcrYrr�ill_formed_sequence�UnicodeDecodeErrorrR�ill_formed_sequence_replacerv)	r�bom�before�after�before_sequence�after_sequence�test_string�
test_sequencer�s	         r�test_lone_surrogateszReadTest.test_lone_surrogates�s�����,�h�o�t�}�M�M�M�����*�*�4�=�:L�M�M�$�+�+�D�M�:�:�	<�	<�	<�����*�*�4�=�-�H�H�$�+�+�D�M�:�:�	<�	<�	<�����*�*�4�=�:M�N�N�%�,�,�T�]�;�;�	=�	=�	=�����*�*�4�=�(�C�C����T�]�3�3�	5�	5�	5�����*�*�4�=�)�D�D����d�m�4�4�	6�	6�	6�	
���)�0�0����I�I����T�]�3�3�	5�	5�	5����)�0�0���	�J�J����t�}�5�5�	7�	7�	7��i�i��
�&�&��3�	@�	@�M�F�E�$�m�m�D�M�:�:�3�s�8�8�9�9�E�O�"�\�\�$�-�8�8��S�����C�N� �8�+�e�3�K� �?�2�!�5�6�8F�G�M����0�-�2F�"�m�
-�
-�
-����[�/�/��
�0?�A�A�*�
,�
,�
,�
���]�1�1�$�-�2A�C�C�(�
*�
*�
*�
���]�1�1�$�-��J�J�#�e�^�
-�
-�
-����]�1�1�$�-��K�K�#�d�&F�F��N�
P�
P�
P�!�w�w�'J�'J�04�0H�'J�'J�'J� J� J�����]�1�1�$�-�AS�T�T�#�&6�6��>�
@�
@�
@�
@�+	@�	@rc��d�|jd��}tdt|����D]�}t	j|j��d��}|�|�|d|���d��|�|�||d�d��d����d�|jd��}tdt|����D]�}t	j|j��d��}|�|�|d|���d��|�|�||d���d����dS)Nu�r�rNrhTu�)rcrYrOrrPrQrrR)rr�r[�decs    r�test_incremental_surrogatepassz'ReadTest.test_incremental_surrogatepass�s`�����t�}�o�>�>���q�#�d�)�)�$�$�	C�	C�A�=�&�.�t�}�=�=�o�N�N�C����S�Z�Z��R�a�R��1�1�2�6�6�6����S�Z�Z��Q�R�R��$�7�7��B�B�B�B����t�}�o�>�>���q�#�d�)�)�$�$�	=�	=�A�=�&�.�t�}�=�=�o�N�N�C����S�Z�Z��R�a�R��1�1�2�6�6�6����S�Z�Z��Q�R�R��1�1�8�<�<�<�<�	=�	=rN)
r)r*r+r~r�r�r�r�r�r�r�r�r�rrrrfrfps�������)
�)
�)
�V9�9�9�v.'�.'�.'�`C)�C)�C)�JD�D�D�60�0�0�0�0�0�"#+��*@�*@�*@�X=�=�=�=�=rrfc�d�eZdZdZejdkrdZndZdZdZd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�ZdS)�	UTF32Test�utf-32�little����܀s$��spamspams$��spamspamc���tj|j��\}}}}tj��}||��}|�d��|�d��|���}|�||jkp
||j	k��tj|��}||��}|�
|���d��dS�N�spam�spamspam�rP�lookuprYr�r�rD�getvaluerW�spamle�spamberrI�r�_r�r�rHr�r\s       r�test_only_one_bomzUTF32Test.test_only_one_bom�����"�M�$�-�8�8���!�F�6��J�L�L���F�1�I�I��	�������	�������
�J�J�L�L������T�[�(�<�A���,<�=�=�=��J�q�M�M���F�1�I�I����������:�.�.�.�.�.rc�^�tjd��}tj|j��|��}|�t|j��tjd��}tj|j��|��}|�t|j��dS)N�����s���������r�r�rPrrrYr��UnicodeErrorrI�rrHr�s   r�test_badbomzUTF32Test.test_badbom�s����J�y�!�!��+�F��T�]�+�+�A�.�.�����,���/�/�/��J�y�!�!��+�F��T�]�+�+�A�.�.�����,���/�/�/�/�/rc�6�|�dgd���dS)N�ÿĀ￿𐀀)rhrhrhrhrhrhrh�r�r�r��ÿr�r�r��ÿĀr�r�r��ÿĀ￿rrrr��r~�rs r�test_partialzUTF32Test.test_partial�s6�����,�
�
�
�	
�	
�	
�	
�	
rc��|�dtjddd����|�dtjddd����dS�N)r�rN�r�T)rhrNr��rrP�
utf_32_decoders r�
test_handlerszUTF32Test.test_handlers	�l�������-�g�y�$�G�G�	I�	I�	I������-�g�x��F�F�	H�	H�	H�	H�	Hrc�V�|�ttjddd��dS�N��rjT)r�r�rPrrs r�test_errorszUTF32Test.test_errors�3�����,�f�.B�!�8�T�	3�	3�	3�	3�	3rc��|�|jd|j��|�|jd|j��dS�Nr��r`rYr�r�rs r�test_decoder_statezUTF32Test.test_decoder_state�Z���(�(���)3�T�[�	B�	B�	B��(�(���)3�T�[�	B�	B�	B�	B�	Brc���d}|�dtj|��d��d}|�dtj|��d��dS)Ns���𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀rs��r)r�
encoded_le�
encoded_bes   r�test_issue8941zUTF32Test.test_issue8941su��F�
����,��-�j�9�9�!�<�	>�	>�	>�E�
����,��-�j�9�9�!�<�	>�	>�	>�	>�	>rN)r)r*r+rY�sys�	byteorderr�r�r�r�r�rr	rrrrrrr�r��s��������H�
�}�� � �1���1��F�F�F�F�
/�
/�
/�0�0�0�
�
�
�>H�H�H�3�3�3�B�B�B�>�>�>�>�>rr�c�.�eZdZdZdZd�Zd�Zd�Zd�ZdS)�UTF32LETest�	utf-32-ler�c�6�|�dgd���dS�Nr�)rhrhrhr�r�r�r�r�r�r�r�r�r�r�r�rrrrr�rrs rrzUTF32LETest.test_partial(�6�����,�
�
�
�	
�	
�	
�	
�	
rc�b�|�d�|j��d��dS)N�𐈃s�rrcrYrs r�test_simplezUTF32LETest.test_simpleC�/������,�,�T�]�;�;�=P�Q�Q�Q�Q�Qrc�V�|�ttjddd��dSr)r�r�rP�utf_32_le_decoders rrzUTF32LETest.test_errorsF�3�����,�f�.E�!�8�T�	3�	3�	3�	3�	3rc�f�d}|�dtj|��d��dS)Nsrr)rrPr(�rr}s  rrzUTF32LETest.test_issue8941J�A��-�����,��0��9�9�!�<�	>�	>�	>�	>�	>rN�	r)r*r+rYr�rr%rrrrrrr$�^�������H�-��
�
�
�6R�R�R�3�3�3�>�>�>�>�>rrc�.�eZdZdZdZd�Zd�Zd�Zd�ZdS)�UTF32BETest�	utf-32-ber�c�6�|�dgd���dSr rrs rrzUTF32BETest.test_partialVr!rc�b�|�d�|j��d��dS)Nr#sr$rs rr%zUTF32BETest.test_simpleqr&rc�V�|�ttjddd��dSr)r�r�rP�utf_32_be_decoders rrzUTF32BETest.test_errorstr)rc�f�d}|�dtj|��d��dS)Nsrr)rrPr5r+s  rrzUTF32BETest.test_issue8941xr,rNr-rrrr0r0Rr.rr0c�j�eZdZdZejdkrdZndZdZdZd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)�	UTF16Test�utf-16r�����܀s��spamspams��spamspamc���tj|j��\}}}}tj��}||��}|�d��|�d��|���}|�||jkp
||j	k��tj|��}||��}|�
|���d��dSr�r�r�s       rr�zUTF16Test.test_only_one_bom�r�rc�^�tjd��}tj|j��|��}|�t|j��tjd��}tj|j��|��}|�t|j��dS)Ns��r�r�r�s   rr�zUTF16Test.test_badbom�s����J�{�#�#��+�F��T�]�+�+�A�.�.�����,���/�/�/��J�*�+�+��+�F��T�]�+�+�A�.�.�����,���/�/�/�/�/rc�6�|�dgd���dS)Nr�)rhrhrhr�r�r�r�r�r�rrrrr�rrs rrzUTF16Test.test_partial�s6�����,�
�
�
�	
�	
�	
�	
�	
rc��|�dtjddd����|�dtjddd����dSr)rrP�
utf_16_decoders rr	zUTF16Test.test_handlers�r
rc�V�|�ttjddd��dSr)r�r�rPr@rs rrzUTF16Test.test_errors�rrc��|�|jd|j��|�|jd|j��dSrrrs rrzUTF16Test.test_decoder_state�rrc���d}|�|j��}|�tjtj��t
tjd��5}|�|��ddd��n#1swxYwYtjtjd|j���5}|�	|�
��|��ddd��dS#1swxYwYdS)NzHello
world
�wbrz�rY)rcrY�
addCleanupr�unlink�TESTFN�openrDrPrrI)rr�rH�fpr�s     r�test_bug691291zUTF16Test.test_bug691291�sM��
"���I�I�d�m�$�$�����	�(�)�*:�;�;�;�
�)�"�D�
)�
)�	�R��H�H�Q�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�[��)�3�"&�-�1�1�1�	0�4:����V�[�[�]�]�B�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s$�!B�B�
B�4)C*�*C.�1C.c��dD]�}|�t��5}tjtj||j���ddd��n#1swxYwY|�dt|j	������dD]�}|�t��5}tjtj||j���ddd��n#1swxYwY|�dt|j	������dS)N)�U�rUzr+UrEzinvalid mode)�rt�wt�atzr+tz'can't have text and binary mode at once)
r��
ValueErrorrPrIrrHrY�assertIn�str�	exception)r�mode�cms   r�test_invalid_modeszUTF16Test.test_invalid_modes�s���&�	=�	=�D��"�"�:�.�.�
L�"���I�,�d�T�]�K�K�K�K�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L����
L�
L�
L�
L��M�M�.�#�b�l�*;�*;�<�<�<�<�-�	-�	-�D��"�"�:�.�.�
L�"���I�,�d�T�]�K�K�K�K�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L����
L�
L�
L�
L��M�M�C��b�l�+�+�
-�
-�
-�
-�	-�	-s#�'A�A	�A	�$'C�C	�C	N)r)r*r+rYrrr�r�r�r�r�rr	rrrKrXrrrr8r8�s��������H�
�}�� � �)���)��
@�F�
@�F�
/�
/�
/�0�0�0�
�
�
�*H�H�H�3�3�3�B�B�B�
0�
0�
0�
-�
-�
-�
-�
-rr8c�(�eZdZdZdZd�Zd�Zd�ZdS)�UTF16LETest�	utf-16-ler:c�6�|�dgd���dS�Nr�)rhr�r�r�r�r�r�rrrrr�rrs rrzUTF16LETest.test_partial��6�����,�

�

�

�	
�	
�	
�	
�	
rc���gd�}|D]W\}}|�ttj|dd��|�|�dd��|���XdS)N)�r
r�)sAZ�A�)s	ABCDZ�ABCD�)s�r�)s�Ar�)s�A��A)s�ArcrjTzutf-16ler�)r�r�rP�utf_16_le_decoderrR�r�tests�raw�expecteds    rrzUTF16LETest.test_errors����
�
�
��#�	J�	J�M�C�����0�&�2I�!�8�T�
3�
3�
3����S�Z�Z�
�I�>�>��I�I�I�I�	J�	Jrc��|�d�|j��d��|�d�|j��d��dS)Nr#s�ީrrcrYrRrs r�test_nonbmpzUTF16LETest.test_nonbmp	�g������,�,�T�]�;�;�,�	.�	.�	.����,�3�3�D�M�B�B�%�	'�	'�	'�	'�	'rN�r)r*r+rYr�rrrlrrrrZrZ��O�������H�%��
�
�
�&
J�
J�
J�'�'�'�'�'rrZc�(�eZdZdZdZd�Zd�Zd�ZdS)�UTF16BETest�	utf-16-ber;c�6�|�dgd���dSr]rrs rrzUTF16BETest.test_partialr^rc���gd�}|D]W\}}|�ttj|dd��|�|�dd��|���XdS)N)r`)sA�ra)s	ABCDZrb)s�r�)s��r�)s�Arc)s�ArcrjTzutf-16ber�)r�r�rP�utf_16_be_decoderrRres    rrzUTF16BETest.test_errors&rirc��|�d�|j��d��|�d�|j��d��dS)Nr#s��rkrs rrlzUTF16BETest.test_nonbmp5rmrNrnrrrrqrqrorrqc�L��eZdZdZdZdZdZd�Zd�Zd�Z	�fd�Z
d	�Zd
�Z�xZ
S)�UTF8Test�utf-8s�u	���rc�6�|�dgd���dS)N�ÿ߿ࠀ￿𐀀)r�r�r�r��ÿ߿r|r|�ÿ߿ࠀr}r}�ÿ߿ࠀ￿r~r~r~r{rrs rrzUTF8Test.test_partialAs6�����2�
�
�
�	
�	
�	
�	
�	
rc�r�d}|�|j||�|j����dS)Nu€ÿĀ߿ࠀ￿􏿿)r`rYrc)rrZs  rrzUTF8Test.test_decoder_stateWsE��@���(�(���)*�A�H�H�T�]�,C�,C�	E�	E�	E�	E�	Erc���dD]e\}}}|�|||���5|�|�|j|��|��ddd��n#1swxYwY�fdS)N�)�[��]r�r�)r�r�u[��])r��surrogateescape�[��])r�r�z
[\x80\xff]�r��
error_handlerrh)�subTestrrRrY�rr�r�rhs    r�test_decode_errorzUTF8Test.test_decode_error\s���.
�		+�		+�)�D�-�����4�}�'/��1�1�
+�
+�� � ����T�]�M�!J�!J�!)�+�+�+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��
		+�		+s�0A�A!	�$A!	c���t�����|�d�|jd��|jdz��|�t��5}d�|jd��ddd��n#1swxYwY|j}|�|j	|j
|j�d��dS)Nr�r�s[�]u[���]u��)�superr�rrcrY�BOMr�r�rU�object�start�end)rrW�exc�	__class__s   �rr�zUTF8Test.test_lone_surrogateshs���
���$�$�&�&�&�	
����*�*�4�=�:K�L�L���I�-�	/�	/�	/��
�
�1�
2�
2�	L�b�"�)�)�$�-�9J�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L��l�������C�I�c�g�$5�6��G�G�G�G�Gs�3B�B�"Bc��|�d�|jd��|jdz��|�d�|jd��|jdz��|�d�|jd��|jdz��|�d�|jd��d��|�d�|jd��d��|�t
jd����|�t��5d�|jd��ddd��n#1swxYwY|�t��5d	�|jd��ddd��dS#1swxYwYdS)
Nu	abc�defr�s	abc�defu𐿿�s𐿿�r�s[��]sabc�sabc�z)
rrcrYr�rRrWrP�lookup_errorr�r�rs r�test_surrogatepass_handlerz#UTF8Test.test_surrogatepass_handlertsh������.�.�t�}�o�N�N���$9�9�	;�	;�	;����+�2�2�4�=�/�R�R���$C�C�	E�	E�	E����)�0�0����P�P���$A�A�	C�	C�	C�	
���.�5�5�d�m�_�U�U�'�	)�	)�	)����8�?�?��
��_�_�+�	-�	-�	-�	
����+�O�<�<�=�=�=�
�
�
�1�
2�
2�	B�	B��!�!�$�-��A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�
�
�
�1�
2�
2�	C�	C��"�"�4�=�/�B�B�B�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�	C�	Cs$�E-�-E1�4E1�F;�;F?�F?c�f�gd�}dD]}dD]}|�||z���� |�d��|D]r}|�|���5tj|j����}|�t|j|��ddd��n#1swxYwY�sdS)N)������������r
)������s���s���s�s���s�s�)�r�)s�s�s�s�s�s�s�r�)	r��extendr�rPrQrYr�r�rR)r�cases�prefix�suffixr�r�s      r�test_incremental_errorsz UTF8Test.test_incremental_errors�s>��P�O�O��>�	.�	.�F�+�
.�
.�����V�f�_�-�-�-�-�
.�
���N�	O�	O�	O��	H�	H�D����4��(�(�
H�
H�A�f�2�4�=�A�A�C�C���!�!�"4�c�j�$�G�G�G�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H����
H�
H�
H�
H��	H�	Hs�AB%�%B)	�,B)	)r)r*r+rYr�r�r�rrr�r�r�r��
__classcell__�r�s@rrxrx;s���������H�)��".��

�C�
�
�
�,E�E�E�

+�
+�
+�
H�
H�
H�
H�
H�C�C�C�&H�H�H�H�H�H�Hrrxc�0�eZdZdZd�Zd�Zd�Zd�Zd�ZdS)�UTF7Test�utf-7c��d}|�|�|j��|�d����|�|�d���|j��|��d}|�|�|j��|�d����|�|�d���|j��|��|�d�|j��d��|�d�|j��d��d}|�|�|j��|�d����|�|�d���|j��|��d�tt
ttd���������t
||zd	z|z��z
����}|�|�|j��d
��dS)NzGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?�asciiz !"#$%&*;<=>@[]^_`{|}za+bsa+-bz 	

rh��+sX+AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	rrcrYrRrv�sorted�setrmrO)r�set_d�set_o�ws�other_asciis     r�
test_asciizUTF7Test.test_ascii�s(����	
������d�m�4�4�e�l�l�7�6K�6K�L�L�L�������g�.�.�5�5�d�m�D�D�e�L�L�L�'��������d�m�4�4�e�l�l�7�6K�6K�L�L�L�������g�.�.�5�5�d�m�D�D�e�L�L�L�������d�m�4�4�g�>�>�>��������
�6�6��>�>�>�
��������4�=�1�1�2�9�9�W�3E�3E�F�F�F�������7�+�+�2�2�4�=�A�A�2�F�F�F��g�g�f�S��u�T�{�{�);�);�)B�)B�)D�)D�%E�%E�%(�����)<�r�)A�%B�%B�&C�D�D�E�E������+�+�D�M�:�:�D�	E�	E�	E�	E�	Erc�6�|�dgd���dS)N�a+-bc€dĀe𐀀f) r�r��a+za+-�a+-br�r�r�r�za+-b�a+-bcr�r�r�r�ua+-bc€�	a+-bc€dr�r�r�r�ua+-bc€dĀ�a+-bc€dĀer�r�r�r�r�r�r�ua+-bc€dĀe𐀀r�rrs rrzUTF7Test.test_partial��6�����.�!
�!
�!
�$	
�$	
�$	
�$	
�$	
rc	��gd�}|D]�\}}|�|���5|�ttj|dd��|�|�dd��|��ddd��n#1swxYwY��dS)N))s�bu�b)sa�b�a�b)sa��bua��b)sa+IK�a�)sa+IK-br�)sa+IK,br�)sa+IKx�a€�)sa+IKx-b�a€�b)sa+IKwgrr�)s	a+IKwgr-br�)sa+IKwgr,r�)s
a+IKwgr,-bu	a€�-b)sa+IKwgrB�
a€€�)s
a+IKwgrB-b�a€€�b)s
a+/,+IKw-b�a�€b)sa+//,+IKw-br�)sa+///,+IKw-b�a￿�€b)s
a+////,+IKw-br�)sa+IKw-b�ua€b�)sa+IKw�br�)sa+@br��rgrjTr�r�)r�r�r�rP�utf_7_decoderrRres    rrzUTF7Test.test_errors�s���
�
�
��.#�	K�	K�M�C�����#��&�&�
K�
K��!�!�"4�f�6I� #�X�t�5�5�5�� � ����G�Y�!?�!?��J�J�J�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K��	K�	Ks�AB�B	�B	c��|�d�|j��d��|�d�|j��d��|�d�|j��d��|�d�|j��d��|�d�|j��d��|�d�|j��d��|�d�|j��d��|�d�|j��d	��|�d	�|j��d��|�d
�|j��d��dS)Nu𐒠s+2AHcoA-u��s+2AHcoAu€𐒠s
+IKzYAdyg-s	+IKzYAdygu
€€𐒠s
+IKwgrNgB3KA-s+IKwgrNgB3KArkrs rrlzUTF7Test.test_nonbmp�s�������,�,�T�]�;�;�[�I�I�I�����.�.�t�}�=�=�{�K�K�K�����+�+�D�M�:�:�L�I�I�I�����*�*�4�=�9�9�<�H�H�H����+�2�2�4�=�A�A�=�Q�Q�Q�����-�-�d�m�<�<�>P�Q�Q�Q�����,�,�T�]�;�;�=O�P�P�P����1�8�8���G�G�)�	+�	+�	+����)�0�0���?�?�1�	3�	3�	3�����/�/��
�>�>�1�	3�	3�	3�	3�	3rc���gd�}|D]]\}}|�|���5|�|�dd��|��ddd��n#1swxYwY�^dS)N)
)sa+2AE-bua�b)sa+2AE�br�)sa+2AEr�)sa+2AEA-br�)sa+2AH-br�)s
a+IKzYAQ-bua€�b)s
a+IKzYAQ�br�)sa+IKzYAQA-br�)s
a+IKzYAd-br�)sa+IKwgrNgB-bua€€�b)sa+IKwgrNgB�br�)s
a+IKwgrNgBr�)s
a+IKwgrNgBA-br�r�r�r��r�rrRres    rr�zUTF7Test.test_lone_surrogates
s���
�
�
��#�	K�	K�M�C�����#��&�&�
K�
K�� � ����G�Y�!?�!?��J�J�J�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K��	K�	Ks�+A�A	� A	N)	r)r*r+rYr�rrrlr�rrrr�r��sp�������H�E�E�E�4%
�%
�%
�NK�K�K�<
3�
3�
3�K�K�K�K�Krr�c��eZdZd�Zd�ZdS)�UTF16ExTestc�X�|�ttjdddd��dS)Nr
rjrT)r�r�rP�utf_16_ex_decoders rrzUTF16ExTest.test_errors!s-�����,�f�.E�w�PX�Z[�]a�b�b�b�b�brc�P�|�ttj��dSr
)r��	TypeErrorrPr�rs r�
test_bad_argszUTF16ExTest.test_bad_args$s!�����)�V�%<�=�=�=�=�=rN)r)r*r+rr�rrrr�r�s5������c�c�c�>�>�>�>�>rr�c� �eZdZd�Zd�Zd�ZdS)�ReadBufferTestc��ddl}|�tj|�dd����d��dS)Nrr��spam)r��)�arrayrrP�readbuffer_encode)rr�s  r�
test_arrayzReadBufferTest.test_array)sL����������$�U�[�[��g�%>�%>�?�?��	
�	
�	
�	
�	
rc�V�|�tjd��d��dS)Nrh�rr)rrPr�rs r�
test_emptyzReadBufferTest.test_empty0s)������1�"�5�5�x�@�@�@�@�@rc��|�ttj��|�ttjd��dS�N�*)r�r�rPr�rs rr�zReadBufferTest.test_bad_args3s<�����)�V�%=�>�>�>����)�V�%=�r�B�B�B�B�BrN)r)r*r+r�r�r�rrrr�r�'sI������
�
�
�A�A�A�C�C�C�C�Crr�c�>�eZdZdZejZd�Zd�Zd�Z	d�Z
d�ZdS)�UTF8SigTest�	utf-8-sigc�6�|�dgd���dS)N�ÿ߿ࠀ￿𐀀)rhrhrhrhrhu�r��ÿr��ÿ߿r�r��ÿ߿ࠀr�r��ÿ߿ࠀ￿r�r�r�r�rrs rrzUTF8SigTest.test_partial;s6�����8�
�
�
�	
�	
�	
�	
�	
rc�N�|�tdd��d��dS)N�r�rh�rrTrs r�test_bug1601501zUTF8SigTest.test_bug1601501Ws(������_�k�:�:�B�?�?�?�?�?rc��tjd����}d}|�|�|�d����|��dS)Nr�r�)rPrQrrRrc)rr\rHs   r�test_bomzUTF8SigTest.test_bom[sS��5�F�(��5�5�7�7����������!�(�(�;�"7�"7�8�8�!�<�<�<�<�<rc���d}tjdz}tjd��}dgtt	dd����zgd�zD]�}|tj|����}tj��}	|�|�|��}n|���}|sn|�	|���E|�
��}|�||����dS�NuABC¡∀XYZsABC¡∀XYZr�rN�)�@r���i)rP�BOM_UTF8rr�listrOr�r��StringIOrIrDr�r�	r�	unistring�
bytestringr��sizehint�istream�ostreamr��gots	         r�test_stream_bomzUTF8SigTest.test_stream_bom`s���(�	��_�'D�D�
��!�+�.�.�����e�A�r�l�l�!3�!3�3�1�1�1�2�	-�	-�H��f�R�Z�
�3�3�4�4�G��k�m�m�G�
$��'�"�<�<��1�1�D�D�"�<�<�>�>�D�����
�
�d�#�#�#�
$��"�"�$�$�C����S�)�,�,�,�,�	-�	-rc���d}d}tjd��}dgttdd����zgd�zD]�}|t	j|����}t	j��}	|�|�|��}n|���}|sn|�|���E|�	��}|�
||����dSr�)rPrrr�rOr�r�r�rIrDr�rr�s	         r�test_stream_barezUTF8SigTest.test_stream_barevs���(�	�2�
��!�+�.�.�����e�A�r�l�l�!3�!3�3�1�1�1�2�	-�	-�H��f�R�Z�
�3�3�4�4�G��k�m�m�G�
$��'�"�<�<��1�1�D�D�"�<�<�>�>�D�����
�
�d�#�#�#�
$��"�"�$�$�C����S�)�,�,�,�,�	-�	-rN)r)r*r+rYrPr�r�rr�r�rrrrrr�r�7sn�������H�
�/�C�
�
�
�8@�@�@�=�=�=�
-�-�-�,-�-�-�-�-rr�c�&�eZdZd�Zd�Zd�Zd�ZdS)�EscapeDecodeTestc��|�tjd��d��|�tjt����d��dS)Nrr�)rrP�
escape_decode�	bytearrayrs rr�zEscapeDecodeTest.test_empty�sN������-�c�2�2�H�=�=�=�����-�i�k�k�:�:�H�E�E�E�E�Erc��tj}td��D]?}t|g��}|dkr'|�||dz��|dzdf���@dS)Nr��\�0r )rPr
rOrmr�rrRr�s   r�test_rawzEscapeDecodeTest.test_raw�sp���%���s���	B�	B�A��q�c�
�
�A��E�z�z�� � ����D��!1�!1�A��H�a�=�A�A�A��	B�	Brc	���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!��td$d%��D]�}t	|g��}|d&vrD|�t��5|d'|zd'|z��ddd��n#1swxYwY|�t��5|d'|���zd'|���z��ddd��n#1swxYwY��|�t��5|d(d(��ddd��n#1swxYwY|�t��5|d)d)��ddd��n#1swxYwY|�t��5|d*d*��ddd��n#1swxYwYtd+d,��D]T}|�t��5|d-|zt	|d.zg����ddd��n#1swxYwY�UdS)/N�[\
]�[]�[\"]s["]�[\']s[']�[\\]s[\]�[\a]s[]�[\b]s[]�[\t]s[	]�[\n]s[
]�[\v]s[]�[\f]s[]�[\r]s[
]�[\7]�[\78]s[8]�[\41]s[!]�[\418]s[!8]�[\101]s[A]�[\1010]s[A0]�[\x41]�[\x410]�a�{sabfnrtvxr
�\8�\9�\�r�r��\%o�)rPr
rrOrm�assertWarns�DeprecationWarning�upper�rrRrr[r�s     r�test_escapezEscapeDecodeTest.test_escape�s����%���t�V�,�,��
��i�����
��h�����
��h�����
��h�� � � �
��h�	�"�"�"�
��h�	�"�"�"�
��h�	�"�"�"�
��h�	�"�"�"�
��h�	�"�"�"�
��h�	�"�"�"�
��h�	�"�"�"�
��h�	�"�"�"�
��i��$�$�$�
��i�� � � �
��j�'�"�"�"�
��j�&�!�!�!�
��k�7�#�#�#�
��j�&�!�!�!�
��k�7�#�#�#��r�3���	<�	<�A��q�c�
�
�A���#�#��%�%�&8�9�9�0�0��E�%�!�)�U�Q�Y�/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0��!�!�"4�5�5�
<�
<���e�a�g�g�i�i�'�������):�;�;�;�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<��
�
�
�0�
1�
1�	"�	"��E�&�&�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�
�
�
�0�
1�
1�	"�	"��E�&�&�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�
�
�
�0�
1�
1�	(�	(��E�)�Y�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(��u�f�%�%�	7�	7�A��!�!�"4�5�5�
7�
7���g��k�5�!�e�)��#5�#5�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7sl�E � E$	�'E$	�7G�G	�G	�.
H�H�H�,
I�I	�I	�*
J�J�
J�:!K'�'K+	�.K+	c��tj}|�t|d��|�t|d��|�|dd��d��|�|dd��d��|�t|d��|�t|d	��|�|d
d��d��|�|d
d��d��dS)
Ns\xs[\x]s[\x]\xr�)rr�r�)�[?]?r�s\x0s[\x0]s[\x0]\x0)r�)r3r4)rPr
r�rRr)rrRs  rrzEscapeDecodeTest.test_errors�s����%�����*�f�f�5�5�5����*�f�h�7�7�7������
�H�5�5�z�B�B�B������
�I�6�6��E�E�E����*�f�g�6�6�6����*�f�i�8�8�8�������h�7�7��D�D�D�������i�8�8�,�G�G�G�G�GrN)r)r*r+r�rr1rrrrrr�s\������F�F�F�B�B�B�%7�%7�%7�N	H�	H�	H�	H�	Hrr))u"ليهمابتكلموشعربي؟segbpdaj6bu4bxfgehfvwxn)u他们为什么不说中文sihqwcrb4cv8a8dqg056pqjye)u他們爲什麽不說中文sihqwctvzc91f659drss3x8bo0yb)uPročprostěnemluvíčeskysProprostnemluvesky-uyb24dma41a)u,למההםפשוטלאמדבריםעבריתs4dbcagdahymbxekheh6e0a7fei0b)uZयहलोगहिन्दीक्योंनहींबोलसकतेहैंs,i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd)u6なぜみんな日本語を話してくれないのかs&n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa)uH세계의모든사람들이한국어를이해한다면얼마나좋을까sE989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c)u8почемужеонинеговорятпорусскиs b1abfaaepdrnnbgefbaDotcwatmq2g4l)u*PorquénopuedensimplementehablarenEspañols-PorqunopuedensimplementehablarenEspaol-fmd56a)u-TạisaohọkhôngthểchỉnóitiếngViệts,TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g)u3年B組金八先生s3B-ww4c5e180e575a65lsy2b)u"安室奈美恵-with-SUPER-MONKEYSs(-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n)u'Hello-Another-Way-それぞれの場所s(Hello-Another-Way--fc4qua05auwb3674vfr0b)uひとつ屋根の下2s2-u9tlzr9756bt3uc0v)uMajiでKoiする5秒前sMajiKoi5-783gue6qz075azm5e)uパフィーdeルンバsde-jg4avhby1noc0d)uそのスピードでsd9juau41awczczp)z-> $1.00 <-s-> $1.00 <--r c� �eZdZd�Zd�Zd�ZdS)�PunycodeTestc���tD]n\}}|�t|�d��d�����t|d��������odS�N�punycoder�)�punycode_testcasesrrTrc�lower�r�uni�punys   r�test_encodezPunycodeTest.test_encode:s|��+�		�		�I�C��
����C�J�J�z�*�*�G�4�4�:�:�<�<��D�'�"�"�(�(�*�*�
�
�
�
�
		�		rc��tD]\}}|�||�d����|�d���d��}|�||�d������dSr8)r:rrRrcr<s   r�test_decodezPunycodeTest.test_decodeFs���+�	;�	;�I�C�����S�$�+�+�j�"9�"9�:�:�:��;�;�w�'�'�.�.�w�7�7�D����S�$�+�+�j�"9�"9�:�:�:�:�	;�	;rc�`�ddt��fdg}|D]�\}}}|�||���5t|t��r#|�t|jd|��n*|�|�d|��|��ddd��n#1swxYwY��dS)N�xn--w&rj)rCr�zxn-)r>�errorsr9)r�r��
isinstance�	Exceptionr�rRr)r�	testcasesr>rDrhs     r�test_decode_invalidz PunycodeTest.test_decode_invalidLs��
��,�.�.�1�(�
�	�'0�	P�	P�"�D�&�(����4���7�7�
P�
P��h�	�2�2�P��%�%�l�D�K��V�T�T�T�T��$�$�T�[�[��V�%D�%D�h�O�O�O�	
P�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P����
P�
P�
P�
P��	P�	Ps�A#B"�"B&	�)B&	N)r)r*r+r?rArHrrrr6r69sF������
�
�
�;�;�;�
P�
P�
P�
P�
Prr6)-)s%foo­͏᠆᠋bar​⁠baz︀︈️s	foobarbaz)sCAFEscafe)sßsss)sİsi̇)sŃͺsń ι�NN)sǰ ªsǰ a)sᾷsᾶι)�ǰrJ)�ΐrK)�ΰrL)�ẖrM)�ὖrN)� rO)s rO)s N)s rO)s​r)s rO)�rP)s…N)s᠎N)r�r)s𝅵N)sN)s󱈴N)s􏈴N)s򏿾N)s􏿿N)s�N)s�N)s⿵N)śś)s‎N)s‪N)s󠀁N)s󠁂N)sfoo־barN)s	fooﵐbarN)s	fooﹶbars	foo َbar)sا1N)�ا1بrQrI)sX­ßİ℡ǰ ªΰ sxssi̇telǰ aΰ )sXß㌖İ℡⒟㌀s*xssキロメートルi̇tel(d)アパートc��eZdZd�ZdS)�NameprepTestc	��ddlm}tt��D]�\}\}}|��t	|dd��}|�|�t||���;t	|dd��}	|�||��|���m#t$r.}tj
d|dzt	|��fz���d}~wwxYwdS)Nr)�nameprepryr�z
Test 3.%d: %srN)�encodings.idnarUr��nameprep_testsrTr�r�rrFr�
TestFailed)rrU�pos�orig�prepped�es      r�
test_nameprepzNameprepTest.test_nameprep�s���+�+�+�+�+�+�$-�n�$=�$=�	P�	P� �C��$���|���t�W�o�6�6�D����!�!�,��$�?�?�?�?��g�w��@�@��P��$�$�X�X�d�^�^�W�=�=�=�=�� �P�P�P�!�,�_��A��s�1�v�v��-N�O�O�O�����P����	P�	Ps�(B�
C�)B;�;CN)r)r*r+r]rrrrSrS�s(������P�P�P�P�PrrSc�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�
IDNACodecTestc�&�|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d	��dS)
N�
python.org�idna�
python.org�python.org.�python.org.�xn--pythn-mua.org�pythön.org�xn--pythn-mua.org.�pythön.org.r�rs r�test_builtin_decodez!IDNACodecTest.test_builtin_decodes�������]�F�3�3�\�B�B�B�����^�V�4�4�m�D�D�D�����1�6�:�:�O�L�L�L�����2�F�;�;�=M�N�N�N�N�Nrc�N�|�d�d��d��|�d�d��d��|�d�d��d��|�d�d��d	��dS)
Nrcrbrarerdrgrfrirh�rrcrs r�test_builtin_encodez!IDNACodecTest.test_builtin_encodes�������,�,�V�4�4�m�D�D�D�����-�-�f�5�5�~�F�F�F�����/�/��7�7�9M�N�N�N����)�0�0��8�8�:O�P�P�P�P�Prc�(�|�td��5d�d��ddd��n#1swxYwY|�td��5d�d��ddd��dS#1swxYwYdS)Nztoo longsTxn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarbsNxn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)�assertRaisesRegexr�rRrs r� test_builtin_decode_length_limitz.IDNACodecTest.test_builtin_decode_length_limits��
�
#�
#�L�*�
=�
=�	3�	3�
"�*�*�6�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�
�
#�
#�L�*�
=�
=�	1�	1�
 �(�(��0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s!�>�A�A�$B�B�Bc���tjd��tjd����}|�d��|�|���d��dS)Nrb�abc�rh)rPrrr�r�rIr)rrzs  r�test_streamzIDNACodecTest.test_streamsY��$�F��V�$�$�R�Z��%7�%7�8�8��	���q�	�	�	���������2�&�&�&�&�&rc�*�|�d�tjd�dD��d����d��|�d�tjd�dD��d����d��|�d�tjd	�d
D��d����d��|�d�tjd�d
D��d����d��tjd����}|�|�d
��d��|�|�d��d��|�|�d��d��|�|�dd��d��|���|�|�d
��d��|�|�d��d��|�|�d��d��|�|�dd��d��dS)Nrhc3�6K�|]}t|g��V��dSr
rlrns  rr�z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>!s*����&I�&I�a�u�a�S�z�z�&I�&I�&I�&I�&I�&Irrarbrcc3�6K�|]}t|g��V��dSr
rlrns  rr�z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>%s*����&J�&J�a�u�a�S�z�z�&J�&J�&J�&J�&J�&Jrrdrec3�6K�|]}t|g��V��dSr
rlrns  rr�z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>)�*����&Q�&Q�a�u�a�S�z�z�&Q�&Q�&Q�&Q�&Q�&Qrrhric3�6K�|]}t|g��V��dSr
rlrns  rr�z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>-ryrsxn--xams	ple-9ta.ou	äxample.srgrT�orgsrg.zorg.)rrvrPrwrQrRru)r�decoders  r�test_incremental_decodez%IDNACodecTest.test_incremental_decodese������G�G�F�%�&I�&I�=�&I�&I�&I�6�R�R�S�S��	
�	
�	
�	
����G�G�F�%�&J�&J�>�&J�&J�&J�F�S�S�T�T��	
�	
�	
�	
����G�G�F�%�&Q�&Q�;P�&Q�&Q�&Q�SY�Z�Z�[�[��	
�	
�	
�	
����G�G�F�%�&Q�&Q�;P�&Q�&Q�&Q�SY�Z�Z�[�[��	
�	
�	
�
7�&�.�v�6�6�8�8��������
�5�5�r�:�:�:��������7�7��G�G�G��������.�.��3�3�3��������T�2�2�E�:�:�:��
�
����������
�5�5�r�:�:�:��������7�7��G�G�G��������/�/��8�8�8��������T�2�2�B�7�7�7�7�7rc�6�|�d�tjdd����d��|�d�tjdd����d��|�d�tjdd����d��|�d�tjdd����d��tjd����}|�|�d	��d��|�|�d
��d��|�|�dd
��d��|���|�|�d	��d��|�|�d��d��|�|�dd
��d��dS)Nrrcrbrarerdrirhuäxz	ample.orgsxn--xample-9ta.rhTsorgz
ample.org.sxn--xample-9ta.org.)rrvrP�
iterencoderbrcru)r�encoders  r�test_incremental_encodez%IDNACodecTest.test_incremental_encode=s�������H�H�V�&�|�V�<�<�=�=��	
�	
�	
�	
����H�H�V�&�}�f�=�=�>�>��	
�	
�	
�	
����H�H�V�&�'7��@�@�A�A�!�	
�	
�	
�	
����H�H�V�&�'7��@�@�A�A�!�	
�	
�	
�
7�&�.�v�6�6�8�8���������0�0�#�6�6�6��������4�4�6H�I�I�I��������D�1�1�6�:�:�:��
�
�����������0�0�#�6�6�6��������5�5�7M�N�N�N��������D�1�1�3�7�7�7�7�7rc���d�dd��d�dd��dD]F}|�tdjd|��|�tdjd|���GdS)z$Only supports "strict" error handlerrcrbrjra)r�r�r�r�N)rcrRr�rF�rrDs  rrzIDNACodecTest.test_errorsYs������F�H�-�-�-����V�X�.�.�.�#�	6�	6�F����i��)<�f�f�M�M�M����i��$�f�f�
6�
6�
6�
6�	6�	6rN)
r)r*r+rjrmrprtr}r�rrrrr_r_s�������O�O�O�Q�Q�Q�1�1�1�'�'�'�
8�8�8�<8�8�8�86�6�6�6�6rr_c�b�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)�CodecsModuleTestc���|�tjdd��d��|�ttj��|�tjd��d��|�t
tjdd��|�tjdd���d��|�tjd	dd
���d��dS)
N���latin-1�äöürr�abcr
r���objrY�[�]r��rDr�)rrPrRr�r�r�rs rrAzCodecsModuleTest.test_decodefs���������	�B�B�'�	)�	)�	)����)�V�]�3�3�3������v�.�.��6�6�6����,�f�m�W�g�N�N�N�	
�����?�Y�O�O�O�'�	)�	)�	)������y�'�(�K�K�K��	�	�	�	�	rc�8�|�tjdd��d��|�ttj��|�t
tjdd��|�tjd��d��|�ttjdd	��|�tjdd�
��d��|�tjdd	d�
��d��dS)Nr�r�r�r��__spam__r�rruÿffr�r��[ÿ]r�r�r)rrPrcr�r��LookupErrorr�rs rr?zCodecsModuleTest.test_encodess�������~�y�A�A�(�	*�	*�	*����)�V�]�3�3�3����+�v�}�e�Z�H�H�H������u�-�-�v�6�6�6����,�f�m�X�w�O�O�O�	
�����>�I�N�N�N�(�	*�	*�	*������x���J�J�J��	 �	 �	 �	 �	 rc��|�ttj��|�ttjd��dSr�)r�r�rP�registerrs r�
test_registerzCodecsModuleTest.test_register�s:�����)�V�_�5�5�5����)�V�_�b�9�9�9�9�9rc��d}tj��}tj|��|�t
tj|��|�|��|���tj	|��|�ttj|��|���dS)N�nonexistent_codec_name)r�MockrPr�r�r�r��assert_called_with�
reset_mock�
unregisterr��assert_not_called)r�name�search_functions   r�test_unregisterz CodecsModuleTest.test_unregister�s���'���)�+�+�����(�(�(����)�V�]�D�9�9�9��*�*�4�0�0�0��"�"�$�$�$���/�*�*�*����+�v�}�d�;�;�;��)�)�+�+�+�+�+rc���|�ttj��|�ttjd��|�ttjd��dS)Nr�� )r�r�rPr�r�rs r�test_lookupzCodecsModuleTest.test_lookup�sT�����)�V�]�3�3�3����+�v�}�j�A�A�A����+�v�}�c�:�:�:�:�:rc��|�ttj��|�ttjd��dS�Nr�)r�r�rP�
getencoderr�rs r�test_getencoderz CodecsModuleTest.test_getencoder��<�����)�V�%6�7�7�7����+�v�'8�*�E�E�E�E�Erc��|�ttj��|�ttjd��dSr�)r�r�rP�
getdecoderr�rs r�test_getdecoderz CodecsModuleTest.test_getdecoder�r�rc��|�ttj��|�ttjd��dSr�)r�r�rPrrr�rs r�test_getreaderzCodecsModuleTest.test_getreader��<�����)�V�%5�6�6�6����+�v�'7��D�D�D�D�Drc��|�ttj��|�ttjd��dSr�)r�r�rPr�r�rs r�test_getwriterzCodecsModuleTest.test_getwriter�r�rc��tjtj��}|�tjtj|��	tjtjd��n*#tj$r|�d��YnwxYwt
jd��}|�|j	d��dS)N�tr_TRztest needs Turkish locale�ASCIIr�)
�locale�	setlocale�LC_CTYPErF�Error�skipTestrPr�rr�)r�	oldlocalerps   r�test_lookup_issue1813z&CodecsModuleTest.test_lookup_issue1813�s����$�V�_�5�5�	�����(�&�/�9�E�E�E�	7���V�_�g�6�6�6�6���|�	7�	7�	7��M�M�5�6�6�6�6�6�	7����
�M�'�"�"��������)�)�)�)�)s�A+�+$B�Bc��d}|�|tj��tjD]}tt|���dS)N),rcrRr��	CodecInfo�Codec�IncrementalEncoder�IncrementalDecoder�StreamReader�StreamWriterr�r�r�rbrQrrr��register_errorr��
strict_errors�replace_errors�
ignore_errors�xmlcharrefreplace_errors�backslashreplace_errors�namereplace_errorsrI�EncodedFilerrwr��BOM_BE�BOM_LEr��	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)�assertCountEqualrP�__all__�getattr)r�apis  r�test_allzCodecsModuleTest.test_all�sQ��
��$	
���c�6�>�2�2�2��>�	!�	!�C��F�C� � � � �	!�	!rc�n�|�tjtj��dD]�}|�|��5tjtj|d��5}|�|t
j��ddd��n#1swxYwYddd��n#1swxYwY��dS)N)�wrzzr+�w+r�r�r�)	rFrrGrHr�rPrIrTr�)rrV�files   r�	test_openzCodecsModuleTest.test_open�sE�����	�(�)�*:�;�;�;�5�	G�	G�D����d�#�#�
G�
G��K�	� 0�$��@�@�
G�DH��%�%�d�F�,E�F�F�F�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G��	G�	Gs6�!B)�%!B�B)�B�B)�B�B)�)B-	�0B-	c���|�ttjdd��|�ttjdd��|�ttjdd��|�ttjdd��dD]R}|�ttjdd|��|�ttjdd|���SdS)Nr��	undefinedrrrhr)rjr�r�r�)r�r�rPrcrRr�s  r�test_undefinedzCodecsModuleTest.test_undefined�s������,��
�u�k�J�J�J����,��
�v�{�K�K�K����,��
�r�;�G�G�G����,��
�s�K�H�H�H�I�	<�	<�F����l��
�u�k�6�
;�
;�
;����l��
�v�{�F�
<�
<�
<�
<�	<�	<rc�n�tj��}tjd|��5}|�t��5tjtjdd��ddd��n#1swxYwY|��j	�
��ddd��dS#1swxYwYdS)Nz
builtins.openrPzinvalid-encoding)r�	mock_open�patchr�r�rPrIrrH�close�
assert_called)rr�r�s   r�'test_file_closes_if_lookup_error_raisedz8CodecsModuleTest.test_file_closes_if_lookup_error_raised�s0���N�$�$�	�
�Z���
3�
3�	)�t��"�"�;�/�/�
H�
H���I�,�d�4F�G�G�G�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H����
H�
H�
H�
H�
�D�F�F�L�&�&�(�(�(�		)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)s5�B*�!A1�%B*�1A5	�5B*�8A5	�9$B*�*B.�1B.N)r)r*r+rAr?r�r�r�r�r�r�r�r�r�r�r�r�rrrr�r�ds���������� � � �:�:�:�
,�
,�
,�;�;�;�
F�F�F�F�F�F�E�E�E�E�E�E�*�*�*�!�!�!�.G�G�G�	<�	<�	<�)�)�)�)�)rr�c��eZdZd�Zd�ZdS)�StreamReaderTestc�j�tjd��|_tjd��|_dS)Nry�한
글)rPrrr�r�r�r�rs r�setUpzStreamReaderTest.setUp�s*���&�w�/�/����j�!>�?�?����rc��|�|j��}|�|���ddg��dS)Nu한
u글)r�r�rr�)rr�s  r�test_readlineszStreamReaderTest.test_readlines�s>���K�K���$�$�����������X�(>�?�?�?�?�?rN)r)r*r+r�r�rrrr�r��s:������@�@�@�@�@�@�@�@rr�c��eZdZd�ZdS)�EncodedFileTestc�v�tjd��}tj|dd��}|�|���d��tj��}tj|dd��}|�d��|�|���d��dS)Nr�r[rys\�
�r��ü��)r�r�rPr�rrIrDr��rr��efs   r�
test_basiczEncodedFileTest.test_basic�s����J�4�5�5��
�
��;��
8�
8����������$;�<�<�<��J�L�L��
�
��7�I�
6�
6��
���������������w�/�/�/�/�/rN)r)r*r+r�rrrr�r��s#������0�0�0�0�0rr�)er��big5�	big5hkscs�charmap�cp037�cp1006�cp1026�cp1125�cp1140�cp1250�cp1251�cp1252�cp1253�cp1254�cp1255�cp1256�cp1257�cp1258�cp424�cp437�cp500�cp720�cp737�cp775�cp850�cp852�cp855�cp856�cp857�cp858�cp860�cp861�cp862�cp863�cp864�cp865�cp866�cp869�cp874�cp875�cp932�cp949�cp950�euc_jis_2004�euc_jisx0213�euc_jp�euc_kr�gb18030�gb2312�gbk�	hp_roman8�hzrb�
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_r�koi8_t�koi8_u�kz1048�latin_1�mac_cyrillic�	mac_greek�mac_iceland�
mac_latin2�	mac_roman�mac_turkish�palmos�ptcp154r9�raw_unicode_escape�	shift_jis�shift_jis_2004�shift_jisx0213�tis_620�unicode_escape�utf_16�	utf_16_be�	utf_16_le�utf_7�utf_8�mbcs_encode�mbcs�
oem_encode�oemr9c��eZdZd�Zejejedud��d�����Z	d�Z
d�Zd�Zd�Z
d	�ZdS)
�BasicUnicodeTestc	����d}tD�]m}tj|��j}|�d��r|dz
}n|dkrd}|dkr>|�|�dd��|�dd����tj|��|��\}}|�|t|��d|z��tj	|��|��\}}|�||d|z��|tv�rtd��}tj|��|��}d}	|D]g}
|�
|
��|���}|�t!|��t"ut!|����|	|z
}	�htd��}tj|��|��}d	}
|	D]<}
|�
t#|
g����|
|���z
}
�=|�|
|d|z��|tv�r6	tj|�����d}	|D]}
|	��|
��z
}	�|	��d	d
��z
}	tj|�����d	}
|	D](}
|
��t#|
g����z
}
�)|
��dd
��z
}
|�|
|d|z��d	�tjtj||��|����}|�||d|z��d	�tjtjd	|��|����}|�|d	��n#t4$rYnwxYw|dvr�	tj|��d���d��fd
�|D����}	tj|��d���d	��fd�|	D����}
|�|
|d|z����\#t4$rY��iwxYw��odS)N�abc123�_codecrGr\r��-�encoding=%rrrhT�rbr\r�c3�B�K�|]}��|��V��dSr
�rc)rorpr�s  �rr�z/BasicUnicodeTest.test_basics.<locals>.<genexpr>�s/�����0N�0N�q�����1B�1B�0N�0N�0N�0N�0N�0Nrc3�^�K�|]'}��t|g����V��(dSr
�rRrm)rorpr|s  �rr�z/BasicUnicodeTest.test_basics.<locals>.<genexpr>�sS�����0H�0H�45�18���u�a�S�z�z�0J�0J�0H�0H�0H�0H�0H�0Hr)�all_unicode_encodingsrPr�r��endswithrr�r�rr��broken_unicode_with_statefulr<r�rDrIrW�typermrrrbrcrQrRrvrwrr�)rrHrYr�r�rGrCryr��
encodedresultrp�chunkr��
decodedresultr{r|r�s               @@r�test_basicszBasicUnicodeTest.test_basicsts������-�L	C�L	C�H��=��*�*�/�D�� � ��*�*�
!��� ����Y�&�&� ���v�~�~�� � ��!1�!1�#�s�!;�!;�!%���c�3�!7�!7�9�9�9�4��)�(�3�3�A�6�6�I�Q�����T�3�q�6�6�=�8�+C�D�D�D�7�F�-�h�7�7��:�:�M�U�D����U�A�}�x�'?�@�@�@��;�;�;��#�J�J��3��)�(�3�3�A�6�6�� #�
��+�+�A��L�L��O�O�O��F�F�H�H�E��O�O�D��K�K�5�$8�$�u�+�+�F�F�F�!�U�*�M�M��#�J�J��3��)�(�3�3�A�6�6�� "�
�&�3�3�A��G�G�E�1�#�J�J�'�'�'�!�V�[�[�]�]�2�M�M�� � ���=�8�3K�L�L�L��;�;�;�1�D�f�:�8�D�D�F�F�G�
%(�M��;�;��%�����):�):�:�
�
�!�W�^�^�B��%=�%=�=�M�D�f�:�8�D�D�F�F�G�$&�M�*�D�D��%�����q�c�
�
�)C�)C�C�
�
�!�W�^�^�C��%>�%>�>�M��$�$�]�A�%2�X�%=�?�?�?� �W�W�V�%6�"�-�a��:�:�H�&F�&F�G�G�F��$�$�V�Q�
��0H�I�I�I� �W�W�V�%6�"�-�b�(�;�;�X�&G�&G�H�H�F��$�$�V�R�0�0�0�0��1#�����D�����4�#3�3�3�
C�"H�&�">�x�"H�"H��"R�"R��),���0N�0N�0N�0N�A�0N�0N�0N�(N�(N�
�"H�&�">�x�"H�"H��"R�"R��(*���0H�0H�0H�0H�9F�0H�0H�0H�)H�)H�
��(�(���)6��)A�C�C�C�C��'�����������IL	C�L	Cs$�N;�;
O�O�Q(�(
Q6�5Q6Nzneed _testcapi modulec����d}tD�]}}|tv�rp	tj|���d}|D]}|��|��z
}�|��dd��z
}tj|���d}|D](}|��t|g����z
}�)|��dd��z
}|�||d|z��n#t$rYnwxYw|dvr�	tj|d���d�
�fd�|D����}tj|d���d�
�fd	�|D����}|�||d|z����l#t$rY��ywxYw��dS)
NrbrrhTrerfr�c3�B�K�|]}��|��V��dSr
rh)rorp�cencoders  �rr�z4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>�s/�����0O�0O������1C�1C�0O�0O�0O�0O�0O�0Orc3�^�K�|]'}��t|g����V��(dSr
rj)rorp�cdecoders  �rr�z4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>�sS�����0H�0H�45�19����q�c�
�
�0K�0K�0H�0H�0H�0H�0H�0Hr)rkrm�	_testcapi�codec_incrementalencoderrc�codec_incrementaldecoderrRrmrr�rv)rrHrYrorprqrwrus      @@r�test_basics_capiz!BasicUnicodeTest.test_basics_capi�s,����
��-�!	C�!	C�H��;�;�;�?�(�A�(�K�K�H�
%(�M��<�<��%�����);�);�;�
�
�!�X�_�_�R��%>�%>�>�M�(�A�(�K�K�H�$&�M�*�E�E��%������s���)D�)D�D�
�
�!�X�_�_�S�$�%?�%?�?�M��$�$�]�A�%2�X�%=�?�?�?�?��#�����D����� �#3�3�3�
C�#,�#E�h�PX�#Y�#Y��),���0O�0O�0O�0O�Q�0O�0O�0O�(O�(O�
�#,�#E�h�PX�#Y�#Y��(*���0H�0H�0H�0H�9F�0H�0H�0H�)H�)H�
��(�(���)6��)A�C�C�C�C��'�����������3!	C�!	Cs#�C�
C(�'C(�0E8�8
F�Fc�n�ddz}tD]�}|dkr�	|tvr�tj|��t	j|�|������}td��D]B}|�dd��|�	��}|�
||���C��dS)Nz%s
%s
)�Xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123�Xdef456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456rbr�r)rkrmrPrrr�r�rcrO�seekrIr)rrHrYr��tr�s      r�	test_seekzBasicUnicodeTest.test_seek�s����5�5��-�
	*�
	*�H��6�!�!���7�7�7��/�V�%�h�/�/��
�1�8�8�H�;M�;M�0N�0N�O�O�F��1�X�X�
*�
*�����A�q�!�!�!��{�{�}�}��� � ��D�)�)�)�)�	
*�
	*�
	*rc��tD]Q}tj|��}|�t|��|dvr|�t|d���RdS)N)rbr9r�)rkrPr�r�r�)rrYr|s   r�test_bad_decode_argsz%BasicUnicodeTest.test_bad_decode_args�sf��-�	:�	:�H��'��1�1�G����i��1�1�1��3�3�3��!�!�)�W�b�9�9�9��		:�	:rc�x�tD]1}tj|��}|�t|���2dSr
)rkrPr�r�r�)rrYr�s   r�test_bad_encode_argsz%BasicUnicodeTest.test_bad_encode_argssD��-�	2�	2�H��'��1�1�G����i��1�1�1�1�	2�	2rc�f�ddlm}t|j��}|�||��dS)Nr)r)�	encodingsrrn�encoding_tabler)rr�
table_types   r�"test_encoding_map_type_initializedz3BasicUnicodeTest.test_encoding_map_type_initializeds@��$�$�$�$�$�$��&�/�0�0�
�����Z�0�0�0�0�0rc���d}tD]_}|tvrT|�|||�|����|�|||�|�����`dS)Nrb)rkrmr`rcrd)rrZrYs   rrz#BasicUnicodeTest.test_decoder_statesy����-�	R�	R�H��;�;�;��0�0��1�a�h�h�x�>P�>P�Q�Q�Q��0�0��1�a�h�h�x�>P�>P�Q�Q�Q��	R�	Rr)r)r*r+rrr�cpython_only�unittest�skipIfrxr{r�r�r�r�rrrrr`r`ss�������NC�NC�NC�`
���X�_�Y�$�&�(?�@�@�#C�#C�A�@���#C�J
*�
*�
*�:�:�:�2�2�2�
1�1�1�R�R�R�R�Rrr`c� �eZdZd�Zd�Zd�ZdS)�CharmapTestc���|�tjddd��d��|�tjddd��d��|�ttjddd��|�ttjddd��|�tjdd	d��d
��|�tjdd	d��d
��|�tjddd��d��|�tjddd��d��|�tjdd
d��d��|�tjdd
d��d��tt
d����}|�tj|d
d��dt|��f��dS)N�rjr��r�rs�􏿿bc�r�rs�abuab￾r��uab�rsr��zab\x02rsr��r�rsr�rh)rrP�charmap_decoder�r�rmrOr�r�allbytess  r�test_decode_with_string_mapz'CharmapTest.test_decode_with_string_maps#������!�/�8�U�C�C��	
�	
�	
�
	
����!�/�8�^�L�L��	
�	
�	
�
	
���,��!�?�H�d�	
�	
�	
�	
���,��!�?�H�j�	
�	
�	
�	
����!�/�9�d�C�C��	
�	
�	
�
	
����!�/�9�j�I�I��	
�	
�	
�
	
����!�/�3E�t�L�L��	
�	
�	
�
	
����!�/�3E�z�R�R��	
�	
�	
�
	
����!�/�8�T�B�B��	
�	
�	
�
	
����!�/�8�Z�H�H��	
�	
�	
�
��s���$�$������!�(�H�b�9�9�
��X����	
�	
�	
�	
�	
rc��|�tjdddddd���d��|�tjdddd	d
d���d��|�tjdddddd���d
��|�tjdddddd���d��|�ttjddddd���|�ttjdddddd���|�ttjdddddd���|�tjddddd���d��|�tjdddddd���d��|�tjdddddd���d��|�tjddddd���d��|�tjdddddd���d��|�tjdddddd���d��|�tjddddd���d��|�tjdddddd���d��|�tjdddddd���d��tt
d����}|�tj|di��dt|��f��|�tdtjdddd	dd���|�tdtjdddd	dd���dS)Nr�rjr�r�rp�rrNr r��Aa�Bb�Cc)�AaBbCcrs�􏿿r�rhr��rrNu￾r�r�r�r�r�r�z.character mapping must be in range\(0x110000\)r����i�ɚ;)
rrPr�r�r�rmrOrror�r�s  r�test_decode_with_int2str_mapz(CharmapTest.test_decode_with_int2str_mapMs�������!�/�8�&)�c�c�":�":�
<�
<��	
�	
�	
�	
����!�/�8�&*�t��"=�"=�
?�
?��	
�	
�	
�	
����!�/�8�&2�s�s�"C�"C�
E�
E��	
�	
�	
�	
����!�/�8�&)�c�b�"9�"9�
;�
;��	
�	
�	
�	
���,��!�?�H�'*�s�#3�#3�	
�	
�	
�
	
���,��!�?�H�'*�s�t�#<�#<�	
�	
�	
�	
���,��!�?�H�'*�s�x�#@�#@�	
�	
�	
�
	
����!�/�9�&)�c�"2�"2�
4�
4��	
�	
�	
�	
����!�/�9�&)�c�d�";�";�
=�
=��	
�	
�	
�	
����!�/�9�&)�c�h�"?�"?�
A�
A��	
�	
�	
�	
����!�/�3E�&)�c�"2�"2�
4�
4��	
�	
�	
�	
����!�/�3E�&)�c�d�";�";�
=�
=��	
�	
�	
�	
����!�/�3E�&)�c�h�"?�"?�
A�
A��	
�	
�	
�	
����!�/�8�&)�c�"2�"2�
4�
4��	
�	
�	
�	
����!�/�8�&)�c�d�";�";�
=�
=��	
�	
�	
�	
����!�/�8�&)�c�h�"?�"?�
A�
A��	
�	
�	
���s���$�$������!�(�H�b�9�9�
��X����	
�	
�	
�
	
���y�>��!��X�3�4�B�'?�'?�	
�	
�	
�	
���y�>��!��X�3�4�I�'F�'F�	
�	
�	
�	
�	
rc
��td��}td��}td��}|�tjdd|||d���d��|�tjddd||d���d	��|�tjddtj||d���t
tj��d
zdf��|�ttjddtjdz||d���|�ttjdd||d
���|�ttjdd||dd���|�tjdd||d
���d��|�tjdd||dd���d��|�tjdd||d
���d��|�tjdd||dd���d��|�tjdd||d
���d��|�tjdd||dd���d��dS)Nr�r�rpr�rjr�r�i��r��bcrsrNr�i��r�r�r�r�r�r�)
�ordrrPr�r�
maxunicode�chrr�r�r�)rr�r�rps    r�test_decode_with_int2int_mapz(CharmapTest.test_decode_with_int2int_map�s����H�H����H�H����H�H������!�/�8�&'�A�!�"4�"4�
6�
6��	
�	
�	
�	
����!�/�8�&.�1��";�";�
=�
=��	
�	
�	
�	
����!�/�8�&)�n��q�"A�"A�
C�
C�
���
 �
 �4�
'��+�	
�	
�	
�	
���)��!�?�H�'*�~��'9�a�A�#F�#F�	
�	
�	
�
	
���,��!�?�H�'(�Q�<�<�	
�	
�	
�
	
���,��!�?�H�'(�Q�6�#:�#:�	
�	
�	
�
	
����!�/�9�&'�A�,�,�
0�
0��	
�	
�	
�	
����!�/�9�&'�A�&�"9�"9�
;�
;��	
�	
�	
�	
����!�/�3E�&'�A�,�,�
0�
0��	
�	
�	
�	
����!�/�3E�&'�A�&�"9�"9�
;�
;��	
�	
�	
�	
����!�/�8�&'�A�,�,�
0�
0��	
�	
�	
�	
����!�/�8�&'�A�&�"9�"9�
;�
;��	
�	
�	
�	
�	
rN)r)r*r+r�r�r�rrrr�r�sK������5
�5
�5
�nr
�r
�r
�hI
�I
�I
�I
�I
rr�c��eZdZd�Zd�ZdS)�WithStmtTestc��tjd��}tj|dd��5}|�|���d��ddd��n#1swxYwY|�|j��dS)Nr�r�ryr�)r�r�rPr�rrIrW�closedr�s   r�test_encodedfilezWithStmtTest.test_encodedfile	s����J�{�#�#��
�
��9�g�
6�
6�	1�"����R�W�W�Y�Y��0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1������!�!�!�!�!s�)A � A$�'A$c��tjd��}tjd��}tj||j|jd��5}|�|���d��ddd��dS#1swxYwYdS)Nr�ryrj�ü)	r�r�rPr�r��streamreader�streamwriterrrI)rr�r9�srws    r�test_streamreaderwriterz$WithStmtTest.test_streamreaderwriter	s����J�{�#�#���}�W�%�%��
�
&�q�$�*;�'+�'8�(�D�D�	1�GJ����S�X�X�Z�Z��0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s�
)B�B�BN)r)r*r+r�r�rrrr�r�
	s2������"�"�"�1�1�1�1�1rr�c��eZdZd�Zd�ZdS)�	TypesTestc��tjtjtjtjtjtjtjtjtj	tj
tjtjg}ttd��r|�tj��|D]}|�t"|d���dS)N�mbcs_decoder�)rPr��utf_8_decoderdrur�rr(r5�utf_32_ex_decode�latin_1_decode�ascii_decoder��hasattrr�r�r�r�)r�decodersr|s   r�test_decode_unicodezTypesTest.test_decode_unicode	s���
�����#��#��#�� ��#��#��#��!����!�

���6�=�)�)�	0��O�O�F�.�/�/�/��	9�	9�G����i��%�8�8�8�8�	9�	9rc�&�|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�t
tjd��|�tjdd��d��|�tjdd��d	��|�t
tjd��|�tjdd��d��|�tjdd��d	��dS)
Nz\u1234)uሴr�s\u1234�
\U00110000z
\U00110000r��r�r�r�)z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30r�)rrP�unicode_escape_decode�raw_unicode_escape_decoder�r�rs r�test_unicode_escapezTypesTest.test_unicode_escape2	ss��	
����5�i�@�@�-�P�P�P�����5�j�A�A�=�Q�Q�Q�����9�)�D�D�m�T�T�T�����9�*�E�E�}�U�U�U����,�f�.J�N�[�[�[�����5�m�Y�O�O�Q_�`�`�`�����5�m�EW�X�X�J�	L�	L�	L�	
���,�f�.N�P^�_�_�_�����9�-��S�S�Uc�d�d�d�����9�-�I[�\�\�J�	L�	L�	L�	L�	LrN)r)r*r+r�r�rrrr�r�	s7������9�9�9�*L�L�L�L�Lrr�c�@�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�ZdS)
�UnicodeEscapeTestzunicode-escapeNc��|�tjd��d��|�tjd��d��dS�Nrhr�r�rhr)rrP�unicode_escape_encoder�rs rr�zUnicodeEscapeTest.test_emptyJ	sJ������5�b�9�9�8�D�D�D�����5�c�:�:�G�D�D�D�D�Drc���tj}tdd��D]D}|dkr<|�|t	|����t|g��df���EdS)N� ��\rN)rPr�rOrr�rm�rrcr�s   r�test_raw_encodez!UnicodeEscapeTest.test_raw_encodeN	si���-���r�3���	B�	B�A��H�}�}�� � ����A�����%���*�*�a��A�A�A��	B�	Brc���tj}td��D]J}|dkrB|�|t	|g��dz��t|��dzdf���KdS)Nr�r�r�0r )rPr�rOrrmr�rs   r�test_raw_decodez!UnicodeEscapeTest.test_raw_decodeT	ss���-���s���	O�	O�A��H�}�}�� � ����q�c�
�
�T�(9�!:�!:�S��V�V�c�\�1�<M�N�N�N��	O�	Orc���tj}t||��}|dd��|dd��|dd��|dd��td	��D]A}t	|��d
vr.|t	|��d|z������Btdd
��D]0}|t	|��d|z������1|dd��|dd��dS)N�	s\tr�s\nr�s\r�\s\\r�z	

r�r�r��€�\u20ac�𝄠�
\U0001d120)rPr�rrOr�rc�rrcrr�s    r�test_escape_encodez$UnicodeEscapeTest.test_escape_encodeZ	s���-���t�V�,�,��
��d�F����
��d�F����
��d�F����
��d�F�����r���	8�	8�A��1�v�v�X�%�%���c�!�f�f�y�1�}�4�4�6�6�7�7�7���s�C���	4�	4�A��E�#�a�&�&�9�q�=�0�0�2�2�3�3�3�3�
��h�
�#�#�#�
��l�N�+�+�+�+�+rc
�T�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'��td(d)��D]�}t	|g��}|d*vrQ|�t��5|d+|zd,t|��z��ddd��n#1swxYwY|���d-vrf|�t��5|d+|���zd,t|d.z
��z��ddd��n#1swxYwY��|�t��5|d/d0��ddd��n#1swxYwY|�t��5|d1d2��ddd��n#1swxYwY|�t��5|d3d4��ddd��n#1swxYwYtd5d6��D]P}|�t��5|d7|zt|����ddd��n#1swxYwY�QdS)8Nrr�rz["]rz[']rz[\]rz[]rz[]rz[	]rz[
]rz[]rz[]rz[
]rrz[8]r z[!]r!z[!8]r"z[A]r#z[A0]r$r%r�r�r�r�r&r's	abfnrtuvxr
r�sUNr�r(z\8r)z\9r*u\úr�r�r+)	rPr�rrOrmr-r.r�r/r0s     r�test_escape_decodez$UnicodeEscapeTest.test_escape_decodei	s���-���t�V�,�,��
��i�����
��h�����
��h�����
��h�����
��h��!�!�!�
��h��!�!�!�
��h��!�!�!�
��h��!�!�!�
��h��!�!�!�
��h��!�!�!�
��h��!�!�!�
��h��!�!�!�
��i��#�#�#�
��i�����
��j�&�!�!�!�
��j�%� � � �
��k�6�"�"�"�
��j�%� � � �
��k�6�"�"�"�
��j�(�#�#�#�
��n�l�+�+�+��r�3���	?�	?�A��q�c�
�
�A���$�$��%�%�&8�9�9�4�4��E�%�!�)�T�C��F�F�]�3�3�3�4�4�4�4�4�4�4�4�4�4�4����4�4�4�4��w�w�y�y��%�%��%�%�&8�9�9�?�?��E�%�!�'�'�)�)�+�T�C��"��I�I�-=�>�>�>�?�?�?�?�?�?�?�?�?�?�?����?�?�?�?��
�
�
�0�
1�
1�	!�	!��E�&�%� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�
�
�
�0�
1�
1�	!�	!��E�&�%� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�
�
�
�0�
1�
1�	'�	'��E�)�X�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'��u�f�%�%�	+�	+�A��!�!�"4�5�5�
+�
+���g��k�3�q�6�6�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��	+�	+sl� F�F		�F		�5H�H	�H	�'
I�I�I�%
I>�>J�J�#
J<�<K�K�3L�L 	�#L 	c	��tj}dD]�\}}t|��D]�}|�t|d|zd|zz��|�t|d|zd|zzdz��d|zd|zzdz|zd|zz}|�||d��dt
|��f��|�||d	��d
t
|��f����|�t|d��|�|dd��d��|�|dd	��d
��dS)N))�xr ��ur���Ur�r
r�[\�]�]\r�r�r��[�]�r��rhr�r�)rPr�rOr�r�rr�rrRrpr\r[r�s      r�test_decode_errorsz$UnicodeEscapeTest.test_decode_errors�	s����-��3�		@�		@�D�A�q��1�X�X�
@�
@���!�!�"4�f�"'�!�)�d�1�f�"4�6�6�6��!�!�"4�f�"(�1�*�t�A�v�"5��"<�>�>�>���z�D��F�*�V�3�a�7�$�q�&�@��� � ����h�!7�!7�$��D�	�	�9J�K�K�K�� � ����i�!8�!8�"2�C��I�I�!>�@�@�@�@�
@�	
���,�f�n�E�E�E��������9�9�8�D�D�D�������	�:�:�N�K�K�K�K�Krc�6�|�dgd���dS)N�	

\ÿ￿𐀀) rhrhrhr�r��	r��	
r��	

r��	

\r�r�r��	

\ÿr�r�r�r�r��
	

\ÿ￿r�r�r�r�r�r�r�r�r�r�rrs rrzUnicodeEscapeTest.test_partial�	r�r�r)r*r+rYr�r�r�r�r�r�r�rrrrr�r�E	s��������H���E�E�E�B�B�B�O�O�O�
,�
,�
,�(+�(+�(+�TL�L�L� %
�%
�%
�%
�%
rr�c�@�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�ZdS)
�RawUnicodeEscapeTestzraw-unicode-escapeNc��|�tjd��d��|�tjd��d��dSr�)rrP�raw_unicode_escape_encoder�rs rr�zRawUnicodeEscapeTest.test_empty�	sJ������9�"�=�=�x�H�H�H�����9�#�>�>��H�H�H�H�Hrc��tj}td��D]>}|�|t	|����t|g��df���?dS)Nr�rN)rPr�rOrr�rmr�s   rr�z$RawUnicodeEscapeTest.test_raw_encode�	s\���1���s���	>�	>�A����V�V�C��F�F�^�^�e�Q�C�j�j�!�_�=�=�=�=�	>�	>rc���tj}td��D]D}|�|t	|g��dz��t|��dzdf���EdS)Nr�rr�r )rPr�rOrrmr�rs   rr�z$RawUnicodeEscapeTest.test_raw_decode�	sl���1���s���	K�	K�A����V�V�E�1�#�J�J��$5�6�6��Q���#��q�8I�J�J�J�J�	K�	Krc���tj}t||��}td��D]3}|dvr-|dt	|��zdt|g��z���4|dd��|dd��dS)	Nr��uUr�r
r�r�r�r�)rPr�rrOr�rmr�s    rr�z'RawUnicodeEscapeTest.test_escape_encode�	s����1���t�V�,�,���s���	9�	9�A���~�~���d�S��V�V�m�U�U�A�3�Z�Z�%7�8�8�8��
��h�
�#�#�#�
��l�N�+�+�+�+�+rc���tj}t||��}td��D]3}|dvr-|dt	|g��zdt|��z���4|dd��|dd��dS)	Nr�rr
r�r�r�r�r�)rPr�rrOrmr�)rrRrr�s    rr�z'RawUnicodeEscapeTest.test_escape_decode�	s����1���t�V�,�,���s���	9�	9�A���~�~���e�e�Q�C�j�j�(�$��Q���-�8�8�8��
��j�(�#�#�#�
��n�l�+�+�+�+�+rc	��tj}dD]�\}}t|��D]�}|�t|d|zd|zz��|�t|d|zd|zzdz��d|zd|zzdz|zd|zz}|�||d��dt
|��f��|�||d	��d
t
|��f����|�t|d��|�|dd��d��|�|dd	��d
��dS)N)r�r�r
rr�r�r�r�r�r�r�r�r�r�)rPr�rOr�r�rrr�s      rr�z'RawUnicodeEscapeTest.test_decode_errors�	s����1��(�		@�		@�D�A�q��1�X�X�
@�
@���!�!�"4�f�"'�!�)�d�1�f�"4�6�6�6��!�!�"4�f�"(�1�*�t�A�v�"5��"<�>�>�>���z�D��F�*�V�3�a�7�$�q�&�@��� � ����h�!7�!7�$��D�	�	�9J�K�K�K�� � ����i�!8�!8�"2�C��I�I�!>�@�@�@�@�
@�	
���,�f�n�E�E�E��������9�9�8�D�D�D�������	�:�:�N�K�K�K�K�Krc�6�|�dgd���dS)Nr�)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrs rrz!RawUnicodeEscapeTest.test_partial�	s6�����.�
�
�
�	
�	
�	
�	
�	
rr�rrrr�r��	s�������#�H���I�I�I�>�>�>�
K�K�K�
,�,�,�,�,�,�L�L�L� 
�
�
�
�
rr�c��eZdZd�ZdS)�EscapeEncodeTestc�|�gd�}|D][\}}|�|���5|�tj|��|��ddd��n#1swxYwY�\|�t
tjd��|�t
tjt
d����dS)N))rr�)�foobar)rr�)s	spameggs)sspam\x00eggs�	)sa'b)sa\'brs)sb\c)sb\\crs)sc
d)sc\ndrs)sd
e)sd\rers)sfg)sf\x7fgrsr�r�r�)r�rrP�
escape_encoder�r�r)rrfr��outputs    rr�z#EscapeEncodeTest.test_escape_encode
s
��	
�	
�	
��"�	E�	E�L�D�&����4��(�(�
E�
E�� � ��!5�d�!;�!;�V�D�D�D�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E�����)�V�%9�6�B�B�B����)�V�%9�9�W�;M�;M�N�N�N�N�Ns�)A�A	�A	N)r)r*r+r�rrrrr
s(������O�O�O�O�Orrc�&�eZdZd�Zd�Zd�Zd�ZdS)�SurrogateEscapeTestc�V�|�d�dd��d��|�d�dd��d��|�d�dd��d��|�d�dd��d��dS)N�foo�barryr��	foo�bars�u	����rrRrcrs r�	test_utf8zSurrogateEscapeTest.test_utf83
s�������-�-�g�7H�I�I�'�	)�	)�	)�����.�.�w�8I�J�J�&�	(�	(�	(�	
����/�/��9J�K�K�-�	/�	/�	/����-�4�4�W�>O�P�P�(�	*�	*�	*�	*�	*rc��|�d�dd��d��|�d�dd��d��dS)Nrr�r�rrrs rr�zSurrogateEscapeTest.test_ascii?
sh������-�-�g�7H�I�I�'�	)�	)�	)�����.�.�w�8I�J�J�&�	(�	(�	(�	(�	(rc��|�d�dd��d��|�d�dd��d��dS)Nsfoo�barz
iso-8859-3r�u	foo�barrrs r�test_charmapz SurrogateEscapeTest.test_charmapF
sh������-�-�l�<M�N�N�'�	)�	)�	)�����.�.�|�=N�O�O�&�	(�	(�	(�	(�	(rc�Z�|�d�dd��d��dS)Nu�����r�r�s���rlrs r�test_latin1zSurrogateEscapeTest.test_latin1M
s;�����9�@�@��L]�^�^�0�	2�	2�	2�	2�	2rN)r)r*r+rr�rrrrrr
r
1
sP������
*�
*�
*�(�(�(�(�(�(�2�2�2�2�2rr
c��eZdZd�ZdS)�BomTestc�:	�d}d}|�tjtj��|D�]h}t	jtjd|���5}|�|��|�|��|�d��|�|�	��|dz��|�d��|�|�	��|dz��ddd��n#1swxYwYt	jtjd|���5}|�|d��|�
|���d��|�d��|�|��|�d��|�|�	��|��ddd��n#1swxYwYt	jtjd|���5}|j�|d��|�
|j���d��|j�d��|j�|��|�d��|�|�	��|��ddd��n#1swxYwYt	jtjd|���5}|�|��|�|�����|�|��|�d��|�|�	��|dz��ddd��n#1swxYwYt	jtjd|���5}|j�|��|j�|j�����|j�|��|�d��|�|�	��|dz��ddd��n#1swxYwY��jdS)N�
1234567890)r9r[rrr�rr1r�rErr )
rFrrGrHrPrIrDrrrI�assertNotEqual�tellr�)rr�rfrYr�s     r�
test_seek0zBomTest.test_seek0T
s�������	
���	�(�)�*:�;�;�;��,	5�,	5�H���Y�-�t�h�G�G�G�
5�1�����
�
�
�����
�
�
����q�	�	�	�� � ������4�!�8�4�4�4����q�	�	�	�� � ������4�!�8�4�4�4�

5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5���Y�-�t�h�G�G�G�
1�1�����Q�� � � ��#�#�A�F�F�H�H�a�0�0�0����q�	�	�	�����
�
�
����q�	�	�	�� � ������4�0�0�0�

1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1���Y�-�t�h�G�G�G�
1�1�����t�A�w�'�'�'��#�#�A�H�M�M�O�O�Q�7�7�7���
�
�a� � � �����t�$�$�$����q�	�	�	�� � ������4�0�0�0�

1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1���Y�-�t�h�G�G�G�
5�1�����
�
�
����q�v�v�x�x� � � �����
�
�
����q�	�	�	�� � ������4�!�8�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5���Y�-�t�h�G�G�G�
5�1�����t�$�$�$���
�
�a�h�m�m�o�o�.�.�.�����t�$�$�$����q�	�	�	�� � ������4�!�8�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5��O,	5�,	5s_�B+D�D	�D	�8B+G/�/G3	�6G3	�B?K&�&K*	�-K*	�BN0�0N4	�7N4	�B&R�R	�R	N)r)r*r+rrrrrrS
s#������55�55�55�55�55rr)�base64_codec�uu_codec�quopri_codec�	hex_codec�base64�base_64�uu)�quopri�quoted_printable�quotedprintable�hex�rot13)rr r!r"�rot_13�
zlib_codecrs�zlib�	bz2_codec�bz2c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
eje
d	��d
���Zd�Zd�Zd
�Zd�ZdS)�TransformCodecTestc���ttd����}tD]�}|�|���5t	j|��|��\}}|�|t|����t	j|��|��\}}|�|t|����|�||��ddd��n#1swxYwY��dS)Nr�rE)	rmrO�bytes_transform_encodingsr�rPr�rrr�)r�binputrY�orGr[s      rrrzTransformCodecTest.test_basics�
s"���u�S�z�z�"�"��1�	,�	,�H����x��0�0�
,�
,�7�F�-�h�7�7��?�?�	��D�� � ��s�6�{�{�3�3�3�7�F�-�h�7�7��:�:�	��D�� � ��s�1�v�v�.�.�.�� � ��F�+�+�+�

,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��	,�	,s�BC%�%C)	�,C)	c�R�tD]�}|�|���5tjd|��}tj|��tj|����}|���}|�|d��ddd��n#1swxYwY��dS�NrEr�)	r3r�rPrcrrr�r�rIr�rrY�sinr��souts     r�	test_readzTransformCodecTest.test_read�
s���1�	0�	0�H����x��0�0�
0�
0��m�G�X�6�6��3��)�(�3�3�B�J�s�O�O�D�D���{�{�}�}��� � ��w�/�/�/�	
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0��	0�	0��A/B�B	�"B	c�R�tD]�}|�|���5tjd|��}tj|��tj|����}|���}|�|d��ddd��n#1swxYwY��dSr7)	r3r�rPrcrrr�r�r�rr8s     rr�z TransformCodecTest.test_readline�
s���1�	0�	0�H����x��0�0�
0�
0��m�G�X�6�6��3��)�(�3�3�B�J�s�O�O�D�D�����(�(��� � ��w�/�/�/�	
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0��	0�	0r<c���d}tD]�}|�|���5|}t|��}tj||��}tj||��}|�||��t|��}tj||��}|�||��tj||��}|�||��ddd��n#1swxYwY��dS)Ns12345�rE)r3r��
memoryviewrPrcrrR)r�originalrYr��view�view_encoded�view_decodeds       r�test_buffer_api_usagez(TransformCodecTest.test_buffer_api_usage�
s1�� ��1�	5�	5�H����x��0�0�

5�

5���!�$�'�'���}�T�8�4�4��%�}�T�8�<�<��� � ��t�4�4�4�!�$�'�'���}�T�8�4�4��� � ��x�0�0�0�%�}�T�8�<�<��� � ��t�4�4�4�

5�

5�

5�

5�

5�

5�

5�

5�

5�

5�

5����

5�

5�

5�

5��	5�	5s�B7C%�%C)	�,C)	c�v�d}tD]�}|�|���5d}|�|��}|�t|��5}|�|��ddd��n#1swxYwY|�|jj��ddd��n#1swxYwY��dS)Nzbad input typerEzM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	r3r��formatror�rc�assertIsNonerU�	__cause__)r�	bad_inputrY�fmt�msg�failures      r�/test_text_to_binary_denylists_binary_transformszBTransformCodecTest.test_text_to_binary_denylists_binary_transforms�
s9��$�	�1�	?�	?�H����x��0�0�
?�
?�K���j�j��*�*���+�+�K��=�=�/���$�$�X�.�.�.�/�/�/�/�/�/�/�/�/�/�/����/�/�/�/��!�!�'�"3�"=�>�>�>�

?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?��	?�	?s5�3B-�A7�+B-�7A;�;B-�>A;�?"B-�-B1	�4B1	c��d}|�t|��5d�d��ddd��dS#1swxYwYdS)NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager+)ror�rc�rrKs  r�-test_text_to_binary_denylists_text_transformsz@TransformCodecTest.test_text_to_binary_denylists_text_transforms�
s���C��
�
#�
#�K��
5�
5�	7�	7�%�,�,�X�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�A�A�Ac��d}tD]�}|�|���5tj||��}d}|�|��}|�t|��5|�|��ddd��n#1swxYwY|�t|��5t|���|��ddd��n#1swxYwYddd��n#1swxYwY��dS)Ns6encode first to ensure we meet any format restrictionsrEzM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	r3r�rPrcrFror�rRr)rr�rY�encoded_datarJrKs      r�/test_binary_to_text_denylists_binary_transformszBTransformCodecTest.test_binary_to_text_denylists_binary_transforms�
s���I��1�		=�		=�H����x��0�0�
=�
=�%�}�T�8�<�<��K���j�j��*�*���+�+�K��=�=�2�2� �'�'��1�1�1�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2��+�+�K��=�=�=�=��l�+�+�2�2�8�<�<�<�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=��		=�		=sZ�AC8�*B�C8�B�C8�B�C8�2#C!�C8�!C%�%C8�(C%�)C8�8C<	�?C<	c�\�dtd��fD]�}|�|���5d}|�t|��5}|�d��ddd��n#1swxYwY|�|jj��ddd��n#1swxYwY��dS)Ns	immutablesmutable)rIzR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr+)rr�ror�rRrGrUrH)rrIrKrLs    r�-test_binary_to_text_denylists_text_transformsz@TransformCodecTest.test_binary_to_text_denylists_text_transforms�
s0��&�	�*�(=�(=�>�	?�	?�I����	��2�2�
?�
?�K���+�+�K��=�=�/���$�$�X�.�.�.�/�/�/�/�/�/�/�/�/�/�/����/�/�/�/��!�!�'�"3�"=�>�>�>�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?��	?�	?s5�B �A*�B �*A.�.B �1A.�2"B � B$	�'B$	zRequires zlib supportc��d}|�t|��5}tjdd��ddd��n#1swxYwY|�|jjt|j����dS)Nz(^decoding with 'zlib_codec' codec failed�hellor,�rorFrPrRrTrUrHrn�rrKrLs   r�!test_custom_zlib_error_is_wrappedz4TransformCodecTest.test_custom_zlib_error_is_wrappeds���9��
�
#�
#�I�s�
3�
3�	2�w��M�(�L�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2����g�/�9�04�W�5F�0G�0G�	I�	I�	I�	I�	I��A�A�Ac��d}|�t|��5}tjdd��ddd��n#1swxYwY|�|jjt|j����dS)Nz'^decoding with 'hex_codec' codec failedrWr"rXrYs   r� test_custom_hex_error_is_wrappedz3TransformCodecTest.test_custom_hex_error_is_wrappeds���7��
�
#�
#�I�s�
3�
3�	1�w��M�(�K�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1����g�/�9�04�W�5F�0G�0G�	I�	I�	I�	I�	Ir[c�:�t���D]�\}}tj|��j}|D]_}|�|���5tj|��}|�|j|��ddd��n#1swxYwY�`��dS)N)�alias)�transform_aliases�itemsrPr�r�r�r)r�
codec_name�aliases�
expected_namer_r9s      r�test_aliaseszTransformCodecTest.test_aliasess���#4�#:�#:�#<�#<�	?�	?��J��"�M�*�5�5�:�M� �
?�
?���\�\��\�.�.�?�?�!�=��/�/�D��$�$�T�Y�
�>�>�>�?�?�?�?�?�?�?�?�?�?�?����?�?�?�?��
?�	?�	?s�0B�B�Bc��tjdd��}|�|d��d}|�tj|d��|��dS)Nsspace tab	eol 
zquopri-codecsspace=20tab=09eol=20
sspace tab eol
)rPrcrrR)rr}�	unescapeds   r�test_quopri_statelessz(TransformCodecTest.test_quopri_stateless#sX���-� 4�n�E�E������";�<�<�<�&�	������y�.�A�A�9�M�M�M�M�Mrc�T�|�ttjdd��dS)Nrzuu-codec)r�rRrPrRrs r�test_uu_invalidz"TransformCodecTest.test_uu_invalid+s$�����*�f�m�S�*�E�E�E�E�ErN)r)r*r+rrr;r�rDrMrPrSrUr��
skipUnlessr-rZr]rerhrjrrrr1r1�
s������	,�	,�	,�0�0�0�0�0�0�5�5�5�$
?�
?�
?�7�7�7�
=�
=�
=�?�?�?��X���6�7�7�I�I�8�7�I�I�I�I�?�?�?�N�N�N�F�F�F�F�Frr1c�6�t�|��Sr
)�_TEST_CODECS�get)rbs r�_get_test_codecro:s�����J�'�'�'rc��eZdZd�Zd�Zd�Zejd���Zd�Z	e
fd�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�ZdS)�ExceptionChainingTestc��d|_tjt��|�tjt��t|_dS)N�exception_chaining_test)rbrPr�rorFr��RuntimeError�obj_to_raisers rr�zExceptionChainingTest.setUp@s@��3������(�(�(�����)�?�;�;�;�)����rc��t�|jd��tj�|jd��dSr
)rm�poprbr��_cachers r�tearDownzExceptionChainingTest.tearDownNs;�������$�/�/�/�����T�_�d�3�3�3�3�3rc�\�tj|||j���}|t|j<dS)N)r�)rPr�rbrm)rrcrR�
codec_infos    r�	set_codeczExceptionChainingTest.set_codecSs4���%�f�f�+/�?�<�<�<�
�(2��T�_�%�%�%rc#�:K�d�||j|j|��}|�||��5}|V�ddd��n#1swxYwY|�|jj|��|�|jjj��dS)Nz${} with {!r} codec failed \({}: {}\))	rFrbr)rorTrUrH�assertIsNotNone�
__traceback__)r�	operation�exc_typerK�full_msg�caughts      r�
assertWrappedz#ExceptionChainingTest.assertWrappedXs�����:�A�A��T�_�h�.?��F�F��
�
#�
#�H�h�
7�
7�	�6��L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����f�.�8�(�C�C�C����V�-�7�E�F�F�F�F�Fs�A�A�Ac��|j�r
)ru)r�args�kwdss   r�	raise_objzExceptionChainingTest.raise_objas����rc��||_|�|j|j��|�d||��5d�|j��ddd��n#1swxYwY|�d||��5t
jd|j��ddd��n#1swxYwY|�d||��5d�|j��ddd��n#1swxYwY|�d||��5t
jd|j��ddd��dS#1swxYwYdS)NrY�	str_input�decoding�bytes input)rur|r�r�rcrbrPrR)rrurKr�s    r�
check_wrappedz#ExceptionChainingTest.check_wrappedes9��(������t�~�t�~�6�6�6�
�
�
�
�H�c�
:�
:�	0�	0����t��/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
�
�
�
�H�c�
:�
:�	8�	8��M�+�t��7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�
�
�
�
�H�c�
:�
:�	3�	3��!�!�$�/�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�
�
�
�
�H�c�
:�
:�	;�	;��M�.�$�/�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;sG�A&�&A*�-A*�B/�/B3�6B3�C8�8C<�?C<�E�E�	Ec�<�|�td��dS)Nrh�r�rtrs r�test_raise_by_typez(ExceptionChainingTest.test_raise_by_typeqs�����<��,�,�,�,�,rc�P�d}|�t|��|��dS)N�This should be wrappedr�rOs  r�test_raise_by_valuez)ExceptionChainingTest.test_raise_by_valuets+��&�����<��,�,�c�2�2�2�2�2rc�p�d}Gd�dt��}|�||��||��dS)Nr�c��eZdZdZdS)�WExceptionChainingTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrorrN)r)r*r+�	__slots__rrr�MyRuntimeErrorr�zs�������I�I�Irr��rtr��rrKr�s   r�)test_raise_grandchild_subclass_exact_sizez?ExceptionChainingTest.test_raise_grandchild_subclass_exact_sizexsY��&��	�	�	�	�	�\�	�	�	����>�>�#�.�.��^�D�D�D�D�Drc�p�d}Gd�dt��}|�||��||��dS)Nr�c��eZdZdS)�VExceptionChainingTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)r)r*r+rrrr�r��s�������Drr�r�r�s   r�(test_raise_subclass_with_weakref_supportz>ExceptionChainingTest.test_raise_subclass_with_weakref_support~sY��&��	�	�	�	�	�\�	�	�	����>�>�#�.�.��^�D�D�D�D�Drc����fd�}|�||��|�t|��5d�|j��ddd��n#1swxYwY|�t|��5tjd|j��ddd��n#1swxYwY|�t|��5d�|j��ddd��n#1swxYwY|�t|��5tjd|j��ddd��dS#1swxYwYdS)Nc�����r
r)r�r�rus  �rr�z:ExceptionChainingTest.check_not_wrapped.<locals>.raise_obj�s	����r�	str inputr�)r|rortrcrbrPrR)rrurKr�s `  r�check_not_wrappedz'ExceptionChainingTest.check_not_wrapped�s?���	�	�	�	�	����y�)�,�,�,�
�
#�
#�L�#�
6�
6�	0�	0����t��/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
�
#�
#�L�#�
6�
6�	8�	8��M�+�t��7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�
�
#�
#�L�#�
6�
6�	3�	3��!�!�$�/�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�
�
#�
#�L�#�
6�
6�	;�	;��M�.�$�/�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;sG�A�A#�&A#�B,�,B0�3B0�C9�9C=�C=�E�E�Ec�X�Gd�dt��}|�|d��dS)Nc��eZdZd�ZdS)�KExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInitc��dSr
rrs rrAzTExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInit.__init__�s���rN)r)r*r+rArrr�
CustomInitr��s#������
�
�
�
�
rr�rh�rtr�)rr�s  r�!test_init_override_is_not_wrappedz7ExceptionChainingTest.test_init_override_is_not_wrapped�sJ��	�	�	�	�	��	�	�	�	
���z�2�.�.�.�.�.rc�X�Gd�dt��}|�|d��dS)Nc���eZdZ�fd�Z�xZS)�IExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNewc�F��t���|��Sr
)r��__new__)�clsr�s �rr�zQExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNew.__new__�s����w�w���s�+�+�+r)r)r*r+r�r�r�s@r�	CustomNewr��s8�������
,�
,�
,�
,�
,�
,�
,�
,�
,rr�rhr�)rr�s  r� test_new_override_is_not_wrappedz6ExceptionChainingTest.test_new_override_is_not_wrapped�sJ��	,�	,�	,�	,�	,��	,�	,�	,�	
���y�"�-�-�-�-�-rc��d}t|��}d|_|�|d�|����dS)NzThis should NOT be wrappedrNz^{}$)rt�attrr�rF)rrKr�s   r�&test_instance_attribute_is_not_wrappedz<ExceptionChainingTest.test_instance_attribute_is_not_wrapped�sC��*���3����������s�F�M�M�#�$6�$6�7�7�7�7�7rc�L�|�td��d��dS)NrN�1�r�rtrs r�test_non_str_arg_is_not_wrappedz5ExceptionChainingTest.test_non_str_arg_is_not_wrapped�s$�����|�A����4�4�4�4�4rc�T�d}|�tddd��|��dS)Nz^\('a', 'b', 'c'\)$r�r�rpr�)r�msg_res  r�!test_multiple_args_is_not_wrappedz7ExceptionChainingTest.test_multiple_args_is_not_wrapped�s/��'�����|�C��c�:�:�F�C�C�C�C�Crc��d�|j��}|�t|��5d�|j��ddd��n#1swxYwY|�t|��5tjd|j��ddd��n#1swxYwY|�t|��5d�|j��ddd��n#1swxYwY|�t|��5tjd|j��ddd��dS#1swxYwYdS)Nz^unknown encoding: {}$r�r�)rFrbror�rcrPrRrOs  r�%test_codec_lookup_failure_not_wrappedz;ExceptionChainingTest.test_codec_lookup_failure_not_wrapped�s&��&�-�-�d�o�>�>��
�
#�
#�K��
5�
5�	0�	0����t��/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
�
#�
#�K��
5�
5�	8�	8��M�+�t��7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�
�
#�
#�K��
5�
5�	3�	3��!�!�$�/�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�
�
#�
#�K��
5�
5�	;�	;��M�.�$�/�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;sG�A�A!�$A!�B*�*B.�1B.�C7�7C;�>C;�E�E	�E	c��d�}d�}|�||��tjd|j��}|�|d��tjd|j��}|�|d��d}|�|j��}|�t|��5d�|j��ddd��n#1swxYwYd}|�|j��}|�t|��5d�|j��ddd��dS#1swxYwYdS)	Nc��dS)N)�
not bytes!rr�r�r�s  r�
encode_to_strzSExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_str�s��"�?rc��dS)N)�not str!rrr�s  r�decode_to_byteszUExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytes�s��!�>rr�r�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$r�)	r|rPrcrbrrRrFror�)rr�r�r}�decodedrJrKs       r�&test_unflagged_non_text_codec_handlingz<ExceptionChainingTest.test_unflagged_non_text_codec_handling�s���	#�	#�	#�	"�	"�	"����}�o�6�6�6��-��d�o�6�6������,�/�/�/��-��d�o�6�6������+�.�.�.�F���j�j���)�)��
�
#�
#�I�s�
3�
3�	0�	0����t��/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�F���j�j���)�)��
�
#�
#�I�s�
3�
3�	3�	3��!�!�$�/�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s$�4C�C�"C�E�E	�E	N)r)r*r+r�ryr|�
contextlib�contextmanagerr�r�rtr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrqrq>sI������)�)�)�4�4�4�
3�3�3�
��G�G���G� � � �9E�
;�
;�
;�
;�-�-�-�3�3�3�E�E�E�E�E�E�;�;�;�/�/�/�.�.�.�8�8�8�5�5�5�D�D�D�

;�
;�
;�3�3�3�3�3rrq�win32z"code pages are specific to Windowsc���eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zejd
dd���d���Zejd
dd���d���ZdS)�CodePageTest��c�>�|�ttjdd��|�ttjdd��|�t
tjdd��|�t
tjdd��dS)Nrr��ar')r�rRrP�code_page_encode�code_page_decode�OSErrorrs r�test_invalid_code_pagez#CodePageTest.test_invalid_code_page�s|�����*�f�&=�r�3�G�G�G����*�f�&=�r�4�H�H�H����'�6�#:�C��E�E�E����'�6�#:�C��F�F�F�F�Frc	��|�tdtjdd��|�tdtjdddd��|�tdtj|jddd��dS)	Nr ��ÿs�rjT�CP_UTF8r
)ror�rPr�r�r�r�rs r�test_code_page_namez CodePageTest.test_code_page_name�s������1�7��#�S�&�	2�	2�	2����1�7��#�S�+�x��	G�	G�	G����1�9��#�T�\�7�H�d�	L�	L�	L�	L�	Lrc��|D]�\}}}|��	tj|||d��}n8#t$r+}|�d|�d|�d|�d|����Yd}~nd}~wwxYw|�|d||�d|�d|�d	|d�d
|��	��|�|dd��|�|dt|������|�ttj|||d����dS)NTzUnable to decode z	 from "cp�" with errors=�: rz.decode("cp�", �)=� != rN)	rPr�r��failr�assertGreaterEqual�assertLessEqualrr�)rr6rfrgrDrhr��errs        r�check_decodezCodePageTest.check_decode�s|��%*�	D�	D�!�C����#�H�$�5�b�#�v�t�L�L�G�G��)�H�H�H��I�I�I�14���b�b�b�&�&�&�#�#�G�H�H�H�H�H�H�H�H�����H����� � ����X��s�s�B�B�B������
�
�
�H�H�>�?�?�?��'�'���
�A�6�6�6��$�$�W�Q�Z��S���:�:�:�:��!�!�"4��+�R��f�d�D�D�D�D�	D�	Ds�$�
A�!A�Ac���|D]�\}}}|��	tj|||��}n8#t$r+}|�d|�d|�d|�d|����Yd}~nd}~wwxYw|�|d||�d|�d|�d|d�d	|��	��|�|d
t|������|�ttj|||����dS)NzUnable to encode z to "cpr�r�rz.encode("cpr�r�r�rN)rPr�r�r�rrr�)rr6rf�textrDrhr}r�s        r�check_encodezCodePageTest.check_encode�sY��&+�
	?�
	?�"�D�&�(��#�I�$�5�b�$��G�G�G�G��)�I�I�I��I�I�I�15���r�r�r�6�6�6�3�3�H�I�I�I�I�I�I�I�I�����I����� � ����X��t�t�R�R�R���������X�X�?�@�@�@�� � ����S��Y�Y�7�7�7�7��!�!�"4��+�R��v�?�?�?�?�
	?�
	?s�#�
A�!A�Ac�^�|�dd��|�dd��dS)Nr�)�r�rjrr)�d騾rj����)r�rjN)r�r�r)r�r�s[y])u[€]r�s[?])r�r�s[\xff])r�r�s)[\N{LATIN SMALL LETTER Y WITH DIAERESIS}])r�r�s[&#255;])u�rjN)�[�]r�r�)r�r�N)�rrrjr�)r�rjr�)r�rjN)r�r�r�)r�r�u[�])r�r�z[\xff])r�r�r�)r�r�N)��abcrjN)r�r�zabc)r�r�u�abc)r�r�z\x81abc�r�r�rs r�
test_cp932zCodePageTest.test_cp932
sL�����#� 
�	�	�	� 	
���#� 
�	�	�	�	�	rc�^�|�dd��|�dd��dS)Ni�)r�)�é€rj��)r�rjr
)�ŁrjN)r�r�r)r�r��L)��r���)r�r�N)r�)r�rjr�)r
rjr�r�rs r�test_cp1252zCodePageTest.test_cp1252+sL�����$�
!
�
	�
	�
	�	
���$�!
�	�	�	�	�	rc�b�d}|�|d��|�|d��dS)N��)r�)r�rj�+AOkgrA-)r�rj�+2//f/w-)r�rj�+3IA-)r�rj�+//0-)r�)r�rjr�)r�rjr�)r�rjr�)r�rjr�)s[+/]rjr�)r�rjr�r��rr6s  r�test_cp_utf7zCodePageTest.test_cp_utf7=sQ��
�����"�
�	�	�	�	
���"�	
�		�		�		�		�		rc��|�dd��|�|jd��|�|jd��dS)Nr�))���r��騾)rr�u�騾))��􏿿r�r�)rr�u�􏿿))�	[􏿿�]r�s[􏿿])rr�s[􏿿?])r�r�r�rs r�test_multibyte_encodingz$CodePageTest.test_multibyte_encodingQsq�����#� 
�	�	�	�	
���$�,�)
�	�	�	�	
���$�,�)
�	�	�	�	�	rc��tjrtj�d��ddddddgtdd	���d
�RD]]}t
|��r.|�tj	|d��dd
|�����?tjrtd|�����^|�tj	dd��d��dS)Nr�i,�i-�i.�i1�i3�i5�i��i��r�rrr�r6z  skipping cp=r�)u	rs)r�verboser�stdoutrDrOr:rrPr��printr�s  r�test_code_page_decode_flagsz(CodePageTest.test_code_page_decode_flags_s����?�	#��J���T�"�"�"��%���u�e�2��%��)�)�2�+0�2�2�
	1�
	1�B�$�B�'�'�
1�� � ��!8��V�!D�!D�j�R[�WY�R[�R[�\�\�\�\��?�1��/�2�/�/�0�0�0������0��V�<�<�2�	4�	4�	4�	4�	4rc�n�tjdddd��}|�|d��tjdddd��}|�|d��tjdddd��}|�|d	��tjdd
dd��}|�|d��dS)Nr���rjFr�s��)rr s��)u騾騾r�rrr�)rPr�r)rr�s  r�test_incrementalzCodePageTest.test_incrementalrs����)�#�w��%�H�H������'�*�*�*��)�#�*9�8�*/�1�1��	
����-�0�0�0��)�#�*=�x�*/�1�1��	
����"5�6�6�6��)�#�*0�(�*/�1�1��	
����*�-�-�-�-�-rc�0�d}d|��}tjd|���5	tj|��}|�|jd��tj|��n#tj|��wxYw	ddd��dS#1swxYwYdS)Ni��r6z_winapi.GetACP)�return_valuer\)rr�rPr�rr�r�)r�	code_pager��codecs    r�test_mbcs_aliaszCodePageTest.test_mbcs_alias�s����	��I����
�Z�(�y�
A�
A�
A�	(�	(�
(��
�d�+�+��� � ���V�4�4�4��!�$�'�'�'�'���!�$�'�'�'�'����'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(s(�B�/A$�B�$A:�:B�B�Bl�F)rG�memuse�dry_runc���d|dzdz
zdz}|�t|��|dz��tjd|dd��}|�|dt|����~|�t|d	��|d��|�|d	dd
�d��|�|d	dd�d
��dS)Ns01234567r4rNs
��������r r�r�Trr��
0123456701i��u(6701234567�����������rrrPr��rrGr}r�s    r�test_large_inputzCodePageTest.test_large_input�s���
�4��7�A�+�.�>�?������W���t�A�v�.�.�.��)�#�w�8I�4�P�P��������S��\�\�2�2�2������W�Q�Z���'�!�*�5�5�5�������C�R�C��,�7�7�7�������C�D�D�)�:�	;�	;�	;�	;�	;rr�c���d|dzz}|�t|��|dzdz��tjd|dd��}|�|dt|����~|�t|d��|��|�|ddd�d	��|�|dd
d�d��dS)Ns
0123456턀r4r�r�r�TrNru0123456턀01i����u56턀0123456턀rrs    r�test_large_utf8_inputz"CodePageTest.test_large_utf8_input�s���
*�T�1�W�5������W���t�q�y�2�~�6�6�6��)�%��(�D�I�I��������S��\�\�2�2�2������W�Q�Z���$�/�/�/�������C�R�C��*;�<�<�<�������C�D�D�)�+B�C�C�C�C�CrN)r)r*r+r�r�r�r�r�r�r�rrrrrr�
bigmemtestrrrrrr�r��s/�������G�G�G�G�L�L�L�D�D�D�$?�?�?� ���B���$���(���4�4�4�&.�.�.�&
(�
(�
(��W��U�1�e�<�<�<�;�;�=�<�;�"�W��U�1�e�<�<�<�D�D�=�<�D�D�Drr�c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�	ASCIITestc�X�|�d�d��d��dS)Nrbr�sabc123rlrs rr?zASCIITest.test_encode�s*���������1�1�9�=�=�=�=�=rc���dD]`\}}}|�|||���5|�|�d|��|��ddd��n#1swxYwY�adS)N))�	[€ÿ€]r�r)r#r�s[???])r#r�s[&#128;&#255;&#8364;])u
[€ÿ€򫳞]r�s[\x80\xff\u20ac\U000abcde]�r�r�r�r�r��r�rrcr�s    r�test_encode_errorzASCIITest.test_encode_error�s���.
�	+�	+�)�D�-�����4�}�'/��1�1�
+�
+�� � ����W�m�!D�!D�!)�+�+�+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��	+�	+��+A�A	�A	c��|�t��5d�dd��ddd��dS#1swxYwYdS)Nu�ÿr�r��r�r�rcrs r�!test_encode_surrogateescape_errorz+ASCIITest.test_encode_surrogateescape_error�s���
�
�
�1�
2�
2�	<�	<�����):�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<��?�A�Ac�X�|�d�d��d��dS)Nrrr�r�)rrRrs rrAzASCIITest.test_decode�s*��������w�/�/��7�7�7�7�7rc���dD]`\}}}|�|||���5|�|�d|��|��ddd��n#1swxYwY�adS)Nr�r�r�r�r�s    rr�zASCIITest.test_decode_error�s���.
�		+�		+�)�D�-�����4�}�'/��1�1�
+�
+�� � ����W�m�!D�!D�!)�+�+�+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��
		+�		+r'N)r)r*r+r?r&r*rAr�rrrr r �s_������>�>�>�+�+�+�<�<�<�
8�8�8�
+�
+�
+�
+�
+rr c�&�eZdZd�Zd�Zd�Zd�ZdS)�
Latin1Testc���dD]]\}}|�||���5|�|�d��|��ddd��n#1swxYwY�^dS)N))r�rr)u€éÿs��r�rh�latin1r%�rr�rhs   rr?zLatin1Test.test_encode�����
�	B�	B�N�D�(����4�(��;�;�
B�
B�� � ����X�!6�!6��A�A�A�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B����
B�
B�
B�
B��		B�	B��*A�A	�A	c���dD]`\}}}|�|||���5|�|�d|��|��ddd��n#1swxYwY�adS)N))�[€�]r�r)r7r�s[??])u	[€򫳞]r�s[\u20ac\U000abcde])r7r�s[&#8364;&#56448;]r$r�r2r%r�s    r�test_encode_errorszLatin1Test.test_encode_errors�s���.
�	+�	+�)�D�-�����4�}�'/��1�1�
+�
+�� � ����X�}�!E�!E�!)�+�+�+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��	+�	+r'c��|�t��5d�dd��ddd��dS#1swxYwYdS)Nu�€r2r�r)rs rr*z,Latin1Test.test_encode_surrogateescape_error�s���
�
�
�1�
2�
2�	?�	?��!�!�(�,=�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?r+c���dD]]\}}|�||���5|�|�d��|��ddd��n#1swxYwY�^dS)N))rrr�)r�u[€ÿ]r1r2r�r3s   rrAzLatin1Test.test_decode�r4r5N)r)r*r+r?r8r*rArrrr/r/�sX������B�B�B�+�+�+�?�?�?�
B�B�B�B�Brr/c�&�eZdZd�Zd�Zd�Zd�ZdS)�StreamRecoderTestc�R�tj��}tjd��}tj||j|jtjj	tjj
��}|�ddg��|�|�
��d��dS)Nr�r��bsab)r�r�rPr�r�rcrRr�r�r�r��
writelinesrr�)r�bior�srs    r�test_writelinesz!StreamRecoderTest.test_writelines�s����j�l�l���
�g�&�&��
�
!�#�u�|�U�\�"+�/�">�	��@\�^�^��
�
�
�t�T�l�#�#�#����������/�/�/�/�/rc��tj��}tjd��}tj||j|jtjj	tjj
��}d}|�|�d����|�|�
��|�d����dS)Nr2uàñéry)r�r�rPr�r�rcrRr�rZr�r�rDrr�)rr@rrAr�s     r�
test_writezStreamRecoderTest.test_write
s����j�l�l���
�h�'�'��
�
!�#�u�|�U�\�"+�/�">�	��@\�^�^����
������X�&�&�'�'�'������������W�)=�)=�>�>�>�>�>rc�:�tjd�d����}tj|dd��}|�|���d��|�d��|�|���d��|�|���d��|�|���d��|�|���d��dS)	Nzline1
line2
line3
r[rysline1
rsline2
sline3
r)r�r�rcrPr�rr�r�rr@rAs   r�test_seeking_readz#StreamRecoderTest.test_seeking_read
s����j�0�7�7��D�D�E�E��
�
��W�k�
:�
:����������
�3�3�3�
����
�
�
���������
�3�3�3���������
�3�3�3���������
�3�3�3����������,�,�,�,�,rc�>�tjd�d����}tj|dd��}|�d��|�d��|�|���d��|�d��|�|���d��|�|���d	��|�|���d��dS)
Nz
123456789
r[ryr s
abc
s789
rs1
sabc
)	r�r�rcrPr�rrDrr�rFs   r�test_seeking_writez$StreamRecoderTest.test_seeking_write
s����j��-�-�k�:�:�;�;��
�
��W�k�
:�
:��	����
�
�
�
����������������1�1�1�
����
�
�
����������/�/�/����������1�1�1����������1�1�1�1�1rN)r)r*r+rBrDrGrIrrrr<r<�sP������0�0�0�	?�	?�	?�	-�	-�	-�2�2�2�2�2rr<zneed _testinternalcapi modulec��eZdZdZej��ZdZdZdZ	dd�Z
d�Zd�Zd	�Z
d
�Zd�Zdd�Zd
�Zd�Zd�Zd�Zd�ZdS)�LocaleCodecTestzD
    Test indirectly _Py_DecodeUTF8Ex() and _Py_EncodeUTF8Ex().
    )r�uulatin1:§éuu255:ÿu
UCS:é€􏿿usurrogates:��)s
blatin1:��sb255:�u��rjc�.�tj|d|��SrF)�_testinternalcapi�EncodeLocaleEx)rr�rDs   rrczLocaleCodecTest.encode9
s�� �/��a��@�@�@rc	��|jD]�}|�|���5	|�|j|��}|�||��}|�||��n�#t
$ru|�t��5}|�||��ddd��n#1swxYwYt|j	��}|�
|d��YnwxYwddd��n#1swxYwY��dS)N)r�z!encode error: pos=[0-9]+, reason=)�STRINGSr�rc�ENCODINGrr�r�rtrTrU�assertRegex)rrDr�rhr}rW�errmsgs       r�check_encode_stringsz$LocaleCodecTest.check_encode_strings<
s����L�	8�	8�D����4��(�(�

8�

8�	8�#�{�{�4�=�&�A�A�H�#�k�k�$��7�7�G��$�$�W�h�7�7�7�7��*�S�S�S��*�*�<�8�8�2�B����D�&�1�1�1�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2� ���.�.�F��$�$�V�-Q�R�R�R�R�R�	S����

8�

8�

8�

8�

8�

8�

8�

8�

8�

8�

8����

8�

8�

8�

8��	8�	8sW�C8�A*�-C8�*$C)�B1	�%C)�1B5
�5C)�8B5
�9-C)�&C8�(C)�)C8�8C<	�?C<	c�0�|�d��dS�Nrj�rTrs r�test_encode_strictz"LocaleCodecTest.test_encode_strictJ
����!�!�(�+�+�+�+�+rc�0�|�d��dS�Nr�rWrs r�test_encode_surrogateescapez+LocaleCodecTest.test_encode_surrogateescapeM
����!�!�"3�4�4�4�4�4rc���	|�dd��nI#t$r<}t|��dkr|�|j�d���n�Yd}~nd}~wwxYw|�d��dS)Nrhr��unsupported error handlerz4 encoder doesn't support surrogatepass error handler)rcrRrTr�rQrT�rr�s  r�test_encode_surrogatepassz)LocaleCodecTest.test_encode_surrogatepassP
s���	��K�K��O�,�,�,�,���	�	�	��3�x�x�6�6�6��
�
���=�=�=�>�>�>�>��>�>�>�>�>�����	����	
�!�!�/�2�2�2�2�2���
A�2A�Ac���|�t��5}|�dd��ddd��n#1swxYwY|�t	|j��d��dS)Nrhr�r_)r�rRrcrrTrU�rrWs  r�%test_encode_unsupported_error_handlerz5LocaleCodecTest.test_encode_unsupported_error_handler\
s���
�
�
�z�
*�
*�	0�b��K�K��.�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�����R�\�*�*�,G�H�H�H�H�H��>�A�Ac�.�tj|d|��SrF)rM�DecodeLocaleEx)rr}rDs   rrRzLocaleCodecTest.decodea
s�� �/���F�C�C�Crc	��|jdk}|rd}nd}t|j��}|jD]�}	|�|j|��}||vr|�|��n#t$rd}YnwxYw|r6|�|jd��}||kr|�|����|D�]}|�|���5	|�|j|��}|�||��}	|�	|	|��n�#t$r�|�t��5}
|�||��ddd��n#1swxYwYt|
j��}|�|�d��|��YnwxYwddd��n#1swxYwY��dS)Nryr�rjr�)r}zdecode error: )rQr��
BYTES_STRINGSrPrcr�r�r�rRrr�r�rtrTrUrW�
startswith)rrD�is_utf8�
encode_errors�stringsr�r}�encoded2rhr�rWrSs            r�check_decode_stringsz$LocaleCodecTest.check_decode_stringsd
sz���=�G�+���	%�-�M�M�$�M��t�)�*�*���L�	-�	-�D�
��+�+�d�m�]�C�C���'�)�)��N�N�7�+�+�+���%�
�
�
�����
�����
-��;�;�t�}�o�F�F���w�&�&��N�N�8�,�,�,���	8�	8�G����g��.�.�

8�

8�	8�&�~�~�d�m�V�D�D�H�#�k�k�'�6�:�:�G��$�$�W�h�7�7�7�7��*�Q�Q�Q��*�*�<�8�8�5�B����G�V�4�4�4�5�5�5�5�5�5�5�5�5�5�5����5�5�5�5� ���.�.�F��O�O�F�$5�$5�6F�$G�$G��P�P�P�P�P�	Q����

8�

8�

8�

8�

8�

8�

8�

8�

8�

8�

8����

8�

8�

8�

8��	8�	8sl�4A&�&A5�4A5�F7�D�)-F7�$F(�:E	�F(�E!
�!F(�$E!
�%AF(�%F7�'F(�(F7�7F;	�>F;	c�0�|�d��dSrV�rprs r�test_decode_strictz"LocaleCodecTest.test_decode_strict�
rYrc�0�|�d��dSr[rrrs r�test_decode_surrogateescapez+LocaleCodecTest.test_decode_surrogateescape�
r]rc���	|�dd��nI#t$r<}t|��dkr|�|j�d���n�Yd}~nd}~wwxYw|�d��dS)Nrr�r_z4 decoder doesn't support surrogatepass error handler)rRrRrTr�rQrpr`s  r�test_decode_surrogatepassz)LocaleCodecTest.test_decode_surrogatepass�
s���	��K�K��_�-�-�-�-���	�	�	��3�x�x�6�6�6��
�
���=�=�=�>�>�>�>��>�>�>�>�>�����	����	
�!�!�/�2�2�2�2�2rbc���|�t��5}|�dd��ddd��n#1swxYwY|�t	|j��d��dS)Nrr�r_)r�rRrRrrTrUrds  r�%test_decode_unsupported_error_handlerz5LocaleCodecTest.test_decode_unsupported_error_handler�
s���
�
�
�z�
*�
*�	1�b��K�K��/�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�����R�\�*�*�,G�H�H�H�H�HrfNri)r)r*r+rJr�getfilesystemencodingrQrPrj�
SURROGATESrcrTrXr\rarerRrprsrurwryrrrrKrK,
s��������)�s�(�*�*�H�*�G�8�M��J�A�A�A�A�8�8�8�,�,�,�5�5�5�
3�
3�
3�I�I�I�
D�D�D�D� 8� 8� 8�D,�,�,�5�5�5�
3�
3�
3�I�I�I�I�IrrKc�*�eZdZdZd�Zd�Zd�Zd�ZdS)�	Rot13Testz"Test the educational ROT-13 codec.c�\�tjdd��}|�|d��dS)NzCaesar liked ciphers�rot-13zPnrfne yvxrq pvcuref)rPrcr)r�
ciphertexts  rr?zRot13Test.test_encode�
s1���]�#9�8�D�D�
�����%;�<�<�<�<�<rc�\�tjdd��}|�|d��dS)Nz
Rg gh, Oehgr?rz
Et tu, Brute?)rPrRr)r�	plaintexts  rrAzRot13Test.test_decode�
s/���M�/�8�<�<�	�����O�4�4�4�4�4rc��tjd����}|�d��}|�|d��dS)NrzABBA nag Cheryl BakerzNOON ant Purely Onxre)rPrbrcr)rr�r�s   rr�z!Rot13Test.test_incremental_encode�
sI��8�&�.�x�8�8�:�:���^�^�$;�<�<�
�����%<�=�=�=�=�=rc��tjd����}|�d��}|�|d��dS)Nrzterra Ares envy thazgreen Nerf rail gun)rPrQrRr)rr|r�s   rr}z!Rot13Test.test_incremental_decode�
sI��8�&�.�x�8�8�:�:���N�N�#8�9�9�	�����$9�:�:�:�:�:rN)r)r*r+rJr?rAr�r}rrrr}r}�
sV������,�,�=�=�=�5�5�5�>�>�>�
;�;�;�;�;rr}c��eZdZdZd�ZdS)�
Rot13UtilTestz�Test the ROT-13 codec via rot13 function,
    i.e. the user has done something like:
    $ echo "Hello World" | python -m encodings.rot_13
    c��tjd��}tj��}tj�||��|�d��|���}|�|d��dS)Nz)Gb or, be abg gb or, gung vf gur dhrfgvbarz)To be, or not to be, that is the question)r�r�r�r+r*rrIr)r�infile�outfile�
plain_texts    r�test_rot13_funczRot13UtilTest.test_rot13_func�
sz����H�I�I���+�-�-������v�w�/�/�/����Q�����\�\�^�^�
�����7�	9�	9�	9�	9�	9rN)r)r*r+rJr�rrrr�r��
s-��������9�9�9�9�9rr�c��eZdZdZd�Zd�ZdS)�CodecNameNormalizationTestzTest codec name normalizationc����d�d���fd�}tj|��|�tj|��|��tjd����|��tjd����|��tjd����|��tjd����|��tjd����|��tjd	����|��tjd
����|��tjd����|��tjd����|��tjd
����dS)N)rNr rsr�)NNNNc���|dkr�S�S)N�aaa_8r)rY�FOUND�	NOT_FOUNDs ��rr�zFCodecNameNormalizationTest.test_codecs_lookup.<locals>.search_function�
s����7�"�"��� � rr�zAAA-8zAAA---8zAAA   8u
aaaé€-8zAAA.8zAAA...8zBBB-8zBBB.8uaé€-8)rPr�rFr�rr�)rr�r�r�s  @@r�test_codecs_lookupz-CodecNameNormalizationTest.test_codecs_lookup�
s�������,�	�	!�	!�	!�	!�	!�	!�	���(�(�(�����)�?�;�;�;������
�g� 6� 6�7�7�7������
�g� 6� 6�7�7�7������
�i� 8� 8�9�9�9������
�i� 8� 8�9�9�9������
�.?� @� @�A�A�A�����F�M�'�$:�$:�;�;�;�����F�M�)�$<�$<�=�=�=�����F�M�'�$:�$:�;�;�;�����F�M�'�$:�$:�;�;�;�����F�M�/�$B�$B�C�C�C�C�Crc��tj}|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��dS)NrZuutfé€􏿿-8zutf   8zUTF 8�UTF_8zutf.8zutf...8)r��normalize_encodingr)r�	normalizes  r�!test_encodings_normalize_encodingz<CodecNameNormalizationTest.test_encodings_normalize_encoding�
s����0�	������7�+�+�W�5�5�5������#>�?�?��I�I�I������9�-�-�w�7�7�7�	
�����7�+�+�W�5�5�5������7�+�+�W�5�5�5������9�-�-�y�9�9�9�9�9rN)r)r*r+rJr�r�rrrr�r��
s;������'�'�D�D�D�,
:�
:�
:�
:�
:rr��__main__)UrPr�r�r�rr�r�r�testr�test.supportrrrx�ImportErrorrMr3�sizeof�c_wchar�SIZEOF_WCHAR_Trr:r�r<rLrf�TestCaser�rr0r8rZrqrxr�r�r�r�rr:r[rr
�reprr6rWrSr_r�r�r�rkr�r�rmr`r�r�r�r�r�rr
rr3r`r-r/r1rmrorqrk�platformr�r r/r<r�rKr}r�r�r)�mainrrr�<module>r�s���
�
�
�
�����	�	�	�	�
�
�
�
�
�
�
�
���������������������"�"�"�"�"�"�(�(�(�(�(�(�������������I�I�I������������������������3��M�M�M�
#�V�]�6�>�2�2�N�N��	����
�F��N�N�N��������$�$�$�(�����F����*-�-�-�-�-�-�-�-�DQ=�Q=�Q=�Q=�Q=�&�Q=�Q=�Q=�h
]>�]>�]>�]>�]>��(�+�]>�]>�]>�@+>�+>�+>�+>�+>�(�H�-�+>�+>�+>�\+>�+>�+>�+>�+>�(�H�-�+>�+>�+>�\`-�`-�`-�`-�`-��(�+�`-�`-�`-�F*'�*'�*'�*'�*'�(�H�-�*'�*'�*'�X*'�*'�*'�*'�*'�(�H�-�*'�*'�*'�X[H�[H�[H�[H�[H�x��*�[H�[H�[H�|CK�CK�CK�CK�CK�x��*�CK�CK�CK�L>�>�>�>�>�(�#�>�>�>�C�C�C�C�C�X�&�C�C�C� S-�S-�S-�S-�S-�(�H�-�S-�S-�S-�l<H�<H�<H�<H�<H�x�(�<H�<H�<H�@e�e�e��N
���A�
�s�1�v�v�q�y�y�
��d�d�1�g�g�����P�P�P�P�P�8�$�P�P�P�BV�V�V��rP�P�P�P�P�8�$�P�P�P�(Z6�Z6�Z6�Z6�Z6�H�%�Z6�Z6�Z6�z~)�~)�~)�~)�~)�x�(�~)�~)�~)�B@�@�@�@�@�x�(�@�@�@�
0�
0�
0�
0�
0�h�'�
0�
0�
0�f�f�f��P�7�6�=�!�!�)�� � ��(�(�(�
�7�6�<� � �(�� � ��'�'�'�� ��
_R�_R�_R�_R�_R�x�(�*A�_R�_R�_R�Du
�u
�u
�u
�u
�(�#�u
�u
�u
�p1�1�1�1�1�8�$�1�1�1�&L�&L�&L�&L�&L��!�&L�&L�&L�RC
�C
�C
�C
�C
��(�"3�C
�C
�C
�JP
�P
�P
�P
�P
�8�X�%6�P
�P
�P
�fO�O�O�O�O�x�(�O�O�O�(2�2�2�2�2�(�+�2�2�2�D65�65�65�65�65�h��65�65�65�r�����y�)���E�E�E����i����6��K�K�K��$�$�\�2�2�2�',�f�o��l�#�#��	�����D�D�D�����
-��J�J�J��$�$�[�1�1�1�&+�W��k�"�"��	�	�	�	��D�	����BF�BF�BF�BF�BF��*�BF�BF�BF�Z��(�(�(�S3�S3�S3�S3�S3�H�-�S3�S3�S3�n���S�\�W�,�9�;�;�XD�XD�XD�XD�XD�8�$�XD�XD�;�;�XD�v$+�$+�$+�$+�$+��!�$+�$+�$+�N"B�"B�"B�"B�"B��"�"B�"B�"B�J+2�+2�+2�+2�+2��)�+2�+2�+2�\���"�d�*�,K�L�L�nI�nI�nI�nI�nI�h�'�nI�nI�M�L�nI�b;�;�;�;�;��!�;�;�;�*
9�
9�
9�
9�
9�H�%�
9�
9�
9� ":�":�":�":�":��!2�":�":�":�J�z����H�M�O�O�O�O�O��sW�;�A�A�	A�A�A�A6�6	B�B�M/�/M9�8M9�=N�N%�$N%