
    /hh~M                    J
   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  S SKJr   S SKr S SKr S SKr\R"                  " \R$                  5      rS rS r " S S	\5      r " S
 S5      r " S S\5      r " S S\\R4                  5      r " S S\\R4                  5      r " S S\\R4                  5      r " S S\\R4                  5      r " S S\\R4                  5      r " S S\\R4                  5      r  " S S\\R4                  5      r! " S S\\R4                  5      r" " S S\R4                  5      r# " S  S!\R4                  5      r$ " S" S#\!\R4                  5      r% " S$ S%\R4                  5      r&/ S&Qr'\' H  r(\)" \(5      S':w  d  M  \*" \+" \(5      5        M!      " S( S)\R4                  5      r,/ S*Qr- " S+ S,\R4                  5      r. " S- S.\R4                  5      r/ " S/ S0\R4                  5      r0 " S1 S2\R4                  5      r1 " S3 S4\R4                  5      r2 " S5 S6\R4                  5      r3 " S7 S8\R4                  5      r4/ S9Qr5\6" \ S:5      (       a  \5Ro                  S;5        \6" \ S<5      (       a  \5Ro                  S=5        S>/r8 " S? S@\R4                  \5      r9 " SA SB\R4                  5      r: " SC SD\R4                  5      r; " SE SF\R4                  5      r< " SG SH\\R4                  5      r= " SI SJ\\R4                  5      r> " SK SL\R4                  5      r? " SM SN\R4                  5      r@ " SO SP\R4                  5      rA/ SQQrBSRSS/ST// SUQSV/SW/SX.rC S SKDrD\BRo                  SY5        SZS[/\CSY'    S SKErE\BRo                  S\5        S]/\CS\'    " S^ S_\R4                  5      rF0 rGS` rH " Sa Sb\R4                  5      rI\R                  " \R                  Sc:H  Sd5       " Se Sf\R4                  5      5       rL " Sg Sh\R4                  5      rM " Si Sj\R4                  5      rN " Sk Sl\R4                  5      rO\R                  " \SL Sm5       " Sn So\R4                  5      5       rQ " Sp Sq\R4                  5      rR " Sr Ss\R4                  5      rS " St Su\R4                  5      rT\USv:X  a  \R                  " 5         gg! \ a    Sr GNf = f! \ a    Sr GNf = f! \ a    SrSr GNf = f! \ a    SrD GNf = f! \ a     GNrf = f)w    N)mock)support)	os_helperc                    ^ ^ UU 4S jnU$ )Nc                 L   > TR                  T" U 5      U[        U 5      45        g N)assertEquallen)inputexpectcoderselfs     9/opt/python-3.13.8/usr/lib/python3.13/test/test_codecs.pycheckcoding_checker.<locals>.check    s     uE
';<     )r   r   r   s   `` r   coding_checkerr      s    =Lr   c                    ^
^^^^^ SSK JnJnJn  SSKJnJm
JmJmJ	n  SmSmSm " U
UUUUU4S jS[         R                  5      nU" UTXQ" U5      5      nU" S	U" S
5      45      nU" 5       n	U" U SU	5      $ )Nr   )POINTERWINFUNCTYPEWinDLL)BOOLBYTEWCHARUINTDWORD      i  c                   b   > \ rS rSrS Y4S Y  Y-  4S Y  Y-  4S Y4S Y4S Y Y-  4/rSrg	)
'is_code_page_present.<locals>.CPINFOEXW,   MaxCharSizeDefaultCharLeadByteUnicodeDefaultCharCodePageCodePageNamer   N)__name__
__module____qualname____firstlineno___fields___static_attributes__)r   MAX_DEFAULTCHARMAX_LEADBYTESMAX_PATHr   r   s   r   	CPINFOEXWr"   ,   sH    "D)"D$89m!34)51&#U8^46r   r3   GetCPInfoExWkernel32)ctypesr   r   r   ctypes.wintypesr   r   r   r   r   	Structure)cpr   r   r   r   r   r3   	prototypeGetCPInfoExinfor   r0   r1   r2   r   r   s             @@@@@@r   is_code_page_presentr=   %   sv    33>>MOH6 6F$$ 6 D$wy/ABI^VJ-?@AK;Dr1d##r   c                   *    \ rS rSrS rS rSS jrSrg)Queue9   c                     Xl         g r	   _buffer)r   buffers     r   __init__Queue.__init__=   s    r   c                 .    U =R                   U-  sl         g r	   rB   )r   charss     r   writeQueue.write@   s    r   c                     US:  a"  U R                   nU R                   S S U l         U$ U R                   S U nU R                   US  U l         U$ Nr   rB   )r   sizess      r   read
Queue.readC   sP    6A<<+DLHUd#A<<.DLHr   rB   N)r   )r*   r+   r,   r-   rE   rI   rO   r/   r   r   r   r?   r?   9   s    r   r?   c                        \ rS rSrS rS rSrg)MixInCheckStateHandlingN   c                 p   [        [        U5      S-   5       GH  n[        R                  " U5      " 5       nUR	                  US U 5      nUR                  5       nU R                  US   [        5        US   (       d`  UR                  US   S S S45        U R                  UR	                  US   5      (       + 5        U R                  XuR                  5       5        [        R                  " U5      " 5       nUR                  U5        UR	                  X4S  S5      nU R                  X&U-   5        GM     g )N   r   T)ranger   codecsgetincrementaldecoderdecodegetstateassertIsInstanceintsetstate
assertTruer
   	r   encodingurN   idpart1statepart2s	            r   check_state_handling_decode3MixInCheckStateHandling.check_state_handling_decodeO   s    s1vaxA,,X68AHHQrUOEJJLE!!%(C0 8

E!HRaL!,-AHHU1X$6 67  

5 ,,X68AJJuHHQrUD)EQe,' !r   c                 f   [        [        U5      S-   5       H  n[        R                  " U5      " 5       nUR	                  US U 5      nUR                  5       n[        R                  " U5      " 5       nUR                  U5        UR	                  X$S  S5      nU R                  X6U-   5        M     g )NrU   T)rV   r   rW   getincrementalencoderencoderZ   r]   r
   r_   s	            r   check_state_handling_encode3MixInCheckStateHandling.check_state_handling_encodee   s    s1vaxA,,X68AHHQrUOEJJLE,,X68AJJuHHQrUD)EQe, !r   r   N)r*   r+   r,   r-   rg   rl   r/   r   r   r   rR   rR   N   s    -,-r   rR   c                   N    \ rS rSrS rS rS rS rS rS r	S r
S	rS
 rS rSrg)ReadTestp   c                    [        S5      n[        R                  " U R                  5      " U5      nSn[	        UR                  U R                  5      USS9 HC  u  pgUR                  [        U/5      5        XTR                  5       -  nU R                  XW5        ME     U R                  UR                  5       S5        U R                  UR                  S5        [        R                  " U R                  5      " 5       nSn[	        UR                  U R                  5      USS9 H3  u  pgXXR                  [        U/5      5      -  nU R                  XW5        M5     U R                  UR                  SS5      S5        U R                  UR                  S5        UR                  5         Sn[	        UR                  U R                  5      USS9 H3  u  pgXXR                  [        U/5      5      -  nU R                  XW5        M5     U R                  UR                  SS5      S5        U R                  UR                  S5        UR                  U R                  5      n	U R                  USR                  [        R                   " U	 Vs/ s H  n[        U/5      PM     snU R                  5      5      5        g s  snf )Nr    Tstrict)r?   rW   	getreaderr`   ziprk   rI   bytesrO   r
   
bytebufferrX   rY   rD   resetjoin
iterdecode)
r   r   partialresultsqrresultcpartialresultrc   encodeds
             r   check_partialReadTest.check_partialq   s(   
 #JT]]+A."%ell4==&A>Z^"_QGGE1#JffhFV3 #`
 	2&s+ ((79"%ell4==&A>Z^"_QhhuaSz**FV3 #` 	#t,b13' 	
	"%ell4==&A>Z^"_QhhuaSz**FV3 #` 	#t,b13' ,,t}}-GGF%%7&C7auaSz7&CT]]ST	
&Cs   J=c           	      >  ^ ^ U 4S jmSU4S jjnSnSnSnT R                  U" US5      U5        T R                  U" US5      U5        T R                  U" USS5      U5        T R                  U" USS5      U5        S	n/ n/ n[        U5       H<  u  pUR                  US
-  S
-   S-  U	-   5        UR                  US
-  S
-   S-  5        M>     T R                  U" SR                  U5      S5      SR                  U5      5        T R                  U" SR                  U5      S5      SR                  U5      5        [	        S5       H  n
U H  n	SU
S-  U	-   S-   -  nT" U5      n[	        S5       HG  nT R                  UR                  SS9U
S-  U	-   5        T R                  UR                  SS9S5        MI     T" U5      n[	        S5       HD  nT R                  UR                  SS9U
S-  5        T R                  UR                  SS9S5        MF     M     M     g )Nc                    > [         R                  " U R                  TR                  5      5      n[        R
                  " TR                  5      " U5      $ r	   ioBytesIOrk   r`   rW   ru   )r   streamr   s     r   ru   )ReadTest.test_readline.<locals>.getreader   s8    ZZT]] ;<F##DMM26::r   Tc                    > T" U 5      n/ n UR                  X!S9nU(       d  OUR                  U5        M*  SR                  U5      $ )N)rM   keepends|)readlineappendrz   )r   r   rM   readerlineslineru   s         r   readalllines,ReadTest.test_readline.<locals>.readalllines   sL    u%FEDDT"	 
 88E?"r   u   foo
bar
bazspam eggsu   foo
|bar
|baz|spam |eggszfoo|bar|baz|spam|eggsF
   )

u       u   あrr   r   P   azxxx
r   xxx)TN)r
   	enumerater   rz   rV   r   )r   r   rN   	sexpectedsexpectednoendslineendsvwvworb   lineendrM   r   ru   s   `           @r   test_readlineReadTest.test_readline   s   	;	# .9	1a.	:a/Aar2I>a3_E1%h/LQIIquSy(*W45JJ#c	8+, 0 	bggbk48#((2,Gbggbk59388C=I "ID#S7*W45"1rA$$6S7* $$6 # #1rA$$7S $$7 # $ r   c                 P  ^ ^ / SQnSR                  U5      mUU 4S jnU" 5       nT R                  UR                  5       US   5        T R                  UR                  5       SR                  USS  5      5        T R                  UR                  5       S5        U" 5       nT R                  UR                  5       US   5        T R                  UR                  S5      US   S   5        T R                  UR                  S5      S5        T R                  UR                  S5      T[	        US   5      S-   S  S S 5        U" 5       nT R                  UR                  5       US   5        T R                  UR                  5       USS  5        T R                  UR                  5       S5        U" 5       nT R                  UR                  SSS	9TS S 5        T R                  UR                  5       TSS  5        T R                  UR                  5       S5        U" 5       nT R                  UR                  SSS	9TS S 5        T R                  UR                  S5      TS   5        T R                  UR                  S5      S5        T R                  UR                  S5      TS
S 5        U" 5       nT R                  UR                  SSS	9TS S 5        T R                  UR                  5       US   SS  /USS  -   5        T R                  UR                  5       S5        g )N)zHumpty 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.rr   c                     > [         R                  " TR                  TR                  5      5      n [        R
                  " TR                  5      " U 5      $ r	   r   )r   datar   s    r   ru   8ReadTest.test_mixed_readline_and_read.<locals>.getreader   s8    ZZDMM :;F##DMM26::r   r   rU   d   (      )rM   rH      j   )rz   r
   r   rO   r   	readlines)r   r   ru   fr   s   `   @r   test_mixed_readline_and_read%ReadTest.test_mixed_readline_and_read   s   8 wwu~	;
 KuQx027759#562& KuQx0E!HQK0B'd3uQx=1+<+=&>t&DE KuQx0ab	22& KRq148<48,2& KRq148<DG,B'd1Sk2 KRq148<q!"qr(BC2&r   c                 $   / SQn[         R                  " SR                  U5      R                  U R                  5      5      n[
        R                  " U R                  5      " U5      n[        U5       H  u  pEU R                  XQU   5        M     g )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   zimport logging
z+log=logging.getLogger("Snakelets.logger")
r   r   zuser=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   zshowdate=None
r   zarg=self.Request.getArg()
zif arg=="today":
z,    #-------------------- TODAY'S ARTICLES
z-    self.write("<h2>Today's articles</h2>")
z(    showdate = frog.util.isodatestr() 
.    entries = readArticlesFromDate(showdate)
zelif arg=="active":
z4    #-------------------- ACTIVE ARTICLES redirect
z     self.Yredirect("active.y")
zelif arg=="login":
z/    #-------------------- LOGIN PAGE redirect
z    self.Yredirect("login.y")
zelif 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   zelse:
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                
rr   )	r   r   rz   rk   r`   rW   ru   r   r
   )r   rN   r   r   rb   r   s         r   test_bug1175396ReadTest.test_bug1175396  sm    >
~ BGGAJ--dmm<=!!$--08"6*IQTQ4( +r   c                 J   [        S5      n[        R                  " U R                  5      " U5      n[        R                  " U R                  5      " U5      nUR                  S5        U R                  UR                  SS9S5        UR                  S5        U R                  UR                  SS9S5        U R                  UR                  SS9S5        UR                  S	5        U R                  UR                  SS9S	5        U R                  UR                  SS9S5        UR                  S5        U R                  UR                  S
S9S5        UR                  S5        U R                  UR                  S
S9S5        U R                  UR                  S
S9S5        UR                  S	5        U R                  UR                  S
S9S	5        U R                  UR                  S
S9S5        UR                  S5        U R                  UR                  S
S9S5        g )Nr   zfooFr   fooz
barrr   barbazTr   zbarzfoo
)r?   rW   	getwriterr`   ru   rI   r
   r   )r   r}   writerr   s       r   test_readlinequeueReadTest.test_readlinequeueL  s   #J!!$--03!!$--03 	W%8%@Y%8"=%8%@U%8%@%8"= 	W$7AY$7>$7AU$7?$7<Y$7Cr   c                    SnSnSnX-   U-   R                  U R                  5      n[        R                  " U5      n[        R
                  " U R                  5      " U5      nU R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       S5        g )NzAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z`offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!!
znext line.
rr   rk   r`   r   r   rW   ru   r
   r   )r   s1s2s3rN   r   r   s          r   test_bug1098990_aReadTest.test_bug1098990_ag  s    RqU2Xdmm,A!!$--08*B/*B/*B/*B/r   c                 \   SnSnSnSnSnX-   U-   U-   U-   R                  U R                  5      n[        R                  " U5      n[        R
                  " U R                  5      " U5      nU R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       S5        g )Nzaaaaaaaaaaaaaaaaaaaaaaaa
zbbbbbbbbbbbbbbbbbbbbbbbb
zstillokay:bbbbxx
zbroken!!!!badbad
zagainokay.
rr   r   )	r   r   r   r   s4s5rN   r   r   s	            r   test_bug1098990_bReadTest.test_bug1098990_bt  s    ++##U2Xb[^##DMM2A!!$--08*B/*B/*B/*B/*B/*B/r      �c                    U R                  [        SR                  U R                  5        U R	                  SR                  U R                  S5      SR                  U R                  5      5        U R	                  SR                  U R                  S5      SR                  U R                  5      5        U R	                  SR                  U R                  S5      SR                  U R                  5      5        U R	                  SR                  U R                  S5      S	R                  U R                  5      5        U R	                  SR                  U R                  S
5      SR                  U R                  5      5        U R	                  SR                  U R                  S5      S	R                  U R                  5      5        U R	                  SR                  U R                  S
5      SR                  U R                  5      5        SR                  U R                  5      nS GH  u  p#UR                  U R                  5      [        U5      S  nUR                  U R                  5      [        U5      S  nUS-   U-   nX-   U R                  -   U-   nU R                  [        UR                  U R                  5        U R	                  UR                  U R                  S5      U5        U R	                  UR                  U R                  S5      U5        U R	                  UR                  U R                  S5      X#-   5        U R	                  UR                  U R                  S
5      X R                  -   U-   5        SR                  S U R                   5       5      nU R	                  UR                  U R                  S5      X(-   U-   5        GM     g )Nu      []backslashreplacez[\udc80]namereplacexmlcharrefreplacez
[&#56448;]ignore[]replacez[?]   []z[??]rr   ))   𐿿A)[])r   r      surrogatepassc              3   ,   #    U  H
  nS U-  v   M     g7f)\x%02xNr   ).0bs     r   	<genexpr>0ReadTest.test_lone_surrogates.<locals>.<genexpr>  s      'J0H1 (11}0Hs   )assertRaisesUnicodeEncodeErrorrk   r`   r
   r   ill_formed_sequenceUnicodeDecodeErrorrY   ill_formed_sequence_replacerz   )	r   bombeforeafterbefore_sequenceafter_sequencetest_stringtest_sequencer   s	            r   test_lone_surrogatesReadTest.test_lone_surrogates  s*   ,hoot}}M**4==:LM$++DMM:	<**4==-H$++DMM:	<**4==:MN%,,T]];	=**4==(CT]]3	5**4==)Ddmm4	6 	)00IT]]3	5)00	Jt}}5	7 ii&3MF$mmDMM:3s89EO"\\$--8SCN 8+e3K 2!5568FGM0-2F2F"mm-[//0?A*, ]11$--2AC(* ]11$--J#^-]11$--K#&F&FFNP!ww 'J040H0H'J  J]11$--AST#6>@+3r   c                    SR                  U R                  S5      n[        S[        U5      5       Hq  n[        R
                  " U R                  5      " S5      nU R                  UR                  US U 5      S5        U R                  UR                  XS  S5      S5        Ms     SR                  U R                  S5      n[        S[        U5      5       Hp  n[        R
                  " U R                  5      " S5      nU R                  UR                  US U 5      S5        U R                  UR                  XS  5      S5        Mr     g )Nu   r   rU   rr   Tu   )rk   r`   rV   r   rW   rX   r
   rY   )r   r   rb   decs       r   test_incremental_surrogatepass'ReadTest.test_incremental_surrogatepass  s    t}}o>q#d)$A..t}}=oNCSZZRa126SZZR$7B %
 t}}o>q#d)$A..t}}=oNCSZZRa126SZZR18< %r   r   N)r*   r+   r,   r-   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   ro   ro   p   s?    )
V9v.'`C)JD600" #+*@X=r   ro   c                   t    \ rS rSrSr\R                  S:X  a  SrOSrSrSr	S r
S	 rS
 rS rS rS rS rSrg)	UTF32Testi  utf-32little          ܀s$     s   p   a   m   s   p   a   m   s$        s   p   a   m   s   p   a   mc                    [         R                  " U R                  5      u    pn[        R                  " 5       nU" U5      nUR                  S5        UR                  S5        UR                  5       nU R                  X`R                  :H  =(       d    X`R                  :H  5        [        R                  " U5      nU" U5      nU R                  UR                  5       S5        g NspamspamspamrW   lookupr`   r   r   rI   getvaluer^   spamlespamber
   rO   r   _r   r   rN   r   rc   s          r   test_only_one_bomUTF32Test.test_only_one_bom      "MM$--8!6JJL1I		JJL[[(<A,<=JJqM1I:.r   c                 t   [         R                  " S5      n[        R                  " U R                  5      " U5      nU R                  [        UR                  5        [         R                  " S5      n[        R                  " U R                  5      " U5      nU R                  [        UR                  5        g )N   s   r   r   rW   ru   r`   r   r   rO   r   rN   r   s      r   test_badbomUTF32Test.test_badbom  sz    JJy!T]]+A.,aff5JJy!T]]+A.,aff5r   c                 ,    U R                  S/ SQ5        g )N    ÿĀ￿𐀀)rr   rr   rr   rr   rr   rr   rr    r  r  r      ÿr  r  r      ÿĀr  r  r      ÿĀ￿r  r  r  r  r   r   s    r   test_partialUTF32Test.test_partial  s    ,	
r   c                     U R                  S[        R                  " SSS5      5        U R                  S[        R                  " SSS5      5        g N)r   rU      r   T)rr   rU   r   r
   rW   utf_32_decoder  s    r   test_handlersUTF32Test.test_handlers	  H    --gy$G	I--gxF	Hr   c                 R    U R                  [        [        R                  SSS5        g N   rt   T)r   r   rW   r  r  s    r   test_errorsUTF32Test.test_errors  "    ,f.B.B!8T	3r   c                     U R                  U R                  SU R                  5        U R                  U R                  SU R                  5        g Nr   rg   r`   r  r  r  s    r   test_decoder_stateUTF32Test.test_decoder_state  >    (()3T[[	B(()3T[[	Br   c                     SnU R                  S[        R                  " U5      S   5        SnU R                  S[        R                  " U5      S   5        g )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀r   s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    r  )r   
encoded_le
encoded_bes      r   test_issue8941UTF32Test.test_issue8941  sW     F
,--j9!<	>E
,--j9!<	>r   r   N)r*   r+   r,   r-   r`   sys	byteorderr   r  r  r  r  r  r  r$  r*  r1  r/   r   r   r   r   r     sT    H
}} 11FFFF/6
>H3B>r   r   c                   4    \ rS rSrSrSrS rS rS rS r	Sr
g	)
UTF32LETesti$  	utf-32-ler   c                 ,    U R                  S/ SQ5        g Nr  )rr   rr   rr   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  s    r   r  UTF32LETest.test_partial(      ,	
r   c                 Z    U R                  SR                  U R                  5      S5        g )N   𐈃s    r
   rk   r`   r  s    r   test_simpleUTF32LETest.test_simpleC  "    ,,T]];=PQr   c                 R    U R                  [        [        R                  SSS5        g r"  )r   r   rW   utf_32_le_decoder  s    r   r$  UTF32LETest.test_errorsF  "    ,f.E.E!8T	3r   c                 Z    SnU R                  S[        R                  " U5      S   5        g )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r.  r   )r
   rW   rC  r   r   s     r   r1  UTF32LETest.test_issue8941J  -     -,009!<	>r   r   Nr*   r+   r,   r-   r`   r   r  r?  r$  r1  r/   r   r   r   r6  r6  $  "    H-
6R3>r   r6  c                   4    \ rS rSrSrSrS rS rS rS r	Sr
g	)
UTF32BETestiR  	utf-32-ber   c                 ,    U R                  S/ SQ5        g r9  r  r  s    r   r  UTF32BETest.test_partialV  r;  r   c                 Z    U R                  SR                  U R                  5      S5        g )Nr=  s    r>  r  s    r   r?  UTF32BETest.test_simpleq  rA  r   c                 R    U R                  [        [        R                  SSS5        g r"  )r   r   rW   utf_32_be_decoder  s    r   r$  UTF32BETest.test_errorst  rE  r   c                 Z    SnU R                  S[        R                  " U5      S   5        g )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r.  r   )r
   rW   rT  rG  s     r   r1  UTF32BETest.test_issue8941x  rI  r   r   NrJ  r   r   r   rM  rM  R  rK  r   rM  c                   z    \ rS rSrSr\R                  S:X  a  SrOSrSrSr	S r
S	 rS
 rS rS rS rS rS rSrg)	UTF16Testi  utf-16r         ܀s   s p a m s p a m s    s p a m s p a mc                    [         R                  " U R                  5      u    pn[        R                  " 5       nU" U5      nUR                  S5        UR                  S5        UR                  5       nU R                  X`R                  :H  =(       d    X`R                  :H  5        [        R                  " U5      nU" U5      nU R                  UR                  5       S5        g r   r   r  s          r   r  UTF16Test.test_only_one_bom  r  r   c                 t   [         R                  " S5      n[        R                  " U R                  5      " U5      nU R                  [        UR                  5        [         R                  " S5      n[        R                  " U R                  5      " U5      nU R                  [        UR                  5        g )Ns   r
  r  r  s      r   r  UTF16Test.test_badbom  s{    JJ{#T]]+A.,aff5JJ*+T]]+A.,aff5r   c                 ,    U R                  S/ SQ5        g )Nr  )rr   rr   rr   r  r  r  r  r  r  r  r  r  r  r  r  r  s    r   r  UTF16Test.test_partial  s    ,	
r   c                     U R                  S[        R                  " SSS5      5        U R                  S[        R                  " SSS5      5        g r  )r
   rW   utf_16_decoder  s    r   r  UTF16Test.test_handlers  r   r   c                 R    U R                  [        [        R                  SSS5        g r"  )r   r   rW   rd  r  s    r   r$  UTF16Test.test_errors  r&  r   c                     U R                  U R                  SU R                  5        U R                  U R                  SU R                  5        g r(  r)  r  s    r   r*  UTF16Test.test_decoder_state  r,  r   c                    SnUR                  U R                  5      nU R                  [        R                  [        R
                  5        [        [        R
                  S5       nUR                  U5        S S S 5        [        R                  " [        R
                  SU R                  S9 nU R                  UR                  5       U5        S S S 5        g ! , (       d  f       Nf= f! , (       d  f       g = f)NzHello
world
wbr~   r`   )rk   r`   
addCleanupr   unlinkTESTFNopenrI   rW   r
   rO   )r   r   rN   fpr   s        r   test_bug691291UTF16Test.test_bug691291  s    
 "IIdmm$	(()*:*:;)""D)RHHQK *[[))3"&--14:V[[]B/1 1 *)1 1s   &C.!C)
C&)
C7c                 ,   S Hs  nU R                  [        5       n[        R                  " [        R
                  XR                  S9  S S S 5        U R                  S[        WR                  5      5        Mu     S Hs  nU R                  [        5       n[        R                  " [        R
                  XR                  S9  S S S 5        U R                  S[        WR                  5      5        Mu     g ! , (       d  f       N= f! , (       d  f       NI= f)N)UrUzr+Url  zinvalid mode)rtwtatzr+tz'can't have text and binary mode at once)
r   
ValueErrorrW   rp  r   ro  r`   assertInstr	exception)r   modecms      r   test_invalid_modesUTF16Test.test_invalid_modes  s    &D"":."I,,d]]K /MM.#bll*;< '
 .D"":."I,,d]]K /MMCbll+- .	 /.
 /.s   .C4.D4
D	
D	r   N)r*   r+   r,   r-   r`   r3  r4  r   r  r  r  r  r  r  r$  r*  rr  r  r/   r   r   r   rY  rY    sS    H
}} ))@F@F/6
*H3B0
-r   rY  c                   .    \ rS rSrSrSrS rS rS rSr	g)	UTF16LETesti  	utf-16-ler[  c                 ,    U R                  S/ SQ5        g Nr  )rr   r  r  r  r  r  r  r  r  r  r  r  r  r  s    r   r  UTF16LETest.test_partial      ,	
r   c                     / SQnU HN  u  p#U R                  [        [        R                  USS5        U R	                  UR                  SS5      U5        MP     g )N)r#  r   )s   A Z   A�)s	   A B C D Z   ABCD�)s    r   )s    Ar   )s    A    �A)s    A r  rt   Tzutf-16ler   )r   r   rW   utf_16_le_decoder
   rY   r   testsrawexpecteds       r   r$  UTF16LETest.test_errors  R    
 #MC0&2I2I!8T3SZZ
I>I #r   c                     U R                  SR                  U R                  5      S5        U R                  SR                  U R                  5      S5        g )Nr=  s    ީr
   rk   r`   rY   r  s    r   test_nonbmpUTF16LETest.test_nonbmp	  G    ,,T]];,	.,33DMMB%	'r   r   N
r*   r+   r,   r-   r`   r   r  r$  r  r/   r   r   r   r  r        H%
&J'r   r  c                   .    \ rS rSrSrSrS rS rS rSr	g)	UTF16BETesti  	utf-16-ber\  c                 ,    U R                  S/ SQ5        g r  r  r  s    r   r  UTF16BETest.test_partial  r  r   c                     / SQnU HN  u  p#U R                  [        [        R                  USS5        U R	                  UR                  SS5      U5        MP     g )N)r  )s    Ar  )s	    A B C DZr  )s    r   )s    r   )s     Ar  )s     Ar  rt   Tzutf-16ber   )r   r   rW   utf_16_be_decoder
   rY   r  s       r   r$  UTF16BETest.test_errors&  r  r   c                     U R                  SR                  U R                  5      S5        U R                  SR                  U R                  5      S5        g )Nr=  s    r  r  s    r   r  UTF16BETest.test_nonbmp5  r  r   r   Nr  r   r   r   r  r    r  r   r  c                   V   ^  \ rS rSrSrSrSrSrS rS r	S r
U 4S	 jrS
 rS rSrU =r$ )UTF8Testi;  utf-8s   u	   ���r   c                 ,    U R                  S/ SQ5        g )N    ÿ߿ࠀ￿𐀀)r  r  r  r      ÿ߿r  r      ÿ߿ࠀr  r      ÿ߿ࠀ￿r  r  r  r  r  r  s    r   r  UTF8Test.test_partialA  s    2	
r   c                 r    SnU R                  U R                  XR                  U R                  5      5        g )Nu    ÿĀ߿ࠀ￿􏿿)rg   r`   rk   )r   ra   s     r   r*  UTF8Test.test_decoder_stateW  s,    @(()*HHT]],C	Er   c                     S HK  u  pnU R                  XUS9   U R                  UR                  U R                  U5      U5        S S S 5        MM     g ! , (       d  f       M_  = f)N)   []r   r   )r  r   u   [��])r  surrogateescape   [])r  r   z
[\x80\xff]r   error_handlerr  )subTestr
   rY   r`   r   r   r  r  s       r   test_decode_errorUTF8Test.test_decode_error\  sb    .
)D 4'/  1  T]]M!J!)+1 1.
1 1s   -A
A"	c                   > [         TU ]  5         U R                  SR                  U R                  S5      U R
                  S-   5        U R                  [        5       nSR                  U R                  S5        S S S 5        WR                  nU R                  UR                  UR                  UR                   S5        g ! , (       d  f       NN= f)Nr   r  s   []u   []u   )superr   r
   rk   r`   BOMr   r   r}  objectstartend)r   r  exc	__class__s      r   r   UTF8Test.test_lone_surrogatesh  s    $& 	**4==:KLI-	/ 12b"))$--9JK 3llCIIcgg6G 32s   C
Cc                    U R                  SR                  U R                  S5      U R                  S-   5        U R                  SR                  U R                  S5      U R                  S-   5        U R                  SR                  U R                  S5      U R                  S-   5        U R                  SR	                  U R                  S5      S5        U R                  SR	                  U R                  S5      S5        U R                  [        R                  " S5      5        U R                  [        5         SR	                  U R                  S5        S S S 5        U R                  [        5         S	R	                  U R                  S5        S S S 5        g ! , (       d  f       NI= f! , (       d  f       g = f)
Nu	   abcdefr   s	   abcdefu   𐿿s   𐿿r   s   []s   abcs   abcz)
r
   rk   r`   r  rY   r^   rW   lookup_errorr   r   r  s    r   test_surrogatepass_handler#UTF8Test.test_surrogatepass_handlert  sX   ..t}}oN$99	;+224==/R$CC	E)00P$AA	C 	.55dmm_U'	)8??_+	- 	++O<=12!!$--A 312""4==/B 32 3222s   >F8F/
F,/
F=c                 j   / SQnS H  nS H  nUR                  X#-   5        M     M!     UR                  S5        U Ha  nU R                  US9   [        R                  " U R
                  5      " 5       nU R                  [        UR                  U5        S S S 5        Mc     g ! , (       d  f       Mu  = f)N)                  r#  )         s      s      s   s      s   s   )   r  )s   s   s   s   s   s   s   r   )	r   extendr  rW   rX   r`   r   r   rY   )r   casesprefixsuffixr   r   s         r   test_incremental_errors UTF8Test.test_incremental_errors  s     P>F +V_- +>
 	 N 	O D4(224==AC!!"4cjj$G )( ((s   AB##
B2	r   )r*   r+   r,   r-   r`   r   r   r  r  r*  r  r   r  r  r/   __classcell__r  s   @r   r  r  ;  sA    H)".
C
,E

+
HC&H Hr   r  c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
UTF7Testi  utf-7c                 x   SnU R                  UR                  U R                  5      UR                  S5      5        U R                  UR                  S5      R                  U R                  5      U5        SnU R                  UR                  U R                  5      UR                  S5      5        U R                  UR                  S5      R                  U R                  5      U5        U R                  SR                  U R                  5      S5        U R                  SR                  U R                  5      S5        SnU R                  UR                  U R                  5      UR                  S5      5        U R                  UR                  S5      R                  U R                  5      U5        SR	                  [        [        [        [        S5      5      R                  5       5      [        X-   S	-   U-   5      -
  5      5      nU R                  UR                  U R                  5      S
5        g )NzGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?asciiz !"#$%&*;<=>@[]^_`{|}za+bs   a+-bz 	
rr      +sX   +AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	r
   rk   r`   rY   rz   sortedsetrw   rV   )r   set_dset_owsother_asciis        r   
test_asciiUTF7Test.test_ascii  s    	dmm4ell76KLg.55dmmDeL'dmm4ell76KLg.55dmmDeLdmm4g>6>4==1299W3EF7+224==A2FggfSuT{);)B)B)D%E%()<r)A%B&C D E++DMM:D	Er   c                 ,    U R                  S/ SQ5        g )N   a+-b cdĀe𐀀f) r   r   a+za+-a+-br  r  r  r  za+-b a+-b cr  r  r  r  u   a+-b c	   a+-b cdr  r  r  r  u   a+-b cdĀ   a+-b cdĀer  r  r  r  r  r  r  u   a+-b cdĀe𐀀r  r  r  s    r   r  UTF7Test.test_partial      .!$	
r   c           	         / SQnU Hf  u  p#U R                  US9   U R                  [        [        R                  USS5        U R                  UR                  SS5      U5        S S S 5        Mh     g ! , (       d  f       Mz  = f)N))s   bu   �b)s   ab   a�b)s   abu   a��b)s   a+IK   a�)s   a+IK-br  )s   a+IK,br  )s   a+IKx   a€�)s   a+IKx-b   a€�b)s   a+IKwgrr  )s	   a+IKwgr-br  )s   a+IKwgr,r  )s
   a+IKwgr,-bu	   a€�-b)s   a+IKwgrB
   a€€�)s
   a+IKwgrB-b   a€€�b)s
   a+/,+IKw-b   a�€b)s   a+//,+IKw-br  )s   a+///,+IKw-b   a￿�€b)s   a+////,+IKw-br   )s   a+IKw-bu   a€b�)s   a+IKwbr  )s   a+@br  r  rt   Tr  r   )r  r   r   rW   utf_7_decoder
   rY   r  s       r   r$  UTF7Test.test_errors  so    
. #MC#&!!"4f6I6I #Xt5  GY!?J '& #&&s   A
A22
B	c                 `   U R                  SR                  U R                  5      S5        U R                  SR                  U R                  5      S5        U R                  SR                  U R                  5      S5        U R                  SR                  U R                  5      S5        U R                  SR                  U R                  5      S5        U R                  SR                  U R                  5      S5        U R                  SR                  U R                  5      S5        U R                  SR                  U R                  5      S	5        U R                  S	R                  U R                  5      S5        U R                  S
R                  U R                  5      S5        g )Nu   𐒠s   +2AHcoA-u   s   +2AHcoAu   €𐒠s
   +IKzYAdyg-s	   +IKzYAdygu
   €€𐒠s   +IKwgrNgB3KA-s   +IKwgrNgB3KAr  r  s    r   r  UTF7Test.test_nonbmp  sF   ,,T]];[I..t}}={K++DMM:LI**4==9<H+224==A=Q--dmm<>PQ,,T]];=OP188G)	+)00?1	3//>1	3r   c                     / SQnU H?  u  p#U R                  US9   U R                  UR                  SS5      U5        S S S 5        MA     g ! , (       d  f       MS  = f)N))s   a+2AE-bu   ab)s   a+2AEbr  )s   a+2AEr  )s   a+2AEA-br  )s   a+2AH-br  )s
   a+IKzYAQ-bu   a€b)s
   a+IKzYAQbr  )s   a+IKzYAQA-br  )s
   a+IKzYAd-br  )s   a+IKwgrNgB-bu   a€€b)s   a+IKwgrNgBbr  )s
   a+IKwgrNgBr  )s   a+IKwgrNgBA-br  r  r  r   r  r
   rY   r  s       r   r   UTF7Test.test_lone_surrogates
  sO    
 #MC#&  GY!?J '& #&&s   #A
A	r   N)r*   r+   r,   r-   r`   r  r  r$  r  r   r/   r   r   r   r  r    s$    HE4%
NK<3Kr   r  c                        \ rS rSrS rS rSrg)UTF16ExTesti  c                 T    U R                  [        [        R                  SSSS5        g )Nr#  rt   r   T)r   r   rW   utf_16_ex_decoder  s    r   r$  UTF16ExTest.test_errors!  s$    ,f.E.EwPXZ[]abr   c                 L    U R                  [        [        R                  5        g r	   )r   	TypeErrorrW   r  r  s    r   test_bad_argsUTF16ExTest.test_bad_args$  s    )V%<%<=r   r   N)r*   r+   r,   r-   r$  r  r/   r   r   r   r
  r
    s    c>r   r
  c                   &    \ rS rSrS rS rS rSrg)ReadBufferTesti'  c                 x    SS K nU R                  [        R                  " UR                  SS5      5      S5        g )Nr   r      spam)r     )arrayr
   rW   readbuffer_encode)r   r  s     r   
test_arrayReadBufferTest.test_array)  s/    $$U[[g%>?	
r   c                 P    U R                  [        R                  " S5      S5        g )Nrr   r   r   )r
   rW   r  r  s    r   
test_emptyReadBufferTest.test_empty0  s    11"5x@r   c                     U R                  [        [        R                  5        U R                  [        [        R                  S5        g N*   )r   r  rW   r  r  s    r   r  ReadBufferTest.test_bad_args3  s0    )V%=%=>)V%=%=rBr   r   N)r*   r+   r,   r-   r  r  r  r/   r   r   r   r  r  '  s    
ACr   r  c                   N    \ rS rSrSr\R                  rS rS r	S r
S rS rSrg	)
UTF8SigTesti7  	utf-8-sigc                 ,    U R                  S/ SQ5        g )N   ﻿ ÿ߿ࠀ￿𐀀)rr   rr   rr   rr   rr   u   ﻿   ﻿ r(     ﻿ ÿr)     ﻿ ÿ߿r*  r*     ﻿ ÿ߿ࠀr+  r+     ﻿ ÿ߿ࠀ￿r,  r,  r,  r'  r  r  s    r   r  UTF8SigTest.test_partial;  s    8	
r   c                 <    U R                  [        SS5      S5        g )N   ﻿r%  rr   r
   r|  r  s    r   test_bug1601501UTF8SigTest.test_bug1601501W  s    _k:B?r   c                     [         R                  " S5      " 5       nSnU R                  UR                  UR	                  S5      5      U5        g )Nr%  r   )rW   rX   r
   rY   rk   )r   rc   rN   s      r   test_bomUTF8SigTest.test_bom[  s<    ((57!((;"78!<r   c                    Sn[         R                  S-   n[         R                  " S5      nS /[        [	        SS5      5      -   / SQ-    H  nU" [
        R                  " U5      5      n[
        R                  " 5       n Ub  UR                  U5      nOUR                  5       nU(       d  OUR                  U5        M@  UR                  5       nU R                  X5        M     g Nu   ABC¡∀XYZs   ABC¡∀XYZr%  rU      )@   r        i   )rW   BOM_UTF8ru   listrV   r   r   StringIOrO   rI   r  r
   	r   	unistring
bytestringr   sizehintistreamostreamr   gots	            r   test_stream_bomUTF8SigTest.test_stream_bom`  s    (	__'DD
!!+.eArl!3312HRZZ
34GkkmG'"<<1D"<<>Dd#  ""$CS,2r   c                    SnSn[         R                  " S5      nS /[        [        SS5      5      -   / SQ-    H  nU" [        R
                  " U5      5      n[        R                  " 5       n Ub  UR                  U5      nOUR                  5       nU(       d  OUR                  U5        M@  UR                  5       nU R                  X5        M     g r7  )rW   ru   r=  rV   r   r   r>  rO   rI   r  r
   r?  s	            r   test_stream_bareUTF8SigTest.test_stream_barev  s    (	2
!!+.eArl!3312HRZZ
34GkkmG'"<<1D"<<>Dd#  ""$CS,2r   r   N)r*   r+   r,   r-   r`   rW   r<  r  r  r1  r4  rF  rI  r/   r   r   r   r$  r$  7  s*    H
//C
8@=
-,-r   r$  c                   2    \ rS rSrS rS rS rS rS rSr	g)	EscapeDecodeTesti  c                     U R                  [        R                  " S5      S5        U R                  [        R                  " [        5       5      S5        g )Nr   r  )r
   rW   escape_decode	bytearrayr  s    r   r  EscapeDecodeTest.test_empty  s:    --c2H=--ik:HEr   c                     [         R                  n[        S5       H7  n[        U/5      nUS:w  d  M  U R	                  U" US-   5      US-   S45        M9     g )Nr:     \   0r    )rW   rN  rV   rw   r
   r   rY   r   s      r   test_rawEscapeDecodeTest.test_raw  sN    %%sAqc
AEz  D!1AHa=A r   c                    [         R                  n[        X5      nU" SS5        U" SS5        U" SS5        U" SS5        U" S	S
5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS
5        U" SS5        U" SS5        U" SS5        U" SS5        U" S S!5        U" S"S5        U" S#S!5        g )$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])rW   rN  r   r   rY   r   s      r   test_escapeEscapeDecodeTest.test_escape  s    %%t,ihhh h	"h	"h	"h	"h	"h	"h	"h	"i$i j'"j&!k7#j&!k7#r   c           	         [         R                  n[        X5      n[        SS5       H  n[	        U/5      nUS;  a1  U R                  [        SU-  5         U" SU-   SU-   5        S S S 5        U R                  [        SUS-
  -  5         U" SUR                  5       -   SUR                  5       -   5        S S S 5        M     U R                  [        S5         U" SS5        S S S 5        U R                  [        5         U" S	S	5        S S S 5        U R                  [        S
5       nU" SS5        S S S 5        [        SS5       H>  nU R                  [        SU-  5         U" SU-  [	        US-  /5      5        S S S 5        M@     U R                  [        S5         U R                  U" SS5      S5        S S S 5        U R                  [        S5         U R                  U" SS5      S5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GNB= f! , (       d  f       GN-= f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       N= f! , (       d  f       g = f)Na   {   s   abfnrtvxinvalid escape sequence '\\%c'rR      invalid escape sequence '\\8'   \8   \9 invalid escape sequence '\\\xfa'   \r:  r;  $invalid octal escape sequence '\\%o'   \%o   invalid escape sequence '\\z'   \x\zr   )s   \zr  %invalid octal escape sequence '\\501'   \x\501)   Ar   )
rW   rN  r   rV   rw   assertWarnsRegexDeprecationWarningupperassertWarnsr
   r   rY   r   rb   r   r  s         r   test_warningsEscapeDecodeTest.test_warnings  s6   %%t,r3Aqc
A#**+=9A=?%!)UQY/? &&'952>@eaggi'):;@ @   ""#502&&!2 01&&! 2""#5358:)Y'5 uf%A&&'9;a?Agk5!e)#56A A &
 ""#502VHh7E2 ""#58:VJ99E: :-? ?@ @2 2 215 5A A2 2: :s`   G8
,H

H?
H/'
I!II&I78
H	

H	
H,/
H>
I
I#	&
I47
Jc                    [         R                  nU R                  [        US5        U R                  [        US5        U R	                  U" SS5      S5        U R	                  U" SS5      S5        U R                  [        US5        U R                  [        US	5        U R	                  U" S
S5      S5        U R	                  U" S
S5      S5        g )Ns   \xs   [\x]s   [\x]\xr   )rY  r   r   )   [?]?r   s   \x0s   [\x0]s   [\x0]\x0)rY     )r  r  )rW   rN  r   rz  r
   )r   rY   s     r   r$  EscapeDecodeTest.test_errors  s    %%*ff5*fh7
H5zB
I6E*fg6*fi8h7Di8,Gr   r   N)
r*   r+   r,   r-   r  rU  rm  r  r$  r/   r   r   r   rL  rL    s     FB$.F@	Hr   rL  ))u"   ليهمابتكلموشعربي؟s   egbpdaj6bu4bxfgehfvwxn)u   他们为什么不说中文s   ihqwcrb4cv8a8dqg056pqjye)u   他們爲什麽不說中文s   ihqwctvzc91f659drss3x8bo0yb)u   Pročprostěnemluvíčeskys   Proprostnemluvesky-uyb24dma41a)u,   למההםפשוטלאמדבריםעבריתs   4dbcagdahymbxekheh6e0a7fei0b)uZ   यहलोगहिन्दीक्योंनहींबोलसकतेहैंs,   i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd)u6   なぜみんな日本語を話してくれないのかs&   n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa)uH   세계의모든사람들이한국어를이해한다면얼마나좋을까sE   989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c)u8   почемужеонинеговорятпорусскиs    b1abfaaepdrnnbgefbaDotcwatmq2g4l)u*   PorquénopuedensimplementehablarenEspañols-   PorqunopuedensimplementehablarenEspaol-fmd56a)u-   TạisaohọkhôngthểchỉnóitiếngViệts,   TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g)u   3年B組金八先生s   3B-ww4c5e180e575a65lsy2b)u"   安室奈美恵-with-SUPER-MONKEYSs(   -with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n)u'   Hello-Another-Way-それぞれの場所s(   Hello-Another-Way--fc4qua05auwb3674vfr0b)u   ひとつ屋根の下2s   2-u9tlzr9756bt3uc0v)u   MajiでKoiする5秒前s   MajiKoi5-783gue6qz075azm5e)u   パフィーdeルンバs   de-jg4avhby1noc0d)u   そのスピードでs   d9juau41awczczp)z-> $1.00 <-s   -> $1.00 <--r    c                   &    \ rS rSrS rS rS rSrg)PunycodeTestiI  c                     [          HV  u  pU R                  [        UR                  S5      S5      R	                  5       [        US5      R	                  5       5        MX     g Npunycoder  )punycode_testcasesr
   r|  rk   lowerr   unipunys      r   test_encodePunycodeTest.test_encodeJ  sM    +IC CJJz*G4::<D'"((* ,r   c                     [          He  u  pU R                  XR                  S5      5        UR                  S5      R                  S5      nU R                  XR                  S5      5        Mg     g r  )r  r
   rY   rk   r  s      r   test_decodePunycodeTest.test_decodeV  sU    +ICS++j"9:;;w'..w7DS++j"9: ,r   c                    SS[        SSSSS5      4SS[        SSS	S
S5      4SS[        SSSSS5      4SS[        SSSSS5      4SS[        SSS	S
S5      4SS[        SSSSS5      4SS[        SSSSS5      4SS[        SSSSS5      4SS[        SSSSS5      4SS[        SSSSS5      4SS[        SSS S!S5      4S"/nU GH!  u  p#nU R                  X#S#9   [        U[        5      (       a  U R	                  [         5       nUR                  SU5        S S S 5        WR                  nU R                  UR                  UR                  5        U R                  UR                  U5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        O"U R                  UR                  SU5      U5        S S S 5        GM$     g ! , (       d  f       N= f! , (       d  f       GMH  = f)$N   xn--w&rt   r  r   r   r   rr   s   &egbpdaj6bu4bxfgehfvwxnr   rU   s   egbpdaj6bu&4bx&fgehfvwxnr   r8  s   egbpdaj6bu4bxfgehfvwxn&      s   Proprostnemluvesky-uyb24dma41ar  s   Proprostnemluvesky-uyb24dma41a   r  s    Proprost&nemluvesky-uyb24&dma41a      s    Proprostnemluvesky&-&uyb24dma41a      s   Proprostnemluvesky-&uyb24dma41a   s   Proprostnemluvesky-uyb24d&ma41as   Proprostnemluvesky-uyb24dma41a&      )r  r   zxn-)r  errors)r   r  
isinstance	Exceptionr   rY   r}  r
   r`   r  r  r  )r   	testcasesr  r  r  r  r  s          r   test_decode_invalid PunycodeTest.test_decode_invalid\  s*   "4ZaB"OP'3EjRUWXZ[]_3`a((4FzSVXZ\^`b4cd'3EjRUWY[]_a3bc2H>PQXZ]_`bceg>hi2H>PQXZ]_`bceg>hi0(<Nz[^`bdfhj<kl0(<Nz[^`bdfhj<kl/;MjZ]_acegi;jk/;MjZ]_acegi;jk/;MjZ]_acegi;jk(
	 '0"D(47h	22**+=>"J7 ?,,C$$S\\83D3DE$$SZZ6$$SYY?$$SWWhll;$$T[[V%DhO 87 '0 ?> 87s%   +G9G(CG9(
G62G99
H		r   N)r*   r+   r,   r-   r  r  r  r/   r   r   r   r  r  I  s    
;Pr   r  )-)s%   foo­͏᠆᠋bar​⁠baz︀︈️﻿s	   foobarbaz)s   CAFEs   cafe)s   ßs   ss)s   İs   i̇)s   Ńͺs   ń ιNN)s   ǰ ªs   ǰ a)s   ᾷs   ᾶι)   ǰr  )   ΐr  )   ΰr  )   ẖr  )   ὖr  )    r  )s    r  )s    N)s    r  )s   ​r   )s   　r  )   r  )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   ́s   ́)s   ‎N)s   ‪N)s   󠀁N)s   󠁂N)s   foo־barN)s	   fooﵐbarN)s	   fooﹶbars	   foo َbar)s   ا1N)   ا1بr  r  )s   X­ßİ℡ǰ ªΰ s   xssi̇telǰ aΰ )s   Xß㌖İ℡⒟㌀s*   xssキロメートルi̇tel(d)アパートc                       \ rS rSrS rSrg)NameprepTesti  c           	      ^   SSK Jn  [        [        5       H[  u  nu  p4Uc  M  [	        USS5      nUc  U R                  [        X5        M5  [	        USS5      n U R                  U" U5      U5        M]     g ! [         a,  n[        R                  " SUS-   [	        U5      4-  5      eS nAff = f)Nr   )nameprepr  r   zTest 3.%d: %srU   )encodings.idnar  r   nameprep_testsr|  r   r   r
   r  r   
TestFailed)r   r  posorigpreppedes         r   test_nameprepNameprepTest.test_nameprep  s    +$-n$= C$|tWo6D!!"4hEgw@P$$Xd^W= %> ! P!,,_As1v-NOOPs   A66
B, 'B''B,r   N)r*   r+   r,   r-   r  r/   r   r   r   r  r    s    Pr   r  c                      \ rS rSrS\" SSSSS5      4S\" SSSS	S5      4S
\" SS
SSS5      4S\" SSSSS5      4S\" SSSSS5      4S\" SSSSS5      4S\" SSSSS5      4S\" SSSSS5      4S\" SSSSS5      4/	rSS 3\" SSS 3S	SS5      4S\" SSSS	S5      4/rS rS r	S  r
S! rS" rS# rS$ rS% rS& rS' rS( rS)rg*)+IDNACodecTesti'     python.orgidnar   rU   rr      python.orgr  r     python.orgr         python.orgr     python.org	      python.orgr   r8     xn--pythn-&mua.org   xn--pythn-m&ua.orgr      xn--pythn-mua&.org      foo.x   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿr9  	   あさ.͏c                    U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S5        U R                  [        SS5      S	5        U R                  [        S
S5      S	5        U R                  [        SS5      S	5        U R                  [        SS5      S	5        U R                  [        SS5      S5        U R                  [        SS5      S5        g )N
   python.orgr  
python.org   python.org.python.org.   xn--pythn-mua.org   pythön.org   xn--pythn-mua.org.   pythön.org.s   XN--pythn-mua.org.s   xN--pythn-mua.org.s   Xn--pythn-mua.org.s   bugs.xn--pythn-mua.org.u   bugs.pythön.org.s   bugs.XN--pythn-mua.org.r0  r  s    r   test_builtin_decode!IDNACodecTest.test_builtin_decode9  s    ]F3\B^V4mD16:OL2F;=MN2F;=MN2F;=MN2F;=MN7@.	07@.	0r   c                 d   U R                    H  u  pU R                  XS9   U R                  [        5       nUR	                  S5        S S S 5        WR
                  nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  SUR                   3S9  U R                  UR                  UR                  5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       GM"  = f)Ncaser  r  zreason: )msg)invalid_decode_testcasesr  r   r   rY   r}  r
   r`   r  r  reasonr  r   r  r  r  r  s        r   test_builtin_decode_invalid)IDNACodecTest.test_builtin_decode_invalidF  s    ";;ND4;&&'9:bKK' ;ll  x/@/@A  X__=  HNN(3::,@W X  (,,7 <; <:: <;s#   DD	B8D
DD
D/	c                    U R                  SR                  S5      S5        U R                  SR                  S5      S5        U R                  SR                  S5      S5        U R                  SR                  S5      S	5        g )
Nr  r  r  r  r  r  r  r  r  r
   rk   r  s    r   test_builtin_encode!IDNACodecTest.test_builtin_encodeQ  sq    ,,V4mD--f5~F//79MN)008:OPr   c                 L   U R                    H  u  pU R                  XS9   U R                  [        5       nUR	                  S5        S S S 5        WR
                  nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       GM  = f)Nr  r  )invalid_encode_testcasesr  r   r   rk   r}  r
   r`   r  r  r  r  s        r   test_builtin_encode_invalid)IDNACodecTest.test_builtin_encode_invalidW  s    ";;ND4;&&'9:bKK' ;ll  x/@/@A  X__=  HNN;  (,,7 <; <:: <;s#   DD	B,D
DD
D#	c                    U R                  [        S5         SR                  S5        S S S 5        U R                  [        S5         SR                  S5        S S S 5        g ! , (       d  f       N?= f! , (       d  f       g = f)Nzway too longsT  xn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar  ztoo longsN   xn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)assertRaisesRegexr   rY   r  s    r    test_builtin_decode_length_limit.IDNACodecTest.test_builtin_decode_length_limitb  s`    ##$6G"**62 H##$6
C ((0 DC HGCCs   A"A3"
A03
Bc                     [         R                  " S5      " [        R                  " S5      5      nUR	                  S5        U R                  UR	                  5       S5        g )Nr     abcr  rr   )rW   ru   r   r   rO   r
   )r   r~   s     r   test_streamIDNACodecTest.test_streamh  sA    V$RZZ%78	q	2&r   c                 V   U R                  SR                  [        R                  " S S 5       S5      5      S5        U R                  SR                  [        R                  " S S 5       S5      5      S5        U R                  SR                  [        R                  " S	 S
 5       S5      5      S5        U R                  SR                  [        R                  " S S
 5       S5      5      S5        [        R                  " S5      " 5       nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  SS5      S5        UR                  5         U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  SS5      S5        g )Nrr   c              3   :   #    U  H  n[        U/5      v   M     g 7fr	   rw   r   r   s     r   r   8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>o  s     &I=auaSzz=   r  r  r  c              3   :   #    U  H  n[        U/5      v   M     g 7fr	   r  r  s     r   r   r  s  s     &J>auaSzz>r  r  r  c              3   :   #    U  H  n[        U/5      v   M     g 7fr	   r  r  s     r   r   r  w       &Q;PauaSzz;Pr  r  r  c              3   :   #    U  H  n[        U/5      v   M     g 7fr	   r  r  s     r   r   r  {  r  r  s   xn--xams	   ple-9ta.ou	   äxample.s   rgr   Torgs   rg.zorg.)r
   rz   rW   r{   rX   rY   ry   )r   decoders     r   test_incremental_decode%IDNACodecTest.test_incremental_decodem  s   GGF%%&I=&I6RS	
 	GGF%%&J>&JFST	
 	GGF%%&Q;P&QSYZ[	
 	GGF%%&Q;P&QSYZ[	

 ..v68
5r:7G.3T2E:
5r:7G/8T2B7r   c                    S[        SSSSS5      4S[        SSS	S
S5      4S[        SSSSS5      4S[        SSSSS5      4S[        SSSSS5      4S[        SSS	S
S5      4S[        SSSSS5      4S[        SSSSS5      4S[        SSSSS5      4/	nU GH  u  p#U R                  X#S 9   U R                  [         5       n[        [        R
                  " S! U 5       S5      5        S S S 5        WR                  nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        S S S 5        GM
     [        R                  " S5      " 5       nU R                   H  u  p#U R                  X#S 9   U R                  [         5       nUR                  U5        S S S 5        WR                  nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        S S S 5        M     g ! , (       d  f       GN= f! , (       d  f       GMJ  = f! , (       d  f       N= f! , (       d  f       GM;  = f)"Nr  r  r#  r   rU   rr   r  s   pytr  r  r  s   pythonr   r  r  r  s   or    r  s   orgr  s   xn--pythn-&mua.r   r8  r  s   xn--pythn-m&ua.r   r  s   xn--pythn-mua&.r  r  r  c              3   :   #    U  H  n[        U/5      v   M     g 7fr	   r  r  s     r   r   @IDNACodecTest.test_incremental_decode_invalid.<locals>.<genexpr>  s     +E1E1#JJr  )r   r  r   r=  rW   r{   r}  r
   r`   r  r  r  rX   r  rY   )r   iterdecode_testcasesr  r  r  r  r  s          r   test_incremental_decode_invalid-IDNACodecTest.test_incremental_decode_invalid  s    267Aq" MN 26:q!R PQ 26=!QPR ST 267Aq" MN 268Q2 NO 26:q!R PQ"$6v?QSUWY[]$^_"$6v?QSUWY[]$^_"$6v?QSUWY[]$^_
 
 3ND4;&&'9:b**+E+EvNO ;ll  x/@/@A  X__=  HNN;  (,,7 <; 3 ..v68";;ND4;&&'9:bNN4( ;ll  x/@/@A  X__=  HNN;  (,,7 <; < ;: <; ;: <;sJ   *K (J=(B,KK32K"B,K3=
KK
K	"
K0,K33
L	c                    U R                  SR                  [        R                  " SS5      5      S5        U R                  SR                  [        R                  " SS5      5      S5        U R                  SR                  [        R                  " SS5      5      S5        U R                  SR                  [        R                  " SS5      5      S5        [        R                  " S5      " 5       nU R                  UR                  S	5      S5        U R                  UR                  S
5      S5        U R                  UR                  SS5      S5        UR                  5         U R                  UR                  S	5      S5        U R                  UR                  S5      S5        U R                  UR                  SS5      S5        g )Nr   r  r  r  r  r  r  r  u   äxz	ample.orgs   xn--xample-9ta.rr   Ts   orgz
ample.org.s   xn--xample-9ta.org.)r
   rz   rW   
iterencoderj   rk   ry   )r   encoders     r   test_incremental_encode%IDNACodecTest.test_incremental_encode  sl   HHV&&|V<=	
 	HHV&&}f=>	
 	HHV&&'7@A!	
 	HHV&&'7@A!	

 ..v680#646HID16:0#657MND137r   c           	         SS 3[        SS SSS5      4S[        SSSS	S5      4/nU GH   u  p#U R                  X#S
9   U R                  [         5       n[        [        R
                  " US5      5        S S S 5        WR                  nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        S S S 5        GM     g ! , (       d  f       N= f! , (       d  f       GM'  = f)Nr  r  r  r   <   rr   r  u   ͏rU   r  )r   r  r   r=  rW   r  r}  r
   r`   r  r  r  )r   iterencode_testcasesr  r  r  r  s         r   test_incremental_encode_invalid-IDNACodecTest.test_incremental_encode_invalid  s
   I;!3FykArSU!VW01aLM 
 3ND4;&&'9:b**489 ;ll  x/@/@A  X__=  HNN;  (,,7 <; 3:: <;s$   E !D/5B,E /
D=9E  
E	c                     SR                  SS5        SR                  SS5        S HG  nU R                  [        SR                   SU5        U R                  [        SR                  SU5        MI     g )Nr  r  rt   r  )r   r   r   r  )rk   rY   r   r  r   r  s     r   r$  IDNACodecTest.test_errors  se    FH-VX.#Fi)<)<ffMi$$ff6#r   r   N)r*   r+   r,   r-   r   r  r   r  r  r  r  r  r  r  r  r  r  r  r$  r/   r   r   r   r  r  '  sh    
.v7H!QPRST	.v7H!QPRST	.v7H!QPRST	.v7H!QPRST	.v7H!QPRST	.v7H"bRTUV	 26;PRTVXZ\ ]^	 26;PRTVXZ\ ]^	 26;PRTVXZ\ ]^
  	{	/$yk8JArSUVW	,V_aBOP 
0	8Q	81'
8<8B888"6r   r  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\R                  " SS5      S 5       rS rS rS rS rS rS rS rSrg)CodecsModuleTesti  c                    U R                  [        R                  " SS5      S5        U R                  [        [        R                  5        U R                  [        R                  " S5      S5        U R                  [
        [        R                  SS5        U R                  [        R                  " SSS9S5        U R                  [        R                  " S	SS
S9S5        g )N   latin-1   äöür  abcr#  r  objr`      []r   r  r   )r
   rW   rY   r   r  r   r  s    r   r  CodecsModuleTest.test_decode  s    	B'	))V]]3v.6,fmmWgN 	?YO'	)y'(K	r   c                    U R                  [        R                  " SS5      S5        U R                  [        [        R                  5        U R                  [
        [        R                  SS5        U R                  [        R                  " S5      S5        U R                  [        [        R                  SS	5        U R                  [        R                  " SSS
9S5        U R                  [        R                  " SS	SS9S5        g )Nr   r  r  r   __spam__r!  r  u   ÿffr  r"     [ÿ]r   r%  rY  )r
   rW   rk   r   r  LookupErrorr   r  s    r   r  CodecsModuleTest.test_encode  s    ~yA(	*)V]]3+v}}eZHu-v6,fmmXwO 	>IN(	*xJ	 r   c                     U R                  [        [        R                  5        U R                  [        [        R                  S5        g r   )r   r  rW   registerr  s    r   test_registerCodecsModuleTest.test_register  s,    )V__5)V__b9r   c                    Sn[         R                  " 5       n[        R                  " U5        U R	                  [
        [        R                  U5        UR                  U5        UR                  5         [        R                  " U5        U R	                  [        [        R                  U5        UR                  5         g )Nnonexistent_codec_name)r   MockrW   r-  r   r  r   assert_called_with
reset_mock
unregisterr*  assert_not_called)r   namesearch_functions      r   test_unregister CodecsModuleTest.test_unregister  s~    '))+()V]]D9**40""$/*+v}}d;))+r   c                     U R                  [        [        R                  5        U R                  [        [        R                  S5        U R                  [        [        R                  S5        g )Nr(   )r   r  rW   r   r*  r  s    r   test_lookupCodecsModuleTest.test_lookup  sB    )V]]3+v}}jA+v}}c:r   c                     U R                  [        [        R                  5        U R                  [        [        R                  S5        g Nr(  )r   r  rW   
getencoderr*  r  s    r   test_getencoder CodecsModuleTest.test_getencoder  0    )V%6%67+v'8'8*Er   c                     U R                  [        [        R                  5        U R                  [        [        R                  S5        g r@  )r   r  rW   
getdecoderr*  r  s    r   test_getdecoder CodecsModuleTest.test_getdecoder  rD  r   c                     U R                  [        [        R                  5        U R                  [        [        R                  S5        g r@  )r   r  rW   ru   r*  r  s    r   test_getreaderCodecsModuleTest.test_getreader  0    )V%5%56+v'7'7Dr   c                     U R                  [        [        R                  5        U R                  [        [        R                  S5        g r@  )r   r  rW   r   r*  r  s    r   test_getwriterCodecsModuleTest.test_getwriter"  rL  r   LC_CTYPEtr_TRc                 h    [         R                  " S5      nU R                  UR                  S5        g )NASCIIr  )rW   r   r
   r7  )r   r   s     r   test_lookup_issue1813&CodecsModuleTest.test_lookup_issue1813&  s&     MM'")r   c                     SnU R                  U[        R                  5        [        R                   H  n[        [        U5        M     g )N),rk   rY   r-  	CodecInfoCodecIncrementalEncoderIncrementalDecoderStreamReaderStreamWriterr   rA  rF  rj   rX   ru   r   register_errorr  strict_errorsreplace_errorsignore_errorsxmlcharrefreplace_errorsbackslashreplace_errorsnamereplace_errorsrp  EncodedFiler  r{   r  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)assertCountEqualrW   __all__getattr)r   apis     r   test_allCodecsModuleTest.test_all-  s7    
$ 	c6>>2>>CFC  "r   c                    U R                  [        R                  [        R                  5        S Hl  nU R	                  U5         [
        R                  " [        R                  US5       nU R                  U[
        R                  5        S S S 5        S S S 5        Mn     g ! , (       d  f       N= f! , (       d  f       M  = f)N)wr~   zr+w+r   r  r  )	rm  r   rn  ro  r  rW   rp  r[   rq  )r   r~  files      r   	test_openCodecsModuleTest.test_openD  s~    	(()*:*:;5Dd#KK	 0 0$@D%%dF,E,EF A $# 6@@ $#s$   'B3,!B"B3"
B0,B33
C	c                    U R                  [        [        R                  SS5        U R                  [        [        R                  SS5        U R                  [        [        R                  SS5        U R                  [        [        R                  SS5        S HQ  nU R                  [        [        R                  SSU5        U R                  [        [        R                  SSU5        MS     g )Nr!  	undefinedr  rr   r   )rt   r   r   r   )r   UnicodeErrorrW   rk   rY   r  s     r   test_undefinedCodecsModuleTest.test_undefinedK  s    ,ukJ,v{K,r;G,sKHIFluk6;lv{F< Jr   c                 x   [         R                  " 5       n[         R                  " SU5       nU R                  [        5         [
        R                  " [        R                  SS5        S S S 5        U" 5       R                  R                  5         S S S 5        g ! , (       d  f       N6= f! , (       d  f       g = f)Nzbuiltins.openrx  zinvalid-encoding)r   	mock_openpatchr   r*  rW   rp  r   ro  closeassert_called)r   r  r|  s      r   'test_file_closes_if_lookup_error_raised8CodecsModuleTest.test_file_closes_if_lookup_error_raisedV  st    NN$	ZZ3t"";/I,,d4FG 0 FLL&&(	 43// 43s#   B+'B*'B+
B(	$B++
B9c                 p   [         R                  " S5      n[        R                  " U5      nU R                  X!5        U R	                  X!5        U R                  UR                  5        U R	                  UR                  UR                  5        U R	                  UR                  UR                  5        U R	                  UR                  UR                  5        [         R                  " S5      n[        R                  " U5      nU R                  X!5        U R	                  X!5        U R                  UR                  5        U R	                  UR                  UR                  5        U R	                  UR                  UR                  5        U R	                  UR                  UR                  5        g Nr  base64)rW   r   copyassertIsNotr
   r^   _is_text_encodingrk   r7  incrementalencoderassertFalser   r  dups      r   	test_copyCodecsModuleTest.test_copy^  s0   }}W%iio##../T[[1499-//1H1HI }}X&iio##//0T[[1499-//1H1HIr   c                 p   [         R                  " S5      n[        R                  " U5      nU R	                  X!5        U R                  X!5        U R                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        [         R                  " S5      n[        R                  " U5      nU R	                  X!5        U R                  X!5        U R                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        g r  )rW   r   r  deepcopyr  r
   r^   r  rk   r7  r  r  r  s      r   test_deepcopyCodecsModuleTest.test_deepcopyr  s2   }}W%mmD!##../T[[1499-//1H1HI }}X&mmD!##//0T[[1499-//1H1HIr   c                 f   [         R                  " S5      n[        [        R                  S-   5       H  nU R                  US9   [        R                  " U5      n[        R                  " U5      nU R                  X5        U R                  X5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  5        S S S 5        M     [         R                  " S5      n[        [        R                  S-   5       H  nU R                  US9   [        R                  " U5      n[        R                  " U5      nU R                  X5        U R                  X5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  5        S S S 5        M     g ! , (       d  f       GM  = f! , (       d  f       M  = f)Nr  rU   protocolr  )rW   r   rV   pickleHIGHEST_PROTOCOLr  dumpsloadsr  r
   r7  r  r^   r  r  )r   
codec_infoprotopickled_codec_infounpickled_codec_infos        r   test_pickleCodecsModuleTest.test_pickle  s   ]]7+
622Q67Eu-%+\\*%="'-||4F'G$  B  B  2F2K2KL  22)<<  4 F FG .- 8 ]]8,
622Q67Eu-%+\\*%="'-||4F'G$  B  B  2F2K2KL  22)<<   !5!G!GH .- 8 .- .-s   B6HB6H!
H	!
H0	r   N)r*   r+   r,   r-   r  r  r.  r9  r=  rB  rG  rJ  rN  r   run_with_localerT  rw  r}  r  r  r  r  r  r/   r   r   r   r  r    s{     :
,;
FFEE Z1* 2*!.G	<)J(J(Ir   r  c                   ,    \ rS rSrS rS rS rS rSrg)StreamReaderTesti  c                 p    [         R                  " S5      U l        [        R                  " S5      U l        g )Nr     한
글)rW   ru   r   r   r   r   r  s    r   setUpStreamReaderTest.setUp  s%    &&w/jj!>?r   c                 ~    U R                  U R                  5      nU R                  UR                  5       SS/5        g )Nu   한
u   글)r   r   r
   r   r   r   s     r   test_readlinesStreamReaderTest.test_readlines  s/    KK$X(>?r   c                 P   U R                  [        S5      5      nU R                  [        S5         [        R                  " U5        S S S 5        U R                  [        S5         [        R
                  " U5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nr  r[  )r   r?   r  r  r  r  r  s     r   r  StreamReaderTest.test_copy  sj    KK;<=##I~>IIaL ?##I~>MM! ?> ?>>>   B&B
B
B%c                 ^   [        [        R                  S-   5       Hj  nU R                  US9   U R	                  [        S5      5      nU R                  [        S5         [        R                  " X!5        S S S 5        S S S 5        Ml     g ! , (       d  f       N= f! , (       d  f       M  = f)NrU   r  r  r[  )	rV   r  r  r  r   r?   r  r  r  r   r  r   s      r   r  StreamReaderTest.test_pickle  s{    622Q67Eu-KK&C DE++I~FLL* G .- 8 GF .-#   1B B7B
BB
B,	)r   r   N)	r*   r+   r,   r-   r  r  r  r  r/   r   r   r   r  r    s    @@+r   r  c                   &    \ rS rSrS rS rS rSrg)StreamWriterTesti  c                 :    [         R                  " S5      U l        g )Nr  )rW   r   r   r  s    r   r  StreamWriterTest.setUp  s    &&w/r   c                 P   U R                  [        S5      5      nU R                  [        S5         [        R                  " U5        S S S 5        U R                  [        S5         [        R
                  " U5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nr   r\  )r   r?   r  r  r  r  r  s     r   r  StreamWriterTest.test_copy  sh    KKc
###I~>IIaL ?##I~>MM! ?> ?>>>r  c                 ^   [        [        R                  S-   5       Hj  nU R                  US9   U R	                  [        S5      5      nU R                  [        S5         [        R                  " X!5        S S S 5        S S S 5        Ml     g ! , (       d  f       N= f! , (       d  f       M  = f)NrU   r  r   r\  )	rV   r  r  r  r   r?   r  r  r  r  s      r   r  StreamWriterTest.test_pickle  sy    622Q67Eu-KKc
+++I~FLL* G .- 8 GF .-r  )r   Nr*   r+   r,   r-   r  r  r  r/   r   r   r   r  r    s    0+r   r  c                   &    \ rS rSrS rS rS rSrg)StreamReaderWriterTesti  c                 p    [         R                  " S5      U l        [         R                  " S5      U l        g )Nlatin1r  )rW   ru   r   r   r   r  s    r   r  StreamReaderWriterTest.setUp  s&    &&x0&&w/r   c                    [         R                  " [        S5      U R                  U R                  5      nU R                  [        S5         [        R                  " U5        S S S 5        U R                  [        S5         [        R                  " U5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nr   rq  )	rW   rq  r?   r   r   r  r  r  r  r  s     r   r   StreamReaderWriterTest.test_copy  s{    %%eCj$++t{{K##I/CDIIaL E##I/CDMM! ED EDDDs   B!B2!
B/2
C c                    [        [        R                  S-   5       H  nU R                  US9   [        R
                  " [        S5      U R                  U R                  5      nU R                  [        S5         [        R                  " X!5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)NrU   r  r   rq  )rV   r  r  r  rW   rq  r?   r   r   r  r  r  r  s      r   r  "StreamReaderWriterTest.test_pickle  s    622Q67Eu---eCj$++t{{S++I7KLLL* M .- 8 ML .-s$   AB8;B'B8'
B51B88
C	)r   r   Nr  r   r   r   r  r    s    0+r   r  c                       \ rS rSrS rSrg)EncodedFileTesti  c                 \   [         R                  " S5      n[        R                  " USS5      nU R	                  UR                  5       S5        [         R                  " 5       n[        R                  " USS5      nUR                  S5        U R	                  UR                  5       S5        g )Nr  r  r  s   \
  r     ü   )r   r   rW   rd  r
   rO   rI   r  r   r   efs      r   
test_basicEncodedFileTest.test_basic  s}    JJ45;8$;<JJL7I6
w/r   r   N)r*   r+   r,   r-   r  r/   r   r   r   r  r    s    0r   r  )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ptcp154r  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oemr  c                       \ rS rSrS r\R                  \R                  " \	SL S5      S 5       5       r
S rS rS rS	 rS
 rSrg)BasicUnicodeTestij  c           	      ,  ^^ Sn[          GH  n[        R                  " U5      R                  nUR	                  S5      (       a  US-  nOUS:X  a  SnUS:w  a2  U R                  UR                  SS5      UR                  SS5      5        [        R                  " U5      " U5      u  pEU R                  U[        U5      SU-  5        [        R                  " U5      " U5      u  peU R                  XaSU-  5        U[        ;  a  [        S5      n[        R                  " U5      " U5      nSn	U HR  n
UR                  U
5        UR                  5       nU R                  [!        U5      ["        L [!        U5      5        X-  n	MT     [        S5      n[        R$                  " U5      " U5      nS	nU	 H0  n
UR                  [#        U
/5      5        XR                  5       -  nM2     U R                  XSU-  5        U[        ;  d  GM   [        R&                  " U5      " 5       mSn	U H  n
U	TR)                  U
5      -  n	M     U	TR)                  S	S
5      -  n	[        R*                  " U5      " 5       mS	nU	 H!  n
UTR-                  [#        U
/5      5      -  nM#     UTR-                  SS
5      -  nU R                  XSU-  5        S	R/                  [        R0                  " [        R2                  " X5      U5      5      nU R                  XSU-  5        S	R/                  [        R0                  " [        R2                  " S	U5      U5      5      nU R                  US	5        US;  d  GM_   [        R&                  " U5      " S5      mSR/                  U4S jU 5       5      n	[        R*                  " U5      " S5      mS	R/                  U4S jU	 5       5      nU R                  XSU-  5        GM     g ! [4         a     Nf = f! [4         a     GM  f = f)Nabc123_codecr#  r8  r  -encoding=%rr   rr   Tr  r8  r   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr	   rk   )r   r   r  s     r   r   /BasicUnicodeTest.test_basics.<locals>.<genexpr>  s     0NAq1B1BA   !c              3   Z   >#    U  H   nTR                  [        U/5      5      v   M"     g 7fr	   rY   rw   )r   r   r  s     r   r   rE    s+      0H9FA 18uaSz0J0J9F   (+)all_unicode_encodingsrW   r   r7  endswithr
   r   rA  r   rF  broken_unicode_with_statefulr?   r   rI   rO   r^   typerw   ru   rj   rk   rX   rY   rz   r{   r  r*  )r   rN   r`   r7  r   rM   rH   r}   r   encodedresultr   chunkr   decodedresultr   r  r  s                  @@r   test_basicsBasicUnicodeTest.test_basicsk  s   --H==*//D  ** Y& v~  !1!1#s!;!%c3!79 ))(3A6IQT3q6=8+CD"--h7:MUU}x'?@;;#J))(3A6 #ALLOFFHEOODK5$8$u+F!*M	 
 #J))(3A6 "&AGGE1#J'![[]2M '   =83KL;;1$::8DFG
 %(M%):: !W^^B%==M$::8DFG$&M*%qc
)CC +!W^^C%>>M$$]%2X%=?  WWV%6%6"--a:H&F GF$$V0HI  WWV%6%6"--b(;X&G HF$$VR0#33
C"(">">x"H"R ),0NA0N(N"(">">x"H"R(* 0H9F0H )H(()6)ACW .L # < ' s$   O4+P4
P P
PPNzneed _testlimitedcapi modulec                   ^^ Sn[          GHF  nU[        ;  d  M   [        R                  " U5      mSnU H  nUTR	                  U5      -  nM     UTR	                  SS5      -  n[        R
                  " U5      mSnU H!  nUTR                  [        U/5      5      -  nM#     UTR                  SS5      -  nU R                  XQSU-  5        US;  d  M   [        R                  " US5      mSR                  U4S jU 5       5      n[        R
                  " US5      mSR                  U4S	 jU 5       5      nU R                  XQSU-  5        GMI     g ! [         a     Nf = f! [         a     GMj  f = f)
Nr>  r   rr   TrA  rB  r   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr	   rD  )r   r   cencoders     r   r   4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>  s     0OQ1C1CQrF  c              3   Z   >#    U  H   nTR                  [        U/5      5      v   M"     g 7fr	   rH  )r   r   cdecoders     r   r   rV    s+      0H9FA 19qc
0K0K9FrI  )rJ  rL  _testlimitedcapicodec_incrementalencoderrk   codec_incrementaldecoderrY   rw   r
   r*  rz   )r   rN   r`   rN  r   rP  rX  rU  s         @@r   test_basics_capi!BasicUnicodeTest.test_basics_capi  s    --H;;?/HHRH
 %(M%);; !X__R%>>M/HHRH$&M*%s)DD +!X__S$%??M$$]%2X%=? #33
C#3#L#LXW_#` ),0OQ0O(O#3#L#LXW_#`(* 0H9F0H )H(()6)ACA .
 # ( ' s#   EE'
E$#E$'
E65E6c                 X   SS-  n[          H  nUS:X  a  M  U[        ;   a  M  [        R                  " U5      " [        R
                  " UR                  U5      5      5      n[        S5       H6  nUR                  SS5        UR                  5       nU R                  X5        M8     M     g )Nz%s
%s
)X  abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123X  def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456r  r   r   )rJ  rL  rW   ru   r   r   rk   rV   seekrO   r
   )r   rN   r`   r   tr   s         r   	test_seekBasicUnicodeTest.test_seek  s    55-H6!77%%h/

188H;M0NOF1XAq!{{}  )	  .r   c                     [          HN  n[        R                  " U5      nU R                  [        U5        US;  d  M7  U R                  [        US5        MP     g )N)r  r  r!  )rJ  rW   rF  r   r  )r   r`   r  s      r   test_bad_decode_args%BasicUnicodeTest.test_bad_decode_args  sG    -H''1Gi133!!)Wb9	 .r   c                 v    [          H/  n[        R                  " U5      nU R                  [        U5        M1     g r	   )rJ  rW   rA  r   r  )r   r`   r  s      r   test_bad_encode_args%BasicUnicodeTest.test_bad_encode_args  s,    -H''1Gi1 .r   c                 \    SSK Jn  [        UR                  5      nU R	                  X"5        g )Nr   )r  )	encodingsr  rM  encoding_tabler
   )r   r  
table_types      r   "test_encoding_map_type_initialized3BasicUnicodeTest.test_encoding_map_type_initialized  s#    $&//0
0r   c                     Sn[          HQ  nU[        ;  d  M  U R                  X!UR                  U5      5        U R	                  X!UR                  U5      5        MS     g )Nr>  )rJ  rL  rg   rk   rl   )r   ra   r`   s      r   r*  #BasicUnicodeTest.test_decoder_state	  sL    -H;;00ahhx>PQ00ahhx>PQ .r   r   )r*   r+   r,   r-   rQ  r   cpython_onlyunittestskipIfrY  r\  rc  rf  ri  ro  r*  r/   r   r   r   r<  r<  j  s\    NC` __%-/MN#C O #CJ*:2
1Rr   r<  c                   &    \ rS rSrS rS rS rSrg)CharmapTesti	  c                    U R                  [        R                  " SSS5      S5        U R                  [        R                  " SSS5      S5        U R                  [        [        R                  SSS5        U R                  [        [        R                  SSS5        U R                  [        R                  " SS	S5      S
5        U R                  [        R                  " SS	S5      S
5        U R                  [        R                  " SSS5      S5        U R                  [        R                  " SSS5      S5        U R                  [        R                  " SSS5      S5        U R                  [        R                  " SSS5      S5        [        [        S5      5      nU R                  [        R                  " USS5      S[        U5      45        g )N    rt   r!  r!  r     􏿿bcr{  r  abu   ab￾r   u   ab�r  r   zab\x02r  r   r}  r  r:  rr   )r
   rW   charmap_decoder   r   rw   rV   r   r   allbytess     r   test_decode_with_string_map'CharmapTest.test_decode_with_string_map	  s   !!/8UC	

 	!!/8^L	

 	,!!?Hd	
 	,!!?Hj	
 	!!/9dC	

 	!!/9jI	

 	!!/3EtL	

 	!!/3EzR	

 	!!/8TB	

 	!!/8ZH	

 s$!!(Hb9X	
r   c                    U R                  [        R                  " SSSSSS.5      S5        U R                  [        R                  " SSSS	S
S.5      S5        U R                  [        R                  " SSSSSS.5      S5        U R                  [        R                  " SSSSSS.5      S5        U R                  [        [        R                  SSSSS.5        U R                  [        [        R                  SSSSS S.5        U R                  [        [        R                  SSSSSS.5        U R                  [        R                  " SSSSS.5      S5        U R                  [        R                  " SSSSS S.5      S5        U R                  [        R                  " SSSSSS.5      S5        U R                  [        R                  " SSSSS.5      S5        U R                  [        R                  " SSSSS S.5      S5        U R                  [        R                  " SSSSSS.5      S5        U R                  [        R                  " SSSSS.5      S5        U R                  [        R                  " SSSSS S.5      S5        U R                  [        R                  " SSSSSS.5      S5        [        [        S5      5      nU R                  [        R                  " US0 5      S[        U5      45        U R                  [        S[        R                  SSSS	SS.5        U R                  [        S[        R                  SSSS	SS.5        g )Nry  rt   r   r   r   r   rU   r    rz  AaBbCc)AaBbCcr     􏿿r|  rr   r  r   rU   u   ￾r   r~  r   r  r   r:  z.character mapping must be in range\(0x110000\)r   iɚ;)
r
   rW   r  r   r   rw   rV   r   r  r  r  s     r   test_decode_with_int2str_map(CharmapTest.test_decode_with_int2str_mapD	  st   !!/8&)cc":<	
 	!!/8&*t"=?	
 	!!/8&2ss"CE	
 	!!/8&)cb"9;	
 	,!!?H'*s#3	

 	,!!?H'*st#<	
 	,!!?H'*sx#@	

 	!!/9&)c"24	
 	!!/9&)cd";=	
 	!!/9&)ch"?A	
 	!!/3E&)c"24	
 	!!/3E&)cd";=	
 	!!/3E&)ch"?A	
 	!!/8&)c"24	
 	!!/8&)cd";=	
 	!!/8&)ch"?A	
 s$!!(Hb9X	

 	y>!!X34B'?	
 	y>!!X34I'F	
r   c           
         [        S5      n[        S5      n[        S5      nU R                  [        R                  " SSXUS.5      S5        U R                  [        R                  " SSSX#S.5      S	5        U R                  [        R                  " SS[        R
                  X#S.5      [        [        R
                  5      S
-   S45        U R                  [        [        R                  SS[        R
                  S-   X#S.5        U R                  [        [        R                  SSXS.5        U R                  [        [        R                  SSXSS.5        U R                  [        R                  " SSXS.5      S5        U R                  [        R                  " SSXSS.5      S5        U R                  [        R                  " SSXS.5      S5        U R                  [        R                  " SSXSS.5      S5        U R                  [        R                  " SSXS.5      S5        U R                  [        R                  " SSXSS.5      S5        g )Nr   r   r   ry  rt   r  rz  i r|  bcr  rU   r  i  r   r~  r   r  r   r  )
ordr
   rW   r  r3  
maxunicodechrr   r  r   )r   r   r   r   s       r   test_decode_with_int2int_map(CharmapTest.test_decode_with_int2int_map	  s>   HHH!!/8&'!"46	
 	!!/8&.1";=	
 	!!/8&)nn"AC 4'+	
 	)!!?H'*~~'9a#F	

 	,!!?H'(<	

 	,!!?H'(6#:	

 	!!/9&',0	
 	!!/9&'&"9;	
 	!!/3E&',0	
 	!!/3E&'&"9;	
 	!!/8&',0	
 	!!/8&'&"9;	
r   r   N)r*   r+   r,   r-   r  r  r  r/   r   r   r   rw  rw  	  s    5
nr
hI
r   rw  c                        \ rS rSrS rS rSrg)WithStmtTesti
  c                 
   [         R                  " S5      n[        R                  " USS5       nU R	                  UR                  5       S5        S S S 5        U R                  UR                  5        g ! , (       d  f       N*= f)Nr  r  r  r  )r   r   rW   rd  r
   rO   r^   closedr  s      r   test_encodedfileWithStmtTest.test_encodedfile
  sX    JJ{#9g6"RWWY0 7! 76s   !A44
Bc                 (   [         R                  " S5      n[        R                  " S5      n[        R                  " XR
                  UR                  S5       nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nr  r  rt      ü)	r   r   rW   r   rq  streamreaderstreamwriterr
   rO   )r   r   r<   srws       r   test_streamreaderwriter$WithStmtTest.test_streamreaderwriter
  sl    JJ{#}}W%&&q*;*;'+'8'8(DGJSXXZ0D D Ds   !B
Br   N)r*   r+   r,   r-   r  r  r/   r   r   r   r  r  
  s    "1r   r  c                        \ rS rSrS rS rSrg)	TypesTesti
  c                    [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  /n[        [         S5      (       a  UR                  [         R                  5        U H  nU R!                  ["        US5        M     g )Nmbcs_decoder   )rW   r  utf_8_decoder  r  r  r  rC  rT  utf_32_ex_decodelatin_1_decodeascii_decoder  hasattrr   r  r   r  )r   decodersr  s      r   test_decode_unicodeTypesTest.test_decode_unicode
  s     ######  ######!!!!
 6=))OOF../Gi%8  r   c                     U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R	                  [
        [        R                  S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S	5        U R	                  [
        [        R                  S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S	5        g )
Nz\u1234)u   ሴr   s   \u1234
   \U00110000z
\U00110000r   r   r   r   )z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30r   )r
   rW   unicode_escape_decoderaw_unicode_escape_decoder   r   r  s    r   test_unicode_escapeTypesTest.test_unicode_escape)
  s%    	55i@-P55jA=Q99)DmT99*E}U,f.J.JN[55mYOQ_`55mEWXJ	L 	,f.N.NP^_99-SUcd99-I[\J	Lr   r   N)r*   r+   r,   r-   r  r  r/   r   r   r   r  r  
  s    9*Lr   r  c                   L    \ rS rSrSrSrS rS rS rS r	S r
S	 rS
 rS rSrg)UnicodeEscapeTesti<
  zunicode-escapeNc                     U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        g Nrr   r  r   rr   r   )r
   rW   unicode_escape_encoder  r  s    r   r  UnicodeEscapeTest.test_emptyA
  s8    55b98D55c:GDr   c                     [         R                  n[        SS5       H8  nUS:w  d  M  U R                  U" [	        U5      5      [        U/5      S45        M:     g )Nrs     \   rU   )rW   r  rV   r
   r  rw   r   rk   r   s      r   test_raw_encode!UnicodeEscapeTest.test_raw_encodeE
  sF    --r3AH}  A%*aA  r   c                     [         R                  n[        S5       H>  nUS:w  d  M  U R                  U" [	        U/5      S-   5      [        U5      S-   S45        M@     g )Nr:  r  rS  0r    )rW   r  rV   r
   rw   r  rT  s      r   test_raw_decode!UnicodeEscapeTest.test_raw_decodeK
  sO    --sAH}  qc
T(9!:SVc\1<MN r   c                    [         R                  n[        X5      nU" SS5        U" SS5        U" SS5        U" SS5        [        S	5       H7  n[	        U5      S
;  d  M  U" [	        U5      SU-  R                  5       5        M9     [        SS5       H&  nU" [	        U5      SU-  R                  5       5        M(     U" SS5        U" SS5        g )N	s   \tr   s   \nr   s   \r\s   \\rs  z	
r   r  r:     €   \u20ac   𝄠
   \U0001d120)rW   r  r   rV   r  rk   r   rk   r   r   s       r   test_escape_encode$UnicodeEscapeTest.test_escape_encodeQ
  s    --t,dFdFdFdFrA1vX%c!fy1}4467  sCA#a&9q=0023 !h
#lN+r   c                    [         R                  n[        X5      nU" SS5        U" SS5        U" SS5        U" SS5        U" S	S
5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS
5        U" SS5        U" SS5        U" SS5        U" SS5        U" S S!5        U" S"S5        U" S#S!5        U" S$S%5        U" S&S'5        g )(NrX  r   rZ  z["]r[  z[']r\  z[\]r]  z[]r^  z[]r_  z[	]r`  z[
]ra  z[]rb  z[]rc  z[]rd  re  z[8]rf  z[!]rg  z[!8]rh  z[A]ri  z[A0]rj  rk  r  r  r  r  )rW   r  r   rl  s      r   test_escape_decode$UnicodeEscapeTest.test_escape_decode`
  s    --t,ihhhh!h!h!h!h!h!h!h!i#ij&!j% k6"j% k6"j(#nl+r   c           
      B   [         R                  n[        X5      n[        SS5       H  n[	        U/5      nUS;  a:  U R                  [        SU-  5         U" SU-   S[        U5      -   5        S S S 5        UR                  5       S;  d  Me  U R                  [        SUS-
  -  5         U" SUR                  5       -   S[        US-
  5      -   5        S S S 5        M     U R                  [        S	5         U" S
S5        S S S 5        U R                  [        5         U" SS5        S S S 5        U R                  [        S5       nU" SS5        S S S 5        [        SS5       H:  nU R                  [        SU-  5         U" SU-  [        U5      5        S S S 5        M<     U R                  [        S5         U R                  U" SS5      S5        S S S 5        U R                  [        S5         U R                  U" SS5      S5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GN>= f! , (       d  f       GN)= f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       N= f! , (       d  f       g = f)Nrp  rq  s	   abfnrtuvxrr  rR  r  s   UNrs  rt  ru  z\8rv  z\9rw  rx  u   \úr:  r;  ry  rz  r|  r}  r   )z\zr  r~  r  )   Łr   )rW   r  r   rV   rw   r  r  r  r  r  r
   r  s         r   test_decode_warnings&UnicodeEscapeTest.test_decode_warningsy
  sC   --t,r3Aqc
A$**+=9A=?%!)TCF]3? wwy%**+=9QrTBD%!'')+TC"I-=>D D   ""#502&% 2 01&%  2""#5358:)X&5 uf%A&&'9;a?Agk3q6*A A &
 ""#502VHh7D2 ""#58:VJ9=I: :/? ?D D2 2 215 5A A2 2: :s`   H)*H#5
H6
I
I>I,6I?.J
H 	#
H3	6
I
I
I),
I<	?
J
Jc           	      4   [         R                  nS H  u  p#[        U5       H  nU R                  [        USU-   SU-  -   5        U R                  [        USU-   SU-  -   S-   5        SU-   SU-  -   S-   U-   SU-  -   nU R                  U" US5      S[        U5      45        U R                  U" US	5      S
[        U5      45        M     M     U R                  [        US5        U R                  U" SS5      S5        U R                  U" SS	5      S5        g )N))   xr       ur     Ur  rR  rS     [\   ]   ]\r   r   r      [�]�r  rr   r   r  )rW   r  rV   r   r   r
   r   r   rY   r   rc   rb   r   s         r   test_decode_errors$UnicodeEscapeTest.test_decode_errors
  s   --3DA1X!!"4f"'!)d1f"46!!"4f"(1*tAv"5"<>zDF*V3a7$q&@  h!7$D	9JK  i!8"2CI!>@  4 	,fnE98D	:NKr   c                 ,    U R                  S/ SQ5        g )N    	
\ÿ￿𐀀) rr   rr   rr   r  r   	r   	
r   	
r   	
\r  r  r      	
\ÿr  r  r  r  r  
    	
\ÿ￿r  r  r  r  r  r  r  r  r  r  r  r  s    r   r  UnicodeEscapeTest.test_partial
  r  r   r   )r*   r+   r,   r-   r`   r   r  r  r  r  r  r  r  r  r/   r   r   r   r  r  <
  s;    HEBO,,2JBL %
r   r  c                   F    \ rS rSrSrSrS rS rS rS r	S r
S	 rS
 rSrg)RawUnicodeEscapeTesti
  zraw-unicode-escapeNc                     U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        g r  )r
   rW   raw_unicode_escape_encoder  r  s    r   r  RawUnicodeEscapeTest.test_empty
  s8    99"=xH99#>Hr   c                     [         R                  n[        S5       H0  nU R                  U" [	        U5      5      [        U/5      S45        M2     g )Nr:  rU   )rW   r  rV   r
   r  rw   r  s      r   r  $RawUnicodeEscapeTest.test_raw_encode
  s=    11sAVCF^eQCj!_= r   c                     [         R                  n[        S5       H6  nU R                  U" [	        U/5      S-   5      [        U5      S-   S45        M8     g )Nr:  rS  r  r    )rW   r  rV   r
   rw   r  rT  s      r   r  $RawUnicodeEscapeTest.test_raw_decode
  sH    11sAVE1#J$56Q#q8IJ r   c                     [         R                  n[        X5      n[        S5       H-  nUS;  d  M  U" S[	        U5      -   S[        U/5      -   5        M/     U" SS5        U" SS5        g )	Nr:     uUr  rR  r  r  r  r  )rW   r  r   rV   r  rw   r  s       r   r  'RawUnicodeEscapeTest.test_escape_encode
  s_    11t,sA~dSVmUUA3Z%78  	h
#lN+r   c                     [         R                  n[        X5      n[        S5       H-  nUS;  d  M  U" S[	        U/5      -   S[        U5      -   5        M/     U" SS5        U" SS5        g )	Nr:  r  rR  r  r  r  r  r  )rW   r  r   rV   rw   r  )r   rY   r   r   s       r   r  'RawUnicodeEscapeTest.test_escape_decode
  s_    11t,sA~eeQCj($Q-8  	j(#nl+r   c           	      4   [         R                  nS H  u  p#[        U5       H  nU R                  [        USU-   SU-  -   5        U R                  [        USU-   SU-  -   S-   5        SU-   SU-  -   S-   U-   SU-  -   nU R                  U" US5      S[        U5      45        U R                  U" US	5      S
[        U5      45        M     M     U R                  [        US5        U R                  U" SS5      S5        U R                  U" SS	5      S5        g )N)r  r  rR  rS  r  r  r  r   r   r   r  r  r  r  )rW   r  rV   r   r   r
   r   r  s         r   r  'RawUnicodeEscapeTest.test_decode_errors
  s   11(DA1X!!"4f"'!)d1f"46!!"4f"(1*tAv"5"<>zDF*V3a7$q&@  h!7$D	9JK  i!8"2CI!>@  ) 	,fnE98D	:NKr   c                 ,    U R                  S/ SQ5        g )Nr  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  s    r   r  !RawUnicodeEscapeTest.test_partial  s    .	
r   r   )r*   r+   r,   r-   r`   r   r  r  r  r  r  r  r  r/   r   r   r   r  r  
  s3    #HI>
K
,,L 
r   r  c                       \ rS rSrS rSrg)EscapeEncodeTesti$  c                 h   / SQnU HC  u  p#U R                  US9   U R                  [        R                  " U5      U5        S S S 5        ME     U R	                  [
        [        R                  S5        U R	                  [
        [        R                  [        S5      5        g ! , (       d  f       M  = f)N))r   r  )   foobar)r  r   )s	   spam eggs)s   spam\x00eggsr  )s   a'b)s   a\'br  )s   b\c)s   b\\cr  )s   c
d)s   c\ndr  )s   de)s   d\rer  )s   fg)s   f\x7fgr  r  r   r  )r  r
   rW   escape_encoder   r  rO  )r   r  r   outputs       r   r  #EscapeEncodeTest.test_escape_encode&  s    	
 "LD4(  !5!5d!;VD )( " 	)V%9%96B)V%9%99W;MN )(s   'B""
B1	r   N)r*   r+   r,   r-   r  r/   r   r   r   r  r  $  s    Or   r  c                   ,    \ rS rSrS rS rS rS rSrg)SurrogateEscapeTesti8  c                    U R                  SR                  SS5      S5        U R                  SR                  SS5      S5        U R                  SR                  SS5      S5        U R                  SR                  SS5      S5        g )N   foobarr  r  	   foobars   u	   r
   rY   rk   r  s    r   	test_utf8SurrogateEscapeTest.test_utf8:  s    --g7HI'	)..w8IJ&	( 	//9JK-	/-44W>OP(	*r   c                     U R                  SR                  SS5      S5        U R                  SR                  SS5      S5        g )Nr  r  r  r  r  r  s    r   r  SurrogateEscapeTest.test_asciiF  sD    --g7HI'	)..w8IJ&	(r   c                     U R                  SR                  SS5      S5        U R                  SR                  SS5      S5        g )Ns   foobarz
iso-8859-3r  u	   foobarr  r  s    r   test_charmap SurrogateEscapeTest.test_charmapM  sD    --l<MN'	)..|=NO&	(r   c                 H    U R                  SR                  SS5      S5        g )Nu   r  r  s   r  r  s    r   test_latin1SurrogateEscapeTest.test_latin1T  s$    9@@L]^0	2r   r   N)	r*   r+   r,   r-   r  r  r  r  r/   r   r   r   r  r  8  s    
*((2r   r  c                       \ rS rSrS rSrg)BomTestiZ  c                    SnSnU R                  [        R                  [        R                  5        U GH  n[        R
                  " [        R                  SUS9 nUR                  U5        UR                  U5        UR                  S5        U R                  UR                  5       US-  5        UR                  S5        U R                  UR                  5       US-  5        S S S 5        [        R
                  " [        R                  SUS9 nUR                  US   5        U R                  UR                  5       S5        UR                  S5        UR                  U5        UR                  S5        U R                  UR                  5       U5        S S S 5        [        R
                  " [        R                  SUS9 nUR                  R                  US   5        U R                  UR                  R                  5       S5        UR                  R                  S5        UR                  R                  U5        UR                  S5        U R                  UR                  5       U5        S S S 5        [        R
                  " [        R                  SUS9 nUR                  U5        UR                  UR                  5       5        UR                  U5        UR                  S5        U R                  UR                  5       US-  5        S S S 5        [        R
                  " [        R                  SUS9 nUR                  R                  U5        UR                  R                  UR                  R                  5       5        UR                  R                  U5        UR                  S5        U R                  UR                  5       US-  5        S S S 5        GM     g ! , (       d  f       GN= f! , (       d  f       GNo= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GM  = f)N
1234567890)rZ  r  r  r   r7  rN  r{  rl  r   r    )rm  r   rn  ro  rW   rp  rI   ra  r
   rO   assertNotEqualtellr   )r   r   r  r`   r   s        r   
test_seek0BomTest.test_seek0[  s    		(()*:*:;HY--thG1q	  4!84q	  4!84 H Y--thG1Q ##AFFHa0q	q	  40 H Y--thG1tAw'##AHHMMOQ7a t$q	  40 H Y--thG1qvvx q	  4!84 H Y--thG1t$ahhmmo.t$q	  4!84 HGO GG HG HG HG HGsA   BO2BPB0P$A6P(BP:2
P	
P	
P%	(
P7	:
Q
	r   N)r*   r+   r,   r-   r   r/   r   r   r   r  r  Z  s    55r   r  )base64_codecuu_codecquopri_codec	hex_codecr  base_64uu)quopriquoted_printablequotedprintablehexrot13)r"  r#  r$  r%  rot_13
zlib_codecrv   zlib	bz2_codecbz2c                       \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  " \S
5      S 5       rS rS rS rS rSrg)TransformCodecTesti  c                    [        [        S5      5      n[         H  nU R                  US9   [        R
                  " U5      " U5      u  p4U R                  U[        U5      5        [        R                  " U5      " U5      u  pTU R                  U[        U5      5        U R                  XQ5        S S S 5        M     g ! , (       d  f       M  = f)Nr:  rl  )	rw   rV   bytes_transform_encodingsr  rW   rA  r
   r   rF  )r   binputr`   orM   rb   s         r   rQ  TransformCodecTest.test_basics  s    uSz"1Hx0"--h7?	  s6{3"--h7:	  s1v.  + 10 200s   BB>>
C	c                 D   [          H  nU R                  US9   [        R                  " SU5      n[        R                  " U5      " [
        R                  " U5      5      nUR                  5       nU R                  US5        S S S 5        M     g ! , (       d  f       M  = fNrl  r  )	r5  r  rW   rk   ru   r   r   rO   r
   r   r`   sinr   souts        r   	test_readTransformCodecTest.test_read  sq    1Hx0mmGX6))(3BJJsOD{{}  w/	 10 200   A*B
B	c                 D   [          H  nU R                  US9   [        R                  " SU5      n[        R                  " U5      " [
        R                  " U5      5      nUR                  5       nU R                  US5        S S S 5        M     g ! , (       d  f       M  = fr:  )	r5  r  rW   rk   ru   r   r   r   r
   r;  s        r   r    TransformCodecTest.test_readline  sr    1Hx0mmGX6))(3BJJsOD(  w/	 10 200r@  c                    Sn[          H  nU R                  US9   Un[        U5      n[        R                  " X25      n[        R                  " XB5      nU R                  XS5        [        U5      n[        R                  " X25      nU R                  X15        [        R                  " XB5      nU R                  Xc5        S S S 5        M     g ! , (       d  f       M  = f)Ns   12345rl  )r5  r  
memoryviewrW   rk   r
   rY   )r   originalr`   r   viewview_encodedview_decodeds          r   test_buffer_api_usage(TransformCodecTest.test_buffer_api_usage  s      1Hx0!$'}}T4%}}T<  4!$'}}T4  0%}}T<  4 10 200s   B$C
C	c                 h   Sn[          H  nU R                  US9   SnUR                  U5      nU R                  [        U5       nUR                  U5        S S S 5        U R                  WR                  R                  5        S S S 5        M     g ! , (       d  f       N@= f! , (       d  f       M  = f)Nzbad input typerl  zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	r5  r  formatr  r*  rk   assertIsNoner}  	__cause__)r   	bad_inputr`   fmtr  failures         r   /test_text_to_binary_denylists_binary_transformsBTransformCodecTest.test_text_to_binary_denylists_binary_transforms  s    $	1Hx0Kjj*++K=$$X. >!!'"3"3"="=> 10 2
 >=	 10s#   *B"B-B"
BB""
B1	c                     SnU R                  [        U5         SR                  S5        S S S 5        g ! , (       d  f       g = f)NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager-  )r  r*  rk   r   r  s     r   -test_text_to_binary_denylists_text_transforms@TransformCodecTest.test_text_to_binary_denylists_text_transforms  s4    C##K5%,,X6 655s	   4
Ac                    Sn[          H  nU R                  US9   [        R                  " X5      nSnUR	                  U5      nU R                  [        U5         UR                  U5        S S S 5        U R                  [        U5         [        U5      R                  U5        S S S 5        S S S 5        M     g ! , (       d  f       NT= f! , (       d  f       N,= f! , (       d  f       M  = f)Ns6   encode first to ensure we meet any format restrictionsrl  zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	r5  r  rW   rk   rL  r  r*  rY   rO  )r   r   r`   encoded_datarP  r  s         r   /test_binary_to_text_denylists_binary_transformsBTransformCodecTest.test_binary_to_text_denylists_binary_transforms  s     I1Hx0%}}T<Kjj*++K= ''1 >++K=l+228< > 10 2 >=== 10s<   A CB;-CC&C;
C	C
CC
C,	c                 P   S[        S5      4 Hr  nU R                  US9   SnU R                  [        U5       nUR	                  S5        S S S 5        U R                  WR                  R                  5        S S S 5        Mt     g ! , (       d  f       N@= f! , (       d  f       M  = f)Ns	   immutables   mutable)rO  zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr-  )rO  r  r  r*  rY   rM  r}  rN  )r   rO  r  rQ  s       r   -test_binary_to_text_denylists_text_transforms@TransformCodecTest.test_binary_to_text_denylists_text_transforms  s    &	*(=>I	2K++K=$$X. >!!'"3"3"="=> 32 ? >= 32s"   BB-B
BB
B%	zRequires zlib supportc                     SnU R                  [        R                  5       n[        R                  " SS5        S S S 5        U R                  UWR                  R                  S   5        g ! , (       d  f       N8= f)Nz'decoding with 'zlib_codec' codec failed   hellor.  r   )r   r/  errorrW   rY   r
   r}  	__notes__)r   r  rQ  s      r   test_custom_zlib_error_is_noted2TransformCodecTest.test_custom_zlib_error_is_noted  sZ     8tzz*gMM(L1 +g//99!<= +*   A,,
A:c                     SS K nSnU R                  UR                  5       n[        R                  " SS5        S S S 5        U R                  UWR                  R                  S   5        g ! , (       d  f       N8= f)Nr   z&decoding with 'hex_codec' codec failedr`  r%  )binasciir   ErrorrW   rY   r
   r}  rb  )r   rg  r  rQ  s       r   test_custom_hex_error_is_noted1TransformCodecTest.test_custom_hex_error_is_noted  s[    6x~~.'MM(K0 /g//99!<= /.re  c                 H   [         R                  5        Hx  u  p[        R                  " U5      R                  nU HM  nU R                  US9   [        R                  " U5      nU R                  UR                  U5        S S S 5        MO     Mz     g ! , (       d  f       Me  = f)N)alias)transform_aliasesitemsrW   r   r7  r  r
   )r   
codec_namealiasesexpected_namerl  r<   s         r   test_aliasesTransformCodecTest.test_aliases  sw    #4#:#:#<J"MM*5::M \\\.!==/D$$TYY> /. ! $= /.s   3B
B!c                     [         R                  " SS5      nU R                  US5        SnU R                  [         R                  " US5      U5        g )Ns   space tab	eol 
zquopri-codecs   space=20tab=09eol=20
s   space tab eol
)rW   rk   r
   rY   )r   r   	unescapeds      r   test_quopri_stateless(TransformCodecTest.test_quopri_stateless&  sD    -- 4nE";<&	y.A9Mr   c                 P    U R                  [        [        R                  SS5        g )Nr   zuu-codec)r   rz  rW   rY   r  s    r   test_uu_invalid"TransformCodecTest.test_uu_invalid.  s    *fmmS*Er   r   N)r*   r+   r,   r-   rQ  r>  r   rI  rR  rV  rZ  r]  rt  
skipUnlessr/  rc  ri  rr  rv  ry  r/   r   r   r   r3  r3    sb    	,005$
?7=? 67> 8>>?NFr   r3  c                 ,    [         R                  U 5      $ r	   )_TEST_CODECSget)ro  s    r   _get_test_codecr  :  s    J''r   c                       \ rS rSrS rS rS r\R                  S 5       r	S r
\4S jrS rS	 rS
 rS rS rS rS rS rS rS rS rSrg)ExceptionNotesTesti>  c                     SU l         [        R                  " [        5        U R	                  [        R
                  [        5        [        U l        g )Nexception_notes_test)ro  rW   r-  r  rm  r5  RuntimeErrorobj_to_raiser  s    r   r  ExceptionNotesTest.setUp@  s3    0())?; )r   c                     [         R                  U R                  S 5        [        R                  R                  U R                  S 5        g r	   )r}  popro  rl  _cacher  s    r   tearDownExceptionNotesTest.tearDownN  s0    $/T__d3r   c                 h    [         R                  " XU R                  S9nU[        U R                  '   g )N)r7  )rW   rW  ro  r}  )r   rk   rY   r  s       r   	set_codecExceptionNotesTest.set_codecS  s)    %%f+/??<
(2T__%r   c              #   :  #    SR                  XR                  5      nU R                  U5       nUv   S S S 5        U R                  UWR                  R
                  S   5        UR                  R
                  R                  5         g ! , (       d  f       N\= f7f)Nz{} with {!r} codec failedr   )rL  ro  r   r{  r}  rb  clear)r   	operationexc_typer  full_msgcaughts         r   assertNotedExceptionNotesTest.assertNotedX  su     /66__.x(FL )h 0 0 : :1 =>""((* )(s   -BB
AB

BBc                     U R                   er	   )r  )r   argskwdss      r   	raise_objExceptionNotesTest.raise_obja  s    r   c                    Xl         U R                  U R                  U R                  5        U R                  SX25         SR	                  U R
                  5        S S S 5        U R                  SX25         [        R                  " SU R
                  5        S S S 5        U R                  SX25         SR                  U R
                  5        S S S 5        U R                  SX25         [        R                  " SU R
                  5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nm= f! , (       d  f       g = f)Nr`   	str_inputdecoding   bytes input)r  r  r  r  rk   ro  rW   rY   )r   r  r  r  s       r   
check_noteExceptionNotesTest.check_notee  s    (t~~t~~6j(8t/ 9j(8MM+t7 9j(8!!$//2 9j(8MM.$//: 98 98888888s/   D5"D#1D4'"E
D #
D14
E
Ec                 0    U R                  [        S5        g )Nrr   r  r  r  s    r   test_raise_by_type%ExceptionNotesTest.test_raise_by_typeq  s    b)r   c                 >    SnU R                  [        U5      U5        g )NThis should be notedr  rU  s     r   test_raise_by_value&ExceptionNotesTest.test_raise_by_valuet  s    $S)3/r   c                 V    Sn " S S[         5      nU R                  U" U5      X5        g )Nr  c                       \ rS rSrSrSrg)TExceptionNotesTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErroriz  r   N)r*   r+   r,   r-   	__slots__r/   r   r   r   MyRuntimeErrorr  z  s    Ir   r  r  r  r   r  r  s      r   )test_raise_grandchild_subclass_exact_size<ExceptionNotesTest.test_raise_grandchild_subclass_exact_sizex  s&    $	\ 	s+SAr   c                 V    Sn " S S[         5      nU R                  U" U5      X5        g )Nr  c                       \ rS rSrSrg)SExceptionNotesTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrori  r   N)r*   r+   r,   r-   r/   r   r   r   r  r    s    r   r  r  r  s      r   (test_raise_subclass_with_weakref_support;ExceptionNotesTest.test_raise_subclass_with_weakref_support~  s&    $	\ 	s+SAr   c                 F     " S S[         5      nU R                  US5        g )Nc                       \ rS rSrS rSrg)9ExceptionNotesTest.test_init_override.<locals>.CustomIniti  c                     g r	   r   r  s    r   rE   BExceptionNotesTest.test_init_override.<locals>.CustomInit.__init__  s    r   r   N)r*   r+   r,   r-   rE   r/   r   r   r   
CustomInitr    s    r   r  rr   r  )r   r  s     r   test_init_override%ExceptionNotesTest.test_init_override  s    	 	 	
B'r   c                 F     " S S[         5      nU R                  US5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )7ExceptionNotesTest.test_new_override.<locals>.CustomNewi  c                 "   > [         TU ]  U 5      $ r	   )r  __new__)clsr  s    r   r  ?ExceptionNotesTest.test_new_override.<locals>.CustomNew.__new__  s    ws++r   r   )r*   r+   r,   r-   r  r/   r  r  s   @r   	CustomNewr    s    , ,r   r  rr   r  )r   r  s     r   test_new_override$ExceptionNotesTest.test_new_override  s    	, 	, 		2&r   c                 n    Sn[        U5      nSUl        U R                  USR                  U5      5        g )Nr  rU   z^{}$)r  attrr  rL  )r   r  r  s      r   test_instance_attribute*ExceptionNotesTest.test_instance_attribute  s/    $3V]]3/0r   c                 :    U R                  [        S5      S5        g )NrU   1r  r  s    r   test_non_str_arg#ExceptionNotesTest.test_non_str_arg  s    Q-r   c                 B    SnU R                  [        SSS5      U5        g )Nz^\('a', 'b', 'c'\)$r   r   r   r  )r   msg_res     r   test_multiple_args%ExceptionNotesTest.test_multiple_args  s    'S#s3V<r   c                    SR                  U R                  5      nU R                  [        U5         SR	                  U R                  5        S S S 5        U R                  [        U5         [
        R                  " SU R                  5        S S S 5        U R                  [        U5         SR                  U R                  5        S S S 5        U R                  [        U5         [
        R                  " SU R                  5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nq= f! , (       d  f       g = f)Nz^unknown encoding: {}$z	str inputr  )rL  ro  r  r*  rk   rW   rY   rU  s     r   test_codec_lookup_failure,ExceptionNotesTest.test_codec_lookup_failure  s    &--doo>##K5t/ 6##K5MM+t7 6##K5!!$//2 6##K5MM.$//: 65 65555555s/   D,"D",D3&"E
D"
D03
E
Ec                    S nS nU R                  X5        [        R                  " S U R                  5      nU R	                  US5        [        R
                  " S U R                  5      nU R	                  US5        SnUR                  U R                  5      nU R                  [        U5         SR                  U R                  5        S S S 5        SnUR                  U R                  5      nU R                  [        U5         SR                  U R                  5        S S S 5        g ! , (       d  f       Nf= f! , (       d  f       g = f)	Nc                      g)N)
not bytes!r   r   r  r  s     r   encode_to_strPExceptionNotesTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_str  s    "r   c                      g)N)   not str!r   r   r  s     r   decode_to_bytesRExceptionNotesTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytes  s    !r   r  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  rW   rk   ro  r
   rY   rL  r  r  )r   r  r  r   decodedrP  r  s          r   &test_unflagged_non_text_codec_handling9ExceptionNotesTest.test_unflagged_non_text_codec_handling  s    	#	"}6--doo6,/--doo6+.Fjj)##Is3t/ 4Fjj)##Is3!!$//2 43 43
 43s   1D-D>-
D;>
E)ro  r  N)r*   r+   r,   r-   r  r  r  
contextlibcontextmanagerr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r/   r   r   r   r  r  >  st    )4
3
 + +  6B 
;*0BB('1.=
	;3r   r  win32z"code pages are specific to Windowsc                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS r\R"                  " SSSS9S 5       r\R"                  " SSSS9S 5       rSrg)CodePageTesti    c                 4   U R                  [        [        R                  SS5        U R                  [        [        R                  SS5        U R                  [
        [        R                  SS5        U R                  [
        [        R                  SS5        g )Nr   r      arq  )r   rz  rW   code_page_encodecode_page_decodeOSErrorr  s    r   test_invalid_code_page#CodePageTest.test_invalid_code_page  sj    *f&=&=r3G*f&=&=r4H'6#:#:CE'6#:#:CFr   c           	      
   U R                  [        S[        R                  SS5        U R                  [        S[        R
                  SSSS5        U R                  [        S[        R
                  U R                  SSS5        g )	Nr       ÿs    rt   Tcp65001r#  )r  r   rW   r  r   r  CP_UTF8r  s    r   test_code_page_name CodePageTest.test_code_page_name  sp    17##S&	217##S+x	G19##T\\7Hd	Lr   c                    U H  u  p4nUbz   [         R                  " XUS5      nU R	                  WS   UU< SU< SU< S	US   < S
U< 3	5        U R                  US   S5        U R                  US   [        U5      5        M  U R                  [        [         R                  XUS5        M     g ! [         a+  nU R                  SU< SU< SU< SU< 35         S nANS nAff = f)NTzUnable to decode z	 from "cp" with errors=: r   z.decode("cp", )= != rU   )	rW   r  r   failr
   assertGreaterEqualassertLessEqualr   r   )r   r9   r  r  r  r  r  errs           r   check_decodeCodePageTest.check_decode  s    %*!C#H$55bvtLG   XB
H>? ''
A6$$WQZS:!!"4++RfdD &+ * HII14b&#G H HHs   B22
C'<!C""C'c                    U H  u  p4nUbd   [         R                  " XU5      nU R	                  WS   UU< SU< SU< SUS   < S	U< 3	5        U R	                  US
   [        U5      5        Mm  U R                  [        [         R                  XU5        M     g ! [         a+  nU R                  SU< SU< SU< SU< 35         S nANS nAff = f)NzUnable to encode z to "cpr  r  r   z.encode("cpr  r  r  rU   )rW   r  r   r   r
   r   r   )r   r9   r  textr  r  r   r  s           r   check_encodeCodePageTest.check_encode  s    &+"D(#I$55bGG   XRX?@   SY7!!"4++Rv? ', * III15r63H I IIs   B
C%!CCc                 L    U R                  SS5        U R                  SS5        g )Nr  )r!  rt   r  )   ｄ騾rt      )r  rt   N)r)  r   rY  )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   rt   N)   []r  r$  )r  r   N)r  rt   r!  )r  rt   r  )r$  rt   N)r$  r   r   )r$  r   u   [�])r$  r   z[\xff])r$  r  r  )r$  r   N)    abcrt   N)r  r   z abc)r  r   u   � abc)r  r   z\x81 abcr  r  r  s    r   
test_cp932CodePageTest.test_cp932  s.    #  
 	  	#  
 	r   c                 L    U R                  SS5        U R                  SS5        g )Ni  )r  )   é€rt      )r  rt   r#  )r  rt   N)r  r   r   )r  r      L)   r     )r  r   N)r  )r  rt   r  )r#  rt   r  r  r  s    r   test_cp1252CodePageTest.test_cp1252  s.    $ 
!
 
	 	$ !
 	r   c                 P    SnU R                  US5        U R                  US5        g )N  )r  )r  rt      +AOkgrA-)r  rt      +2//f/w-)r   rt      +3IA-)r   rt      +//0-)r  )r  rt   r  )r  rt   r  )r   rt   r   )r!  rt   r   )s   [+/]rt   r   )r$  rt   r)  r  r   r9   s     r   test_cp_utf7CodePageTest.test_cp_utf7/  s3    " 
 	 	" 	
 		r   c                     U R                  SS5        U R                  U R                  S5        U R                  U R                  S5        g )Nr  ))   r      騾)r&  r   u   �騾))   􏿿r   r  )r(  r   u   �􏿿))	   [􏿿]r   s   [􏿿])r)  r   s   [􏿿?])r  r  r  r  s    r   test_multibyte_encoding$CodePageTest.test_multibyte_encodingC  sM    #  
 	 	$,, )
 	 	$,, )
 	r   c                    [         R                  (       a  [        R                  R	                  S5        SSSSSS/[        SS	5      QS
P7 He  n[        U5      (       a-  U R                  [        R                  " US5      SSU 35        M@  [         R                  (       d  MW  [        SU 35        Mg     U R                  [        R                  " SS5      S5        g )Nr   i,  i-  i.  i1  i3  i5  i  i  r  r  rz  r9   z  skipping cp=r!  )u	   r  )r   verboser3  stdoutrI   rV   r=   r
   rW   r  printr"  s     r   test_code_page_decode_flags(CodePageTest.test_code_page_decode_flagsQ  s     ??JJT"%ue 2%)2+02B $B''  !8!8V!DjTVWYVZR[\???N2$/02 	00V<2	4r   c                 \   [         R                  " SSSS5      nU R                  US5        [         R                  " SSSS5      nU R                  US5        [         R                  " SSSS5      nU R                  US	5        [         R                  " SS
SS5      nU R                  US5        g )Nr     rt   Fr  s   )r'  r    s   )u   騾騾r  r  rz  )rW   r  r
   )r   r  s     r   test_incrementalCodePageTest.test_incrementald  s    ))#w%H'*))#*98*/1 	-0))#*=x*/1 	"56))#*0(*/1 	*-r   c                 :   SnSU 3n[         R                  " SUS9    [        R                  " U5      nU R	                  UR
                  S5        [        R                  " U5         S S S 5        g ! [        R                  " U5        f = f! , (       d  f       g = f)Ni r9   z_winapi.GetACP)return_valuer8  )r   r  rW   r   r
   r7  r5  )r   	code_pager7  codecs       r   test_mbcs_aliasCodePageTest.test_mbcs_aliasw  s~     	I;ZZ(yA(d+  V4!!$' BA
 !!$' BAs"   B2A1B1B		B
Bl        r  F)rM   memusedry_runc                 n   SUS-  S-
  -  S-   nU R                  [        U5      US-   5        [        R                  " SUSS5      nU R                  US   [        U5      5        AU R                  [        US	   5      US   5        U R                  US	   S S
 S5        U R                  US	   SS  S5        g )Ns   01234567r  rU   s
   r    r  r  Tr   r   
0123456701iu(   6701234567r
   r   rW   r  r   rM   r   r  s       r   test_large_inputCodePageTest.test_large_input  s    
 47A+.>?WtAv.))#w8I4PS\2WQZ'!*5CR,7CD):	;r   r   c                 b   SUS-  -  nU R                  [        U5      US-  S-  5        [        R                  " SUSS5      nU R                  US   [        U5      5        AU R                  [        US   5      U5        U R                  US   S S S	5        U R                  US   S
S  S5        g )Ns
   0123456턀r  r   r  r   TrU   r   u   0123456턀01iu   56턀0123456턀r@  rA  s       r   test_large_utf8_input"CodePageTest.test_large_utf8_input  s    
 *T1W5Wtqy2~6))%(DIS\2WQZ$/CR*;<CD)+BCr   r   N)r*   r+   r,   r-   r  r  r  r  r  r  r  r#  r*  r0  r4  r:  r   
bigmemtestrB  rE  r/   r   r   r   r  r    s     GGLD$? B$(4&.&
( U1e<; =;" U1e<D =Dr   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)		ASCIITesti  c                 F    U R                  SR                  S5      S5        g )Nr>  r  s   abc123r  r  s    r   r  ASCIITest.test_encode  s    19=r   c                     S HA  u  pnU R                  XUS9   U R                  UR                  SU5      U5        S S S 5        MC     g ! , (       d  f       MU  = f)N))	   [ÿ€]r   rY  )rM  r   s   [???])rM  r   s   [&#128;&#255;&#8364;])u   [ÿ€򫳞]r   s   [\x80\xff\u20ac\U000abcde]r  r  r  r  r  r  r
   rk   r  s       r   test_encode_errorASCIITest.test_encode_error  s^    .
)D 4'/  1  Wm!D!)+1 1.
1 1   #A		
A	c                     U R                  [        5         SR                  SS5        S S S 5        g ! , (       d  f       g = f)Nu   ÿr  r  r   r   rk   r  s    r   !test_encode_surrogateescape_error+ASCIITest.test_encode_surrogateescape_error  s.    12):; 322	   2
A c                 F    U R                  SR                  S5      S5        g )Nr  r  r!  )r
   rY   r  s    r   r  ASCIITest.test_decode  s    w/7r   c                     S HA  u  pnU R                  XUS9   U R                  UR                  SU5      U5        S S S 5        MC     g ! , (       d  f       MU  = f)Nr  r  r  r  r  s       r   r  ASCIITest.test_decode_error  s^    .
)D 4'/  1  Wm!D!)+1 1.
1 1rR  r   N)
r*   r+   r,   r-   r  rP  rU  r  r  r/   r   r   r   rI  rI    s    >+<
8
+r   rI  c                   ,    \ rS rSrS rS rS rS rSrg)
Latin1Testi  c                     S H>  u  pU R                  XS9   U R                  UR                  S5      U5        S S S 5        M@     g ! , (       d  f       MR  = f)N))r!  r  )u   éÿs   r   r  r  rO  r   r   r  s      r   r  Latin1Test.test_encode  J    
ND 4;  X!6A <;	
 <;   "A
A	c                     S HA  u  pnU R                  XUS9   U R                  UR                  SU5      U5        S S S 5        MC     g ! , (       d  f       MU  = f)N))   [€]r   rY  )re  r   s   [??])u	   [€򫳞]r   s   [\u20ac\U000abcde])re  r   s   [&#8364;&#56448;]rN  r  r  rO  r  s       r   test_encode_errorsLatin1Test.test_encode_errors  s^    .
)D 4'/  1  X}!E!)+1 1.
1 1rR  c                     U R                  [        5         SR                  SS5        S S S 5        g ! , (       d  f       g = f)Nu   €r  r  rT  r  s    r   rU  ,Latin1Test.test_encode_surrogateescape_error  s.    12!!(,=> 322rW  c                     S H>  u  pU R                  XS9   U R                  UR                  S5      U5        S S S 5        M@     g ! , (       d  f       MR  = f)N))r  r!  )r  u   [ÿ]r_  r  r  r`  s      r   r  Latin1Test.test_decode  rb  rc  r   N)	r*   r+   r,   r-   r  rf  rU  r  r/   r   r   r   r]  r]    s    B+?
Br   r]  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
StreamRecoderTesti  c                 z   [         R                  " 5       n[        R                  " S5      n[        R                  " XR
                  UR                  [        R                  R                  [        R                  R                  5      nUR                  SS/5        U R                  UR                  5       S5        g )Nr  r     bs   ab)r   r   rW   r   rr  rk   rY   rl  r  r[  r\  
writelinesr
   r  r   bior9  srs       r   test_writelines!StreamRecoderTest.test_writelines  sw    jjlg&!!#||U\\"+//">">	@\@\^
tTl#/r   c                    [         R                  " 5       n[        R                  " S5      n[        R                  " XR
                  UR                  [        R                  R                  [        R                  R                  5      nSnUR                  UR                  S5      5        U R                  UR                  5       UR                  S5      5        g )Nr  u   àñér  )r   r   rW   r   rr  rk   rY   rl  r6  r[  r\  rI   r
   r  )r   rr  r9  rs  r  s        r   
test_writeStreamRecoderTest.test_write  s    jjlh'!!#||U\\"+//">">	@\@\^ 
X&'W)=>r   c                    [         R                  " SR                  S5      5      n[        R                  " USS5      nU R                  UR                  5       S5        UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        g )	Nzline1
line2
line3
r  r  s   line1
r   s   line2
s   line3
r   )r   r   rk   rW   rd  r
   r   ra  r   rr  rs  s      r   test_seeking_read#StreamRecoderTest.test_seeking_read  s    jj077DEWk:
3


3
3
3,r   c                    [         R                  " SR                  S5      5      n[        R                  " USS5      nUR                  S5        UR                  S5        U R                  UR                  5       S5        UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S	5        U R                  UR                  5       S5        g )
Nz
123456789
r  r  r    s   
abc
s   789
r   s   1
s   abc
)	r   r   rk   rW   rd  ra  rI   r
   r   rz  s      r   test_seeking_write$StreamRecoderTest.test_seeking_write  s    jj--k:;Wk: 	

1

/11r   c                 ,   [         R                  " 5       n[        R                  " S5      n[        R                  " XR
                  UR                  [        R                  R                  [        R                  R                  5      nU R                  [        S5         [        R                  " U5        S S S 5        U R                  [        S5         [        R                  " U5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nr  rr  )r   r   rW   r   rr  rk   rY   rl  r  r[  r\  r  r  r  r  rq  s       r   r  StreamRecoderTest.test_copy  s    jjlg&!!#||U\\"+//">">	@\@\^ ##I?IIbM @##I?MM" @? @???s   C4D4
D
Dc                 &   [        S5      n[        R                  " S5      n[        R                  " XR                  UR
                  [        R                  R                  [        R                  R                  5      n[        [        R                  S-   5       HP  nU R                  US9   U R                  [        S5         [        R                   " X45        S S S 5        S S S 5        MR     g ! , (       d  f       N= f! , (       d  f       Mu  = f)Nr   r  rU   r  rr  )r?   rW   r   rr  rk   rY   rl  r  r[  r\  rV   r  r  r  r  r  r  )r   r}   r9  rs  r  s        r   r  StreamRecoderTest.test_pickle(  s    #Jg&!!!\\5<<"+//">">	@\@\^ 622Q67Eu-++IGLL+ H .- 8GG .-s$   -DC0D0
C>:D
D	r   N)r*   r+   r,   r-   rt  rw  r{  r~  r  r  r/   r   r   r   rm  rm    s     0	?	-2		,r   rm  zneed _testinternalcapi modulec                       \ rS rSr\R
                  " 5       rSrSrSr	SS jr
S rS rS rS	 rS
 rSS jrS rS rS rS rS rSrg)LocaleCodecTesti4  )r  u   ulatin1:§éu   u255:ÿu   UCS:é€􏿿u   surrogates:)s
   blatin1:s   b255:u   c                 2    [         R                  " USU5      $ rL   )_testinternalcapiEncodeLocaleEx)r   r  r  s      r   rk   LocaleCodecTest.encodeA  s     //a@@r   c           	         U R                    HZ  nU R                  US9    UR                  U R                  U5      nU R                  X!5      nU R	                  XC5        S S S 5        M\     g ! [
         ak    U R                  [        5       nU R                  X!5        S S S 5        O! , (       d  f       O= f[        WR                  5      nU R                  US5         Nf = f! , (       d  f       M  = f)N)r  z!encode error: pos=[0-9]+, reason=)STRINGSr  rk   ENCODINGr
   r   r   r  r|  r}  assertRegex)r   r  r  r  r   r  errmsgs          r   check_encode_strings$LocaleCodecTest.check_encode_stringsD  s    LLD4(	8#{{4==&AH #kk$7G$$W7 )( ! * S**<8BD1 988 .F$$V-QR	S )(sE   C$A,"C$,C!B&		C!&
B40.C!C$ C!!C$$
C3	c                 &    U R                  S5        g Nrt   r  r  s    r   test_encode_strict"LocaleCodecTest.test_encode_strictR      !!(+r   c                 &    U R                  S5        g Nr  r  r  s    r   test_encode_surrogateescape+LocaleCodecTest.test_encode_surrogateescapeU      !!"34r   c                      U R                  SS5        U R                  S5        g ! [         a9  n[        U5      S:X  a$  U R                  U R                  < S35         S nANOe S nAff = f)Nrr   r   unsupported error handlerz4 encoder doesn't support surrogatepass error handler)rk   rz  r|  skipTestr  r  r   r  s     r   test_encode_surrogatepass)LocaleCodecTest.test_encode_surrogatepassX  sm    	KKO, 	!!/2  	3x66 1 2< = > > 	   & 
A).A$#A$$A)c                     U R                  [        5       nU R                  SS5        S S S 5        U R                  [	        WR
                  5      S5        g ! , (       d  f       N4= f)Nrr   r   r  )r   rz  rk   r
   r|  r}  r   r  s     r   %test_encode_unsupported_error_handler5LocaleCodecTest.test_encode_unsupported_error_handlerd  sI    z*bKK./ +R\\*,GH +*   A
A%c                 2    [         R                  " USU5      $ rL   )r  DecodeLocaleEx)r   r   r  s      r   rY   LocaleCodecTest.decodei  s     //FCCr   c           	         U R                   S:H  nU(       a  SnOSn[        U R                  5      nU R                   Hs  n UR	                  U R                   U5      nXd;  a  UR                  U5        U(       d  M?  UR	                  U R                   S5      nXv:w  d  Mb  UR                  U5        Mu     U HZ  nU R                  US9    UR                  U R                   U5      nU R                  Xa5      n	U R                  X5        S S S 5        M\     g ! [         a    S n Nf = f! [         az    U R                  [        5       n
U R                  Xa5        S S S 5        O! , (       d  f       O= f[        W
R                  5      nU R                  UR!                  S5      U5         Nf = f! , (       d  f       GM  = f)Nr  r  rt   r   )r   zdecode error: )r  r=  BYTES_STRINGSr  rk   r   r   r  rY   r
   r   r   r  r|  r}  r^   
startswith)r   r  is_utf8encode_errorsstringsr  r   encoded2r  r  r  r  s               r   check_decode_strings$LocaleCodecTest.check_decode_stringsl  sm   ==G+-M$Mt))*LLD++dmm]C)NN7+ w;;t}}oF&NN8, ! Gg.	8&~~dmmVDH #kk':G$$W7 /.  &  * Q**<8BG4 988 .FOOF$5$56F$GP	Q /.sZ   2DF.
D'&"F.D$#D$'F+E!		F+!
E/+=F+(F.*F++F..
F>	c                 &    U R                  S5        g r  r  r  s    r   test_decode_strict"LocaleCodecTest.test_decode_strict  r  r   c                 &    U R                  S5        g r  r  r  s    r   test_decode_surrogateescape+LocaleCodecTest.test_decode_surrogateescape  r  r   c                      U R                  SS5        U R                  S5        g ! [         a9  n[        U5      S:X  a$  U R                  U R                  < S35         S nANOe S nAff = f)Nr   r   r  z4 decoder doesn't support surrogatepass error handler)rY   rz  r|  r  r  r  r  s     r   test_decode_surrogatepass)LocaleCodecTest.test_decode_surrogatepass  sm    	KK_- 	!!/2  	3x66 1 2< = > > 	r  c                     U R                  [        5       nU R                  SS5        S S S 5        U R                  [	        WR
                  5      S5        g ! , (       d  f       N4= f)Nr   r   r  )r   rz  rY   r
   r|  r}  r  s     r   %test_decode_unsupported_error_handler5LocaleCodecTest.test_decode_unsupported_error_handler  sI    z*bKK/0 +R\\*,GH +*r  r   Nrs   )r*   r+   r,   r-   r3  getfilesystemencodingr  r  r  
SURROGATESrk   r  r  r  r  r  rY   r  r  r  r  r  r/   r   r   r   r  r  4  sf    
 ((*H*G 8MJA8,5
3I
D 8D,5
3Ir   r  c                   ,    \ rS rSrS rS rS rS rSrg)	Rot13Testi  c                 V    [         R                  " SS5      nU R                  US5        g )NzCaesar liked ciphersrot-13zPnrfne yvxrq pvcuref)rW   rk   r
   )r   
ciphertexts     r   r  Rot13Test.test_encode  s$    ]]#98D
%;<r   c                 V    [         R                  " SS5      nU R                  US5        g )NzRg gh, Oehgr?r  zEt tu, Brute?)rW   rY   r
   )r   	plaintexts     r   r  Rot13Test.test_decode  s"    MM/8<	O4r   c                     [         R                  " S5      " 5       nUR                  S5      nU R                  US5        g )Nr  zABBA nag Cheryl BakerzNOON ant Purely Onxre)rW   rj   rk   r
   )r   r  r  s      r   r  !Rot13Test.test_incremental_encode  s5    ..x8:^^$;<
%<=r   c                     [         R                  " S5      " 5       nUR                  S5      nU R                  US5        g )Nr  zterra Ares envy thazgreen Nerf rail gun)rW   rX   rY   r
   )r   r  r  s      r   r  !Rot13Test.test_incremental_decode  s5    ..x8:NN#89	$9:r   r   N)	r*   r+   r,   r-   r  r  r  r  r/   r   r   r   r  r    s    =5>
;r   r  c                       \ rS rSrS rSrg)Rot13UtilTesti  c                     SSK Jn  [        R                  " S5      n[        R                  " 5       nU" X#5        UR	                  S5        UR                  5       nU R                  US5        g )Nr   )r,  z)Gb or, be abg gb or, gung vf gur dhrfgvbaz)To be, or not to be, that is the question)encodings.rot_13r,  r   r>  ra  rO   r
   )r   r,  infileoutfile
plain_texts        r   test_rot13_funcRot13UtilTest.test_rot13_func  sQ    *HI++-fQ\\^
7	9r   r   N)r*   r+   r,   r-   r  r/   r   r   r   r  r    s    
	9r   r  c                        \ rS rSrS rS rSrg)CodecNameNormalizationTesti  c                   ^^ SmSmUU4S jn[         R                  " U5        U R                  [         R                  U5        U R	                  T[         R
                  " S5      5        U R	                  T[         R
                  " S5      5        U R	                  T[         R
                  " S5      5        U R	                  T[         R
                  " S5      5        U R	                  T[         R
                  " S5      5        U R	                  T[         R
                  " S	5      5        U R	                  T[         R
                  " S
5      5        U R	                  T[         R
                  " S5      5        U R	                  T[         R
                  " S5      5        U R	                  T[         R
                  " S5      5        g )N)rU   r    r  r  )NNNNc                    > U S:X  a  T$ T$ )Naaa_8r   )r`   FOUND	NOT_FOUNDs    r   r8  FCodecNameNormalizationTest.test_codecs_lookup.<locals>.search_function  s    7"  r   r  zAAA-8zAAA---8zAAA   8u
   aaaé€-8zAAA.8zAAA...8zBBB-8zBBB.8u   aé€-8)rW   r-  rm  r5  r
   r   )r   r8  r  r  s     @@r   test_codecs_lookup-CodecNameNormalizationTest.test_codecs_lookup  s/   ,		! 	())?;g 67g 67i 89i 89.? @AFMM'$:;FMM)$<=FMM'$:;FMM'$:;FMM/$BCr   c                 D   [         R                  nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        g )Nr6  u   utfé€􏿿-8zutf   8zUTF 8UTF_8zutf.8zutf...8)rl  normalize_encodingr
   )r   	normalizes     r   !test_encodings_normalize_encoding<CodecNameNormalizationTest.test_encodings_normalize_encoding  s    00	7+W5#>?I9-w7 	7+W57+W59-y9r   r   N)r*   r+   r,   r-   r  r  r/   r   r   r   r  r    s    D,
:r   r  __main__)WrW   r  r  r   r  r3  rt  rl  r   testr   test.supportr   rY  ImportErrorr  r6   sizeofc_wcharSIZEOF_WCHAR_Tr   r=   r  r?   rR   ro   TestCaser   r6  rM  rY  r  r  r  r  r
  r  r$  rL  r  rb   r   r/  reprr  r  r  r  r  r  r  r  r  rJ  r  r   rL  r<  rw  r  r  r  r  r  r  r  r5  rm  r/  r1  r3  r}  r  r  r{  platformr  rI  r]  rm  ru  r  r  r  r  r*   mainr   r   r   <module>r     s      	  
     "3
 ]]6>>2N$(F *- -DQ=& Q=h
]>(++ ]>@+>(H-- +>\+>(H-- +>\`-(++ `-F*'(H-- *'X*'(H-- *'X[Hx** [H|CKx** CKL>(## >CX&& C S-(H-- S-lLHx(( LH`e N 
A
1vqyd1g 

-P8$$ -PbVrP8$$ P(z6H%% z6z~Ix(( ~IB+x(( +2+x(( +(+X.. +*
0h'' 
0f P 6=!!  (
6<    '   
_Rx((*A _RDu
(## u
p18$$ 1&L!! &LRS
("3"3 S
jP
8X%6%6 P
fOx(( O(2(++ 2D65h 65r  y)Ei 6 $$\2',fol#- $$[1&+Wk"~F** ~FL (E3** E3R 
S\\W,9;XD8$$ XD;XDv$+!! $+N"B"" "BJA,)) A,H 
"d*,KLnIh'' nI MnIb;!! ;*9H%% 9"":!2!2 ":J zMMO Cw    
  FNV\  D  		sW   S S) S8 7T	 T S&%S&)S54S58
TT	TTT"!T"