Sindbad~EG File Manager
�
'Μgx ��*
�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl
mZddlm
Z
ddlZ ddlZ ddlZej$ej&�Zd�Zd�ZGd�d e�ZGd
�d�ZGd�d
e�ZGd�deej6�ZGd�deej6�ZGd�deej6�ZGd�deej6�ZGd�deej6�Z Gd�deej6�Z!Gd�deej6�Z"Gd�deej6�Z#Gd�dej6�Z$Gd �d!ej6�Z%Gd"�d#e"ej6�Z&Gd$�d%ej6�Z'gd&�Z(e(D]Z)e*e)�d'k7s�e+e,e)���Gd(�d)ej6�Z-gd*�Z.Gd+�d,ej6�Z/Gd-�d.ej6�Z0Gd/�d0ej6�Z1Gd1�d2ej6�Z2Gd3�d4ej6�Z3Gd5�d6ej6�Z4Gd7�d8ej6�Z5gd9�Z6e7ed:�re6jqd;�e7ed<�re6jqd=�d>gZ9Gd?�d@ej6e�Z:GdA�dBej6�Z;GdC�dDej6�Z<GdE�dFej6�Z=GdG�dHeej6�Z>GdI�dJeej6�Z?GdK�dLej6�Z@GdM�dNej6�ZAGdO�dPej6�ZBgdQ�ZCdRdSgdTggdU�dVgdWgdX�ZD ddlEZEeCjqdY�dZd[geDdY< ddlFZFeCjqd\�d]geDd\<Gd^�d_ej6�ZGiZHd`�ZIGda�dbej6�ZJej�ej�dck(dd�Gde�dfej6��ZMGdg�dhej6�ZNGdi�djej6�ZOGdk�dlej6�ZPej�edudm�Gdn�doej6��ZRGdp�dqej6�ZSGdr�dsej6�ZTGdt�duej6�ZUeVdvk(rej��yy#e$rdZY���wxYw#e$rdZY���wxYw#e$rdZdZY���wxYw#e$rdZEY��|wxYw#e$rY��lwxYw)w�N)�mock)�support)� os_helper���c������fd�}|S)Nc�L���j�|�|t|�f�y�N)�assertEqual�len)�input�expect�coder�selfs ���-/usr/local/lib/python3.12/test/test_codecs.py�checkzcoding_checker.<locals>.check!s �������u����E�
�';�<��)rrrs`` r�coding_checkerr s
���=��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�Z��eZdZdW�fdW�W�zfdW�W�zfdW�fdW�fdW�W�zfgZy)�'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!-sH���"�D�)�"�D��$8�9���m�!3�4�)�5�1���&�#�U�8�^�4�6�rr/�GetCPInfoExW�kernel32)�ctypesrrr�ctypes.wintypesrrrrr� Structure)�cprrrrrr/� prototype�GetCPInfoEx�inforr,r-r.rrs @@@@@@r�is_code_page_presentr9&sv���3�3�>�>��M��O��H�6�6�F�$�$�6��D�$��w�y�/A�B�I��^�V�J�-?�@�A�K��;�D��r�1�d�#�#rc�$�eZdZdZd�Zd�Zdd�Zy)�QueuezF
queue: write bytes at one end, read bytes from the other end
c��||_yr ��_buffer)r�buffers r�__init__zQueue.__init__>s ����rc�.�|xj|z
c_yr r=)r�charss r�writezQueue.writeAs�������rc��|dkr"|j}|jdd|_|S|jd|}|j|d|_|S�Nrr=)r�size�ss r�readz
Queue.readDsP����6����A��<�<���+�D�L��H����U�d�#�A��<�<���.�D�L��HrN)r)r(r)r*�__doc__r@rCrHrrrr;r;:s�����rr;c��eZdZd�Zd�Zy)�MixInCheckStateHandlingc�\�tt|�dz�D�]}tj|��}|j |d|�}|j�}|j
|dt�|ds]|j|ddddf�|j|j |d��|j||j��tj|��}|j|�|j ||dd�}|j|||z���y)N�rT)�ranger�codecs�getincrementaldecoder�decode�getstate�assertIsInstance�int�setstate�
assertTruer
� r�encoding�urG�i�d�part1�state�part2s r�check_state_handling_decodez3MixInCheckStateHandling.check_state_handling_decodePs���s�1�v�a�x��A�6��,�,�X�6�8�A��H�H�Q�r��U�O�E��J�J�L�E��!�!�%��(�C�0���8��
�
�E�!�H�R�a�L�!�,�-����A�H�H�U�1�X�$6� 6�7�� � ���
�
��5�7��,�,�X�6�8�A�
�J�J�u���H�H�Q�q�r�U�D�)�E����Q��e��,�'!rc�b�tt|�dz�D]�}tj|��}|j |d|�}|j�}tj|��}|j
|�|j ||dd�}|j|||z���y)NrMT)rNrrO�getincrementalencoder�encoderRrUr
rWs r�check_state_handling_encodez3MixInCheckStateHandling.check_state_handling_encodefs����s�1�v�a�x��A�6��,�,�X�6�8�A��H�H�Q�r��U�O�E��J�J�L�E�6��,�,�X�6�8�A�
�J�J�u���H�H�Q�q�r�U�D�)�E����Q��e��,�!rN)r(r)r*r_rcrrrrKrKOs��-�,-rrKc�F�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z dZ
d �Zd
�Zy)�ReadTestc
��td�}tj|j�|�}d}t |j|j�|d��D]E\}}|j
t|g��||j�z
}|j||��G|j|j�d�|j|jd�tj|j��}d}t |j|j�|d��D]5\}}||jt|g��z
}|j||��7|j|jdd�d�|j|jd�|j�d}t |j|j�|d��D]5\}}||jt|g��z
}|j||��7|j|jdd�d�|j|jd�|j|j�} |j|djtj | D�cgc]}t|g���c}|j���ycc}w)Nr�T��strict)r;rO� getreaderrX�ziprbrC�bytesrHr
�
bytebufferrPrQr?�reset�join�
iterdecode)
rr�partialresults�q�r�result�c�
partialresultr[�encodeds
r�
check_partialzReadTest.check_partialrs>��
�#�J��+�F���T�]�]�+�A�.����"%�e�l�l�4�=�=�&A�>�Z^�"_��Q�
�
�G�G�E�1�#�J���a�f�f�h��F����V�]�3�#`�
�������2�&�������s�+�
8�F�(�(����7�9����"%�e�l�l�4�=�=�&A�>�Z^�"_��Q�
��a�h�h�u�a�S�z�*�*�F����V�]�3�#`�
������#�t�,�b�1�������3�'�
��� ���"%�e�l�l�4�=�=�&A�>�Z^�"_��Q�
��a�h�h�u�a�S�z�*�*�F����V�]�3�#`�
������#�t�,�b�1�������3�'��,�,�t�}�}�-�������G�G�F�%�%�7�&C�7�a�u�a�S�z�7�&C�T�]�]�S�T�
��&Cs�Kc�>����fd��d�fd� }d}d}d}�j||d�|��j||d�|��j||dd�|��j||dd�|�d }g}g}t|�D]<\}} |j|d
zd
zdz| z�|j|d
zd
zdz��>�j|dj|�d�d
j|���j|dj|�d�d
j|��t d�D]�}
|D]�} d|
dz| zdzz}�|�}t d�D]L}�j|jd��|
dz| z��j|jd��d��N�|�}t d�D]I}�j|jd��|
dz��j|jd��d��K����y)Nc���tj|j�j��}t j
�j�|�Sr ��io�BytesIOrbrXrOrj)r�streamrs �rrjz)ReadTest.test_readline.<locals>.getreader�s:����Z�Z����T�]�]� ;�<�F�2�6�#�#�D�M�M�2�6�:�:rTc����|�}g} |j||��}|sn|j|��(dj|�S)N)rF�keepends�|)�readline�appendro)rr�rF�reader�lines�linerjs �r�readalllinesz,ReadTest.test_readline.<locals>.readalllines�sN����u�%�F��E�����D�8��D�������T�"� �
�8�8�E�?�"rufoo
bar
baz
spam
eggsufoo
|bar
|baz
|spam
|eggszfoo|bar|baz|spam|eggsF�
)�
�
�
u
��uあrgr��P�azxxx
�r��xxx)TN)r
� enumerater�rorNr�)
rr�rG� sexpected�sexpectednoends�lineends�vw�vworZ�lineendrFr�rjs
` @r�
test_readlinezReadTest.test_readline�s��� ;� #�
.��9� �1������a��.� �:�����a��/��A�����a��r�2�I�>�����a���3�_�E�1��
����%�h�/�L�Q���I�I�q��u�S�y�(�*�W�4�5��J�J��#��c� �8�+�,�0�
����b�g�g�b�k�4�8�#�(�(�2�,�G�����b�g�g�b�k�5�9�3�8�8�C�=�I��"�I�D�#����S��7�*�W�4�5��"�1����r��A��$�$������6��S��7�*���$�$������6���#�#�1����r��A��$�$������7��S����$�$������7���#�$�rc�`���gd�}dj|����fd�}|�}�j|j�|d��j|j�dj|dd���j|j�d�|�}�j|j�|d��j|jd�|dd��j|jd�d��j|jd��t |d�dzddd�|�}�j|j�|d��j|j�|dd��j|j�d�|�}�j|jdd� ��dd��j|j��dd��j|j�d�|�}�j|jdd� ��dd��j|jd��d��j|jd�d��j|jd��d
d�|�}�j|jdd� ��dd��j|j�|dddg|ddz��j|j�d�y)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.rgc���tj�j�j��}t j
�j�|�Sr r{)r~�datars ��rrjz8ReadTest.test_mixed_readline_and_read.<locals>.getreader�s:����Z�Z����D�M�M� :�;�F�2�6�#�#�D�M�M�2�6�:�:rrrM�d�(�)rFrB��j)ror
r�rHr� readlines)rr�rj�fr�s` @r�test_mixed_readline_and_readz%ReadTest.test_mixed_readline_and_read�s����8���w�w�u�~�� ;�
�K���������u�Q�x�0��������2�7�7�5���9�#5�6��������2�&�
�K���������u�Q�x�0���������E�!�H�Q�K�0���������B�'���������d�3�u�Q�x�=�1�+<�+=�&>�t��&D�E�
�K���������u�Q�x�0���������a�b� �2��������2�&�
�K��������R�q��1�4���8�<��������4���8�,��������2�&�
�K��������R�q��1�4���8�<���������D��G�,���������B�'���������d�1�S�k�2�
�K��������R�q��1�4���8�<���������q��!�"����q�r��(B�C��������2�&rc� �gd�}tjdj|�j|j��}tj|j�|�}t|�D]\}}|j|||��y)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
rg) r|r}rorbrXrOrjr�r
)rrGr~r�rZr�s r�test_bug1175396zReadTest.test_bug1175396ss��>
��~���B�G�G�A�J�-�-�d�m�m�<�=��0��!�!�$�-�-�0��8��"�6�*�I�Q�����T�1�Q�4�(�+rc��td�}tj|j�|�}tj|j�|�}|jd�|j
|jd��d�|jd�|j
|jd��d�|j
|jd��d�|jd �|j
|jd��d �|j
|jd��d�|jd�|j
|jd
��d�|jd�|j
|jd
��d�|j
|jd
��d�|jd �|j
|jd
��d �|j
|jd
��d�|jd
�|j
|jd
��d
�y)Nrzfoo
Fr��fooz
bar
rg�bar�bazTr�zbar
zfoo
)r;rO� getwriterrXrjrCr
r�)rrr�writerr�s r�test_readlinequeuezReadTest.test_readlinequeueMs����#�J��0��!�!�$�-�-�0��3��0��!�!�$�-�-�0��3�� ���W��������%��8�%�@����Y��������%��8�"�=�������%��8�%�@����U��������%��8�%�@�������%��8�"�=� ���W��������$��7��A����Y��������$��7��>�������$��7��A����U��������$��7��?�������$��7��<����Y��������$��7��Crc���d}d}d}||z|zj|j�}tj|�}t j
|j�|�}|j
|j�|�|j
|j�|�|j
|j�|�|j
|j�d�y)NzAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z`offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!!
znext line.
rg�rbrXr|r}rOrjr
r�)r�s1�s2�s3rGr~r�s r�test_bug1098990_azReadTest.test_bug1098990_ahs���
R��
q��
��
��U�2�X���d�m�m�,�����A���0��!�!�$�-�-�0��8��������*�B�/�������*�B�/�������*�B�/�������*�B�/rc�Z�d}d}d}d}d}||z|z|z|zj|j�}tj|�}t j
|j�|�}|j
|j�|�|j
|j�|�|j
|j�|�|j
|j�|�|j
|j�|�|j
|j�d�y)Nzaaaaaaaaaaaaaaaaaaaaaaaa
zbbbbbbbbbbbbbbbbbbbbbbbb
zstillokay:bbbbxx
zbroken!!!!badbad
zagainokay.
rgr�) rr�r�r��s4�s5rGr~r�s r�test_bug1098990_bzReadTest.test_bug1098990_bus���
+��
+��
#��
#��
��
��U�2�X�b�[��^�#�#�D�M�M�2�����A���0��!�!�$�-�-�0��8��������*�B�/�������*�B�/�������*�B�/�������*�B�/�������*�B�/�������*�B�/r��c���|jtdj|j�|j dj|jd�dj|j��|j dj|jd�dj|j��|j dj|jd�dj|j��|j dj|jd�d j|j��|j dj|jd
�dj|j��|j dj|jd�d j|j��|j dj|jd
�d
j|j��dj|j�}dD�]�\}}|j|j�t|�d}|j|j�t|�d}|dz|z}||z|jz|z}|jt|j|j�|j |j|jd�|�|j |j|jd�|�|j |j|jd�||z�|j |j|jd
�||jz|z�djd�|jD��}|j |j|jd�||z|z����y)Nu��[�]�backslashreplacez[\udc80]�namereplace�xmlcharrefreplacez
[�]�ignore�[]�replacez[?]�[��]z[??]rg))��A)�[�])r�r����
surrogatepassc3�&K�|] }d|z���y�w)�\x%02xNr)�.0�bs r� <genexpr>z0ReadTest.test_lone_surrogates.<locals>.<genexpr>�s����'J�0H�1�(1�1�}�0H�s�)�assertRaises�UnicodeEncodeErrorrbrXr
r�ill_formed_sequence�UnicodeDecodeErrorrQ�ill_formed_sequence_replacero) r�bom�before�after�before_sequence�after_sequence�test_string�
test_sequencer�s r�test_lone_surrogateszReadTest.test_lone_surrogates�s5�����,�h�o�o�t�}�}�M�����*�*�4�=�=�:L�M�$�+�+�D�M�M�:� <�����*�*�4�=�=�-�H�$�+�+�D�M�M�:� <�����*�*�4�=�=�:M�N�%�,�,�T�]�]�;� =�����*�*�4�=�=�(�C����T�]�]�3� 5�����*�*�4�=�=�)�D����d�m�m�4� 6�
���)�0�0�����I����T�]�]�3� 5����)�0�0���� �J����t�}�}�5� 7��i�i��
�
�&��3�M�F�E�$�m�m�D�M�M�:�3�s�8�9�E�O�"�\�\�$�-�-�8��S���C�N� �8�+�e�3�K� �?�2�!�5�5�6�8F�G�M����0�-�2F�2F�"�m�m�
-����[�/�/��
�
�0?�A�*�
,�
���]�1�1�$�-�-�2A�C�(�
*�
���]�1�1�$�-�-��J�#�e�^�
-����]�1�1�$�-�-��K�#�d�&F�&F�F��N�
P�!�w�w�'J�04�0H�0H�'J� J�����]�1�1�$�-�-�AS�T�#�&6�6��>�
@�+3rc��dj|jd�}tdt|��D]p}t j
|j�d�}|j
|j|d|�d�|j
|j||dd�d��rdj|jd�}tdt|��D]o}t j
|j�d�}|j
|j|d|�d�|j
|j||d�d��qy)Nu�r�rMrgTu�)rbrXrNrrOrPr
rQ)rr�rZ�decs r�test_incremental_surrogatepassz'ReadTest.test_incremental_surrogatepass�s�����t�}�}�o�>���q�#�d�)�$�A�=�&�.�.�t�}�}�=�o�N�C����S�Z�Z��R�a��1�2�6����S�Z�Z��Q�R��$�7��B�%�
���t�}�}�o�>���q�#�d�)�$�A�=�&�.�.�t�}�}�=�o�N�C����S�Z�Z��R�a��1�2�6����S�Z�Z��Q�R��1�8�<�%rN)
r(r)r*rxr�r�r�r�r�r�r�r�r�rrrrereqs?��)
�V9�v.'�`C)�JD�60�0�"#+��*@�X=rrec�j�eZdZdZej
dk(rdZndZdZdZd�Z d�Z
d �Zd
�Zd�Z
d�Zd
�Zy)� UTF32Test�utf-32�little����܀s$��spamspams$��spamspamc��tj|j�\}}}}tj�}||�}|jd�|jd�|j
�}|j||jk(xs||jk(�tj|�}||�}|j|j�d�y�N�spam�spamspam�rO�lookuprXr|r}rC�getvaluerV�spamle�spamber
rH�r�_r�r�rGr�r[s r�test_only_one_bomzUTF32Test.test_only_one_bom����"�M�M�$�-�-�8���!�F�6��J�J�L���1�I�� ����� �����
�J�J�L������T�[�[�(�<�A����,<�=��J�J�q�M���1�I���������:�.rc�l�tjd�}tj|j�|�}|jt|j�tjd�}tj|j�|�}|jt|j�y)N�����s���������r|r}rOrjrXr��UnicodeErrorrH�rrGr�s r�test_badbomzUTF32Test.test_badbom�s|���J�J�y�!��+�F���T�]�]�+�A�.�����,����/��J�J�y�!��+�F���T�]�]�+�A�.�����,����/rc�,�|jdgd��y)N�ÿĀ𐀀)rgrgrgrgrgrgrg�r�r�r��ÿr�r�r��ÿĀr�r�r��ÿĀr�r�r�r��rx�rs r�test_partialzUTF32Test.test_partial�s�����,�
�
rc��|jdtjddd��|jdtjddd��y�N)r�rM�r�T)rgrMr��r
rO�
utf_32_decoder�s r�
test_handlerszUTF32Test.test_handlers
�H�������-�-�g�y�$�G� I������-�-�g�x��F� Hrc�R�|jttjddd�y�N��riT)r�r�rOrr�s r�test_errorszUTF32Test.test_errors�"�����,�f�.B�.B�!�8�T� 3rc��|j|jd|j�|j|jd|j�y�Nr��r_rXr�r�r�s r�test_decoder_statezUTF32Test.test_decoder_state�>���(�(����)3�T�[�[� B��(�(����)3�T�[�[� Brc��d}|jdtj|�d�d}|jdtj|�d�y)Ns���𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀rs��r)r�
encoded_le�
encoded_bes r�test_issue8941zUTF32Test.test_issue8941sW��F�
����,��-�-�j�9�!�<� >�E�
����,��-�-�j�9�!�<� >rN)r(r)r*rX�sys� byteorderr�r�r�r�r�r�rr rrrrrr�r��sT���H�
�}�}�� �1��1��F�F�F�F�
/�0�
�>H�3�B�>rr�c�,�eZdZdZdZd�Zd�Zd�Zd�Zy)�UTF32LETest� utf-32-ler�c�,�|jdgd��y�Nr�)rgrgrgr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�s rr�zUTF32LETest.test_partial)������,�
�
rc�Z�|jdj|j�d�y)N�s�r
rbrXr�s r�test_simplezUTF32LETest.test_simpleD�"������,�,�T�]�]�;�=P�Qrc�R�|jttjddd�yr)r�r�rO�utf_32_le_decoder�s rr zUTF32LETest.test_errorsG�"�����,�f�.E�.E�!�8�T� 3rc�X�d}|jdtj|�d�y)Nsrr)r
rOr#�rrws rrzUTF32LETest.test_issue8941K�-��-�����,��0�0��9�!�<� >rN� r(r)r*rXr�r�r r rrrrrr%�"���H�-��
�6R�3�>rrc�,�eZdZdZdZd�Zd�Zd�Zd�Zy)�UTF32BETest� utf-32-ber�c�,�|jdgd��yrr�r�s rr�zUTF32BETest.test_partialWrrc�Z�|jdj|j�d�y)Nrsrr�s rr zUTF32BETest.test_simplerr!rc�R�|jttjddd�yr)r�r�rO�utf_32_be_decoder�s rr zUTF32BETest.test_errorsur$rc�X�d}|jdtj|�d�y)Nsrr)r
rOr0r&s rrzUTF32BETest.test_issue8941yr'rNr(rrrr+r+Sr)rr+c�p�eZdZdZej
dk(rdZndZdZdZd�Z d�Z
d �Zd
�Zd�Z
d�Zd
�Zd�Zy)� UTF16Test�utf-16r�����܀s��spamspams��spamspamc��tj|j�\}}}}tj�}||�}|jd�|jd�|j
�}|j||jk(xs||jk(�tj|�}||�}|j|j�d�yr�r�r�s rr�zUTF16Test.test_only_one_bom�r�rc�l�tjd�}tj|j�|�}|jt|j�tjd�}tj|j�|�}|jt|j�y)Ns��r�r�r�s rr�zUTF16Test.test_badbom�s}���J�J�{�#��+�F���T�]�]�+�A�.�����,����/��J�J�*�+��+�F���T�]�]�+�A�.�����,����/rc�,�|jdgd��y)Nr�)rgrgrgr�r�r�r�r�r�r�r�r�r�r�r�r�s rr�zUTF16Test.test_partial�s�����,�
�
rc��|jdtjddd��|jdtjddd��yr)r
rO�
utf_16_decoder�s rrzUTF16Test.test_handlers�rrc�R�|jttjddd�yr)r�r�rOr;r�s rr zUTF16Test.test_errors�r
rc��|j|jd|j�|j|jd|j�yrr
r�s rrzUTF16Test.test_decoder_state�rrc���d}|j|j�}|jtjtj
�t
tj
d�5}|j|�ddd�tjtj
d|j��5}|j|j�|�ddd�y#1swY�cxYw#1swYyxYw)NzHello
world
�wbrs�rX)rbrX�
addCleanupr�unlink�TESTFN�openrCrOr
rH)rr�rG�fpr�s r�test_bug691291zUTF16Test.test_bug691291�s���
"���I�I�d�m�m�$����� �(�(�)�*:�*:�;�
�)�"�"�D�
)�R��H�H�Q�K�*�
�[�[��)�)�3�"&�-�-�1�4:����V�[�[�]�B�/�1�1�*�
)��1�1�s�&C�0!C&�C#�&C/c��dD]u}|jt�5}tjtj
||j��ddd�|jdtj���wdD]u}|jt�5}tjtj
||j��ddd�|jdtj���wy#1swY��xYw#1swY�=xYw)N)�U�rUzr+Ur@zinvalid mode)�rt�wt�atzr+tz'can't have text and binary mode at once)
r��
ValueErrorrOrDrrCrX�assertIn�str� exception)r�mode�cms r�test_invalid_modeszUTF16Test.test_invalid_modes�s���&�D��"�"�:�.�"����I�,�,�d�T�]�]�K�/��M�M�.�#�b�l�l�*;�<�'�
.�D��"�"�:�.�"����I�,�,�d�T�]�]�K�/��M�M�C��b�l�l�+�
-�.� /�.��
/�.�s�1C6�1D�6C? �D N)r(r)r*rXrrr�r�r�r�r�r�rr rrFrSrrrr3r3�sS���H�
�}�}�� �)��)��
@�F�
@�F�
/�0�
�*H�3�B�
0�
-rr3c�&�eZdZdZdZd�Zd�Zd�Zy)�UTF16LETest� utf-16-ler5c�,�|jdgd��y�Nr�)rgr�r�r�r�r�r�r�r�r�r�r�r�r�s rr�zUTF16LETest.test_partial�������,�
�
rc��gd�}|D]N\}}|jttj|dd�|j |jdd�|��Py)N)�rr�)sAZ�A�)s ABCDZ�ABCD�)s�r�)s�Ar�)s�A��A)s�Ar^riTzutf-16ler�)r�r�rO�utf_16_le_decoder
rQ�r�tests�raw�expecteds rr zUTF16LETest.test_errors��T��
��#�M�C�����0�&�2I�2I�!�8�T�
3����S�Z�Z�
�I�>��I�#rc��|jdj|j�d�|jdj|j�d�y)Nrs�ީr
rbrXrQr�s r�test_nonbmpzUTF16LETest.test_nonbmp
�G������,�,�T�]�]�;�,� .����,�3�3�D�M�M�B�%� 'rN�r(r)r*rXr�r�r rgrrrrUrU�����H�%��
�&
J�'rrUc�&�eZdZdZdZd�Zd�Zd�Zy)�UTF16BETest� utf-16-ber6c�,�|jdgd��yrXr�r�s rr�zUTF16BETest.test_partialrYrc��gd�}|D]N\}}|jttj|dd�|j |jdd�|��Py)N)r[)sA�r\)s ABCDZr])s�r�)s��r�)s�Ar^)s�Ar^riTzutf-16ber�)r�r�rO�utf_16_be_decoder
rQr`s rr zUTF16BETest.test_errors'rdrc��|jdj|j�d�|jdj|j�d�y)Nrs��rfr�s rrgzUTF16BETest.test_nonbmp6rhrNrirrrrlrlrjrrlc�L��eZdZdZdZdZdZd�Zd�Zd�Z �fd�Z
d �Zd
�Z�xZ
S)�UTF8Test�utf-8s�u ���rc�,�|jdgd��y)N�ÿ߿ࠀ𐀀)r�r�r�r��ÿ߿rwrw�ÿ߿ࠀrxrx�ÿ߿ࠀryryryrvr�r�s rr�zUTF8Test.test_partialBs�����2�
�
rc�t�d}|j|j||j|j��y)NuÿĀ߿ࠀ)r_rXrb)rrYs rrzUTF8Test.test_decoder_stateXs.��@���(�(����)*�A�H�H�T�]�]�,C� Erc���dD]O\}}}|j|||��5|j|j|j|�|�ddd��Qy#1swY�\xYw)N�)�[��]r�r�)r}r�u[��])r}�surrogateescape�[��])r}r�z
[\x80\xff]�r��
error_handlerrc)�subTestr
rQrX�rr�r�rcs r�test_decode_errorzUTF8Test.test_decode_error]sf��.
�)�D�-�����4�}�'/��1�� � ����T�]�]�M�!J�!)�+�1�1�
.
�1�1�s�-A�A c���t�|��|jdj|jd�|j
dz�|j
t�5}dj|jd�ddd�j}|j|j|j|jd�y#1swY�IxYw)Nr�r~s[�]u[���]u��)�superr�r
rbrX�BOMr�r�rP�object�start�end)rrR�exc� __class__s �rr�zUTF8Test.test_lone_surrogatesis����
��$�&�
����*�*�4�=�=�:K�L����I�-� /��
�
�1�
2�b�"�)�)�$�-�-�9J�K�3��l�l��������C�I�I�c�g�g�6��G�3�
2�s�C�Cc�j�|jdj|jd�|jdz�|jdj|jd�|jdz�|jdj|jd�|jdz�|jdj |jd�d�|jdj |jd�d�|jt
jd��|jt�5dj |jd�ddd�|jt�5d j |jd�ddd�y#1swY�DxYw#1swYyxYw)
Nu abc�defr�s abc�defu�s�r�s[��]sabc�sabc�z)
r
rbrXr�rQrVrO�lookup_errorr�r�r�s r�test_surrogatepass_handlerz#UTF8Test.test_surrogatepass_handlerusX������.�.�t�}�}�o�N����$9�9� ;����+�2�2�4�=�=�/�R����$C�C� E����)�0�0�����P����$A�A� C�
���.�5�5�d�m�m�_�U�'� )����8�?�?��
�
��_�+� -�
����+�+�O�<�=�
�
�
�1�
2��!�!�$�-�-��A�3�
�
�
�1�
2��"�"�4�=�=�/�B�3�
2�3�
2��
2�
2�s�=F�7F)�F&�)F2c�X�gd�}dD]}dD]}|j||z���|jd�|D]b}|j|��5tj|j
��}|j
t|j|�ddd��dy#1swY�oxYw)N)������������r)������s���s���s�s���s�s�)�r�)s�s�s�s�s�s�s�r�) r��extendr�rOrPrXr�r�rQ)r�cases�prefix�suffixr�r�s r�test_incremental_errorsz UTF8Test.test_incremental_errors�s���P��>�F�+�����V�f�_�-�+�>�
���N� O��D����4��(�A�f�2�2�4�=�=�A�C���!�!�"4�c�j�j�$�G�)�(��(�(�s
�AB � B) )r(r)r*rXr�r�r�r�rr�r�r�r��
__classcell__�r�s@rrsrs<s;����H�)��".��
�C�
�,E�
+�
H�C�&Hrrsc�.�eZdZdZd�Zd�Zd�Zd�Zd�Zy)�UTF7Test�utf-7c�z�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�|�dj tt
ttd��j��t
||zd z|z�z
��}|j|j|j�d
�y)NzGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?�asciiz !"#$%&*;<=>@[]^_`{|}za+bsa+-bz
rg��+sX+AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-) r
rbrXrQro�sorted�setrlrN)r�set_d�set_o�ws�other_asciis r�
test_asciizUTF7Test.test_ascii�s�����
������d�m�m�4�e�l�l�7�6K�L�������g�.�5�5�d�m�m�D�e�L�'��������d�m�m�4�e�l�l�7�6K�L�������g�.�5�5�d�m�m�D�e�L�������d�m�m�4�g�>��������
�
�6��>�
��������4�=�=�1�2�9�9�W�3E�F�������7�+�2�2�4�=�=�A�2�F��g�g�f�S��u�T�{�);�)B�)B�)D�%E�%(�����)<�r�)A�%B�&C�D�E������+�+�D�M�M�:�D� Erc�,�|jdgd��y)N�a+-bcdĀe𐀀f) r�r��a+za+-�a+-br�r�r�r�za+-b�a+-bcr�r�r�r�ua+-bc� a+-bcdr�r�r�r�ua+-bcdĀ�a+-bcdĀer�r�r�r�r�r�r�ua+-bcdĀe𐀀r�r�r�s rr�zUTF7Test.test_partial�������.�!
�$
rc ��gd�}|D]i\}}|j|��5|jttj|dd�|j|j
dd�|�ddd��ky#1swY�vxYw)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�)sa+///,+IKw-b�a�€b)s
a+////,+IKw-br�)sa+IKw-b�ua€b�)sa+IKw�br�)sa+@br��rbriTr�r�)r�r�r�rO�utf_7_decoder
rQr`s rr zUTF7Test.test_errors�sq��
��.#�M�C�����#��&��!�!�"4�f�6I�6I� #�X�t�5�� � ����G�Y�!?��J�'�&�#�&�&�s�A
A4�4A= c�`�|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�y)Nu𐒠s+2AHcoA-u��s+2AHcoAu€𐒠s
+IKzYAdyg-s +IKzYAdygu
€€𐒠s
+IKwgrNgB3KA-s+IKwgrNgB3KArfr�s rrgzUTF7Test.test_nonbmp�sF������,�,�T�]�]�;�[�I�����.�.�t�}�}�=�{�K�����+�+�D�M�M�:�L�I�����*�*�4�=�=�9�<�H����+�2�2�4�=�=�A�=�Q�����-�-�d�m�m�<�>P�Q�����,�,�T�]�]�;�=O�P����1�8�8����G�)� +����)�0�0����?�1� 3�����/�/��
�
�>�1� 3rc��gd�}|D]B\}}|j|��5|j|jdd�|�ddd��Dy#1swY�OxYw)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�)sa+IKwgrNgB-bua€€�b)sa+IKwgrNgB�br�)s
a+IKwgrNgBr�)s
a+IKwgrNgBA-br�r�r�r��r�r
rQr`s rr�zUTF7Test.test_lone_surrogatessQ��
��#�M�C�����#��&�� � ����G�Y�!?��J�'�&�#�&�&�s�#A
�
A N) r(r)r*rXr�r�r rgr�rrrr�r��s$���H�E�4%
�NK�<
3�Krr�c��eZdZd�Zd�Zy)�UTF16ExTestc�T�|jttjdddd�y)NrrirT)r�r�rO�utf_16_ex_decoder�s rr zUTF16ExTest.test_errors"s$�����,�f�.E�.E�w�PX�Z[�]a�brc�L�|jttj�yr )r�� TypeErrorrOr�r�s r�
test_bad_argszUTF16ExTest.test_bad_args%s�����)�V�%<�%<�=rN)r(r)r*r r�rrrr�r� s
��c�>rr�c��eZdZd�Zd�Zd�Zy)�ReadBufferTestc�v�ddl}|jtj|jdd��d�y)Nrr��spam)r��)�arrayr
rO�readbuffer_encode)rr�s r�
test_arrayzReadBufferTest.test_array*s/�������$�$�U�[�[��g�%>�?��
rc�N�|jtjd�d�y)Nrg�rr)r
rOr�r�s r�
test_emptyzReadBufferTest.test_empty1s������1�1�"�5�x�@rc��|jttj�|jttjd�y�N�*)r�r�rOr�r�s rr�zReadBufferTest.test_bad_args4s0�����)�V�%=�%=�>����)�V�%=�%=�r�BrN)r(r)r*r�r�r�rrrr�r�(s��
�A�Crr�c�F�eZdZdZej
Zd�Zd�Zd�Z d�Z
d�Zy)�UTF8SigTest� utf-8-sigc�,�|jdgd��y)N�ÿ߿ࠀ𐀀)rgrgrgrgrgu�r��ÿr��ÿ߿r�r��ÿ߿ࠀr�r��ÿ߿ࠀr�r�r�r�r�r�s rr�zUTF8SigTest.test_partial<s�����8�
�
rc�<�|jtdd�d�y)N�r�rg�r
rOr�s r�test_bug1601501zUTF8SigTest.test_bug1601501Xs������_�k�:�B�?rc��tjd��}d}|j|j|j d��|�y)Nr�r�)rOrPr
rQrb)rr[rGs r�test_bomzUTF8SigTest.test_bom\s>��5�F�(�(��5�7����������!�(�(�;�"7�8�!�<rc��d}tjdz}tjd�}dgtt dd��zgd�zD]�}|tj|��}tj�} |�|j|�}n|j�}|sn|j|��9|j�}|j||���y�NuABC¡∀XYZsABC¡∀XYZr�rM�)�@r���i)rO�BOM_UTF8rj�listrNr|r}�StringIOrHrCr�r
� r� unistring�
bytestringr��sizehint�istream�ostreamr��gots r�test_stream_bomzUTF8SigTest.test_stream_bomas���(� ��_�_�'D�D�
��!�!�+�.�����e�A�r�l�!3�3�1�2�H��R�Z�Z�
�3�4�G��k�k�m�G���'�"�<�<��1�D�"�<�<�>�D����
�
�d�#���"�"�$�C����S�)�,�2rc��d}d}tjd�}dgttdd��zgd�zD]�}|t j
|��}t j�} |�|j|�}n|j�}|sn|j|��9|j�}|j||���yr�)rOrjr�rNr|r}r�rHrCr�r
r�s r�test_stream_barezUTF8SigTest.test_stream_barews���(� �2�
��!�!�+�.�����e�A�r�l�!3�3�1�2�H��R�Z�Z�
�3�4�G��k�k�m�G���'�"�<�<��1�D�"�<�<�>�D����
�
�d�#���"�"�$�C����S�)�,�2rN)r(r)r*rXrOr�r�r�r�r�r�rrrrr�r�8s*���H�
�/�/�C�
�8@�=�
-�,-rr�c�$�eZdZd�Zd�Zd�Zd�Zy)�EscapeDecodeTestc��|jtjd�d�|jtjt��d�y)Nrr�)r
rO�
escape_decode� bytearrayr�s rr�zEscapeDecodeTest.test_empty�s:������-�-�c�2�H�=�����-�-�i�k�:�H�Erc��tj}td�D]4}t|g�}|dk7s�|j ||dz�|dzdf��6y)Nr��\�0r)rOrrNrlr
�rrQr�s r�test_rawzEscapeDecodeTest.test_raw�sN���%�%���s��A��q�c�
�A��E�z�� � ���D��!1�A��H�a�=�A�rc ���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&vr-|jt�5|d'|zd'|z�ddd�|jt�5|d'|j�zd'|j�z�ddd���|jt�5|d(d(�ddd�|jt�5|d)d)�ddd�|jt�5|d*d*�ddd�td+d,�D]9}|jt�5|d-|zt |d.zg��ddd��;y#1swY��xYw#1swY��`xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY��xYw)/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�)rOrrrNrl�assertWarns�DeprecationWarning�upper�rrQrrZr�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��%�!�)�U�Q�Y�/�:��!�!�"4�5��e�a�g�g�i�'������):�;�6�5� ��
�
�0�
1��&�&�!�2�
�
�
�0�
1��&�&�!�2�
�
�
�0�
1��)�Y�'�2��u�f�%�A��!�!�"4�5��g��k�5�!�e�)��#5�6�6�5�&�:�9��5�5��
1�
1��
1�
1��
1�
1��6�5�sH�<H�),H*�4
H7�
I�
I�8I�H' �*H4 �7I�I�I�I$ c��tj}|jt|d�|jt|d�|j |dd�d�|j |dd�d�|jt|d�|jt|d �|j |d
d�d�|j |d
d�d�y)
Ns\xs[\x]s[\x]\xr�)rr�r�)�[?]?r�s\x0s[\x0]s[\x0]\x0)r�)r.r/)rOrr�rMr
)rrQs rr zEscapeDecodeTest.test_errors�s����%�%�����*�f�f�5����*�f�h�7�����
�H�5�z�B�����
�I�6��E����*�f�g�6����*�f�i�8������h�7��D������i�8�,�GrN)r(r)r*r�rr,r rrrrr�s��F�B�%7�N 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 <--rc��eZdZd�Zd�Zd�Zy)�PunycodeTestc���tD]V\}}|jt|jd�d�j �t|d�j ���Xy�N�punycoder�)�punycode_testcasesr
rOrb�lower�r�uni�punys r�test_encodezPunycodeTest.test_encode;sO��+�I�C��
����C�J�J�z�*�G�4�:�:�<��D�'�"�(�(�*�
�
,rc���tD]g\}}|j||jd��|jd�jd�}|j||jd���iyr3)r5r
rQrbr7s r�test_decodezPunycodeTest.test_decodeGs[��+�I�C�����S�$�+�+�j�"9�:��;�;�w�'�.�.�w�7�D����S�$�+�+�j�"9�:�,rc�2�ddt�fdg}|D]w\}}}|j||��5t|t�r#|j t|j
d|�n"|j
|jd|�|�ddd��yy#1swY��xYw)N�xn--w&ri)r>r�zxn-)r9�errorsr4)r�r��
isinstance� Exceptionr�rQr
)r� testcasesr9r?rcs r�test_decode_invalidz PunycodeTest.test_decode_invalidMs���
��,�.�1�(�
� �'0�"�D�&�(����4���7��h� �2��%�%�l�D�K�K��V�T��$�$�T�[�[��V�%D�h�O� 8�7�'0�7�7�s�AB
�
B N)r(r)r*r:r<rCrrrr1r1:s��
�;�
Prr1)-)s%foo͏᠆᠋barbaz︀︈️s foobarbaz)sCAFEscafe)sßsss)sİsi̇)sŃͺsń ι�NN)sǰ ªsǰ a)sᾷsᾶι)�ǰrE)�ΐrF)�ΰrG)�ẖrH)�ὖrI)� rJ)s rJ)s N)s rJ)sr)s rJ)�rK)s
N)sN)r�r)sN)sN)sN)sN)sN)sN)s�N)s�N)s⿵N)śś)sN)sN)sN)sN)sfoo־barN)s fooﵐbarN)s fooﹶbars foo َbar)sا1N)�ا1بrLrD)sXßİ℡ǰ ªΰ sxssi̇telǰ aΰ )sXß㌖İ℡⒟㌀s*xssキロメートルi̇tel(d)アパートc��eZdZd�Zy)�NameprepTestc �R�ddlm}tt�D]X\}\}}|��t |dd�}|�|jt||��3t |dd�} |j||�|��Zy#t$r+}tjd|dzt |�fz��d}~wwxYw)Nr)�namepreprtr�z
Test 3.%d: %srM)�encodings.idnarPr��nameprep_testsrOr�r�r
rAr�
TestFailed)rrP�pos�orig�prepped�es r�
test_nameprepzNameprepTest.test_nameprep�s���+�$-�n�$=� �C��$���|���t�W�o�6�D����!�!�,��$�?��g�w��@��P��$�$�X�d�^�W�=�%>��!�P�!�,�,�_��A��s�1�v��-N�O�O��P�s�A2�2 B&�;&B!�!B&N)r(r)r*rXrrrrNrN�s��PrrNc�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z y) �
IDNACodecTestc���|jtdd�d�|jtdd�d�|jtdd�d�|jtdd�d �y)
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�r�s r�test_builtin_decodez!IDNACodecTest.test_builtin_decode sa������]�F�3�\�B�����^�V�4�m�D�����1�6�:�O�L�����2�F�;�=M�Nrc��|jdjd�d�|jdjd�d�|jdjd�d�|jdjd�d �y)
Nr^r]r\r`r_rbrardrc�r
rbr�s r�test_builtin_encodez!IDNACodecTest.test_builtin_encodesq������,�,�V�4�m�D�����-�-�f�5�~�F�����/�/��7�9M�N����)�0�0��8�:O�Prc���|jtd�5djd�ddd�|jtd�5djd�ddd�y#1swY�:xYw#1swYyxYw)Nzway too longsTxn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar]ztoo longsNxn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)�assertRaisesRegexr�rQr�s r� test_builtin_decode_length_limitz.IDNACodecTest.test_builtin_decode_length_limits]��
�
#�
#�L�.�
A�
"�*�*�6�2�B�
�
#�
#�L�*�
=�
�(�(��0�>�
=�B�
A��
=�
=�s�A"�A.�"A+�.A7c���tjd�tjd��}|j d�|j|j �d�y)Nr]�abc�rg)rOrjr|r}rHr
)rrss r�test_streamzIDNACodecTest.test_streamsC��$�F���V�$�R�Z�Z��%7�8�� ���q� ��������2�&rc�L�|jdjtjd�dD�d��d�|jdjtjd�dD�d��d�|jdjtjd �d
D�d��d�|jdjtjd�d
D�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�y)Nrgc3�4K�|]}t|g����y�wr �rl�r�rus rr�z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>"s����&I�=�a�u�a�S�z�=���r\r]r^c3�4K�|]}t|g����y�wr rrrss rr�z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>&s����&J�>�a�u�a�S�z�>�rtr_r`c3�4K�|]}t|g����y�wr rrrss rr�z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>*�����&Q�;P�a�u�a�S�z�;P�rtrcrdc3�4K�|]}t|g����y�wr rrrss rr�z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>.rwrtsxn--xams ple-9ta.ou äxample.srgrT�orgsrg.zorg.)r
rorOrprPrQrn)r�decoders r�test_incremental_decodez%IDNACodecTest.test_incremental_decode s�������G�G�F�%�%�&I�=�&I�6�R�S��
�
����G�G�F�%�%�&J�>�&J�F�S�T��
�
����G�G�F�%�%�&Q�;P�&Q�SY�Z�[��
�
����G�G�F�%�%�&Q�;P�&Q�SY�Z�[��
�
7�&�.�.�v�6�8��������
�5�r�:��������7��G��������.��3��������T�2�E�:��
�
��������
�5�r�:��������7��G��������/��8��������T�2�B�7rc��|jdjtjdd��d�|jdjtjdd��d�|jdjtjdd��d�|jdjtjdd��d�tjd��}|j|jd �d�|j|jd
�d�|j|jdd
�d�|j
�|j|jd �d�|j|jd�d�|j|jdd
�d�y)Nrr^r]r\r`r_rdrcuäxz ample.orgsxn--xample-9ta.rgTsorgz
ample.org.sxn--xample-9ta.org.)r
rorO�
iterencoderarbrn)r�encoders r�test_incremental_encodez%IDNACodecTest.test_incremental_encode>sn������H�H�V�&�&�|�V�<�=��
�
����H�H�V�&�&�}�f�=�>��
�
����H�H�V�&�&�'7��@�A�!�
�
����H�H�V�&�&�'7��@�A�!�
�
7�&�.�.�v�6�8���������0�#�6��������4�6H�I��������D�1�6�:��
�
���������0�#�6��������5�7M�N��������D�1�3�7rc���djdd�djdd�dD]F}|jtdjd|�|jtdjd|��Hy)z$Only supports "strict" error handlerr^r]rir\)r�r�r�r~N)rbrQr�rA�rr?s rr zIDNACodecTest.test_errorsZse�����F�H�-����V�X�.�#�F����i��)<�)<�f�f�M����i��$�$�f�f�
6�#rN)
r(r)r*rerhrkror{rr rrrrZrZs'��O�Q�1�'�
8�<8�86rrZc�`�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z
d �Zd
�Zd�Z
d�Zd
�Zd�Zy)�CodecsModuleTestc���|jtjdd�d�|jttj�|jtjd�d�|jt
tjdd�|jtjdd��d�|jtjd dd
��d�y)
N���latin-1�äöürm�abcrr���objrX�[�]r��r?r�)r
rOrQr�r�r�r�s rr<zCodecsModuleTest.test_decodegs���������� �B�'� )����)�V�]�]�3�������v�.��6����,�f�m�m�W�g�N�
������?�Y�O�'� )�������y�'�(�K�� rc��|jtjdd�d�|jttj�|jt
tjdd�|jtjd�d�|jttjdd �|jtjdd�
�d�|jtjdd d�
�d�y)Nr�r�r�r��__spam__r�rmuÿffr�r��[ÿ]r�r�r)r
rOrbr�r��LookupErrorr�r�s rr:zCodecsModuleTest.test_encodets���������~�y�A�(� *����)�V�]�]�3����+�v�}�}�e�Z�H�������u�-�v�6����,�f�m�m�X�w�O�
������>�I�N�(� *�������x���J�� rc��|jttj�|jttjd�yr�)r�r�rO�registerr�s r�
test_registerzCodecsModuleTest.test_register�s,�����)�V�_�_�5����)�V�_�_�b�9rc�z�d}tj�}tj|�|j t
tj|�|j|�|j�tj|�|j ttj|�|j�y)N�nonexistent_codec_name)r�MockrOr�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��*�*�4�0��"�"�$����/�*����+�v�}�}�d�;��)�)�+rc���|jttj�|jttjd�|jttjd�y)Nr�� )r�r�rOr�r�r�s r�test_lookupzCodecsModuleTest.test_lookup�sB�����)�V�]�]�3����+�v�}�}�j�A����+�v�}�}�c�:rc��|jttj�|jttjd�y�Nr�)r�r�rO�
getencoderr�r�s r�test_getencoderz CodecsModuleTest.test_getencoder��0�����)�V�%6�%6�7����+�v�'8�'8�*�Erc��|jttj�|jttjd�yr�)r�r�rO�
getdecoderr�r�s r�test_getdecoderz CodecsModuleTest.test_getdecoder�r�rc��|jttj�|jttjd�yr�)r�r�rOrjr�r�s r�test_getreaderzCodecsModuleTest.test_getreader��0�����)�V�%5�%5�6����+�v�'7�'7��Drc��|jttj�|jttjd�yr�)r�r�rOr�r�r�s r�test_getwriterzCodecsModuleTest.test_getwriter�r�rc��tjtj�}|jtjtj|� tjtjd�t
jd�}|j|jd�y#tj$r|jd�Y�XwxYw)N�tr_TRztest needs Turkish locale�ASCIIr�)
�locale� setlocale�LC_CTYPErA�Error�skipTestrOr�r
r�)r� oldlocalerus r�test_lookup_issue1813z&CodecsModuleTest.test_lookup_issue1813�s����$�$�V�_�_�5� �����(�(�&�/�/�9�E� 7����V�_�_�g�6�
�M�M�'�"���������)�� �|�|� 7��M�M�5�6� 7�s�$B*�*$C�Cc��d}|j|tj�tjD]}tt|��y)N),rbrQr�� CodecInfo�Codec�IncrementalEncoder�IncrementalDecoder�StreamReader�StreamWriterr�r�r�rarPrjr��register_errorr��
strict_errors�replace_errors�
ignore_errors�xmlcharrefreplace_errors�backslashreplace_errors�namereplace_errorsrD�EncodedFiler}rpr��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)�assertCountEqualrO�__all__�getattr)r�apis r�test_allzCodecsModuleTest.test_all�s7��
��$
���c�6�>�>�2��>�>�C��F�C� �"rc�n�|jtjtj�dD]j}|j |�5tjtj|d�5}|j|t
j�ddd�ddd��ly#1swY�xYw#1swY��xYw)N)�wrszr+�w+r�r�r�) rArrBrCr�rOrDrSr�)rrQ�files r� test_openzCodecsModuleTest.test_open�s~����� �(�(�)�*:�*:�;�5�D����d�#��K�K� � 0� 0�$��@�D��%�%�d�F�,E�,E�F�A�$�#�6�@�@��$�#�s$�&B+�+!B�B+�B(�$B+�+B4 c���|jttjdd�|jttjdd�|jttjdd�|jttjdd�dD]P}|jttjdd|�|jttjdd|��Ry)Nr�� undefinedrmrgr)rir�r�r�)r�r�rOrbrQr�s r�test_undefinedzCodecsModuleTest.test_undefined�s������,��
�
�u�k�J����,��
�
�v�{�K����,��
�
�r�;�G����,��
�
�s�K�H�I�F����l��
�
�u�k�6�
;����l��
�
�v�{�F�
<�Jrc�^�tj�}tjd|�5}|jt�5tjtjdd�ddd�|�jj�ddd�y#1swY�1xYw#1swYyxYw)Nz
builtins.openrKzinvalid-encoding)r� mock_open�patchr�r�rOrDrrC�close�
assert_called)rr�r�s r�'test_file_closes_if_lookup_error_raisedz8CodecsModuleTest.test_file_closes_if_lookup_error_raised�st���N�N�$� �
�Z�Z���
3�t��"�"�;�/����I�,�,�d�4F�G�0�
�F�L�L�&�&�(� 4�
3�/�/��4�
3�s#�B#�&B�''B#�B �B#�#B,N)r(r)r*r<r:r�r�r�r�r�r�r�r�r�r�r�r�rrrr�r�esM��� �:�
,�;�
F�F�E�E�*�!�.G� <�)rr�c�$�eZdZd�Zd�Zd�Zd�Zy)�StreamReaderTestc�l�tjd�|_tjd�|_y)Nrt�한
글)rOrjr�r|r}r~r�s r�setUpzStreamReaderTest.setUp�s%���&�&�w�/����j�j�!>�?��rc�~�|j|j�}|j|j�ddg�y)Nu한
u글)r�r~r
r��rr�s r�test_readlineszStreamReaderTest.test_readlines�s/���K�K����$����������X�(>�?rc�8�|jtd��}|jtd�5t j|�ddd�|jtd�5t j
|�ddd�y#1swY�>xYw#1swYyxYw)Nr�r�)r�r;rjr��copy�deepcopyr�s r� test_copyzStreamReaderTest.test_copy�sj���K�K��;�<�=��
�
#�
#�I�~�
>��I�I�a�L�?�
�
#�
#�I�~�
>��M�M�!��?�
>�?�
>��
>�
>���B�%B�B
�Bc�J�ttjdz�D]l}|j|��5|j td��}|j
td�5tj||�ddd�ddd��ny#1swY�xYw#1swY��xYw)NrM��protocolr�r�) rN�pickle�HIGHEST_PROTOCOLr�r�r;rjr��dumps�r�protor�s r�test_picklezStreamReaderTest.test_pickle�s}���6�2�2�Q�6�7�E����u��-��K�K��&C� D�E���+�+�I�~�F��L�L��E�*�G�.�-�8�G�F��.�-��#�1B�#B
�:B�
B�B�B" N)r(r)r*r�r�r�r�rrrr�r��s��@�@��+rr�c��eZdZd�Zd�Zd�Zy)�StreamWriterTestc�8�tjd�|_y)Nrt)rOr�r�r�s rr�zStreamWriterTest.setUps���&�&�w�/��rc�8�|jtd��}|jtd�5t j|�ddd�|jtd�5t j
|�ddd�y#1swY�>xYw#1swYyxYw)Nrr�)r�r;rjr�r�r�r�s rr�zStreamWriterTest.test_copysh���K�K��c�
�#��
�
#�
#�I�~�
>��I�I�a�L�?�
�
#�
#�I�~�
>��M�M�!��?�
>�?�
>��
>�
>�r�c�J�ttjdz�D]l}|j|��5|j td��}|j
td�5tj||�ddd�ddd��ny#1swY�xYw#1swY��xYw)NrMr�rr�) rNr�r�r�r�r;rjr�r�r�s rr�zStreamWriterTest.test_pickles{���6�2�2�Q�6�7�E����u��-��K�K��c�
�+���+�+�I�~�F��L�L��E�*�G�.�-�8�G�F��.�-�r�N�r(r)r*r�r�r�rrrrr�s��0��+rrc��eZdZd�Zd�Zd�Zy)�StreamReaderWriterTestc�l�tjd�|_tjd�|_y)N�latin1rt)rOrjr�r�r�r�s rr�zStreamReaderWriterTest.setUps&���&�&�x�0����&�&�w�/��rc�l�tjtd�|j|j�}|jtd�5tj|�ddd�|jtd�5tj|�ddd�y#1swY�>xYw#1swYyxYw)Nrr�) rOr�r;r�r�rjr�r�r�r�s rr�z StreamReaderWriterTest.test_copys{���%�%�e�C�j�$�+�+�t�{�{�K��
�
#�
#�I�/C�
D��I�I�a�L�E�
�
#�
#�I�/C�
D��M�M�!��E�
D�E�
D��
D�
D�s�B�?B*�B'�*B3c�~�ttjdz�D]�}|j|��5t j
t
d�|j|j�}|jtd�5tj||�ddd�ddd���y#1swY�xYw#1swY��xYw)NrMr�rr�)rNr�r�r�rOr�r;r�r�rjr�r�r�s rr�z"StreamReaderWriterTest.test_pickle s����6�2�2�Q�6�7�E����u��-��-�-�e�C�j�$�+�+�t�{�{�S���+�+�I�7K�L��L�L��E�*�M�.�-�8�M�L��.�-�s$�AB3�=B'�B3�'B0�,B3�3B< Nrrrrrrs��0��+rrc��eZdZd�Zy)�EncodedFileTestc�T�tjd�}tj|dd�}|j |j�d�tj�}tj|dd�}|j
d�|j |j�d�y)Nr�rVrts\�
�r��ü��)r|r}rOr�r
rHrCr��rr��efs r�
test_basiczEncodedFileTest.test_basic*s}���J�J�4�5��
�
�
��;��
8���������$;�<��J�J�L��
�
�
��7�I�
6��
������������w�/rN)r(r)r*rrrrrr(s��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�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_r�koi8_t�koi8_u�kz1048�latin_1�mac_cyrillic� mac_greek�mac_iceland�
mac_latin2� mac_roman�mac_turkish�palmos�ptcp154r4�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�oemr4c��eZdZd�Zej
ejedud�d���Z d�Z
d�Zd�Zd�Z
d �Zy)
�BasicUnicodeTestc �����d}tD�]�}tj|�j}|j d�r|dz
}n|dk(rd}|dk7r2|j|j
dd�|j
dd��tj|�|�\}}|j|t|�d|z�tj|�|�\}}|j||d|z�|tvr�td�}tj|�|�}d} |D]R}
|j|
�|j�}|jt!|�t"ut!|��| |z
} �Ttd�}tj$|�|�}d }
| D]0}
|jt#|
g��|
|j�z
}
�2|j|
|d|z�|tvs��� tj&|���d} |D]}
| �j)|
�z
} �| �j)d d
�z
} tj*|���d }
| D] }
|
�j-t#|
g��z
}
�"|
�j-dd
�z
}
|j|
|d|z�d j/tj0tj2||�|��}|j||d|z�d j/tj0tj2d |�|��}|j|d �|dvs��F tj&|�d��dj/�fd
�|D��} tj*|�d��d j/�fd�| D��}
|j|
|d|z����y#t4$rY��wxYw#t4$rY���wxYw)N�abc123�_codecrarvr��-�encoding=%rrrgT�r]rvr�c3�@�K�|]}�j|����y�wr �rb)r�rur~s �rr�z/BasicUnicodeTest.test_basics.<locals>.<genexpr>�s�����0N�A�q�����1B�A���c3�T�K�|]}�jt|g�����!y�wr �rQrl)r�rurzs �rr�z/BasicUnicodeTest.test_basics.<locals>.<genexpr>�s)�����0H�9F�A�18���u�a�S�z�0J�9F���%()�all_unicode_encodingsrOr�r��endswithr
r�r�rr��broken_unicode_with_statefulr;r�rCrHrV�typerlrjrarbrPrQrorpr}r�)rrGrXr�r�rFrBrrr��
encodedresultru�chunkr��
decodedresultrtrzr~s @@r�test_basicszBasicUnicodeTest.test_basics�s������-�-�H��=�=��*�/�/�D�� � ��*��� ���Y�&� ���v�~�� � ��!1�!1�#�s�!;�!%���c�3�!7�9�4��)�)�(�3�A�6�I�Q�����T�3�q�6�=�8�+C�D�7�F�-�-�h�7��:�M�U�D����U�A�}�x�'?�@��;�;��#�J��3��)�)�(�3�A�6�� #�
��A��L�L��O��F�F�H�E��O�O�D��K�5�$8�$�u�+�F�!�U�*�M� �
�#�J��3��)�)�(�3�A�6�� "�
�&�A��G�G�E�1�#�J�'�!�V�[�[�]�2�M�'�� � ���=�8�3K�L��;�;�1�D�f�:�:�8�D�F�G�
%(�M���%�����):�:�
��!�W�^�^�B��%=�=�M�D�f�:�:�8�D�F�G�$&�M�*��%�����q�c�
�)C�C�
�+�!�W�^�^�C��%>�>�M��$�$�]�A�%2�X�%=�?� �W�W�V�%6�%6�"�-�-�a��:�H�&F�G�F��$�$�V�Q�
��0H�I� �W�W�V�%6�%6�"�-�-�b�(�;�X�&G�H�F��$�$�V�R�0��#3�3�
C�"H�&�">�">�x�"H��"R��),���0N�A�0N�(N�
�"H�&�">�">�x�"H��"R��(*���0H�9F�0H�)H�
��(�(���)6��)A�C�W.��L#�����<'����s$�9O�O%� O"�!O"�% O2�1O2Nzneed _testcapi modulec�����d}tD�]7}|tvs�
tj|��d}|D]}|�j |�z
}�|�j dd�z
}tj
|��d}|D] }|�j
t|g��z
}�"|�j
dd�z
}|j||d|z�|dvs�� tj|d��dj�fd�|D��}tj
|d��dj�fd �|D��}|j||d|z���:y#t$rY��wxYw#t$rY��WwxYw)
Nr|rrgTrr�r�c3�@�K�|]}�j|����y�wr r�)r�ru�cencoders �rr�z4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>s�����0O�Q������1C�Q�r�c3�T�K�|]}�jt|g�����!y�wr r�)r�ru�cdecoders �rr�z4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>s)�����0H�9F�A�19����q�c�
�0K�9F�r�)r�r�� _testcapi�codec_incrementalencoderrb�codec_incrementaldecoderrQrlr
r�ro)rrGrXr�rur�r�r�s @@r�test_basics_capiz!BasicUnicodeTest.test_basics_capi�s����
��-�-�H��;�;�?�(�A�A�(�K�H�
%(�M���%�����);�;�
��!�X�_�_�R��%>�>�M�(�A�A�(�K�H�$&�M�*��%������s��)D�D�
�+�!�X�_�_�S�$�%?�?�M��$�$�]�A�%2�X�%=�?��#3�3�
C�#,�#E�#E�h�PX�#Y��),���0O�Q�0O�(O�
�#,�#E�#E�h�PX�#Y��(*���0H�9F�0H�)H�
��(�(���)6��)A�C�A.��
#�����('����s#�E�
E� E�E� E#�"E#c�D�ddz}tD]�}|dk(r� |tvr�tj|�t j
|j
|���}td�D]6}|jdd�|j�}|j||��8��y)Nz%s
%s
)�Xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123�Xdef456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456r]r�r)r�r�rOrjr|r}rbrN�seekrHr
)rrGrXr��tr�s r� test_seekzBasicUnicodeTest.test_seek#s����5�5��-�H��6�!���7�7��/�V�%�%�h�/��
�
�1�8�8�H�;M�0N�O�F��1�X�����A�q�!��{�{�}��� � ��D�)� �
.rc��tD]I}tj|�}|jt|�|dvs�3|jt|d��Ky)N)r]r4r�)r�rOr�r�r�)rrXrzs r�test_bad_decode_argsz%BasicUnicodeTest.test_bad_decode_args2sG��-�H��'�'��1�G����i��1��3�3��!�!�)�W�b�9� .rc�p�tD]-}tj|�}|jt|��/yr )r�rOr�r�r�)rrXr~s r�test_bad_encode_argsz%BasicUnicodeTest.test_bad_encode_args9s,��-�H��'�'��1�G����i��1�.rc�^�ddlm}t|j�}|j ||�y)Nr)r)� encodingsrr��encoding_tabler
)rr�
table_types r�"test_encoding_map_type_initializedz3BasicUnicodeTest.test_encoding_map_type_initialized>s%��$��&�/�/�0�
�����Z�0rc��d}tD]O}|tvs�|j|||j|��|j |||j|���Qy)Nr|)r�r�r_rbrc)rrYrXs rrz#BasicUnicodeTest.test_decoder_stateDsP����-�H��;�;��0�0��1�a�h�h�x�>P�Q��0�0��1�a�h�h�x�>P�Q�.r)r(r)r*r�r�cpython_only�unittest�skipIfr�r�r�r�r�r�rrrrrzrz�s]��NC�`
����X�_�_�Y�$�&�(?�@�#C�A��#C�J
*�:�2�
1�Rrrzc��eZdZd�Zd�Zd�Zy)�CharmapTestc��|jtjddd�d�|jtjddd�d�|jttjddd�|jttjddd�|jtjdd d�d
�|jtjdd d�d
�|jtjddd�d�|jtjddd�d�|jtjdd
d�d�|jtjdd
d�d�tt
d��}|jtj|d
d�dt|�f�y)N�rir��r�rn�bc�r�rn�abuabr��uab�rnr��zab\x02rnr��r�rnr�rg)r
rO�charmap_decoder�r�rlrNr�r�allbytess r�test_decode_with_string_mapz'CharmapTest.test_decode_with_string_mapNs�������!�!�/�8�U�C��
�
����!�!�/�8�^�L��
�
���,��!�!�?�H�d�
�
���,��!�!�?�H�j�
�
����!�!�/�9�d�C��
�
����!�!�/�9�j�I��
�
����!�!�/�3E�t�L��
�
����!�!�/�3E�z�R��
�
����!�!�/�8�T�B��
�
����!�!�/�8�Z�H��
�
��s��$������!�!�(�H�b�9�
��X���
rc��|jtjdddddd��d�|jtjdddd d
d��d�|jtjdddddd��d
�|jtjdddddd��d�|jttjddddd��|jttjdddddd��|jttjdddddd��|jtjddddd��d�|jtjdddddd��d�|jtjdddddd��d�|jtjddddd��d�|jtjdddddd��d�|jtjdddddd��d�|jtjddddd��d�|jtjdddddd��d�|jtjdddddd��d�tt
d��}|jtj|di�dt|�f�|jtdtjdddd dd��|jtdtjdddd dd��y)Nr�rir�r�ru�rrMrr��Aa�Bb�Cc)�AaBbCcrn�r�rgr��rrMur�r�r�r�r�r�z.character mapping must be in range\(0x110000\)r����i�ɚ;)
r
rOr�r�r�rlrNrrjr�r�s r�test_decode_with_int2str_mapz(CharmapTest.test_decode_with_int2str_map�st������!�!�/�8�&)�c�c�":�
<��
�
����!�!�/�8�&*�t��"=�
?��
�
����!�!�/�8�&2�s�s�"C�
E��
�
����!�!�/�8�&)�c�b�"9�
;��
�
���,��!�!�?�H�'*�s�#3�
�
���,��!�!�?�H�'*�s�t�#<�
�
���,��!�!�?�H�'*�s�x�#@�
�
����!�!�/�9�&)�c�"2�
4��
�
����!�!�/�9�&)�c�d�";�
=��
�
����!�!�/�9�&)�c�h�"?�
A��
�
����!�!�/�3E�&)�c�"2�
4��
�
����!�!�/�3E�&)�c�d�";�
=��
�
����!�!�/�3E�&)�c�h�"?�
A��
�
����!�!�/�8�&)�c�"2�
4��
�
����!�!�/�8�&)�c�d�";�
=��
�
����!�!�/�8�&)�c�h�"?�
A��
���s��$������!�!�(�H�b�9�
��X���
�
���y�>��!�!��X�3�4�B�'?�
�
���y�>��!�!��X�3�4�I�'F�
rc
��td�}td�}td�}|jtjdd|||d��d�|jtjddd||d��d �|jtjddtj
||d��t
tj
�d
zdf�|jttjddtj
dz||d��|jttjdd||d
��|jttjdd||dd��|jtjdd||d
��d�|jtjdd||dd��d�|jtjdd||d
��d�|jtjdd||dd��d�|jtjdd||d
��d�|jtjdd||dd��d�y)Nr�r�rur�rir�r�i��r��bcrnrMr�i��r�r�r�r�r�r�)
�ordr
rOr�r�
maxunicode�chrr�r�r�)rr�r�rus r�test_decode_with_int2int_mapz(CharmapTest.test_decode_with_int2int_map�sV����H����H����H������!�!�/�8�&'�A�!�"4�
6��
�
����!�!�/�8�&.�1��";�
=��
�
����!�!�/�8�&)�n�n��q�"A�
C�
����
�4�
'��+�
�
���)��!�!�?�H�'*�~�~��'9�a�A�#F�
�
���,��!�!�?�H�'(�Q�<�
�
���,��!�!�?�H�'(�Q�6�#:�
�
����!�!�/�9�&'�A�,�
0��
�
����!�!�/�9�&'�A�&�"9�
;��
�
����!�!�/�3E�&'�A�,�
0��
�
����!�!�/�3E�&'�A�&�"9�
;��
�
����!�!�/�8�&'�A�,�
0��
�
����!�!�/�8�&'�A�&�"9�
;��
rN)r(r)r*r�r�r�rrrr�r�Ms��5
�nr
�hI
rr�c��eZdZd�Zd�Zy)�WithStmtTestc��tjd�}tj|dd�5}|j |j�d�ddd�|j
|j�y#1swY�%xYw)Nrr�rtr)r|r}rOr�r
rHrV�closedrs r�test_encodedfilezWithStmtTest.test_encodedfileF sX���J�J�{�#��
�
�
��9�g�
6�"����R�W�W�Y��0�7�������!�7�
6�s�!A2�2A;c��tjd�}tjd�}tj||j
|jd�5}|j|j�d�ddd�y#1swYyxYw)Nrrtri�ü) r|r}rOr�r��streamreader�streamwriterr
rH)rr�r8�srws r�test_streamreaderwriterz$WithStmtTest.test_streamreaderwriterL sn���J�J�{�#���}�}�W�%��
�
&�
&�q�$�*;�*;�'+�'8�'8�(�D�GJ����S�X�X�Z��0�D�D�D�s�!B�B
N)r(r)r*r�r�rrrr�r�E s��"�1rr�c��eZdZd�Zd�Zy)� TypesTestc�
�tjtjtjtjtj
tjtjtjtjtjtjtjg}ttd�r|jtj�|D]}|j!t"|d��y)N�mbcs_decoder�)rOr��utf_8_decoder_rpr�rr#r0�utf_32_ex_decode�latin_1_decode�ascii_decoder��hasattrr�r�r�r�)r�decodersrzs r�test_decode_unicodezTypesTest.test_decode_unicodeU s���
�������#�#��#�#��#�#�� � ��#�#��#�#��#�#��!�!�����!�!�
���6�=�)��O�O�F�.�.�/��G����i��%�8� rc���|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|j t
tjd�|jtjdd�d�|jtjdd�d �|j t
tjd�|jtjdd�d�|jtjdd�d �y)
Nz\u1234)uሴr�s\u1234�
\U00110000z
\U00110000r��r�r�r�)z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30r�)r
rO�unicode_escape_decode�raw_unicode_escape_decoder�r�r�s r�test_unicode_escapezTypesTest.test_unicode_escapej s%��
����5�5�i�@�-�P�����5�5�j�A�=�Q�����9�9�)�D�m�T�����9�9�*�E�}�U����,�f�.J�.J�N�[�����5�5�m�Y�O�Q_�`�����5�5�m�EW�X�J� L�
���,�f�.N�.N�P^�_�����9�9�-��S�Uc�d�����9�9�-�I[�\�J� LrN)r(r)r*r�r�rrrr�r�T s
��9�*Lrr�c�>�eZdZdZdZd�Zd�Zd�Zd�Zd�Z d�Z
d �Zy)
�UnicodeEscapeTestzunicode-escapeNc��|jtjd�d�|jtjd�d�y�Nrgr�r�rgr)r
rO�unicode_escape_encoder�r�s rr�zUnicodeEscapeTest.test_empty� s8������5�5�b�9�8�D�����5�5�c�:�G�Drc��tj}tdd�D]5}|dk7s� |j|t |��t|g�df��7y)N� ��\rM)rOr�rNr
r�rl�rrbr�s r�test_raw_encodez!UnicodeEscapeTest.test_raw_encode� sF���-�-���r�3��A��H�}�� � ���A���%���*�a��A� rc��tj}td�D];}|dk7s� |j|t |g�dz�t|�dzdf��=y)Nr�r�r �0r)rOr�rNr
rlr�r
s r�test_raw_decodez!UnicodeEscapeTest.test_raw_decode� sO���-�-���s��A��H�}�� � ���q�c�
�T�(9�!:�S��V�c�\�1�<M�N�rc��tj}t||�}|dd�|dd�|dd�|dd�td �D]3}t |�d
vs�|t |�d|zj���5tdd
�D]%}|t |�d|zj���'|dd�|dd�y)N� s\tr�s\nr�s\r�\s\\r�z
r�r�r��€�\u20ac�𝄠�
\U0001d120)rOr�rrNr�rb�rrbrr�s r�test_escape_encodez$UnicodeEscapeTest.test_escape_encode� s����-�-���t�V�,��
�d�F��
�d�F��
�d�F��
�d�F���r��A��1�v�X�%��c�!�f�y�1�}�4�4�6�7���s�C��A��#�a�&�9�q�=�0�0�2�3�!�
�h�
�#�
�l�N�+rc
��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*vr6|jt�5|d+|zd,t|�z�ddd�|j�d-vs�\|jt�5|d+|j�zd,t|d.z
�z�ddd���|jt�5|d/d0�ddd�|jt�5|d1d2�ddd�|jt�5|d3d4�ddd�td5d6�D]5}|jt�5|d7|zt|��ddd��7y#1swY�� xYw#1swY��vxYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY��xYw)8Nr
r�rz["]rz[']rz[\]rz[]rz[]rz[ ]rz[
]rz[]rz[]rz[
]rrz[8]rz[!]rz[!8]rz[A]rz[A0]rr r�r�r�r�r!r"s abfnrtuvxrr�sUNr�r#z\8r$z\9r%u\úr�r�r&) rOr�rrNrlr(r)r�r*r+s r�test_escape_decodez$UnicodeEscapeTest.test_escape_decode� sE���-�-���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��%�!�)�T�C��F�]�3�:��w�w�y��%��%�%�&8�9��%�!�'�'�)�+�T�C��"��I�-=�>�:�9�
��
�
�0�
1��&�%� �2�
�
�
�0�
1��&�%� �2�
�
�
�0�
1��)�X�&�2��u�f�%�A��!�!�"4�5��g��k�3�q�6�*�6�5�&�:�9��:�9��
1�
1��
1�
1��
1�
1��6�5�sH�I�*I�
I�
I+�.
I7�$J�I �I �I(�+I4�7J�J c �.�tj}dD]�\}}t|�D]�}|jt|d|zd|zz�|jt|d|zd|zzdz�d|zd|zzdz|zd|zz}|j||d�dt
|�f�|j||d �d
t
|�f�����|jt|d�|j|dd�d�|j|dd �d
�y)N))�xr��ur���Ur�rr �[\�]�]\r�r�r��[�]�r��rgr�r�)rOr�rNr�r�r
r�rrQrur[rZr�s r�test_decode_errorsz$UnicodeEscapeTest.test_decode_errors� s ���-�-��3�D�A�q��1�X���!�!�"4�f�"'�!�)�d�1�f�"4�6��!�!�"4�f�"(�1�*�t�A�v�"5��"<�>���z�D��F�*�V�3�a�7�$�q�&�@��� � ���h�!7�$��D� �9J�K�� � ���i�!8�"2�C��I�!>�@��4�
���,�f�n�E�������9�8�D������ �:�N�Krc�,�|jdgd��y)N�
\ÿ𐀀) rgrgrgr�r�� r�
r�
r�
\rrr�
\ÿrrrrr�
\ÿrrrrrrrrrrr�r�s rr�zUnicodeEscapeTest.test_partial� r�r�r(r)r*rXr�r�r�r�r�r�rr�rrrr�r�} s5���H���E�B�O�
,�(+�TL� %
rr�c�>�eZdZdZdZd�Zd�Zd�Zd�Zd�Z d�Z
d �Zy)
�RawUnicodeEscapeTestzraw-unicode-escapeNc��|jtjd�d�|jtjd�d�yr�)r
rO�raw_unicode_escape_encoder�r�s rr�zRawUnicodeEscapeTest.test_empty
s8������9�9�"�=�x�H�����9�9�#�>��Hrc��tj}td�D]/}|j|t |��t|g�df��1y)Nr�rM)rOrrNr
r�rlr�s rr�z$RawUnicodeEscapeTest.test_raw_encode
s=���1�1���s��A����V�C��F�^�e�Q�C�j�!�_�=�rc��tj}td�D]5}|j|t |g�dz�t|�dzdf��7y)Nr�r r�r)rOr�rNr
rlr�r
s rr�z$RawUnicodeEscapeTest.test_raw_decode
sH���1�1���s��A����V�E�1�#�J��$5�6��Q��#��q�8I�J�rc���tj}t||�}td�D])}|dvs�|dt |�zdt|g�z��+|dd�|dd�y) Nr��uUr�rr�r�r�r�)rOrrrNr�rlr�s rr�z'RawUnicodeEscapeTest.test_escape_encode
sa���1�1���t�V�,���s��A���~��d�S��V�m�U�U�A�3�Z�%7�8�� �h�
�#�
�l�N�+rc���tj}t||�}td�D])}|dvs�|dt |g�zdt|�z��+|dd�|dd�y) Nr�rrr�r�r�r�r�)rOr�rrNrlr�)rrQrr�s rr�z'RawUnicodeEscapeTest.test_escape_decode
sa���1�1���t�V�,���s��A���~��e�e�Q�C�j�(�$��Q��-�8�� �j�(�#�
�n�l�+rc �.�tj}dD]�\}}t|�D]�}|jt|d|zd|zz�|jt|d|zd|zzdz�d|zd|zzdz|zd|zz}|j||d�dt
|�f�|j||d �d
t
|�f�����|jt|d�|j|dd�d�|j|dd �d
�y)N)rrrr rrrr�r�r�r r�r
r�)rOr�rNr�r�r
rrs rrz'RawUnicodeEscapeTest.test_decode_errors'
s ���1�1��(�D�A�q��1�X���!�!�"4�f�"'�!�)�d�1�f�"4�6��!�!�"4�f�"(�1�*�t�A�v�"5��"<�>���z�D��F�*�V�3�a�7�$�q�&�@��� � ���h�!7�$��D� �9J�K�� � ���i�!8�"2�C��I�!>�@��)�
���,�f�n�E�������9�8�D������ �:�N�Krc�,�|jdgd��y)Nr)r�rrrrrrrrrrrrrrrrrrrrrr�r�s rr�z!RawUnicodeEscapeTest.test_partial7
s�����.�
�
rrrrrrr
s3��#�H���I�>�
K�
,�,�L�
rrc��eZdZd�Zy)�EscapeEncodeTestc�^�gd�}|D]E\}}|j|��5|jtj|�|�ddd��G|j t
tjd�|j t
tjt
d��y#1swY��xYw)N))rr�)�foobar)r$r�)s spameggs)sspam\x00eggs� )sa'b)sa\'brn)sb\c)sb\\crn)sc
d)sc\ndrn)sd
e)sd\rern)sfg)sf\x7fgrnr�r�r�)r�r
rO�
escape_encoder�r�r)rrar��outputs rr�z#EscapeEncodeTest.test_escape_encodeW
s���
��"�L�D�&����4��(�� � ��!5�!5�d�!;�V�D�)�(�"�
���)�V�%9�%9�6�B����)�V�%9�%9�9�W�;M�N�)�(�s�&B#�#B, N)r(r)r*r�rrrr"r"U
s��Orr"c�$�eZdZd�Zd�Zd�Zd�Zy)�SurrogateEscapeTestc��|jdjdd�d�|jdjdd�d�|jdjdd�d�|jdjdd�d�y)N�foo�barrtr~� foo�bars�u ����r
rQrbr�s r� test_utf8zSurrogateEscapeTest.test_utf8k
s�������-�-�g�7H�I�'� )�����.�.�w�8I�J�&� (�
����/�/��9J�K�-� /����-�4�4�W�>O�P�(� *rc��|jdjdd�d�|jdjdd�d�y)Nr+r�r~r,r-r�s rr�zSurrogateEscapeTest.test_asciiw
sD������-�-�g�7H�I�'� )�����.�.�w�8I�J�&� (rc��|jdjdd�d�|jdjdd�d�y)Nsfoo�barz
iso-8859-3r~u foo�barr-r�s r�test_charmapz SurrogateEscapeTest.test_charmap~
sD������-�-�l�<M�N�'� )�����.�.�|�=N�O�&� (rc�H�|jdjdd�d�y)Nu�����r�r~s���rgr�s r�test_latin1zSurrogateEscapeTest.test_latin1�
s$�����9�@�@��L]�^�0� 2rN)r(r)r*r.r�r1r3rrrr)r)i
s��
*�(�(�2rr)c��eZdZd�Zy)�BomTestc�v�d}d}|jtjtj�|D�]�}t j
tjd|��5}|j
|�|j
|�|jd�|j|j�|dz�|jd�|j|j�|dz�ddd�t j
tjd|��5}|j
|d�|j|j�d�|jd�|j
|�|jd�|j|j�|�ddd�t j
tjd|��5}|jj
|d�|j|jj�d�|jjd�|jj
|�|jd�|j|j�|�ddd�t j
tjd|��5}|j
|�|j|j��|j
|�|jd�|j|j�|dz�ddd�t j
tjd|��5}|jj
|�|jj|jj��|jj
|�|jd�|j|j�|dz�ddd����y#1swY��xYw#1swY��ixYw#1swY���xYw#1swY��xYw#1swY��xYw)N�
1234567890)r4rVrmr�rr,r�r@rr)
rArrBrCrOrDrCr�r
rH�assertNotEqual�tellr�)rr�rarXr�s r�
test_seek0zBomTest.test_seek0�
s�������
��� �(�(�)�*:�*:�;��H����Y�-�-�t�h�G�1�����
�����
����q� �� � �����4�!�8�4����q� �� � �����4�!�8�4�
H����Y�-�-�t�h�G�1�����Q�� ��#�#�A�F�F�H�a�0����q� �����
����q� �� � �����4�0�
H����Y�-�-�t�h�G�1������t�A�w�'��#�#�A�H�H�M�M�O�Q�7����
�
�a� ������t�$����q� �� � �����4�0�
H����Y�-�-�t�h�G�1�����
����q�v�v�x� �����
����q� �� � �����4�!�8�4�H����Y�-�-�t�h�G�1������t�$����
�
�a�h�h�m�m�o�.������t�$����q� �� � �����4�!�8�4�H�G�O�G�G��H�G��H�G��H�G��H�G�sA�BO:�BP�B0P�,A6P!�BP.�:P �P �P �!P+ �.P8 N)r(r)r*r:rrrr5r5�
s��55rr5)�base64_codec�uu_codec�quopri_codec� hex_codec�base64�base_64�uu)�quopri�quoted_printable�quotedprintable�hex�rot13)r;r<r=r>�rot_13�
zlib_codecrk�zlib� bz2_codec�bz2c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z
eje
d �d
��Zd�Zd�Zd
�Zd�Zy)�TransformCodecTestc��ttd��}tD]�}|j|��5t j
|�|�\}}|j
|t|��t j|�|�\}}|j
|t|��|j
||�ddd���y#1swY��xYw)Nr�r@) rlrN�bytes_transform_encodingsr�rOr�r
rr�)r�binputrX�orFrZs rr�zTransformCodecTest.test_basics�
s����u�S�z�"��1�H����x��0�7�F�-�-�h�7��?� ��D�� � ��s�6�{�3�7�F�-�-�h�7��:� ��D�� � ��s�1�v�.�� � ��F�+�
1�0�2�0�0�s�BC�C c�4�tD]�}|j|��5tjd|�}tj|�tj|��}|j�}|j|d�ddd���y#1swY��xYw�Nr@r�) rOr�rOrbrjr|r}rHr
�rrX�sinr��souts r� test_readzTransformCodecTest.test_read�
ss��1�H����x��0��m�m�G�X�6��3��)�)�(�3�B�J�J�s�O�D���{�{�}��� � ��w�/� 1�0�2�0�0���A'B�B c�4�tD]�}|j|��5tjd|�}tj|�tj|��}|j�}|j|d�ddd���y#1swY��xYwrS) rOr�rOrbrjr|r}r�r
rTs rr�z TransformCodecTest.test_readline�
st��1�H����x��0��m�m�G�X�6��3��)�)�(�3�B�J�J�s�O�D�����(��� � ��w�/� 1�0�2�0�0�rXc��d}tD]�}|j|��5|}t|�}tj||�}tj||�}|j||�t|�}tj||�}|j||�tj||�}|j||�ddd���y#1swY��xYw)Ns12345�r@)rOr��
memoryviewrOrbr
rQ)r�originalrXr��view�view_encoded�view_decodeds r�test_buffer_api_usagez(TransformCodecTest.test_buffer_api_usages��� ��1�H����x��0���!�$�'���}�}�T�8�4��%�}�}�T�8�<��� � ��t�4�!�$�'���}�}�T�8�4��� � ��x�0�%�}�}�T�8�<��� � ��t�4�1�0�2�0�0�s�B'C�C c�T�d}tD]�}|j|��5d}|j|�}|jt|�5}|j|�ddd�|j
jj�ddd���y#1swY�9xYw#1swY��xYw)Nzbad input typer@zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs) rOr��formatrjr�rb�assertIsNonerP� __cause__)r� bad_inputrX�fmt�msg�failures r�/test_text_to_binary_denylists_binary_transformszBTransformCodecTest.test_text_to_binary_denylists_binary_transformss���$� �1�H����x��0�K���j�j��*���+�+�K��=���$�$�X�.�>��!�!�'�"3�"3�"=�"=�>�
1�0�2�
>�=�� 1�0�s#�*B�B�-B�B�B�B' c��d}|jt|�5djd�ddd�y#1swYyxYw)NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messagerG)rjr�rb�rrgs r�-test_text_to_binary_denylists_text_transformsz@TransformCodecTest.test_text_to_binary_denylists_text_transformss4��C��
�
#�
#�K��
5�%�,�,�X�6�6�
5�
5�s�4�=c��d}tD]�}|j|��5tj||�}d}|j |�}|jt|�5|j|�ddd�|jt|�5t|�j|�ddd�ddd���y#1swY�MxYw#1swY� xYw#1swY��xYw)Ns6encode first to ensure we meet any format restrictionsr@zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs) rOr�rOrbrbrjr�rQr)rr�rX�encoded_datarfrgs r�/test_binary_to_text_denylists_binary_transformszBTransformCodecTest.test_binary_to_text_denylists_binary_transforms%s���I��1�H����x��0�%�}�}�T�8�<��K���j�j��*���+�+�K��=� �'�'��1�>��+�+�K��=��l�+�2�2�8�<�>�1�0�2�>�=��=�=��1�0�s<�AC�B<�0C�C�)C�<C�C�C�
C�C c�<�dtd�fD]t}|j|��5d}|jt|�5}|j d�ddd�|jjj�ddd��vy#1swY�9xYw#1swY��xYw)Ns immutablesmutable)rezR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsrG)rr�rjr�rQrcrPrd)rrergrhs r�-test_binary_to_text_denylists_text_transformsz@TransformCodecTest.test_binary_to_text_denylists_text_transforms4s���&� �*�(=�>�I���� ��2�K���+�+�K��=���$�$�X�.�>��!�!�'�"3�"3�"=�"=�>�3�2�?�>�=��3�2�s"�B�B�-B�B�B�B zRequires zlib supportc���d}|jtj�5}tjdd�ddd�|j|jjd�y#1swY�3xYw)Nz'decoding with 'zlib_codec' codec failed�hellorHr)r�rI�errorrOrQr
rP� __notes__)rrgrhs r�test_custom_zlib_error_is_notedz2TransformCodecTest.test_custom_zlib_error_is_noted>sZ��8��
�
�
�t�z�z�
*�g��M�M�(�L�1�+�����g�/�/�9�9�!�<�=�+�
*���A+�+A4c���ddl}d}|j|j�5}tjdd�ddd�|j|jjd�y#1swY�3xYw)Nrz&decoding with 'hex_codec' codec failedrsr>)�binasciir�r�rOrQr
rPru)rryrgrhs r�test_custom_hex_error_is_notedz1TransformCodecTest.test_custom_hex_error_is_notedFs[���6��
�
�
�x�~�~�
.�'��M�M�(�K�0�/�����g�/�/�9�9�!�<�=�/�
.�rwc�8�tj�D]w\}}tj|�j}|D]N}|j|��5tj|�}|j
|j|�ddd��P�yy#1swY�]xYw)N)�alias)�transform_aliases�itemsrOr�r�r�r
)r�
codec_name�aliases�
expected_namer|r8s r�test_aliaseszTransformCodecTest.test_aliasesOsy��#4�#:�#:�#<��J��"�M�M�*�5�:�:�M� ���\�\��\�.�!�=�=��/�D��$�$�T�Y�Y�
�>�/�.�!�$=�/�.�s�2B�Bc��tjdd�}|j|d�d}|jtj|d�|�y)Nsspace tab eol
zquopri-codecsspace=20tab=09eol=20
sspace tab eol
)rOrbr
rQ)rrw� unescapeds r�test_quopri_statelessz(TransformCodecTest.test_quopri_statelessWsD���-�-� 4�n�E������";�<�&� �������y�.�A�9�Mrc�P�|jttjdd�y)Nrzuu-codec)r�rMrOrQr�s r�test_uu_invalidz"TransformCodecTest.test_uu_invalid_s�����*�f�m�m�S�*�ErN)r(r)r*r�rWr�r`rirlrorqr��
skipUnlessrIrvrzr�r�r�rrrrMrM�
sd�� ,�0�0�5�$
?�7�
=�?��X����6�7�>�8�>�>�?�N�FrrMc�,�tj|�Sr )�_TEST_CODECS�get)rs r�_get_test_codecr�ks�����J�'�'rc��eZdZd�Zd�Zd�Zejd��Zd�Z e
fd�Zd�Zd�Z
d �Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zy)�ExceptionNotesTestc��d|_tjt�|j tj
t�t|_y)N�exception_notes_test)rrOr�r�rAr��RuntimeError�obj_to_raiser�s rr�zExceptionNotesTest.setUpqs3��0�������(�����)�)�?�;�)��rc��tj|jd�tjj|jd�yr )r��poprr��_cacher�s r�tearDownzExceptionNotesTest.tearDowns0��������$�/������T�_�_�d�3rc�n�tj|||j��}|t|j<y)N)r�)rOr�rr�)rrbrQ�
codec_infos r� set_codeczExceptionNotesTest.set_codec�s+���%�%�f�f�+/�?�?�<�
�(2��T�_�_�%rc#�2K�dj||j�}|j|�5}|��ddd�|j|jj
d�|jj
j
�y#1swY�WxYw�w)Nz{} with {!r} codec failedr)rbrr�rNrPru�clear)r� operation�exc_typerg�full_msg�caughts r�assertNotedzExceptionNotesTest.assertNoted�sx����/�6�6��T�_�_�.��
�
�
�x�
(�F��L�)��
�
�h�� 0� 0� :� :�1� =�>����"�"�(�(�*�)�
(�s�.B�B�AB�B�Bc��|j�r )r�)r�args�kwdss r� raise_objzExceptionNotesTest.raise_obj�s�����rc��||_|j|j|j�|jd||�5dj |j
�ddd�|jd||�5t
jd|j
�ddd�|jd||�5dj|j
�ddd�|jd||�5t
jd|j
�ddd�y#1swY��xYw#1swY��xYw#1swY�^xYw#1swYyxYw)NrX� str_input�decoding�bytes input)r�r�r�r�rbrrOrQ)rr�rgr�s r�
check_notezExceptionNotesTest.check_note�s���(������t�~�~�t�~�~�6�
�
�
�j�(�C�
8����t���/�9�
�
�
�j�(�C�
8��M�M�+�t���7�9�
�
�
�j�(�C�
8��!�!�$�/�/�2�9�
�
�
�j�(�C�
8��M�M�.�$�/�/�:�9�
8�
9�
8��
8�
8��
8�
8��
8�
8�s0�D�8!D!�4D-�+!D9�D�!D*�-D6�9Ec�0�|jtd�y)Nrg�r�r�r�s r�test_raise_by_typez%ExceptionNotesTest.test_raise_by_type�s������b�)rc�>�d}|jt|�|�y)N�This should be notedr�rks r�test_raise_by_valuez&ExceptionNotesTest.test_raise_by_value�s��$������S�)�3�/rc�X�d}Gd�dt�}|j||�||�y)Nr�c��eZdZdZy)�TExceptionNotesTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrorrN)r(r)r*� __slots__rrr�MyRuntimeErrorr��s���Irr��r�r��rrgr�s r�)test_raise_grandchild_subclass_exact_sizez<ExceptionNotesTest.test_raise_grandchild_subclass_exact_size�s(��$�� �\� �����s�+�S�.�Arc�X�d}Gd�dt�}|j||�||�y)Nr�c��eZdZy)�SExceptionNotesTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)r(r)r*rrrr�r��s��rr�r�r�s r�(test_raise_subclass_with_weakref_supportz;ExceptionNotesTest.test_raise_subclass_with_weakref_support�s(��$�� �\� �����s�+�S�.�Arc�F�Gd�dt�}|j|d�y)Nc��eZdZd�Zy)�9ExceptionNotesTest.test_init_override.<locals>.CustomInitc��yr rr�s rr@zBExceptionNotesTest.test_init_override.<locals>.CustomInit.__init__�s��rN)r(r)r*r@rrr�
CustomInitr��s��
rr�rgr�)rr�s r�test_init_overridez%ExceptionNotesTest.test_init_override�s�� �� �
���
�B�'rc�F�Gd�dt�}|j|d�y)Nc���eZdZ�fd�Z�xZS)�7ExceptionNotesTest.test_new_override.<locals>.CustomNewc�"��t�|�|�Sr )r��__new__)�clsr�s �rr�z?ExceptionNotesTest.test_new_override.<locals>.CustomNew.__new__�s����w��s�+�+r)r(r)r*r�r�r�s@r� CustomNewr��s
���
,�
,rr�rgr�)rr�s r�test_new_overridez$ExceptionNotesTest.test_new_override�s�� ,�� ,�
��� �2�&rc�n�d}t|�}d|_|j|dj|��y)Nr�rMz^{}$)r��attrr�rb)rrgr�s r�test_instance_attributez*ExceptionNotesTest.test_instance_attribute�s/��$���3����������V�]�]�3�/�0rc�:�|jtd�d�y)NrM�1r�r�s r�test_non_str_argz#ExceptionNotesTest.test_non_str_arg�s������Q���-rc�B�d}|jtddd�|�y)Nz^\('a', 'b', 'c'\)$r�r�rur�)r�msg_res r�test_multiple_argsz%ExceptionNotesTest.test_multiple_args�s��'������S�#�s�3�V�<rc�~�dj|j�}|jt|�5dj |j�ddd�|jt|�5tjd|j�ddd�|jt|�5dj
|j�ddd�|jt|�5tjd|j�ddd�y#1swY��xYw#1swY��xYw#1swY�axYw#1swYyxYw)Nz^unknown encoding: {}$z str inputr�)rbrrjr�rbrOrQrks r�test_codec_lookup_failurez,ExceptionNotesTest.test_codec_lookup_failure�s���&�-�-�d�o�o�>��
�
#�
#�K��
5����t���/�6�
�
#�
#�K��
5��M�M�+�t���7�6�
�
#�
#�K��
5��!�!�$�/�/�2�6�
�
#�
#�K��
5��M�M�.�$�/�/�:�6�
5�
6�
5��
5�
5��
5�
5��
5�
5�s/�D�,!D�+D'�%!D3�D�D$�'D0�3D<c��d�}d�}|j||�tjd|j�}|j |d�tj
d|j�}|j |d�d}|j
|j�}|jt|�5dj|j�ddd�d}|j
|j�}|jt|�5dj|j�ddd�y#1swY�axYw#1swYyxYw) Nc��y)N)�
not bytes!rr�r�r�s r�
encode_to_strzPExceptionNotesTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_str�s��"rc��y)N)�not str!rrr�s r�decode_to_byteszRExceptionNotesTest.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�rOrbrr
rQrbrjr�)rr�r�rw�decodedrfrgs r�&test_unflagged_non_text_codec_handlingz9ExceptionNotesTest.test_unflagged_non_text_codec_handling�s��� #� "����}�o�6��-�-��d�o�o�6������,�/��-�-��d�o�o�6������+�.�F���j�j����)��
�
#�
#�I�s�
3����t���/�4�F���j�j����)��
�
#�
#�I�s�
3��!�!�$�/�/�2�4�
3�4�
3��
4�
3�s�0D,�D8�,D5�8EN)r(r)r*r�r�r��
contextlib�contextmanagerr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr�r�ost��)�4�
3�
���+��+� �6B�
;�*�0�B�B�(�'�1�.�=�
;�3rr��win32z"code pages are specific to Windowsc��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z
d �Zd
�Zd�Z
d�Zej d
dd��d��Zej d
dd��d��Zy)�CodePageTest��c�4�|jttjdd�|jttjdd�|jt
tjdd�|jt
tjdd�y)Nrr��ar")r�rMrO�code_page_encode�code_page_decode�OSErrorr�s r�test_invalid_code_pagez#CodePageTest.test_invalid_code_page�sj�����*�f�&=�&=�r�3�G����*�f�&=�&=�r�4�H����'�6�#:�#:�C��E����'�6�#:�#:�C��Frc �
�|jtdtjdd�|jtdtj
dddd�|jtdtj
|jddd�y) Nr:��ÿs�riT�CP_UTF8r)rjr�rOr�r�r�r�r�s r�test_code_page_namez CodePageTest.test_code_page_namesp�����1�7��#�#�S�&� 2����1�7��#�#�S�+�x�� G����1�9��#�#�T�\�\�7�H�d� Lrc��|D]�\}}}|�t tj|||d�}|j d||�d|�d|�d |d�d
|�� �|j|dd�|j
|dt|���}|jttj|||d���y#t$r'}|jd|�d|�d|�d|���Yd}~��d}~wwxYw)NTzUnable to decode z from "cp�" with errors=�: rz.decode("cp�", �)=� != rM) rOr�r��failr
�assertGreaterEqual�assertLessEqualrr�)rr5rarbr?rcr��errs r�check_decodezCodePageTest.check_decodes���%*�!�C����#�H�$�5�5�b�#�v�t�L�G�� � ����X��B����
�H�>�?��'�'���
�A�6��$�$�W�Q�Z��S��:��!�!�"4��+�+�R��f�d�D�&+��*�H��I�I�14�b�&�#�G�H�H��H�s�B+�+ C�4C�Cc��|D]�\}}}|�^ tj|||�}|j d||�d|�d|�d|d�d |�� �|j |d
t|���g|j
ttj|||���y#t$r'}|jd|�d|�d|�d|���Yd}~��d}~wwxYw)NzUnable to encode z to "cpr�r�rz.encode("cpr�r�r�rM)rOr�r�r�r
rr�)rr5ra�textr?rcrwr�s r�check_encodezCodePageTest.check_encodes���&+�"�D�&�(��#�I�$�5�5�b�$��G�G�� � ����X��R�����X�?�@�� � ����S��Y�7��!�!�"4��+�+�R��v�?�',��*�I��I�I�15�r�6�3�H�I�I��I�s�B� C�B?�?Cc�L�|jdd�|jdd�y)Nr�)�r�rirm)�d騾ri����)r�riN)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[ÿ])u�riN)�[�]r~r�)rr�N)�rmrir�)rrir)r�riN)r�r�r�)r�r�u[�])r�r�z[\xff])r�r~r)r�r�N)��abcriN)rr�zabc)rr�u�abc)rr�z\x81abc�r�r�r�s r�
test_cp932zCodePageTest.test_cp932-s.�����#�
� �
���#�
� rc�L�|jdd�|jdd�y)Ni�)r�)�é€ri��)r�rir)�ŁriN)r
r�r)r
r��L)��r~��)rr�N)r)r rir)rrir�rr�s r�test_cp1252zCodePageTest.test_cp1252Ns.�����$�
!
�
�
���$�!
� rc�P�d}|j|d�|j|d�y)N��)r�)rri�+AOkgrA-)r�ri�+2//f/w-)r�ri�+3IA-)r�ri�+//0-)r)rrir)rrir�)rrir�)rrir�)s[+/]rir�)r�rir�r�rr5s r�test_cp_utf7zCodePageTest.test_cp_utf7`s3��
�����"�
� �
���"�
� rc��|jdd�|j|jd�|j|jd�y)Nr�))���r��騾)rr�u�騾))��r�r�)rr�u�))� [�]r�s[])rr�s[?])r�r�r�r�s r�test_multibyte_encodingz$CodePageTest.test_multibyte_encodingtsM�����#�
� �
���$�,�,�)
� �
���$�,�,�)
� rc��tjrtjj d�ddddddgtdd ��d
��D]W}t
|�r+|jtj|d�dd
|����9tjs�Jtd|����Y|jtjdd�d�y)Nr�i,�i-�i.�i1�i3�i5�i��i��rrmr�r5z skipping cp=r�)u rn)r�verboser�stdoutrCrNr9r
rOr��printrs r�test_code_page_decode_flagsz(CodePageTest.test_code_page_decode_flags�s����?�?��J�J���T�"��%���u�e�2��%��)�2�+0�2�B�$�B�'�� � ��!8�!8��V�!D�j�TV�WY�VZ�R[�\��?�?��N�2�$�/�0�2�
����0�0��V�<�2� 4rc�T�tjdddd�}|j|d�tjdddd�}|j|d�tjdddd�}|j|d �tjdd
dd�}|j|d�y)Nr���riFr�s��)rrs��)u騾騾r�rmr�)rOr�r
)rr�s r�test_incrementalzCodePageTest.test_incremental�s����)�)�#�w��%�H������'�*��)�)�#�*9�8�*/�1��
����-�0��)�)�#�*=�x�*/�1��
����"5�6��)�)�#�*0�(�*/�1��
����*�-rc�.�d}d|��}tjd|��5 tj|�}|j |j
d�tj|� ddd�y#tj|�wxYw#1swYyxYw)Ni��r5z_winapi.GetACP)�return_valuerv)rr�rOr�r
r�r�)r� code_pager��codecs r�test_mbcs_aliaszCodePageTest.test_mbcs_alias�s~��� ��I�;���
�Z�Z�(�y�
A�
(��
�
�d�+��� � ����V�4��!�!�$�'�B�
A��
�!�!�$�'��B�
A�s"�B�1A1�B�1B�B�Bl�F)rF�memuse�dry_runc�l�d|dzdz
zdz}|jt|�|dz�tjd|dd�}|j|dt|��~|jt|d �|d�|j|d dd
d�|j|d ddd
�y)Ns01234567r/rMs
��������rr�r~Trr��
0123456701i��u(6701234567�����������r
rrOr��rrFrwr�s r�test_large_inputzCodePageTest.test_large_input�s���
�4��7�A�+�.�>�?������W��t�A�v�.��)�)�#�w�8I�4�P��������S��\�2������W�Q�Z��'�!�*�5�������C�R��,�7�������C�D�)�:� ;rr�c�`�d|dzz}|jt|�|dzdz�tjd|dd�}|j|dt|��~|jt|d�|�|j|dddd �|j|dd
dd�y)Ns
0123456턀r/r�r�r�TrMru0123456턀01i����u56턀0123456턀r/r0s r�test_large_utf8_inputz"CodePageTest.test_large_utf8_input�s���
*�T�1�W�5������W��t�q�y�2�~�6��)�)�%��(�D�I��������S��\�2������W�Q�Z��$�/�������C�R��*;�<�������C�D�)�+B�CrN)r(r)r*r�r�r�r�r�rrrrr!r$r)r�
bigmemtestr1r3rrrr�r��s����G�G�L�D�$?� �B�$�(�4�&.�&
(��W���U�1�e�<�;�=�;�"�W���U�1�e�<�D�=�Drr�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)� ASCIITestc�F�|jdjd�d�y)Nr|r�sabc123rgr�s rr:zASCIITest.test_encode�s���������1�9�=rc��dD]E\}}}|j|||��5|j|jd|�|�ddd��Gy#1swY�RxYw)N))� [ÿ€]r�r)r9r�s[???])r9r�s[€ÿ€])u
[ÿ€]r�s[\x80\xff\u20ac\U000abcde]�rr~r}r�r��r�r
rbr�s r�test_encode_errorzASCIITest.test_encode_error�sb��.
�)�D�-�����4�}�'/��1�� � ����W�m�!D�!)�+�1�1�.
�1�1���#A�A c�|�|jt�5djdd�ddd�y#1swYyxYw)Nu�ÿr�r~�r�r�rbr�s r�!test_encode_surrogateescape_errorz+ASCIITest.test_encode_surrogateescape_error�s.��
�
�
�1�
2�����):�;�3�
2�
2���2�;c�F�|jdjd�d�y)Nrmr�r�)r
rQr�s rr<zASCIITest.test_decode�s��������w�/��7rc��dD]E\}}}|j|||��5|j|jd|�|�ddd��Gy#1swY�RxYw)Nr|r�r�r�r�s rr�zASCIITest.test_decode_error�sb��.
�)�D�-�����4�}�'/��1�� � ����W�m�!D�!)�+�1�1�
.
�1�1�r=N)r(r)r*r:r<r@r<r�rrrr6r6�s��>�+�<�
8�
+rr6c�$�eZdZd�Zd�Zd�Zd�Zy)�
Latin1Testc��dD]B\}}|j||��5|j|jd�|�ddd��Dy#1swY�OxYw)N))r�rm)uéÿs��r�rcrr;�rr�rcs rr:zLatin1Test.test_encode��N��
�N�D�(����4�(��;�� � ����X�!6��A�<�;�
�<�;���"A � A c��dD]E\}}}|j|||��5|j|jd|�|�ddd��Gy#1swY�RxYw)N))�[€�]r�r)rLr�s[??])u [€]r�s[\u20ac\U000abcde])rLr�s[€�]r:r�rr;r�s r�test_encode_errorszLatin1Test.test_encode_errors
sb��.
�)�D�-�����4�}�'/��1�� � ����X�}�!E�!)�+�1�1�.
�1�1�r=c�|�|jt�5djdd�ddd�y#1swYyxYw)Nu�€rr~r?r�s rr@z,Latin1Test.test_encode_surrogateescape_error
s.��
�
�
�1�
2��!�!�(�,=�>�3�
2�
2�rAc��dD]B\}}|j||��5|j|jd�|�ddd��Dy#1swY�OxYw)N))rmr�)r}u[ÿ]rGrr�rHs rr<zLatin1Test.test_decode
rIrJN)r(r)r*r:rMr@r<rrrrErE�s��B�+�?�
BrrEc�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�StreamRecoderTestc�v�tj�}tjd�}tj||j
|jtjjtjj�}|jddg�|j|j�d�y)Nr�r��bsab)r|r}rOr�r�rbrQr�r�r�r��
writelinesr
r��r�bior(�srs r�test_writelinesz!StreamRecoderTest.test_writelines"
sy���j�j�l���
�
�g�&��
�
!�
!�#�u�|�|�U�\�\�"+�/�/�">�">� ���@\�@\�^��
�
�
�t�T�l�#���������/rc��tj�}tjd�}tj||j
|jtjjtjj�}d}|j|jd��|j|j�|jd��y)Nruàñért)r|r}rOr�r�rbrQr�rtr�r�rCr
r�)rrVr(rWr�s r�
test_writezStreamRecoderTest.test_write*
s����j�j�l���
�
�h�'��
�
!�
!�#�u�|�|�U�\�\�"+�/�/�">�">� ���@\�@\�^����
������X�&�'�����������W�)=�>rc���tjdjd��}tj|dd�}|j|j
�d�|jd�|j|j
�d�|j|j
�d�|j|j
�d�|j|j
�d�y) Nzline1
line2
line3
rVrtsline1
rsline2
sline3
r)r|r}rbrOr�r
r�r��rrVrWs r�test_seeking_readz#StreamRecoderTest.test_seeking_read5
s����j�j�0�7�7��D�E��
�
�
��W�k�
:���������
�3�
����
��������
�3��������
�3��������
�3���������,rc���tjdjd��}tj|dd�}|jd�|j
d�|j|j�d�|jd�|j|j�d�|j|j�d �|j|j�d�y)
Nz
123456789
rVrtrs
abc
s789
rs1
sabc
) r|r}rbrOr�r�rCr
r�r\s r�test_seeking_writez$StreamRecoderTest.test_seeking_write@
s����j�j��-�-�k�:�;��
�
�
��W�k�
:�� ����
�
�������������1�
����
���������/���������1���������1rc��tj�}tjd�}tj||j
|jtjjtjj�}|jtd�5tj|�ddd�|jtd�5tj|�ddd�y#1swY�>xYw#1swYyxYw)Nr�r�)r|r}rOr�r�rbrQr�r�r�r�rjr�r�r�rUs rr�zStreamRecoderTest.test_copyN
s����j�j�l���
�
�g�&��
�
!�
!�#�u�|�|�U�\�\�"+�/�/�">�">� ���@\�@\�^���
#�
#�I��
?��I�I�b�M�@�
�
#�
#�I��
?��M�M�"��@�
?�@�
?��
?�
?�s�C0�C<�0C9�<Dc��td�}tjd�}tj||j|j
tjjtjj�}ttjdz�D]R}|j|��5|jtd�5tj ||�ddd�ddd��Ty#1swY�xYw#1swY�kxYw)Nrr�rMr�r�)r;rOr�r�rbrQr�r�r�r�rNr�r�r�rjr�r�)rrrr(rWr�s rr�zStreamRecoderTest.test_pickleY
s����#�J���
�
�g�&��
�
!�
!�!�U�\�\�5�<�<�"+�/�/�">�">� ���@\�@\�^���6�2�2�Q�6�7�E����u��-��+�+�I��G��L�L��U�+�H�.�-�8�G�G��.�-�s$�/C<�C0�C<�0C9�5C<�<D N) r(r)r*rXrZr]r_r�r�rrrrQrQ!
s ��0� ?� -�2� � ,rrQzneed _testinternalcapi modulec��eZdZdZej
�ZdZdZdZ dd�Z
d�Zd�Zd�Z
d �Zd
�Zdd�Zd�Zd
�Zd�Zd�Zd�Zy)�LocaleCodecTestzD
Test indirectly _Py_DecodeUTF8Ex() and _Py_EncodeUTF8Ex().
)r�uulatin1:§éuu255:ÿu
UCS:é€usurrogates:��)s
blatin1:��sb255:�u��c�0�tj|d|�SrE)�_testinternalcapi�EncodeLocaleEx)rr�r?s rrbzLocaleCodecTest.encoder
s�� �/�/��a��@�@rc ���|jD]^}|j|��5 |j|j|�}|j||�}|j ||�ddd��`y#t
$rg|j
t�5}|j||�ddd�n#1swYnxYwtj�}|j|d�Y�zwxYw#1swY��xYw)N)r�z!encode error: pos=[0-9]+, reason=)�STRINGSr�rb�ENCODINGr
r�r�r�rOrP�assertRegex)rr?r�rcrwrR�errmsgs r�check_encode_stringsz$LocaleCodecTest.check_encode_stringsu
s����L�L�D����4��(� 8�#�{�{�4�=�=�&�A�H�#�k�k�$��7�G��$�$�W�h�7�)�(�!��*�S��*�*�<�8�B����D�&�1�9�8�8�� ����.�F��$�$�V�-Q�R� S��)�(�sF�C"�A/�$C"�/C�
B) � C�)B2
�..C�C"�C�C"�"C+ c�&�|jd�y�Nri�rlr�s r�test_encode_strictz"LocaleCodecTest.test_encode_strict�
����!�!�(�+rc�&�|jd�y�Nr~ror�s r�test_encode_surrogateescapez+LocaleCodecTest.test_encode_surrogateescape�
����!�!�"3�4rc��� |jdd�|jd�y#t$r8}t|�dk(r|j|j�d��n�Yd}~�Nd}~wwxYw)Nrgr��unsupported error handlerz4 encoder doesn't support surrogatepass error handler)rbrMrOr�rirl�rr�s r�test_encode_surrogatepassz)LocaleCodecTest.test_encode_surrogatepass�
sm�� ��K�K��O�,�
�!�!�/�2��� ��3�x�6�6��
�
���� 1�2<�=�>��>�� ���&� A'�.A"�"A'c���|jt�5}|jdd�ddd�|jt j
�d�y#1swY�/xYw)Nrgr�rw)r�rMrbr
rOrP�rrRs r�%test_encode_unsupported_error_handlerz5LocaleCodecTest.test_encode_unsupported_error_handler�
sI��
�
�
�z�
*�b��K�K��.�/�+�����R�\�\�*�,G�H�+�
*���A�A c�0�tj|d|�SrE)re�DecodeLocaleEx)rrwr?s rrQzLocaleCodecTest.decode�
s�� �/�/���F�C�Crc �P�|jdk(}|rd}nd}t|j�}|jD]j} |j |j|�}||vr|j|�|s�8|j |jd�}||k7s�Z|j|��l|D]^}|j|��5 |j|j|�}|j||�} |j| |�ddd��`y#t$rd}Y��wxYw#t$rv|jt�5}
|j||�ddd�n#1swYnxYwt
j�}|j|j!d�|�Y��wxYw#1swY��xYw)Nrtr~rir�)rwzdecode error: )rir��
BYTES_STRINGSrhrbr�r�r�rQr
r�r�r�rOrPrV�
startswith)rr?�is_utf8�
encode_errors�stringsr�rw�encoded2rcr�rRrks r�check_decode_stringsz$LocaleCodecTest.check_decode_strings�
su���=�=�G�+���-�M�$�M��t�)�)�*���L�L�D�
��+�+�d�m�m�]�C���'�)��N�N�7�+���;�;�t�}�}�o�F���w�&��N�N�8�,�!��G����g��.� 8�&�~�~�d�m�m�V�D�H�#�k�k�'�6�:�G��$�$�W�h�7�/�.���&�
���
��*�Q��*�*�<�8�B����G�V�4�9�8�8�� ����.�F��O�O�F�$5�$5�6F�$G��P� Q��/�.�sY�1D �<F�>D�$F� D�D�F�8E � F�E
�=F�F�F�F�F% c�&�|jd�yrn�r�r�s r�test_decode_strictz"LocaleCodecTest.test_decode_strict�
rqrc�&�|jd�yrsr�r�s r�test_decode_surrogateescapez+LocaleCodecTest.test_decode_surrogateescape�
rurc��� |jdd�|jd�y#t$r8}t|�dk(r|j|j�d��n�Yd}~�Nd}~wwxYw)Nrr�rwz4 decoder doesn't support surrogatepass error handler)rQrMrOr�rir�rxs r�test_decode_surrogatepassz)LocaleCodecTest.test_decode_surrogatepass�
sm�� ��K�K��_�-�
�!�!�/�2��� ��3�x�6�6��
�
���� 1�2<�=�>��>�� �rzc���|jt�5}|jdd�ddd�|jt j
�d�y#1swY�/xYw)Nrr�rw)r�rMrQr
rOrPr|s r�%test_decode_unsupported_error_handlerz5LocaleCodecTest.test_decode_unsupported_error_handler�
sI��
�
�
�z�
*�b��K�K��/�0�+�����R�\�\�*�,G�H�+�
*�r~Nrh)r(r)r*rIr�getfilesystemencodingrirhr��
SURROGATESrbrlrprtryr}rQr�r�r�r�r�rrrrcrce
sm���)�s�(�(�*�H�*�G�8�M��J�A�8�,�5�
3�I�
D� 8�D,�5�
3�Irrcc�(�eZdZdZd�Zd�Zd�Zd�Zy)� Rot13Testz"Test the educational ROT-13 codec.c�T�tjdd�}|j|d�y)NzCaesar liked ciphers�rot-13zPnrfne yvxrq pvcuref)rOrbr
)r�
ciphertexts rr:zRot13Test.test_encode�
s$���]�]�#9�8�D�
�����%;�<rc�T�tjdd�}|j|d�y)Nz
Rg gh, Oehgr?r�z
Et tu, Brute?)rOrQr
)r� plaintexts rr<zRot13Test.test_decode�
s"���M�M�/�8�<� �����O�4rc�~�tjd��}|jd�}|j|d�y)Nr�zABBA nag Cheryl BakerzNOON ant Purely Onxre)rOrarbr
)rr~r�s rrz!Rot13Test.test_incremental_encode�
s7��8�&�.�.�x�8�:���^�^�$;�<�
�����%<�=rc�~�tjd��}|jd�}|j|d�y)Nr�zterra Ares envy thazgreen Nerf rail gun)rOrPrQr
)rrzr�s rr{z!Rot13Test.test_incremental_decode�
s7��8�&�.�.�x�8�:���N�N�#8�9� �����$9�:rN)r(r)r*rIr:r<rr{rrrr�r��
s��,�=�5�>�
;rr�c��eZdZdZd�Zy)�
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���ddlm}tjd�}tj�}|||�|j d�|j�}|j
|d�y)Nr)rFz)Gb or, be abg gb or, gung vf gur dhrfgvbaz)To be, or not to be, that is the question)�encodings.rot_13rFr|r�r�rHr
)rrF�infile�outfile�
plain_texts r�test_rot13_funczRot13UtilTest.test_rot13_func�
sS��*����H�I���+�+�-��
�f�g�����Q���\�\�^�
�����7� 9rN)r(r)r*rIr�rrrr�r��
s��� 9rr�c��eZdZdZd�Zd�Zy)�CodecNameNormalizationTestzTest codec name normalizationc�j���d�d���fd�}tj|�|jtj|�|j �tj
d��|j �tj
d��|j �tj
d��|j �tj
d��|j �tj
d��|j �tj
d ��|j �tj
d
��|j �tj
d��|j �tj
d��|j �tj
d
��y)N)rMrrnr�)NNNNc���|dk(r�S�S)N�aaa_8r)rX�FOUND� NOT_FOUNDs ��rr�zFCodecNameNormalizationTest.test_codecs_lookup.<locals>.search_functions����7�"��� � rr�zAAA-8zAAA---8zAAA 8u
aaaé€-8zAAA.8zAAA...8zBBB-8zBBB.8uaé€-8)rOr�rAr�r
r�)rr�r�r�s @@r�test_codecs_lookupz-CodecNameNormalizationTest.test_codecs_lookup�
s/�����,� � !� ����(�����)�)�?�;������
�
�g� 6�7������
�
�g� 6�7������
�
�i� 8�9������
�
�i� 8�9������
�
�.?� @�A�����F�M�M�'�$:�;�����F�M�M�)�$<�=�����F�M�M�'�$:�;�����F�M�M�'�$:�;�����F�M�M�/�$B�Crc�D�tj}|j|d�d�|j|d�d�|j|d�d�|j|d�d�|j|d�d�|j|d�d�y)Nrtuutfé€-8zutf 8zUTF 8�UTF_8zutf.8zutf...8)r��normalize_encodingr
)r� normalizes r�!test_encodings_normalize_encodingz<CodecNameNormalizationTest.test_encodings_normalize_encodings����0�0� �����7�+�W�5�����#>�?��I�����9�-�w�7�
����7�+�W�5�����7�+�W�5�����9�-�y�9rN)r(r)r*rIr�r�rrrr�r��
s��'�D�,
:rr��__main__)XrOr�r�r|r�r�rr�r�r�testr�test.supportrr��ImportErrorrer2�sizeof�c_wchar�SIZEOF_WCHAR_Trr9r�r;rKre�TestCaser�rr+r3rUrlrsr�r�r�r�rr5rZrr �reprr1rRrNrZr�r�rrrr�r�r�r�rzr�r�r�r�rr"r)r5rOr}rIrKrMr�r�r�r��platformr�r6rErQr�rcr�r�r�r(�mainrrr�<module>r�s���
��� �
�
�
�����"�����3��
#�V�]�]�6�>�>�2�N��$�(�F��*-�-�DQ=�&�Q=�h
]>��(�+�+�]>�@+>�(�H�-�-�+>�\+>�(�H�-�-�+>�\`-��(�+�+�`-�F*'�(�H�-�-�*'�X*'�(�H�-�-�*'�X[H�x��*�*�[H�|CK�x��*�*�CK�L>�(�#�#�>�C�X�&�&�C� S-�(�H�-�-�S-�l<H�x�(�(�<H�@e��N
�A�
�1�v�q�y�
�d�1�g��
�
P�8�$�$�P�BV��rP�8�$�$�P�(Z6�H�%�%�Z6�z~)�x�(�(�~)�B+�x�(�(�+�2+�x�(�(�+�(+�X�.�.�+�*
0�h�'�'�
0�f��P�6�=�!�� � ��(�
�6�<� �� � ��'�� ��
_R�x�(�(�*A�_R�Du
�(�#�#�u
�p1�8�$�$�1�&L��!�!�&L�RC
��(�"3�"3�C
�JP
�8�X�%6�%6�P
�fO�x�(�(�O�(2�(�+�+�2�D65�h���65�r���y�)���E����i���6���$�$�\�2�',�f�o��l�#�-���$�$�[�1�&+�W��k�"�~F��*�*�~F�L��(�E3��*�*�E3�R����S�\�\�W�,�9�;�XD�8�$�$�XD�;�XD�v$+��!�!�$+�N"B��"�"�"B�JA,��)�)�A,�H����"�d�*�,K�L�nI�h�'�'�nI�M�nI�b;��!�!�;�*9�H�%�%�9�"":��!2�!2�":�J�z���H�M�M�O���cp���I���������
��
�F��N���vU���D���� �� �sX�S�S�S+�-S;�
T �S�S�S(�'S(�+ S8�7S8�;T�T� T�T
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists