+
    Bi4\             
       p   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RIH
t
 ^ RIt^ RIHt ^ RIHt  ^ RIt ^ RItR tR tR t ! R R	]4      t ! R
 R4      t ! R R]4      t ! R R]]P4                  4      t ! R R]]P4                  4      t ! R R]]P4                  4      t ! R R]]P4                  4      t ! R R]]P4                  4      t ! R R]]P4                  4      t  ! R R]]P4                  4      t! ! R R]]P4                  4      t" ! R R]P4                  4      t# ! R  R!]P4                  4      t$ ! R" R#]!]P4                  4      t% ! R$ R%]P4                  4      t&. ROt']' F   t(])! ](4      ^8w  g   K  ]*! ]+! ](4      4       K"  	   ! R& R']P4                  4      t,. RNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNER NERNERNERNRNERNERNt- ! R( R)]P4                  4      t. ! R* R+]P4                  4      t/ ! R, R-]P4                  4      t0 ! R. R/]P4                  4      t1 ! R0 R1]P4                  4      t2 ! R2 R3]P4                  4      t3 ! R4 R5]P4                  4      t4. R6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]NR^NR_NR`NRaNRbNRcNRdNReNRfNRgNRhNRiNRjNRkNRlNRmNRnNRoNRpNRqNRrNRsNRtNRuNRvNRwNRxNRyNRzNR{NR|NR}NR~NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNt5]6! ] R4      '       d   ]5Po                  R4       ]6! ] R4      '       d   ]5Po                  R4       R.t8 ! R R]P4                  ]4      t9 ! R R]P4                  4      t: ! R R]P4                  4      t; ! R R]P4                  4      t< ! R R]]P4                  4      t= ! R R]]P4                  4      t> ! R R]P4                  4      t? ! R R]P4                  4      t@ ! R R]P4                  4      tA. EROtBRRR.RR.R. ERORR.RR./tC ^ RIDtD]BPo                  R4       RR.]CR&    ^ RIEtE]BPo                  R4       R.]CR&    ! R R]P4                  4      tF/ tGR tH ! R R]P4                  4      tI]P                  ! ]P                  R8H  R4       ! R R]P4                  4      4       tL ! R R]P4                  4      tM ! R R]P4                  4      tN ! R R]P4                  4      tO]P                  ! ]RJ R4       ! R R]P4                  4      4       tQ ! R R]P4                  4      tR ! R R]P4                  4      tS ! R R]P4                  4      tT]UR8X  d   ]P                  ! 4        R# R#   ] d    Rt ELi ; i  ] d    Rt ELi ; i  ] d    RtD ELvi ; i  ] d     ELhi ; i(      N)mock)support)	os_helperc                     \         P                  ! 4       ;_uu_ 4        \         P                  ! R4       \        P                  ! V / VB uuRRR4       #   + '       g   i     R# ; i)z>Call codecs.open(*args, **kwargs) ignoring DeprecationWarning.ignoreN)warningscatch_warningssimplefiltercodecsopen)argskwargss   *,'/usr/lib/python3.14/test/test_codecs.pycodecs_open_no_warnr      s?    		 	 	"	"h'{{D+F+ 
#	"	"	"s   ,AA&	c                    a a VV 3R  lpV# )c                 N   < SP                  S! V 4      V\        V 4      34       R # N)assertEquallen)inputexpectcoderselfs   &&r   checkcoding_checker.<locals>.check"   s     uE
';<     )r   r   r   s   ff r   coding_checkerr   !   s    =Lr   c                    aaaaaa ^ RI HpHpHpHp ^ RIHpHoHoH	oH
p ^o^oRo ! VVVVVV3R lRV4      pV! VSWa! V4      4      pV! RV! R4      34      p	V! 4       p
V	! V ^ V
4      # )r   )POINTERWINFUNCTYPEWinDLL	Structure)BOOLBYTEWCHARUINTDWORDi  c                   |   < ] tR t^.tR Z3R Z  Z,          3R Z  Z,          3R Z3R Z3R Z Z,          3.tRtR# )	'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   r:   GetCPInfoExWkernel32)ctypesr    r!   r"   r#   ctypes.wintypesr$   r%   r&   r'   r(   )cpr    r!   r"   r#   r$   r(   r:   	prototypeGetCPInfoExinfor%   r7   r8   r9   r'   r&   s   &          @@@@@@r   is_code_page_presentrC   '   sp    >>>>MOH6 6I 6 D$wy/ABI^VJ-?@AK;Dr1d##r   c                   :   a  ] tR t^;t o RtR tR tRR ltRtV t	R# )Queuez>
queue: write bytes at one end, read bytes from the other end
c                    Wn         R # r   _buffer)r   buffers   &&r   __init__Queue.__init__?   s    r   c                8    V ;P                   V,          un         R # r   rG   )r   charss   &&r   writeQueue.writeB   s    r   c                    V^ 8  d'   V P                   pV P                   R,          V n         V# V P                   RV pV P                   VR V n         V# )r   Nr   NNrG   )r   sizess   && r   read
Queue.readE   sN    6A<<+DLHUd#A<<.DLHr   rG   N))
r1   r2   r3   r4   __doc__rJ   rN   rT   r6   __classdictcell____classdict__s   @r   rE   rE   ;   s      r   rE   c                   ,   a  ] tR t^Pt o R tR tRtV tR# )MixInCheckStateHandlingc                   \        \        V4      ^,           4       EF3  p\        P                  ! V4      ! 4       pVP	                  VRV 4      pVP                  4       pV P                  V^,          \        4       V^,          '       gm   VP                  V^ ,          R,          ^ 34       V P                  VP	                  V^ ,          4      '       * 4       V P                  WuP                  4       4       \        P                  ! V4      ! 4       pVP                  V4       VP	                  W4R R4      pV P                  W&V,           4       EK6  	  R# )   NrQ   T)ranger   r   getincrementaldecoderdecodegetstateassertIsInstanceintsetstate
assertTruer   	r   encodingurS   idpart1statepart2s	   &&&&     r   check_state_handling_decode3MixInCheckStateHandling.check_state_handling_decodeQ   s    s1vaxA,,X68AHHQrUOEJJLE!!%(C0 88

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

5 ,,X68AJJuHHQrUD)EQe,' !r   c                x   \        \        V4      ^,           4       F  p\        P                  ! V4      ! 4       pVP	                  VRV 4      pVP                  4       p\        P                  ! V4      ! 4       pVP                  V4       VP	                  W$R R4      pV P                  W6V,           4       K  	  R# )r^   NT)r_   r   r   getincrementalencoderencoderb   re   r   rg   s	   &&&&     r   check_state_handling_encode3MixInCheckStateHandling.check_state_handling_encodeg   s    s1vaxA,,X68AHHQrUOEJJLE,,X68AJJuHHQrUD)EQe, !r   r   N)r1   r2   r3   r4   ro   rt   r6   rX   rY   s   @r   r\   r\   P   s     -,- -r   r\   c                   Z   a  ] tR t^rt o R tR tR tR tR tR t	R t
RtR	 tR
 tRtV tR# )ReadTestc                   \        R 4      p\        P                  ! V P                  4      ! V4      pRp\	        VP                  V P                  4      VRR7       FG  w  rgVP                  \        V.4      4       WTP                  4       ,          pV P                  WW4       KI  	  V P                  VP                  4       R4       V P                  VP                  R 4       \        P                  ! V P                  4      ! 4       pRp\	        VP                  V P                  4      VRR7       F7  w  rgWXP                  \        V.4      4      ,          pV P                  WW4       K9  	  V P                  VP                  R R4      R4       V P                  VP                  R 4       VP                  4        Rp\	        VP                  V P                  4      VRR7       F7  w  rgWXP                  \        V.4      4      ,          pV P                  WW4       K9  	  V P                  VP                  R R4      R4       V P                  VP                  R 4       VP                  V P                  4      p	T P                  TRP                  \        P                   ! V	 Uu. uF  p\        V.4      NK  	  upV P                  4      4      4       R# u upi )r    TstrictN)rE   r   	getreaderrh   ziprs   rN   bytesrT   r   
bytebufferr`   ra   rI   resetjoin
iterdecode)
r   r   partialresultsqrresultcpartialresultrk   encodeds
   &&&       r   check_partialReadTest.check_partials   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   !Kc           	       a a V 3R  loRV3R llpRpRpRpS P                  V! VR4      V4       S P                  V! VR4      V4       S P                  V! VR^
4      V4       S P                  V! VR^
4      V4       Rp. p. p\        V4       FX  w  rVP                  V^,          ^,           R,          V	,           4       VP                  V^,          ^,           R,          4       KZ  	  S P                  V! R	P                  V4      R4      R
P                  V4      4       S P                  V! R	P                  V4      R4      R
P                  V4      4       \	        ^P4       F  p
V F  p	^
V
R,          V	,           R,           ,          pS! V4      p\	        ^
4       FU  pS P                  VP                  RR7      V
R,          V	,           4       S P                  VP                  RR7      R4       KW  	  S! V4      p\	        ^
4       FN  pS P                  VP                  RR7      V
R,          4       S P                  VP                  RR7      R4       KP  	  K  	  K  	  R# )c                    < \         P                  ! V P                  SP                  4      4      p\        P
                  ! SP                  4      ! V4      # r   ioBytesIOrs   rh   r   r|   )r   streamr   s   & r   r|   )ReadTest.test_readline.<locals>.getreader   s8    ZZT]] ;<F##DMM26::r   TNc                    < S! V 4      p. p VP                  W!R7      pV'       g   MVP                  V4       K/  RP                  V4      # )T)rR   keepends|)readlineappendr   )r   r   rR   readerlinesliner|   s   &&&   r   readalllines,ReadTest.test_readline.<locals>.readalllines   sE    u%FEDDT"88E?"r   u   foo
bar
bazspam eggsu   foo
|bar
|baz|spam |eggszfoo|bar|baz|spam|eggsFu   あry   r   azxxx
r   xxx)TN)

u    )r   	enumerater   r   r_   r   )r   r   rS   	sexpectedsexpectednoendslineendsvwvworj   lineendrR   r   r|   s   f           @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                  a a . R
OpRP                  V4      oVV 3R lpV! 4       pS P                  VP                  4       V^ ,          4       S P                  VP                  4       RP                  VR,          4      4       S P                  VP                  4       R4       V! 4       pS P                  VP                  4       V^ ,          4       S P                  VP                  ^4      V^,          ^ ,          4       S P                  VP                  ^ 4      R4       S P                  VP                  ^d4      S\	        V^ ,          4      ^,           R R,          4       V! 4       pS P                  VP                  4       V^ ,          4       S P                  VP                  4       VR,          4       S P                  VP                  4       R4       V! 4       pS P                  VP                  ^(^R7      SR,          4       S P                  VP                  4       SR,          4       S P                  VP                  4       R4       V! 4       pS P                  VP                  ^(^R7      SR,          4       S P                  VP                  ^4      S^,          4       S P                  VP                  ^ 4      R4       S P                  VP                  ^d4      SR	,          4       V! 4       pS P                  VP                  ^(^R7      SR,          4       S P                  VP                  4       V^ ,          R,          .VR,          ,           4       S P                  VP                  4       R4       R# )Humpty Dumpty sat on a wall,
ry   c                     < \         P                  ! SP                  SP                  4      4      p \        P
                  ! SP                  4      ! V 4      # r   r   )r   datar   s    r   r|   8ReadTest.test_mixed_readline_and_read.<locals>.getreader   s8    ZZDMM :;F##DMM26::r   :r^   NNN:Nd   N)rR   rM   :N   N:r   NN:   j   N)r   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.)r   r   r   rT   r   	readlines)r   r   r|   fr   s   f   @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b	22& KRq148<48,2& KRq148<DG,B'd5k2 KRq148<q"r(BC2&r   c                   . R NRNRNRNRNRNRNRNRNR	NR
NRNRNR
NR
NRNRNR
NR
NRNRNRNRNRNRNRNRNRNRNR
NRNR
NRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NRNR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5Np\         P                  ! R6P                  V4      P                  V P                  4      4      p\
        P                  ! V P                  4      ! V4      p\        V4       F  w  rEV P                  WQV,          4       K  	  R7# )8z:<%!--===================================================
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")
zuser=self.SessionCtx.user
z-storageEngine=self.SessionCtx.storageEngine
z-def readArticlesFromDate(date, count=None):
z2    entryids=storageEngine.listBlogEntries(date)
z%    entryids.reverse() # descending
z    if count:
z#        entryids=entryids[:count]
z
    try:
z\        return [ frog.objects.BlogEntry.load(storageEngine, date, Id) for Id in entryids ]
z    except StorageError,x:
z6        log.error("Error loading articles: "+str(x))
z,        self.abort("cannot load articles")
zshowdate=None
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() 
z.    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))
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                
ry   N)	r   r   r   rs   rh   r   r|   r   r   )r   rS   r   r   rj   r   s   &     r   test_bug1175396ReadTest.test_bug1175396	  s   >
J>
<>
 I>
 O	>

 2>
 />
 5>
 2>
 J>
 >
 >
 !>
 <>
 >
 >
  ,!>
" >#>
$ %>
& '>
( >)>
* C+>
, 6->
.  />
0 41>
2 3>
4 m5>
6 -7>
8 G9>
: =;>
< =>
>  ?>
@ A>
B ,C>
D #E>
F >G>
H ?I>
J 9K>
L ?M>
N &O>
P EQ>
R 1S>
T %U>
V @W>
X 0Y>
Z $[>
\ H]>
^ C_>
` ga>
b ?c>
d e>
f <g>
h =i>
j ?k>
l  m>
n %o>
p (q>
r 1s>
t hu>
v ;w>
x (y>
z #{>
~ BGGAJ--dmm<=!!$--08"6*IQTQ4( +r   c                   \        R 4      p\        P                  ! V P                  4      ! V4      p\        P                  ! V P                  4      ! V4      pVP                  R4       V P                  VP                  RR7      R4       VP                  R4       V P                  VP                  RR7      R4       V P                  VP                  RR7      R4       VP                  R4       V P                  VP                  RR7      R4       V P                  VP                  RR7      R4       VP                  R4       V P                  VP                  R	R7      R4       VP                  R4       V P                  VP                  R	R7      R
4       V P                  VP                  R	R7      R4       VP                  R4       V P                  VP                  R	R7      R4       V P                  VP                  R	R7      R4       VP                  R4       V P                  VP                  R	R7      R4       R# )r   zfooFr   fooz
barry   barbazTr   zbarzfoo
N)rE   r   	getwriterrh   r|   rN   r   r   )r   r   writerr   s   &   r   test_readlinequeueReadTest.test_readlinequeueN  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                   R pRpRpW,           V,           P                  V P                  4      p\        P                  ! V4      p\        P
                  ! V P                  4      ! V4      pV P                  VP                  4       V4       V P                  VP                  4       V4       V P                  VP                  4       V4       V P                  VP                  4       R4       R# )zAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z`offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!!
znext line.
ry   Nrs   rh   r   r   r   r|   r   r   )r   s1s2s3rS   r   r   s   &      r   test_bug1098990_aReadTest.test_bug1098990_ai  s    RqU2Xdmm,A!!$--08*B/*B/*B/*B/r   c                ~   R pRpRpRpRpW,           V,           V,           V,           P                  V P                  4      p\        P                  ! V4      p\        P
                  ! V P                  4      ! V4      pV P                  VP                  4       V4       V P                  VP                  4       V4       V P                  VP                  4       V4       V P                  VP                  4       V4       V P                  VP                  4       V4       V P                  VP                  4       R4       R# )zaaaaaaaaaaaaaaaaaaaaaaaa
zbbbbbbbbbbbbbbbbbbbbbbbb
zstillokay:bbbbxx
zbroken!!!!badbad
zagainokay.
ry   Nr   )	r   r   r   r   s4s5rS   r   r   s	   &        r   test_bug1098990_bReadTest.test_bug1098990_bv  s    ++##U2Xb[^##DMM2A!!$--08*B/*B/*B/*B/*B/*B/r      �c                   V P                  \        R P                  V P                  4       V P	                  RP                  V P                  R4      RP                  V P                  4      4       V P	                  RP                  V P                  R4      RP                  V P                  4      4       V P	                  RP                  V P                  R4      RP                  V P                  4      4       V P	                  RP                  V P                  R4      RP                  V P                  4      4       V P	                  RP                  V P                  R	4      R
P                  V P                  4      4       V P	                  RP                  V P                  R4      RP                  V P                  4      4       V P	                  RP                  V P                  R	4      RP                  V P                  4      4       RP                  V P                  4      pR EF  w  r#VP                  V P                  4      \        V4      R pVP                  V P                  4      \        V4      R pVR,           V,           pW,           V P                  ,           V,           pV P                  \        VP                  V P                  4       V P	                  VP                  V P                  R4      V4       V P	                  VP                  V P                  R4      V4       V P	                  VP                  V P                  R4      W#,           4       V P	                  VP                  V P                  R	4      W P                  ,           V,           4       RP                  R V P                   4       4      pV P	                  VP                  V P                  R4      W(,           V,           4       EK  	  R# )u      []backslashreplacez[\udc80]namereplacexmlcharrefreplacez
[&#56448;]r   []replacez[?]   []z[??]ry   N   surrogatepassc              3   4   "   T F  pR V,          x  K  	  R# 5i)\x%02xNr   ).0bs   & r   	<genexpr>0ReadTest.test_lone_surrogates.<locals>.<genexpr>  s      'J0H1 (11}}0Hs   ))   𐿿A)[])r   r   )assertRaisesUnicodeEncodeErrorrs   rh   r   r   ill_formed_sequenceUnicodeDecodeErrorra   ill_formed_sequence_replacer   )	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                   R P                  V P                  R4      p\        ^\        V4      4       Fq  p\        P
                  ! V P                  4      ! R4      pV P                  VP                  VRV 4      R4       V P                  VP                  WR R4      R 4       Ks  	  RP                  V P                  R4      p\        ^\        V4      4       Fp  p\        P
                  ! V P                  4      ! R4      pV P                  VP                  VRV 4      R4       V P                  VP                  WR 4      R4       Kr  	  R# )u   r   Nry   Tu   )rs   rh   r_   r   r   r`   r   ra   )r   r   rj   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)r1   r2   r3   r4   r   r   r   r   r   r   r   r   r   r   r6   rX   rY   s   @r   rw   rw   r   sG     )
V9v.'`C)JD600" #+*@X= =r   rw   c                      a  ] tR tRt o Rt]P                  R8X  d   RtMRtRtRt	R t
R	 tR
 tR tR tR tR tRtV tR# )	UTF32Testi  utf-32little          ܀s$     s   p   a   m   s   p   a   m   s$        s   p   a   m   s   p   a   mc                   \         P                  ! V P                  4      w   rp\        P                  ! 4       pV! V4      pVP                  R 4       VP                  R 4       VP                  4       pT P                  W`P                  8H  ;'       g    W`P                  8H  4       \        P                  ! V4      pV! V4      pV P                  VP                  4       R4       R# spamspamspamNr   lookuprh   r   r   rN   getvaluerf   spamlespamber   rT   r   _r   r   rS   r   rk   s   &      r   test_only_one_bomUTF32Test.test_only_one_bom      "MM$--8!6JJL1I		JJL[[(<<A,<=JJqM1I:.r   c                v   \         P                  ! R4      p\        P                  ! V P                  4      ! V4      pV P                  \        VP                  4       \         P                  ! R4      p\        P                  ! V P                  4      ! V4      pV P                  \        VP                  4       R# )   N   s   r   r   r   r|   rh   r   r   rT   r   rS   r   s   &  r   test_badbomUTF32Test.test_badbom  sz    JJy!T]]+A.,aff5JJy!T]]+A.,aff5r   c                .    V P                  R . RO4       R# )    ÿĀ￿𐀀N)ry   ry   ry   ry   ry   ry   ry    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                    V P                  R\        P                  ! RRR4      4       V P                  R\        P                  ! RRR4      4       R# r      r   Tr   N)r   r^   )ry   r^   r   r   utf_32_decoder  s   &r   test_handlersUTF32Test.test_handlers  H    --gy$G	I--gxF	Hr   c                T    V P                  \        \        P                  R RR4       R#    r{   TN)r   r   r   r   r  s   &r   test_errorsUTF32Test.test_errors  "    ,f.B.B!8T	3r   c                    V P                  V P                  R V P                  4       V P                  V P                  R V P                  4       R# r   Nro   rh   r  r  r  s   &r   test_decoder_stateUTF32Test.test_decoder_state  >    (()3T[[	B(()3T[[	Br   c                    RpV P                  R\        P                  ! V4      ^ ,          4       RpV P                  R\        P                  ! V4      ^ ,          4       R# )s     Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    r  )r   
encoded_le
encoded_bes   &  r   test_issue8941UTF32Test.test_issue8941  sW     F
,--j9!<	>E
,--j9!<	>r   r   N)r1   r2   r3   r4   rh   sys	byteorderr   r  r  r  r  r  r!  r'  r-  r4  r6   rX   rY   s   @r   r   r     s\     H
}} 11FFFF/6
>H3B> >r   r   c                   @   a  ] tR tRt o RtRtR tR tR tR t	Rt
V tR	# )
UTF32LETesti&  	utf-32-ler   c                .    V P                  R . RO4       R# r  N)ry   ry   ry   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                \    V P                  R P                  V P                  4      R4       R# )   𐈃s    Nr   rs   rh   r  s   &r   test_simpleUTF32LETest.test_simpleE  "    ,,T]];=PQr   c                T    V P                  \        \        P                  R RR4       R# r%  )r   r   r   utf_32_le_decoder  s   &r   r'  UTF32LETest.test_errorsH  "    ,f.E.E!8T	3r   c                d    RpV P                  R\        P                  ! V4      ^ ,          4       R# )s      Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r1  )r   r   rF  r   r   s   & r   r4  UTF32LETest.test_issue8941L  -     -,009!<	>r   r   Nr1   r2   r3   r4   rh   r   r  rB  r'  r4  r6   rX   rY   s   @r   r9  r9  &  *     H-
6R3> >r   r9  c                   @   a  ] tR tRt o RtRtR tR tR tR t	Rt
V tR	# )
UTF32BETestiT  	utf-32-ber   c                .    V P                  R . RO4       R# r<  r  r  s   &r   r  UTF32BETest.test_partialX  r>  r   c                \    V P                  R P                  V P                  4      R4       R# )r@  s    NrA  r  s   &r   rB  UTF32BETest.test_simples  rD  r   c                T    V P                  \        \        P                  R RR4       R# r%  )r   r   r   utf_32_be_decoder  s   &r   r'  UTF32BETest.test_errorsv  rH  r   c                d    RpV P                  R\        P                  ! V4      ^ ,          4       R# )s      Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r1  )r   r   rW  rJ  s   & r   r4  UTF32BETest.test_issue8941z  rL  r   r   NrM  rY   s   @r   rP  rP  T  rN  r   rP  c                      a  ] tR tRt o Rt]P                  R8X  d   RtMRtRtRt	R t
R	 tR
 tR tR tR tR tR tRtV tR# )	UTF16Testi  utf-16r         ܀s   s p a m s p a m s    s p a m s p a mc                   \         P                  ! V P                  4      w   rp\        P                  ! 4       pV! V4      pVP                  R 4       VP                  R 4       VP                  4       pT P                  W`P                  8H  ;'       g    W`P                  8H  4       \        P                  ! V4      pV! V4      pV P                  VP                  4       R4       R# r   r  r  s   &      r   r  UTF16Test.test_only_one_bom  r
  r   c                v   \         P                  ! R 4      p\        P                  ! V P                  4      ! V4      pV P                  \        VP                  4       \         P                  ! R4      p\        P                  ! V P                  4      ! V4      pV P                  \        VP                  4       R# )s   r  Nr  r  s   &  r   r  UTF16Test.test_badbom  s{    JJ{#T]]+A.,aff5JJ*+T]]+A.,aff5r   c                .    V P                  R . RO4       R# )r  N)ry   ry   ry   r  r  r  r  r  r  r  r  r  r  r  r  r  s   &r   r  UTF16Test.test_partial  s    ,	
r   c                    V P                  R\        P                  ! RRR4      4       V P                  R\        P                  ! RRR4      4       R# r  )r   r   utf_16_decoder  s   &r   r!  UTF16Test.test_handlers  r#  r   c                T    V P                  \        \        P                  R RR4       R# r%  )r   r   r   rg  r  s   &r   r'  UTF16Test.test_errors  r)  r   c                    V P                  V P                  R V P                  4       V P                  V P                  R V P                  4       R# r+  r,  r  s   &r   r-  UTF16Test.test_decoder_state  r/  r   c                   R pVP                  V P                  4      pV P                  \        P                  \        P
                  4       \        \        P
                  R4      ;_uu_ 4       pVP                  V4       RRR4       \        \        P
                  RV P                  R7      ;_uu_ 4       pV P                  VP                  4       V4       RRR4       R#   + '       g   i     Li; i  + '       g   i     R# ; i)zHello
world
wbNr   rh   )rs   rh   
addCleanupr   unlinkTESTFNr   rN   r   r   rT   )r   r   rS   fpr   s   &    r   test_bug691291UTF16Test.test_bug691291  s    
 "IIdmm$	(()*:*:;)""D))RHHQK * !1!13"&--1 14:V[[]B/1 1 *)1 1 1s   .C!6!C4!C1	4D	c           	     6   R Fs  pV P                  \        4      ;_uu_ 4       p\        \        P                  WP
                  R7       RRR4       V P                  R\        XP                  4      4       Ku  	  R Fs  pV P                  \        4      ;_uu_ 4       p\        \        P                  WP
                  R7       RRR4       V P                  R\        XP                  4      4       Ku  	  R#   + '       g   i     L; i  + '       g   i     LN; i)Uro  Nzinvalid modez'can't have text and binary mode at once)rw  rUzr+U)rtwtatzr+t)	r   
ValueErrorr   r   rr  rh   assertInstr	exception)r   modecms   &  r   test_invalid_modesUTF16Test.test_invalid_modes  s    &D"":.."#I$4$4d]]S /MM.#bll*;< '
 .D"":.."#I$4$4d]]S /MMCbll+- .	 /.
 /.s   &C5&D5DDr   N)r1   r2   r3   r4   rh   r6  r7  r   r  r  r  r  r  r!  r'  r-  rt  r  r6   rX   rY   s   @r   r\  r\    s[     H
}} ))@F@F/6
*H3B0
- 
-r   r\  c                   :   a  ] tR tRt o RtRtR tR tR tRt	V t
R# )	UTF16LETesti  	utf-16-ler^  c                .    V P                  R . RO4       R# r  N)ry   r  r  r  r  r  r  r  r  r  r  r  r  r  s   &r   r  UTF16LETest.test_partial      ,	
r   c                    . ROpV FN  w  r#V P                  \        \        P                  VRR4       V P	                  VP                  RR4      V4       KP  	  R# )r&  r{   Tzutf-16ler   N)r&  r   )s   A Z   A�)s	   A B C D Z   ABCD�)s    r   )s    Ar   )s    A    �A)s    A r  )r   r   r   utf_16_le_decoder   ra   r   testsrawexpecteds   &   r   r'  UTF16LETest.test_errors  R    
 #MC0&2I2I!8T3SZZ
I>I #r   c                    V P                  R P                  V P                  4      R4       V P                  RP                  V P                  4      R 4       R# )r@  s    Nr   rs   rh   ra   r  s   &r   test_nonbmpUTF16LETest.test_nonbmp  G    ,,T]];,	.,33DMMB%	'r   r   Nr1   r2   r3   r4   rh   r   r  r'  r  r6   rX   rY   s   @r   r  r    %     H%
&J' 'r   r  c                   :   a  ] tR tRt o RtRtR tR tR tRt	V t
R# )	UTF16BETesti  	utf-16-ber_  c                .    V P                  R . RO4       R# r  r  r  s   &r   r  UTF16BETest.test_partial  r  r   c                    . ROpV FN  w  r#V P                  \        \        P                  VRR4       V P	                  VP                  RR4      V4       KP  	  R# )r&  r{   Tzutf-16ber   N)r  )s    Ar  )s	    A B C DZr  )s    r   )s    r   )s     Ar  )s     Ar  )r   r   r   utf_16_be_decoder   ra   r  s   &   r   r'  UTF16BETest.test_errors(  r  r   c                    V P                  R P                  V P                  4      R4       V P                  RP                  V P                  4      R 4       R# )r@  s    Nr  r  s   &r   r  UTF16BETest.test_nonbmp7  r  r   r   Nr  rY   s   @r   r  r    r  r   r  c                   `   a a ] tR tRt oRtRtRtRtR tR t	R t
V 3R ltR	 tR
 tRtVtV ;t# )UTF8Testi=  utf-8s   r   c                .    V P                  R . RO4       R# )    ÿ߿ࠀ￿𐀀N)r  r  r  r      ÿ߿r  r      ÿ߿ࠀr  r      ÿ߿ࠀ￿r  r  r  r  r  r  s   &r   r  UTF8Test.test_partialC  s    2	
r   c                t    R pV P                  V P                  WP                  V P                  4      4       R# )u    ÿĀ߿ࠀ￿􏿿N)ro   rh   rs   )r   ri   s   & r   r-  UTF8Test.test_decoder_stateY  s,    @(()*HHT]],C	Er   c           	         R FV  w  rpV P                  WVR7      ;_uu_ 4        V P                  VP                  V P                  V4      V4       RRR4       KX  	  R#   + '       g   i     Km  ; i)   []r   error_handlerr  N)r  r   r   )r  r   u   [��])r  surrogateescape   [])r  r   z
[\x80\xff])subTestr   ra   rh   r   r   r  r  s   &   r   test_decode_errorUTF8Test.test_decode_error^  sl    .
)D 4'/  1 1  T]]M!J!)+1 1.
1 1 1s   -AA0c                  < \         SV `  4        V P                  R P                  V P                  R4      V P
                  R,           4       V P                  \        4      ;_uu_ 4       pRP                  V P                  R4       RRR4       XP                  pV P                  VP                  VP                  VP                   R4       R#   + '       g   i     LQ; i)r   r  s   []u   []Nu   )superr   r   rs   rh   BOMr   r   r  objectstartend)r   r  exc	__class__s   &  r   r   UTF8Test.test_lone_surrogatesj  s    $& 	**4==:KLI-	/ 122b"))$--9JK 3llCIIcgg6G 32s   *CC 	c                   V P                  R P                  V P                  R4      V P                  R,           4       V P                  RP                  V P                  R4      V P                  R,           4       V P                  RP                  V P                  R4      V P                  R,           4       V P                  RP	                  V P                  R4      R 4       V P                  RP	                  V P                  R4      R4       V P                  \        P                  ! R4      4       V P                  \        4      ;_uu_ 4        RP	                  V P                  R4       RRR4       V P                  \        4      ;_uu_ 4        R	P	                  V P                  R4       RRR4       R#   + '       g   i     LT; i  + '       g   i     R# ; i)
u	   abcdefr   s	   abcdefu   𐿿s   𐿿r   s   []s   abcNs   abcz)
r   rs   rh   r  ra   rf   r   lookup_errorr   r   r  s   &r   test_surrogatepass_handler#UTF8Test.test_surrogatepass_handlerv  sa   ..t}}oN$99	;+224==/R$CC	E)00P$AA	C 	.55dmm_U'	)8??_+	- 	++O<=122!!$--A 3122""4==/B 32 32222s   F;G;G	G	c                   . ROpR F#  pR F  pVP                  W#,           4       K  	  K%  	  VP                  R4       V Fl  pV P                  VR7      ;_uu_ 4        \        P                  ! V P
                  4      ! 4       pV P                  \        VP                  V4       RRR4       Kn  	  R#   + '       g   i     K  ; i)   r   N)r                 r&  )         s      s      s   s      s   s   )   r  )s   s   s   s   s   s   s   )	r   extendr  r   r`   rh   r   r   ra   )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B33Cr   u	   ���)r1   r2   r3   r4   rh   r   r   r  r  r-  r  r   r  r  r6   rX   __classcell__r  rZ   s   @@r   r  r  =  sC     H)".
C
,E

+
HC&H Hr   r  c                   B   a  ] tR tRt o RtR tR tR tR tR t	Rt
V tR	# )
UTF7Testi  utf-7c                   R pV P                  VP                  V P                  4      VP                  R4      4       V P                  VP                  R4      P                  V P                  4      V4       RpV P                  VP                  V P                  4      VP                  R4      4       V P                  VP                  R4      P                  V P                  4      V4       V P                  RP                  V P                  4      R4       V P                  RP                  V P                  4      R4       RpV P                  VP                  V P                  4      VP                  R4      4       V P                  VP                  R4      P                  V P                  4      V4       RP	                  \        \        \        \        ^4      4      P                  4       4      \        W,           R,           V,           4      ,
          4      4      pV P                  VP                  V P                  4      R4       R	# )
zGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?asciiz !"#$%&*;<=>@[]^_`{|}za+bs   a+-bz 	
ry   +sX   +AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-N)	r   rs   rh   ra   r   sortedsetr~   r_   )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                    V P                  R . RNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR	NR
NR
NR
NR
NR
NR
NR
NR
NRNR N4       R# )u   a+-b cdĀe𐀀fr   a+za+-za+-bza+-b za+-b cu   a+-b cu	   a+-b cdu   a+-b cdĀu   a+-b cdĀeu   a+-b cdĀe𐀀Nr  r  s   &r   r  UTF7Test.test_partial  sV   .!!! ! 	!
 ! ! ! ! ! ! ! ! ! ! !   !!" !#!$ !%!& !'!( !)!* !+!, '-!. (/!0 (1!2 (3!4 (5!6 (7!8 (9!: (;!< (=!> 2?!@ 3A!$	
r   c           
     $   . ROpV Fq  w  r#V P                  VR7      ;_uu_ 4        V P                  \        \        P                  VRR4       V P                  VP                  RR4      V4       RRR4       Ks  	  R#   + '       g   i     K  ; i)   br  r{   Tr  r   N))r  u   �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  r   r   r   utf_7_decoder   ra   r  s   &   r   r'  UTF7Test.test_errors  su    
. #MC#&&!!"4f6I6I #Xt5  GY!?J '& #&&&s   A
A>>Bc                b   V P                  R P                  V P                  4      R4       V P                  RP                  V P                  4      R4       V P                  RP                  V P                  4      R 4       V P                  RP                  V P                  4      R 4       V P                  RP                  V P                  4      R4       V P                  RP                  V P                  4      R4       V P                  RP                  V P                  4      R4       V P                  RP                  V P                  4      R4       V P                  RP                  V P                  4      R4       V P                  R	P                  V P                  4      R4       R
# )u   𐒠s   +2AHcoA-u   s   +2AHcoAu   €𐒠s
   +IKzYAdyg-s	   +IKzYAdygu
   €€𐒠s   +IKwgrNgB3KA-s   +IKwgrNgB3KANr  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           	         . ROpV FJ  w  r#V P                  VR7      ;_uu_ 4        V P                  VP                  RR4      V4       RRR4       KL  	  R#   + '       g   i     Ka  ; i)   a+2AE-br  r  r   N))r  u   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   ra   r  s   &   r   r   UTF7Test.test_lone_surrogates  sU    
 #MC#&&  GY!?J '& #&&&s   #AA(r   N)r1   r2   r3   r4   rh   r  r  r'  r  r   r6   rX   rY   s   @r   r  r    s-     HE4%
NK<3K Kr   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )UTF16ExTesti!  c                V    V P                  \        \        P                  R R^ R4       R# r%  )r   r   r   utf_16_ex_decoder  s   &r   r'  UTF16ExTest.test_errors#  s$    ,f.E.EwPXZ[]abr   c                N    V P                  \        \        P                  4       R # r   )r   	TypeErrorr   r	  r  s   &r   test_bad_argsUTF16ExTest.test_bad_args&  s    )V%<%<=r   r   N)r1   r2   r3   r4   r'  r  r6   rX   rY   s   @r   r  r  !  s     c> >r   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )ReadBufferTesti)  c                z    ^ RI pV P                  \        P                  ! VP                  RR4      4      R4       R# )r   Nr      spam)r  r  )arrayr   r   readbuffer_encode)r   r  s   & r   
test_arrayReadBufferTest.test_array+  s/    $$U[[g%>?	
r   c                R    V P                  \        P                  ! R 4      R4       R# )ry   Nr   r   )r   r   r  r  s   &r   
test_emptyReadBufferTest.test_empty2  s    11"5x@r   c                    V P                  \        \        P                  4       V P                  \        \        P                  ^*4       R# *   N)r   r  r   r  r  s   &r   r  ReadBufferTest.test_bad_args5  s0    )V%=%=>)V%=%=rBr   r   N)	r1   r2   r3   r4   r  r  r  r6   rX   rY   s   @r   r  r  )  s     
AC Cr   r  c                   Z   a  ] tR tRt o Rt]P                  tR tR t	R t
R tR tRtV tR	# )
UTF8SigTesti9  	utf-8-sigc                .    V P                  R . RO4       R# )   ﻿ ÿ߿ࠀ￿𐀀N)ry   ry   ry   ry   ry   u   ﻿   ﻿ r$     ﻿ ÿr%     ﻿ ÿ߿r&  r&     ﻿ ÿ߿ࠀr'  r'     ﻿ ÿ߿ࠀ￿r(  r(  r(  r#  r  r  s   &r   r  UTF8SigTest.test_partial=  s    8	
r   c                >    V P                  \        R R4      R4       R# )   ﻿r!  ry   Nr   r~  r  s   &r   test_bug1601501UTF8SigTest.test_bug1601501Y  s    _k:B?r   c                    \         P                  ! R 4      ! 4       pRpV P                  VP                  VP	                  R 4      4      V4       R# )r!  r   N)r   r`   r   ra   rs   )r   rk   rS   s   &  r   test_bomUTF8SigTest.test_bom]  s<    ((57!((;"78!<r   c                   R p\         P                  R,           p\         P                  ! R4      pR.\        \	        ^^4      4      ,           . RO,            F  pV! \
        P                  ! V4      4      p\
        P                  ! 4       p Ve   VP                  V4      pMVP                  4       pV'       g   MVP                  V4       KC  VP                  4       pV P                  W4       K  	  R# u   ABC¡∀XYZs   ABC¡∀XYZr!  N)@            i   )r   BOM_UTF8r|   listr_   r   r   StringIOrT   rN   r  r   	r   	unistring
bytestringr   sizehintistreamostreamr   gots	   &        r   test_stream_bomUTF8SigTest.test_stream_bomb  s    (	__'DD
!!+.eArl!3312 2HRZZ
34GkkmG'"<<1D"<<>Dd#""$CS,2r   c                   R pRp\         P                  ! R4      pR.\        \        ^^4      4      ,           . RO,            F  pV! \        P
                  ! V4      4      p\        P                  ! 4       p Ve   VP                  V4      pMVP                  4       pV'       g   MVP                  V4       KC  VP                  4       pV P                  W4       K  	  R# r3  )r   r|   r9  r_   r   r   r:  rT   rN   r  r   r;  s	   &        r   test_stream_bareUTF8SigTest.test_stream_barex  s    (	2
!!+.eArl!3312 2HRZZ
34GkkmG'"<<1D"<<>Dd#""$CS,2r   r   N)r1   r2   r3   r4   rh   r   r8  r  r  r-  r0  rB  rE  r6   rX   rY   s   @r   r   r   9  s2     H
//C
8@=
-,- -r   r   c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	EscapeDecodeTesti  c                    V P                  \        P                  ! R 4      R4       V P                  \        P                  ! \        4       4      R4       R# )r   Nr  )r   r   escape_decode	bytearrayr  s   &r   r  EscapeDecodeTest.test_empty  s:    --c2H=--ik:HEr   c                    \         P                  p\        R 4       F@  p\        V.4      pVR8w  g   K  V P	                  V! VR,           4      VR,           ^34       KB  	  R# )r6     \   0N)r   rJ  r_   r~   r   r   ra   r   s   &  r   test_rawEscapeDecodeTest.test_raw  sN    %%sAqc
AEz  D!1AHa=A r   c                   \         P                  p\        W4      pV! R R4       V! RR4       V! RR4       V! RR4       V! RR	4       V! R
R4       V! RR4       V! RR4       V! RR4       V! RR4       V! RR4       V! RR	4       V! RR4       V! RR4       V! RR4       V! RR4       V! RR 4       V! R!R4       V! R"R 4       R## )$   [\
]   []   [\"]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]N)r   rJ  r   r   ra   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           
        \         P                  p\        W4      p\        ^a^{4       F  p\	        V.4      pVR9  dF   V P                  \        RV,          4      ;_uu_ 4        V! RV,           RV,           4       RRR4       V P                  \        RV^ ,
          ,          4      ;_uu_ 4        V! RVP                  4       ,           RVP                  4       ,           4       RRR4       K  	  V P                  \        R4      ;_uu_ 4        V! RR4       RRR4       V P                  \        4      ;_uu_ 4        V! RR4       RRR4       V P                  \        R4      ;_uu_ 4       pV! R	R	4       RRR4       \        R
R4       FR  pV P                  \        RV,          4      ;_uu_ 4        V! RV,          \	        V^,          .4      4       RRR4       KT  	  V P                  \        R4      ;_uu_ 4        V P                  V! RR4      R4       RRR4       V P                  \        R4      ;_uu_ 4        V P                  V! RR4      R4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EK`  ; i  + '       g   i     EL}; i  + '       g   i     ELb; i  + '       g   i     ELF; i  + '       g   i     EKO  ; i  + '       g   i     L; i  + '       g   i     R# ; i)a   s   abfnrtvx$"\\%c" is an invalid escape sequencerN  N#"\\8" is an invalid escape sequence   \8   \9&"\\\xfa" is an invalid escape sequence   \r6  r7  *"\\%o" is an invalid octal escape sequence   \%o#"\\z" is an invalid escape sequence   \x\zr   +"\\501" is an invalid octal escape sequence   \x\501)s   \zr  )   Ar   )
r   rJ  r   r_   r~   assertWarnsRegexDeprecationWarningupperassertWarnsr   r   ra   r   rj   r   r  s   &     r   test_warningsEscapeDecodeTest.test_warnings  s   %%t,r3Aqc
A#**+=?!CE E%!)UQY/E &&'9;qtDF Feaggi'):;F F   ""#568 8&&!8 011&&! 2""#59; ;>@)Y'; uf%A&&'9AAEG Ggk5!e)#56G G &
 ""#568 8VHh7E8 ""#5>@ @VJ99E@ @-E E EF F F8 8 8 211; ; ;G G G8 8@ @ @s`   #I"/4I6
J<
J,
J32"K>K>K/"I36JJ	J0	3K	KK,	/L 	c                   \         P                  pV P                  \        VR 4       V P                  \        VR4       V P	                  V! RR4      R	4       V P	                  V! RR4      R
4       V P                  \        VR4       V P                  \        VR4       V P	                  V! RR4      R4       V P	                  V! RR4      R4       R# )s   \xs   [\x]s   [\x]\xr   r   s   \x0s   [\x0]s   [\x0]\x0N)rU  r   )   [?]?r   )rU     )r  r  )r   rJ  r   r|  r   )r   ra   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)r1   r2   r3   r4   r  rQ  ri  r  r'  r6   rX   rY   s   @r   rH  rH    s)     FB$.F@	H 	Hr   rH  c                   2   a  ] tR tRt o R tR tR tRtV tR# )PunycodeTestiK  c                    \          FV  w  rV P                  \        VP                  R 4      R4      P	                  4       \        VR4      P	                  4       4       KX  	  R# punycoder  N)punycode_testcasesr   r~  rs   lowerr   unipunys   &  r   test_encodePunycodeTest.test_encodeL  sM    +IC CJJz*G4::<D'"((* ,r   c                    \          Fe  w  rV P                  WP                  R 4      4       VP                  R4      P                  R4      pV P                  WP                  R 4      4       Kg  	  R# r  )r  r   ra   rs   r  s   &  r   test_decodePunycodeTest.test_decodeX  sU    +ICS++j"9:;;w'..w7DS++j"9: ,r   c                J   R R\        RR^^R4      3RR\        RR^ ^R4      3RR\        RR^
^R4      3RR\        RR^^R4      3RR\        R	R^ ^R4      3R
R\        R	R^^R4      3RR\        RR^^R4      3RR\        RR^^R4      3RR\        RR^^R4      3RR\        RR^^R4      3RR\        RR^^R4      3R.pV EF5  w  r#pV P                  W#R7      ;_uu_ 4        \        V\        4      '       d   V P	                  \         4      ;_uu_ 4       pVP                  RV4       RRR4       XP                  pV P                  VP                  VP                  4       V P                  VP                  V4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       M"V P                  VP                  RV4      V4       RRR4       EK8  	  R#   + '       g   i     L; i  + '       g   i     EKa  ; i)   xn--w&r{   r  r   ry   s   &egbpdaj6bu4bxfgehfvwxns   egbpdaj6bu&4bx&fgehfvwxns   egbpdaj6bu4bxfgehfvwxn&s   Proprostnemluvesky-uyb24dma41ar  s   Proprostnemluvesky-uyb24dma41as    Proprost&nemluvesky-uyb24&dma41as    Proprostnemluvesky&-&uyb24dma41as   Proprostnemluvesky-&uyb24dma41as   Proprostnemluvesky-uyb24d&ma41as   Proprostnemluvesky-uyb24dma41a&)r  errorsN)r  r   zxn-)r   r  
isinstance	Exceptionr   ra   r  r   rh   r  r  r  )r   	testcasesr  r  r  r  r  s   &      r   test_decode_invalid PunycodeTest.test_decode_invalid^  s3   "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7h	22**+=>>"J7 ?,,C$$S\\83D3DE$$SZZ6$$SYY?$$SWWhll;$$T[[V%DhO 87 '0 ?> 877s%   "4HG=)CH=HHH"r   N)	r1   r2   r3   r4   r  r  r  r6   rX   rY   s   @r   r  r  K  s     
;P Pr   r  c                   &   a  ] tR tRt o R tRtV tR# )NameprepTesti  c           	     v   ^ RI Hp \        \        4       F]  w  pw  r4Vf   K  \	        VRR4      pVf   V P                  \        W4       K7  \	        VRR4      p V P                  V! V4      V4       K_  	  R#   \         d5   p\        P                  ! RT^,           \	        T4      3,          4      hRp?ii ; i)r   )nameprepNr  r   zTest 3.%d: %s)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   A99B8/B33B8r   N)r1   r2   r3   r4   r  r6   rX   rY   s   @r   r  r    s     P Pr   r  c                     a  ] tR tRt o R]! RR^ ^R4      3R]! RR^^R4      3R]! RR^^R4      3R]! RR^^R4      3R]! RR^^	R4      3R	]! RR	^
^R4      3R
]! RR
^
^R4      3R]! RR^^R4      3R]! RR^^R4      3.	tRR 2]! RRR 2^^@R4      3R]! RR^^R4      3.tR tR t	R t
R tR tR tR tR tR tR tR tRtV tR# )IDNACodecTesti)     python.orgidnary      python.org   python.org   python.org   python.org   python.org   xn--pythn-&mua.org   xn--pythn-m&ua.org   xn--pythn-mua&.orgfoo.	   あさ.͏c                   V P                  \        R R4      R4       V P                  \        RR4      R4       V P                  \        RR4      R4       V P                  \        RR4      R4       V P                  \        R	R4      R4       V P                  \        R
R4      R4       V P                  \        RR4      R4       V P                  \        RR4      R4       V P                  \        RR4      R4       R# )
   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.Nr,  r  s   &r   test_builtin_decode!IDNACodecTest.test_builtin_decode;  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           
        V P                    EF  w  rV P                  WR 7      ;_uu_ 4        V P                  \        4      ;_uu_ 4       pVP	                  R4       RRR4       XP
                  pV P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  RVP                   2R7       V P                  VP                  VP                  4       RRR4       EK  	  R#   + '       g   i     L; i  + '       g   i     EK?  ; i)caser  r  Nzreason: )msg)invalid_decode_testcasesr  r   r   ra   r  r   rh   r  r  reasonr  r   r  r  r  r  s   &    r   test_builtin_decode_invalid)IDNACodecTest.test_builtin_decode_invalidH  s    ";;ND4;;&&'9::bKK' ;ll  x/@/@A  X__=  HNN(3::,@W X  (,,7 <; <:: <;;s$   D:D'B;D:'D72D::Ec                   V P                  R P                  R4      R4       V P                  RP                  R4      R4       V P                  RP                  R4      R4       V P                  RP                  R4      R4       R	# )
r  r  r  r  r  r  r  r  r  Nr   rs   r  s   &r   test_builtin_encode!IDNACodecTest.test_builtin_encodeS  sq    ,,V4mD--f5~F//79MN)008:OPr   c           
        V P                    EF  w  rV P                  WR 7      ;_uu_ 4        V P                  \        4      ;_uu_ 4       pVP	                  R4       RRR4       XP
                  pV P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       RRR4       EK  	  R#   + '       g   i     L; i  + '       g   i     EK0  ; i)r  r  N)invalid_encode_testcasesr  r   r   rs   r  r   rh   r  r  r  r  s   &    r   test_builtin_encode_invalid)IDNACodecTest.test_builtin_encode_invalidY  s    ";;ND4;;&&'9::bKK' ;ll  x/@/@A  X__=  HNN;  (,,7 <; <:: <;;s$   D+DB,D+D(#D++D=c                4   V P                  \        R 4      ;_uu_ 4        RP                  R4       RRR4       V P                  \        R4      ;_uu_ 4        RP                  R4       RRR4       R#   + '       g   i     LJ; i  + '       g   i     R# ; i)zway too longr  Nztoo longsT  xn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasN   xn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)assertRaisesRegexr   ra   r  s   &r    test_builtin_decode_length_limit.IDNACodecTest.test_builtin_decode_length_limitd  si    ##$6GG"**62 H##$6
CC ((0 DC HGCCCs   A3B3B	B	c                    \         P                  ! R 4      ! \        P                  ! R4      4      pVP	                  ^4       V P                  VP	                  4       R4       R# )r     abcry   N)r   r|   r   r   rT   r   )r   r   s   & r   test_streamIDNACodecTest.test_streamj  sA    V$RZZ%78	q	2&r   c                X   V P                  R P                  \        P                  ! R R 4       R4      4      R4       V P                  R P                  \        P                  ! R R 4       R4      4      R4       V P                  R P                  \        P                  ! R R	 4       R4      4      R
4       V P                  R P                  \        P                  ! R R	 4       R4      4      R
4       \        P                  ! R4      ! 4       pV P                  VP                  R4      R 4       V P                  VP                  R4      R4       V P                  VP                  R4      R 4       V P                  VP                  RR4      R4       VP                  4        V P                  VP                  R4      R 4       V P                  VP                  R4      R4       V P                  VP                  R4      R4       V P                  VP                  RR4      R 4       R# )ry   c              3   :   "   T F  p\        V.4      x  K  	  R # 5ir   r~   r   r   s   & r   r   8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>q  s     &I=auaSzz=   r  r  r  c              3   :   "   T F  p\        V.4      x  K  	  R # 5ir   r  r  s   & r   r   r  u  s     &J>auaSzz>r  r  r  c              3   :   "   T F  p\        V.4      x  K  	  R # 5ir   r  r  s   & r   r   r  y       &Q;PauaSzz;Pr  r  r  c              3   :   "   T F  p\        V.4      x  K  	  R # 5ir   r  r  s   & r   r   r  }  r  r  s   xn--xams	   ple-9ta.ou	   äxample.s   rgr   Torgs   rg.zorg.N)r   r   r   r   r`   ra   r   )r   decoders   & r   test_incremental_decode%IDNACodecTest.test_incremental_decodeo  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                n   R \        RR^ ^R4      3R\        RR^^R4      3R\        RR^^R4      3R\        RR^ ^R4      3R	\        RR
^^R4      3R\        RR^^R4      3R\        RR^
^R4      3R\        RR^^R4      3R\        RR^^R4      3.	pV EF  w  r#V P                  W#R7      ;_uu_ 4        V P                  \         4      ;_uu_ 4       p\        \        P
                  ! R V 4       R4      4       RRR4       XP                  pV P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       RRR4       EK  	  \        P                  ! R4      ! 4       pV P                   EF  w  r#V P                  W#R7      ;_uu_ 4        V P                  \         4      ;_uu_ 4       pVP                  V4       RRR4       XP                  pV P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       RRR4       EK  	  R#   + '       g   i     EL; i  + '       g   i     EKw  ; i  + '       g   i     L; i  + '       g   i     EKY  ; i)r  r  r&  ry   r  s   pytr  s   pythonr  r  s   or  s   orgr  s   xn--pythn-&mua.r  s   xn--pythn-m&ua.r  s   xn--pythn-mua&.r  c              3   :   "   T F  p\        V.4      x  K  	  R # 5ir   r  r  s   & r   r   @IDNACodecTest.test_incremental_decode_invalid.<locals>.<genexpr>  s     +E1E1#JJr  N)r   r  r   r9  r   r   r  r   rh   r  r  r  r`   r  ra   )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   5K:(K&;B,K:;L"L+B,L"&K71	K::LLL""L4c                   V P                  R P                  \        P                  ! RR4      4      R4       V P                  R P                  \        P                  ! RR4      4      R4       V P                  R P                  \        P                  ! RR4      4      R4       V P                  R P                  \        P                  ! RR4      4      R4       \        P                  ! R4      ! 4       pV P                  VP                  R4      R 4       V P                  VP                  R	4      R
4       V P                  VP                  RR4      R4       VP                  4        V P                  VP                  R4      R 4       V P                  VP                  R4      R4       V P                  VP                  RR4      R 4       R# )r   r  r  r  r  r  r  r  u   äxz	ample.orgs   xn--xample-9ta.ry   Ts   orgz
ample.org.s   xn--xample-9ta.org.N)r   r   r   
iterencoderr   rs   r   )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                   R R 2\        RR ^ ^<R4      3R\        RR^ ^R4      3.pV EF  w  r#V P                  W#R7      ;_uu_ 4        V P                  \         4      ;_uu_ 4       p\        \        P
                  ! VR4      4       RRR4       XP                  pV P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       RRR4       EK  	  R#   + '       g   i     L; i  + '       g   i     EK?  ; i)r  r  ry   r  u   ͏r  Nx   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)r   r  r   r9  r   r  r  r   rh   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'!EB,EEEE(c                    RP                  RR4       RP                  RR4       R FG  pV P                  \        RP                   RV4       V P                  \        RP                  RV4       KI  	  R# )z$Only supports "strict" error handlerr  r  r{   r  N)r   r   r   r  )rs   ra   r   r  r   r  s   & r   r'  IDNACodecTest.test_errors  se    FH-VX.#Fi)<)<ffMi$$ff6#r   r   Nr  )r1   r2   r3   r4   r   r  r   r  r  r  r  r  r  r  r  r  r  r  r'  r6   rX   rY   s   @r   r  r  )  sp     
.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"6 6r   r  c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 t]P                  ! RR4      R 4       tR tR tR tR tR tR tR tRtV tR# )CodecsModuleTesti  c                   V P                  \        P                  ! R R4      R4       V P                  \        \        P                  4       V P                  \        P                  ! R4      R4       V P                  \
        \        P                  RR4       V P                  \        P                  ! R RR7      R4       V P                  \        P                  ! RRR	R
7      R4       R# )   latin-1   äöür  abcr&  r  objrh      []r   r  r   N)r   r   ra   r   r  r   r  s   &r   r  CodecsModuleTest.test_decode  s    	B'	))V]]3v.6,fmmWgN 	?YO'	)y'(K	r   c                "   V P                  \        P                  ! R R4      R4       V P                  \        \        P                  4       V P                  \
        \        P                  RR4       V P                  \        P                  ! R4      R4       V P                  \        \        P                  RR4       V P                  \        P                  ! R RR	7      R4       V P                  \        P                  ! R
RRR7      R4       R# )r  r   r  r   __spam__r  r  u   ÿffr  r     [ÿ]r   r  rU  N)r   r   rs   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                    V P                  \        \        P                  4       V P                  \        \        P                  ^*4       R# r  )r   r  r   registerr  s   &r   test_registerCodecsModuleTest.test_register  s,    )V__5)V__b9r   c                   R p\         P                  ! 4       p\        P                  ! V4       V P	                  \
        \        P                  V4       VP                  V4       VP                  4        \        P                  ! V4       V P	                  \        \        P                  V4       VP                  4        R# )nonexistent_codec_nameN)r   Mockr   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                    V P                  \        \        P                  4       V P                  \        \        P                  R 4       V P                  \        \        P                  R4       R# )r	   N)r   r  r   r  r  r  s   &r   test_lookupCodecsModuleTest.test_lookup  sB    )V]]3+v}}jA+v}}c:r   c                    V P                  \        \        P                  4       V P                  \        \        P                  R 4       R# r	  N)r   r  r   
getencoderr  r  s   &r   test_getencoder CodecsModuleTest.test_getencoder  0    )V%6%67+v'8'8*Er   c                    V P                  \        \        P                  4       V P                  \        \        P                  R 4       R# r!  )r   r  r   
getdecoderr  r  s   &r   test_getdecoder CodecsModuleTest.test_getdecoder  r%  r   c                    V P                  \        \        P                  4       V P                  \        \        P                  R 4       R# r!  )r   r  r   r|   r  r  s   &r   test_getreaderCodecsModuleTest.test_getreader   0    )V%5%56+v'7'7Dr   c                    V P                  \        \        P                  4       V P                  \        \        P                  R 4       R# r!  )r   r  r   r   r  r  s   &r   test_getwriterCodecsModuleTest.test_getwriter$  r-  r   LC_CTYPEtr_TRc                j    \         P                  ! R 4      pV P                  VP                  R4       R# )ASCIIr  N)r   r  r   r  )r   r   s   & r   test_lookup_issue1813&CodecsModuleTest.test_lookup_issue1813(  s&     MM'")r   c                    RpV P                  V\        P                  4       \        P                   F  p\        \        V4       K  	  R# )rs   N),rs   ra   r  	CodecInfoCodecIncrementalEncoderIncrementalDecoderStreamReaderStreamWriterr  r"  r'  rr   r`   r|   r   register_errorr  strict_errorsreplace_errorsignore_errorsxmlcharrefreplace_errorsbackslashreplace_errorsnamereplace_errorsr   EncodedFiler  r   r  BOM_BEBOM_LEr8  	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)assertCountEqualr   __all__getattr)r   apis   & r   test_allCodecsModuleTest.test_all/  s7    
$ 	c6>>2>>CFC  "r   c                &   V P                  \        P                  \        P                  4       R F  pV P	                  V4      ;_uu_ 4        V P                  \        4      ;_uu_ 4        \        P                  ! \        P                  VR4      ;_uu_ 4       pV P                  V\        P                  4       RRR4       RRR4       RRR4       K  	  R#   + '       g   i     L&; i  + '       g   i     L1; i  + '       g   i     K  ; i)wr  N)r[  r   zr+w+r   r  )rp  r   rq  rr  r  r}  r{  r   r   rc   rR  )r   r  files   &  r   	test_openCodecsModuleTest.test_openF  s    	(()*:*:;5Dd##T%5%56H%I%I[[!1!14AAT))$0I0IJ B &J## 6AA &J%I###s<   C?+/C,!C;C,C?C)$C,,C<7C??Dc                   V P                  \        \        P                  R R4       V P                  \        \        P                  RR4       V P                  \        \        P                  RR4       V P                  \        \        P                  RR4       R FQ  pV P                  \        \        P                  R RV4       V P                  \        \        P                  RRV4       KS  	  R# )r  	undefinedr  ry   r   N)r{   r   r   r   )r   UnicodeErrorr   rs   ra   r  s   & r   test_undefinedCodecsModuleTest.test_undefinedM  s    ,ukJ,v{K,r;G,sKHIFluk6;lv{F< Jr   c           	        \         P                  ! 4       p\         P                  ! R V4      ;_uu_ 4       pV P                  \        4      ;_uu_ 4        \        \        P                  RR4       RRR4       V! 4       P                  P                  4        RRR4       R#   + '       g   i     L9; i  + '       g   i     R# ; i)zbuiltins.openrz  zinvalid-encodingN)
r   	mock_openpatchr   r  r   r   rr  closeassert_called)r   rf  r]  s   &  r   'test_file_closes_if_lookup_error_raised8CodecsModuleTest.test_file_closes_if_lookup_error_raisedX  sy    NN$	ZZ33t"";//#I$4$4d<NO 0 FLL&&(	 43// 433s#   B3B 	/'B3 B0+B33C	c                r   \         P                  ! R 4      p\        P                  ! V4      pV P                  W!4       V P	                  W!4       V P                  VP                  4       V P	                  VP                  VP                  4       V P	                  VP                  VP                  4       V P	                  VP                  VP                  4       \         P                  ! R4      p\        P                  ! V4      pV P                  W!4       V P	                  W!4       V P                  VP                  4       V P	                  VP                  VP                  4       V P	                  VP                  VP                  4       V P	                  VP                  VP                  4       R# r  base64N)r   r  copyassertIsNotr   rf   _is_text_encodingrs   r  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                r   \         P                  ! R 4      p\        P                  ! V4      pV P	                  W!4       V P                  W!4       V P                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       \         P                  ! R4      p\        P                  ! V4      pV P	                  W!4       V P                  W!4       V P                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       R# rm  )r   r  ro  deepcopyrp  r   rf   rq  rs   r  rr  rs  rt  s   &  r   test_deepcopyCodecsModuleTest.test_deepcopyt  s2   }}W%mmD!##../T[[1499-//1H1HI }}X&mmD!##//0T[[1499-//1H1HIr   c                   \         P                  ! R 4      p\        \        P                  ^,           4       F  pV P                  VR7      ;_uu_ 4        \        P                  ! V4      p\        P                  ! V4      pV P                  W4       V P                  W4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  4       RRR4       K  	  \         P                  ! R4      p\        \        P                  ^,           4       F  pV P                  VR7      ;_uu_ 4        \        P                  ! V4      p\        P                  ! V4      pV P                  W4       V P                  W4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  4       RRR4       K  	  R#   + '       g   i     EK  ; i  + '       g   i     EK  ; i)r  protocolNrn  )r   r  r_   pickleHIGHEST_PROTOCOLr  dumpsloadsrp  r   r  rr  rf   rq  rs  )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-)B6I-H?Ir   N)r1   r2   r3   r4   r  r  r  r  r  r#  r(  r+  r/  r   run_with_localer5  rX  r^  rc  rj  rv  rz  r  r6   rX   rY   s   @r   r  r    s      :
,;
FFEE Z1* 2*!.K	<)J(J(I Ir   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )StreamReaderTesti  c                r    \         P                  ! R 4      V n        \        P                  ! R4      V n        R# )r     한
글N)r   r|   r   r   r   r   r  s   &r   setUpStreamReaderTest.setUp  s%    &&w/jj!>?r   c                    V P                  V P                  4      pV P                  VP                  4       R R.4       R# )u   한
u   글N)r   r   r   r   r   r   s   & r   test_readlinesStreamReaderTest.test_readlines  s/    KK$X(>?r   c                |   V P                  \        R 4      4      pV P                  \        R4      ;_uu_ 4        \        P                  ! V4       RRR4       V P                  \        R4      ;_uu_ 4        \        P
                  ! V4       RRR4       R#   + '       g   i     LO; i  + '       g   i     R# ; i)r  r<  N)r   rE   r  r  ro  ry  r  s   & r   rv  StreamReaderTest.test_copy  ss    KK;<=##I~>>IIaL ?##I~>>MM! ?> ?>>>>   B6B*B'	*B;	c           
        \        \        P                  ^,           4       F}  pV P                  VR7      ;_uu_ 4        V P	                  \        R4      4      pV P                  \        R4      ;_uu_ 4        \        P                  ! W!4       RRR4       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r^   r}  r  r<  N)	r_   r  r  r  r   rE   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FLL* G .- 8 GF .--#   9B77B$B7$B4/B77C)r   r   N)
r1   r2   r3   r4   r  r  rv  r  r6   rX   rY   s   @r   r  r    s      @@+ +r   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )StreamWriterTesti  c                <    \         P                  ! R 4      V n        R# )r  N)r   r   r   r  s   &r   r  StreamWriterTest.setUp  s    &&w/r   c                |   V P                  \        R 4      4      pV P                  \        R4      ;_uu_ 4        \        P                  ! V4       RRR4       V P                  \        R4      ;_uu_ 4        \        P
                  ! V4       RRR4       R#   + '       g   i     LO; i  + '       g   i     R# ; i)r   r=  N)r   rE   r  r  ro  ry  r  s   & r   rv  StreamWriterTest.test_copy  sq    KKc
###I~>>IIaL ?##I~>>MM! ?> ?>>>>r  c           
        \        \        P                  ^,           4       F}  pV P                  VR7      ;_uu_ 4        V P	                  \        R4      4      pV P                  \        R4      ;_uu_ 4        \        P                  ! W!4       RRR4       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r^   r}  r   r=  N)	r_   r  r  r  r   rE   r  r  r  r  s   &  r   r  StreamWriterTest.test_pickle  s    622Q67Eu--KKc
+++I~FFLL* G .- 8 GF .--r  )r   N	r1   r2   r3   r4   r  rv  r  r6   rX   rY   s   @r   r  r    s     0+ +r   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )StreamReaderWriterTesti  c                r    \         P                  ! R 4      V n        \         P                  ! R4      V n        R# )latin1r  N)r   r|   r   r   r   r  s   &r   r  StreamReaderWriterTest.setUp  s&    &&x0&&w/r   c                   \         P                  ! \        R 4      V P                  V P                  4      pV P                  \        R4      ;_uu_ 4        \        P                  ! V4       RRR4       V P                  \        R4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     LO; i  + '       g   i     R# ; i)r   rR  N)	r   rR  rE   r   r   r  r  ro  ry  r  s   & r   rv   StreamReaderWriterTest.test_copy  s    %%eCj$++t{{K##I/CDDIIaL E##I/CDDMM! ED EDDDDs   B2C2C	C	c           
        \        \        P                  ^,           4       F  pV P                  VR7      ;_uu_ 4        \        P
                  ! \        R4      V P                  V P                  4      pV P                  \        R4      ;_uu_ 4        \        P                  ! W!4       RRR4       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r^   r}  r   rR  N)r_   r  r  r  r   rR  rE   r   r   r  r  r  r  s   &  r   r  "StreamReaderWriterTest.test_pickle  s    622Q67Eu----eCj$++t{{S++I7KLLLL* M .- 8 ML .--s$   ACB?)C?C
CC#)r   r   Nr  rY   s   @r   r  r    s     0+ +r   r  c                   &   a  ] tR tRt o R tRtV tR# )EncodedFileTesti  c                ^   \         P                  ! R 4      p\        P                  ! VRR4      pV P	                  VP                  4       R4       \         P                  ! 4       p\        P                  ! VRR4      pVP                  R4       V P	                  VP                  4       R4       R# )r  r  r  s   \
  r      ü   N)r   r   r   rE  r   rT   rN   r  r   r   efs   &  r   
test_basicEncodedFileTest.test_basic  s}    JJ45;8$;<JJL7I6
w/r   r   N)r1   r2   r3   r4   r  r6   rX   rY   s   @r   r  r    s     0 0r   r  r  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oemc                      a  ] tR tRt o R t]P                  ]P                  ! ]	RJ R4      R 4       4       t
R tR tR tR	 tR
 tRtV tR# )BasicUnicodeTestil  c           	       aa R p\          EF  p\        P                  ! V4      P                  pVP	                  R4      '       d   VR,          pM	VR8X  d   RpVR8w  d3   V P                  VP                  RR4      VP                  RR4      4       \        P                  ! V4      ! V4      w  rEV P                  V\        V4      RV,          4       \        P                  ! V4      ! V4      w  reV P                  WaRV,          4       V\        9  Ed   \        R4      p\        P                  ! V4      ! V4      pRp	V FV  p
VP                  V
4       VP                  4       pV P                  \!        V4      \"        J \!        V4      4       W,          p	KX  	  \        R4      p\        P$                  ! V4      ! V4      pRpV	 F4  p
VP                  \#        V
.4      4       WP                  4       ,          pK6  	  V P                  WRV,          4       V\        9  g   EK   \        P&                  ! V4      ! 4       oRp	V F  p
V	SP)                  V
4      ,          p	K  	  V	SP)                  RR	4      ,          p	\        P*                  ! V4      ! 4       oRpV	 F%  p
VSP-                  \#        V
.4      4      ,          pK'  	  VSP-                  RR	4      ,          pV P                  WRV,          4       RP/                  \        P0                  ! \        P2                  ! W4      V4      4      pV P                  WRV,          4       RP/                  \        P0                  ! \        P2                  ! RV4      V4      4      pV P                  VR4       VR9  g   EK   \        P&                  ! V4      ! R
4      oRP/                  V3R lV 4       4      p	\        P*                  ! V4      ! R
4      oRP/                  V3R lV	 4       4      pV P                  WRV,          4       EK!  	  R#   \4         d     Li ; i  \4         d     EKE  i ; i)abc123_codecr  r  r  -encoding=%rr   ry   Tr   c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5ir   rs   )r   r   r  s   & r   r   /BasicUnicodeTest.test_basics.<locals>.<genexpr>  s     0NAq1B1BA   !c              3   Z   <"   T F   pSP                  \        V.4      4      x  K"  	  R # 5ir   ra   r~   )r   r   r  s   & r   r   r%    s+      0H9FA 18uaSz0J0J9F   (+Nr  r  )all_unicode_encodingsr   r  r  endswithr   r   r"  r   r'  broken_unicode_with_statefulrE   r   rN   rT   rf   typer~   r|   rr   rs   r`   ra   r   r   r  r  )r   rS   rh   r  r   rR   rM   r   r   encodedresultr   chunkr   decodedresultr   r  r  s   &              @@r   test_basicsBasicUnicodeTest.test_basicsm  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$   &P0"Q0P>=P>QQNzneed _testlimitedcapi modulec                ,  aa R p\          EF`  pV\        9  g   K   \        P                  ! V4      oRpV F  pVSP	                  V4      ,          pK  	  VSP	                  RR4      ,          p\        P
                  ! V4      oRpV F%  pVSP                  \        V.4      4      ,          pK'  	  VSP                  RR4      ,          pV P                  WQRV,          4       VR	9  g   K   \        P                  ! VR4      oRP                  V3R lV 4       4      p\        P
                  ! VR4      oRP                  V3R lV 4       4      pV P                  WQRV,          4       EKc  	  R#   \         d     Li ; i  \         d     EK  i ; i)
r  r   ry   Tr"  r   c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5ir   r$  )r   r   cencoders   & r   r   4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>  s     0OQ1C1CQr&  c              3   Z   <"   T F   pSP                  \        V.4      4      x  K"  	  R # 5ir   r(  )r   r   cdecoders   & r   r   r7    s+      0H9FA 19qc
0K0K9Fr)  Nr*  )r+  r-  _testlimitedcapicodec_incrementalencoderrs   codec_incrementaldecoderra   r~   r   r  r   )r   rS   rh   r/  r   r1  r9  r6  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#   E2.F2F ?F FFc                h   R: RR: R2p\          F  pVR8X  d   K  V\        9   d   K  \        P                  ! V4      ! \        P
                  ! VP                  V4      4      4      p\        ^4       F6  pVP                  ^ ^ 4       VP                  4       pV P                  W4       K8  	  K  	  R# )r   r   r  NX  abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123X  def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456)r+  r-  r   r|   r   r   rs   r_   seekrT   r   )r   rS   rh   r   tr   s   &     r   	test_seekBasicUnicodeTest.test_seek  s    &5-H6!77%%h/

188H;M0NOF1XAq!{{}  )	  .r   c                    \          FO  p\        P                  ! V4      pV P                  \        V4       VR9  g   K8  V P                  \        V^*4       KQ  	  R# )r  N)r  r  )r+  r   r'  r   r  )r   rh   r  s   &  r   test_bad_decode_args%BasicUnicodeTest.test_bad_decode_args  sG    -H''1Gi133!!)Wb9	 .r   c                x    \          F/  p\        P                  ! V4      pV P                  \        V4       K1  	  R # r   )r+  r   r"  r   r  )r   rh   r  s   &  r   test_bad_encode_args%BasicUnicodeTest.test_bad_encode_args  s,    -H''1Gi1 .r   c                ^    ^ RI Hp \        VP                  4      pV P	                  W"4       R# )r   )r  N)	encodingsr  r.  encoding_tabler   )r   r  
table_types   &  r   "test_encoding_map_type_initialized3BasicUnicodeTest.test_encoding_map_type_initialized  s#    $&//0
0r   c                    R p\          FR  pV\        9  g   K  V P                  W!VP                  V4      4       V P	                  W!VP                  V4      4       KT  	  R# )r  N)r+  r-  ro   rs   rt   )r   ri   rh   s   &  r   r-  #BasicUnicodeTest.test_decoder_state	  sL    -H;;00ahhx>PQ00ahhx>PQ .r   r   )r1   r2   r3   r4   r2  r   cpython_onlyunittestskipIfr:  r=  rD  rG  rJ  rP  r-  r6   rX   rY   s   @r   r  r  l  se     NC` __%-/MN#C O #CJ*:2
1R Rr   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )CharmapTesti	  c                   V P                  \        P                  ! R RR4      R4       V P                  \        P                  ! R RR4      R4       V P                  \        \        P                  R RR4       V P                  \        \        P                  R RR4       V P                  \        P                  ! R RR4      R4       V P                  \        P                  ! R RR4      R4       V P                  \        P                  ! R RR4      R4       V P                  \        P                  ! R RR4      R4       V P                  \        P                  ! R RR4      R4       V P                  \        P                  ! R RR4      R4       \        \        R	4      4      pV P                  \        P                  ! VRR
4      R
\        V4      34       R# )    r{   r     􏿿bcabu   ab￾r   r   r   r6  ry   Nr     r[  r^  u   ab�r^  zab\x02r^  r\  r^  )r   r   charmap_decoder   r   r~   r_   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                   V P                  \        P                  ! R R^ R^R^R/4      R4       V P                  \        P                  ! R R^ R^R^R/4      R4       V P                  \        P                  ! R R^ R^R^R/4      R4       V P                  \        P                  ! R R^ R^R^R	/4      R4       V P                  \        \        P                  R R^ R^R/4       V P                  \        \        P                  R R^ R^R^R
/4       V P                  \        \        P                  R R^ R^R^R/4       V P                  \        P                  ! R R^ R^R/4      R4       V P                  \        P                  ! R R^ R^R^R
/4      R4       V P                  \        P                  ! R R^ R^R^R/4      R4       V P                  \        P                  ! R R^ R^R/4      R4       V P                  \        P                  ! R R^ R^R^R
/4      R4       V P                  \        P                  ! R R^ R^R^R/4      R4       V P                  \        P                  ! R R^ R^R/4      R4       V P                  \        P                  ! R R^ R^R^R
/4      R4       V P                  \        P                  ! R R^ R^R^R/4      R4       \        \        R4      4      pV P                  \        P                  ! VR/ 4      R	\        V4      34       V P                  \        R\        P                  R R^ R^R^R/4       V P                  \        R\        P                  R R^ R^R^R/4       R
# )rZ  r{   r   r   r   AaBbCc   􏿿ry   Nu   ￾r   r   r   r6  z.character mapping must be in range\(0x110000\)r   iɚ;r]  )AaBbCcr^  r_  rb  r`  ra  )
r   r   rc  r   r   r~   r_   r   r  r  rd  s   & r   test_decode_with_int2str_map(CharmapTest.test_decode_with_int2str_mapF	  s   !!/8#$c1c1c":<	
 	!!/8#$dAtQ"=?	
 	!!/8#$lAsAs"CE	
 	!!/8#$c1c1b"9;	
 	,!!?H$%sAs#3	

 	,!!?H$%sAsAt#<	
 	,!!?H$%sAsAx#@	

 	!!/9#$c1c"24	
 	!!/9#$c1c1d";=	
 	!!/9#$c1c1h"?A	
 	!!/3E#$c1c"24	
 	!!/3E#$c1c1d";=	
 	!!/3E#$c1c1h"?A	
 	!!/8#$c1c"24	
 	!!/8#$c1c1d";=	
 	!!/8#$c1c1h"?A	
 s$!!(Hb9X	

 	y>!!X34B'?	
 	y>!!X34I'F	
r   c                   \        R 4      p\        R4      p\        R4      pV P                  \        P                  ! RR^ V^V^V/4      R4       V P                  \        P                  ! RR^ R^V^V/4      R4       V P                  \        P                  ! RR^ \        P
                  ^V^V/4      \        \        P
                  4      R,           ^34       V P                  \        \        P                  RR^ \        P
                  ^,           ^V^V/4       V P                  \        \        P                  RR^ V^V/4       V P                  \        \        P                  RR^ V^V^R/4       V P                  \        P                  ! RR^ V^V/4      R4       V P                  \        P                  ! RR^ V^V^R/4      R4       V P                  \        P                  ! RR	^ V^V/4      R4       V P                  \        P                  ! RR	^ V^V^R/4      R4       V P                  \        P                  ! RR
^ V^V/4      R4       V P                  \        P                  ! RR
^ V^V^R/4      R4       R# )r   r   r   rZ  r{   i bci  r   r   r   Nr]  r_  r`  ra  rb  )
ordr   r   rc  r6  
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#$aAq!"46	
 	!!/8#$h1a";=	
 	!!/8#$cnnaAq"AC 4'+	
 	)!!?H$%s~~'91aA#F	

 	,!!?H$%q!Q<	

 	,!!?H$%q!Q6#:	

 	!!/9#$aA,0	
 	!!/9#$aAq&"9;	
 	!!/3E#$aA,0	
 	!!/3E#$aAq&"9;	
 	!!/8#$aA,0	
 	!!/8#$aAq&"9;	
r   r   N)	r1   r2   r3   r4   rf  ro  rv  r6   rX   rY   s   @r   rX  rX  	  s     5
nr
hI
 I
r   rX  c                   ,   a  ] tR tRt o R tR tRtV tR# )WithStmtTesti
  c                    \         P                  ! R 4      p\        P                  ! VRR4      ;_uu_ 4       pV P	                  VP                  4       R4       RRR4       V P                  VP                  4       R#   + '       g   i     L-; i)r  r   r  r  N)r   r   r   rE  r   rT   rf   closedr  s   &  r   test_encodedfileWithStmtTest.test_encodedfile
  s[    JJ{#9g66"RWWY0 7! 76s   !A==B	c                @   \         P                  ! R 4      p\        P                  ! R4      p\        P                  ! WP
                  VP                  R4      ;_uu_ 4       pV P                  VP                  4       R4       RRR4       R#   + '       g   i     R# ; i)r  r  r{      üN)	r   r   r   r  rR  streamreaderstreamwriterr   rT   )r   r   rB   srws   &   r   test_streamreaderwriter$WithStmtTest.test_streamreaderwriter
  sx    JJ{#}}W%&&q*;*;'+'8'8(D DGJSXXZ0D D D Ds   !!BB	r   N)r1   r2   r3   r4   r|  r  r6   rX   rY   s   @r   ry  ry  
  s     "1 1r   ry  c                   ,   a  ] tR tRt o R tR tRtV tR# )	TypesTesti
  c                   \         P                  \         P                  \         P                  \         P                  \         P
                  \         P                  \         P                  \         P                  \         P                  \         P                  \         P                  \         P                  .p\        \         R 4      '       d    VP                  \         P                  4       V F  pV P!                  \"        VR4       K  	  R# )mbcs_decoder   N)r   r  utf_8_decoder  r  r	  r   rF  rW  utf_32_ex_decodelatin_1_decodeascii_decoderc  hasattrr   r  r   r  )r   decodersr  s   &  r   test_decode_unicodeTypesTest.test_decode_unicode
  s     ######  ######!!!!
 6=))OOF../Gi%8  r   c                   V P                  \        P                  ! R 4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R 4      R4       V P                  \        P                  ! R4      R4       V P	                  \
        \        P                  R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R	4       V P	                  \
        \        P                  R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R	4       R# )
z\u1234s   \u1234
   \U00110000z
\U00110000r   r   N)u   ሴr   r   
   )z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30r  )r   r   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)r1   r2   r3   r4   r  r  r6   rX   rY   s   @r   r  r  
  s     9*L Lr   r  c                   X   a  ] tR tRt o RtRtR tR tR tR t	R t
R	 tR
 tR tRtV tR# )UnicodeEscapeTesti>
  zunicode-escapeNc                    V P                  \        P                  ! R 4      R4       V P                  \        P                  ! R4      R4       R# ry   r   Nr  ry   r   )r   r   unicode_escape_encoder  r  s   &r   r  UnicodeEscapeTest.test_emptyC
  s8    55b98D55c:GDr   c                    \         P                  p\        ^ ^4       F9  pV^\8w  g   K  V P                  V! \	        V4      4      \        V.4      ^34       K;  	  R# )    N)r   r  r_   r   ru  r~   r   rs   r   s   &  r   test_raw_encode!UnicodeEscapeTest.test_raw_encodeG
  sF    --r3AH}  A%*aA  r   c                    \         P                  p\        R 4       FG  pV^\8w  g   K  V P                  V! \	        V.4      R,           4      \        V4      R,           ^34       KI  	  R# r6  rO  0N)r   r  r_   r   r~   ru  rP  s   &  r   test_raw_decode!UnicodeEscapeTest.test_raw_decodeM
  sO    --sAH}  qc
T(9!:SVc\1<MN r   c                   \         P                  p\        W4      pV! R R4       V! RR4       V! RR4       V! RR4       \        ^ 4       F<  p\	        V4      R9  g   K  V! \	        V4      R	V,          P                  4       4       K>  	  \        ^R
4       F*  pV! \	        V4      R	V,          P                  4       4       K,  	  V! RR4       V! RR4       R# )	s   \tr   s   \nr   s   \r\s   \\z	
r   r6     €   \u20ac   𝄠
   \U0001d120N)r   r  r   r_   ru  rs   r   rs   r   r   s   &   r   test_escape_encode$UnicodeEscapeTest.test_escape_encodeS
  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                   \         P                  p\        W4      pV! R R4       V! RR4       V! RR4       V! RR4       V! RR	4       V! R
R4       V! RR4       V! RR4       V! RR4       V! RR4       V! RR4       V! RR	4       V! RR4       V! RR4       V! RR4       V! RR4       V! RR 4       V! R!R4       V! R"R 4       V! R#R$4       V! R%R&4       R'# )(rT  r   rV  z["]rW  z[']rX  z[\]rY  z[]rZ  z[]r[  z[	]r\  z[
]r]  z[]r^  z[]r_  z[]r`  ra  z[8]rb  z[!]rc  z[!8]rd  z[A]re  z[A0]rf  rg  r  r  r  r  N)r   r  r   rh  s   &  r   test_escape_decode$UnicodeEscapeTest.test_escape_decodeb
  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                :   \         P                  p\        W4      p\        ^a^{4       F  p\	        V.4      pVR9  dO   V P                  \        RV,          4      ;_uu_ 4        V! RV,           R\        V4      ,           4       RRR4       VP                  4       R9  g   K{  V P                  \        RV^ ,
          ,          4      ;_uu_ 4        V! RVP                  4       ,           R\        V^ ,
          4      ,           4       RRR4       K  	  V P                  \        R4      ;_uu_ 4        V! RR	4       RRR4       V P                  \        4      ;_uu_ 4        V! R
R4       RRR4       V P                  \        R4      ;_uu_ 4       pV! RR4       RRR4       \        RR4       FJ  pV P                  \        RV,          4      ;_uu_ 4        V! RV,          \        V4      4       RRR4       KL  	  V P                  \        R4      ;_uu_ 4        V P                  V! RR4      R4       RRR4       V P                  \        R4      ;_uu_ 4        V P                  V! RR4      R4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EKz  ; i  + '       g   i     ELu; i  + '       g   i     ELZ; i  + '       g   i     EL>; i  + '       g   i     EKG  ; i  + '       g   i     L; i  + '       g   i     R# ; i)rl  s	   abfnrtuvxrm  rN  r  Ns   UNrn  ro  z\8rp  z\9rq  rr  u   \úr6  r7  rs  rt  ru  rv  r   rw  rx  )z\zr  )   Łr   )r   r  r   r_   r~   rz  r{  ru  r|  r}  r   r~  s   &     r   test_decode_warnings&UnicodeEscapeTest.test_decode_warnings{
  s   --t,r3Aqc
A$**+=?!CE E%!)TCF]3E wwy%**+=?1R4HJ J%!'')+TC"I-=>J J   ""#568 8&% 8 011&%  2""#59; ;>@)X&; uf%A&&'9AAEG Ggk3q6*G G &
 ""#568 8VHh7D8 ""#5>@ @VJ9=I@ @/E E EJ J J8 8 8 211; ; ;G G G8 8@ @ @s`   #!I<6J/
J%
J9
KK!K6L	<JJ"%J6	9K
	K	!K36L		L	c           	        \         P                  pR F  w  r#\        V4       F  pV P                  \        VRV,           RV,          ,           4       V P                  \        VRV,           RV,          ,           R,           4       RV,           RV,          ,           R,           V,           RV,          ,           pV P                  V! VR4      R\        V4      34       V P                  V! VR4      R	\        V4      34       K  	  K  	  V P                  \        VR
4       V P                  V! R
R4      R4       V P                  V! R
R4      R4       R# )   xrN  rO     [\   ]   ]\r   r   r      [�]�r  N))r        ur     Ur  ry   r  r  )r   r  r_   r   r   r   r   r   ra   r   rk   rj   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                    V P                  R . RNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR N4       R	# )
    	
\ÿ￿𐀀ry   r   	 	
 	
z 	
\    	
\ÿ
    	
\ÿ￿Nr  r  s   &r   r  UnicodeEscapeTest.test_partial
  sV   .!!! ! 	!
 ! ! ! ! ! ! ! ! ! ! !  #!!" ##!$ #%!& #'!( #)!* #+!, )-!. )/!0 )1!2 )3!4 )5!6 )7!8 )9!: );!< )=!> )?!@ 3A!$	
r   r   )r1   r2   r3   r4   rh   r   r  r  r  r  r  r  r  r  r6   rX   rY   s   @r   r  r  >
  sC     HEBO,,2JBL %
 %
r   r  c                   R   a  ] tR tRt o RtRtR tR tR tR t	R t
R	 tR
 tRtV tR# )RawUnicodeEscapeTesti
  zraw-unicode-escapeNc                    V P                  \        P                  ! R 4      R4       V P                  \        P                  ! R4      R4       R# r  )r   r   raw_unicode_escape_encoder  r  s   &r   r  RawUnicodeEscapeTest.test_empty
  s8    99"=xH99#>Hr   c                    \         P                  p\        R 4       F0  pV P                  V! \	        V4      4      \        V.4      ^34       K2  	  R# )r6  N)r   r  r_   r   ru  r~   r  s   &  r   r  $RawUnicodeEscapeTest.test_raw_encode
  s=    11sAVCF^eQCj!_= r   c                    \         P                  p\        R 4       F>  pV P                  V! \	        V.4      R,           4      \        V4      R,           ^34       K@  	  R# r  )r   r  r_   r   r~   ru  rP  s   &  r   r  $RawUnicodeEscapeTest.test_raw_decode
  sH    11sAVE1#J$56Q#q8IJ r   c                    \         P                  p\        W4      p\        R 4       F6  pVR9  g   K  V! R\	        V4      ,           R\        V.4      ,           4       K8  	  V! RR4       V! RR4       R# )	r6     uUr  rN  r  r  r  r  N)r   r  r   r_   ru  r~   r  s   &   r   r  'RawUnicodeEscapeTest.test_escape_encode
  s_    11t,sA~dSVmUUA3Z%78  	h
#lN+r   c                    \         P                  p\        W4      p\        R 4       F6  pVR9  g   K  V! R\	        V.4      ,           R\        V4      ,           4       K8  	  V! RR4       V! RR4       R# )	r6  r  rN  r  r  r  r  r  N)r   r  r   r_   r~   ru  )r   ra   r   r   s   &   r   r  'RawUnicodeEscapeTest.test_escape_decode
  s_    11t,sA~eeQCj($Q-8  	j(#nl+r   c           	        \         P                  pR F  w  r#\        V4       F  pV P                  \        VRV,           RV,          ,           4       V P                  \        VRV,           RV,          ,           R,           4       RV,           RV,          ,           R,           V,           RV,          ,           pV P                  V! VR4      R\        V4      34       V P                  V! VR4      R	\        V4      34       K  	  K  	  V P                  \        VR
4       V P                  V! R
R4      R4       V P                  V! R
R4      R4       R# )r  rN  rO  r  r  r  r   r   r   r  r  N)r  r  r  r  )r   r  r_   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                .    V P                  R . RO4       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  s   &r   r  !RawUnicodeEscapeTest.test_partial  s    .	
r   r   )r1   r2   r3   r4   rh   r   r  r  r  r  r  r  r  r6   rX   rY   s   @r   r  r  
  s;     #HI>
K
,,L 
 
r   r  c                   &   a  ] tR tRt o R tRtV tR# )EscapeEncodeTesti&  c                   . ROpV FN  w  r#V P                  VR7      ;_uu_ 4        V P                  \        P                  ! V4      V4       RRR4       KP  	  V P	                  \
        \        P                  R4       V P	                  \
        \        P                  \        R4      4       R#   + '       g   i     K  ; i)r   r  Nr   r  ))r   r  )   foobar)r  r   )s	   spam eggs)s   spam\x00eggs	   )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   escape_encoder   r  rK  )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..B?r   N)r1   r2   r3   r4   r  r6   rX   rY   s   @r   r  r  &  s     O Or   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )SurrogateEscapeTesti:  c                   V P                  R P                  RR4      R4       V P                  RP                  RR4      R 4       V P                  RP                  RR4      R4       V P                  RP                  RR4      R4       R# )   foobarr  r  	   foobars   u	   Nr   ra   rs   r  s   &r   	test_utf8SurrogateEscapeTest.test_utf8<  s    --g7HI'	)..w8IJ&	( 	//9JK-	/-44W>OP(	*r   c                    V P                  R P                  RR4      R4       V P                  RP                  RR4      R 4       R# )r  r  r  r  Nr  r  s   &r   r  SurrogateEscapeTest.test_asciiH  sD    --g7HI'	)..w8IJ&	(r   c                    V P                  R P                  RR4      R4       V P                  RP                  RR4      R 4       R# )s   foobarz
iso-8859-3r  u	   foobarNr  r  s   &r   test_charmap SurrogateEscapeTest.test_charmapO  sD    --l<MN'	)..|=NO&	(r   c                J    V P                  R P                  RR4      R4       R# )u   r   r  s   Nr  r  s   &r   test_latin1SurrogateEscapeTest.test_latin1V  s$    9@@L]^0	2r   r   N)
r1   r2   r3   r4   r  r  r  r  r6   rX   rY   s   @r   r  r  :  s     
*((2 2r   r  c                   &   a  ] tR tRt o R tRtV tR# )BomTesti\  c                   R pRpV P                  \        P                  \        P                  4       V EF  p\	        \        P                  RVR7      ;_uu_ 4       pVP                  V4       VP                  V4       VP                  ^ 4       V P                  VP                  4       V^,          4       VP                  ^ 4       V P                  VP                  4       V^,          4       RRR4       \	        \        P                  RVR7      ;_uu_ 4       pVP                  V^ ,          4       V P                  VP                  4       ^ 4       VP                  ^ 4       VP                  V4       VP                  ^ 4       V P                  VP                  4       V4       RRR4       \	        \        P                  RVR7      ;_uu_ 4       pVP                  P                  V^ ,          4       V P                  VP                  P                  4       ^ 4       VP                  P                  ^ 4       VP                  P                  V4       VP                  ^ 4       V P                  VP                  4       V4       RRR4       \	        \        P                  RVR7      ;_uu_ 4       pVP                  V4       VP                  VP                  4       4       VP                  V4       VP                  ^ 4       V P                  VP                  4       V^,          4       RRR4       \	        \        P                  RVR7      ;_uu_ 4       pVP                  P                  V4       VP                  P                  VP                  P                  4       4       VP                  P                  V4       VP                  ^ 4       V P                  VP                  4       V^,          4       RRR4       EK  	  R#   + '       g   i     EL$; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL"; i  + '       g   i     EK8  ; i)
1234567890r\  ro  N)r]  r  r  r   r:  rQ  )rp  r   rq  rr  r   rN   rB  r   rT   assertNotEqualtellr   )r   r   r  rh   r   s   &    r   
test_seek0BomTest.test_seek0]  s    		(()*:*:;H$Y%5%5thOOSTq	  4!84q	  4!84 P %Y%5%5thOOSTQ ##AFFHa0q	q	  40 P %Y%5%5thOOSTtAw'##AHHMMOQ7a t$q	  40 P %Y%5%5thOOSTqvvx q	  4!84 P %Y%5%5thOOSTt$ahhmmo.t$q	  4!84 POO OOO POO POO POO POOsA   BPBPB4P34A:QB"QPP03QQQ-r   N)r1   r2   r3   r4   r  r6   rX   rY   s   @r   r  r  \  s     55 55r   r  base64_codecuu_codecquopri_codec	hex_codecrn  base_64uuhexrot_13rot13
zlib_codecr}   zlib	bz2_codecbz2c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 t]P                  ! ]R
4      R 4       tR tR tR tR tR tRtV tR# )TransformCodecTesti  c           	        \        \        R 4      4      p\         F  pV P                  VR7      ;_uu_ 4        \        P
                  ! V4      ! V4      w  r4V P                  V\        V4      4       \        P                  ! V4      ! V4      w  rTV P                  V\        V4      4       V P                  WQ4       RRR4       K  	  R#   + '       g   i     K  ; i)r6  ro  N)	r~   r_   bytes_transform_encodingsr  r   r"  r   r   r'  )r   binputrh   orR   rj   s   &     r   r2  TransformCodecTest.test_basics  s    uSz"1Hx00"--h7?	  s6{3"--h7:	  s1v.  + 10 2000s   BC

Cc                `   \          F  pV P                  VR 7      ;_uu_ 4        \        P                  ! RV4      p\        P                  ! V4      ! \
        P                  ! V4      4      pVP                  4       pV P                  VR4       RRR4       K  	  R#   + '       g   i     K  ; iro  r  N)	r  r  r   rs   r|   r   r   rT   r   r   rh   sinr   souts   &    r   	test_readTransformCodecTest.test_read  sw    1Hx00mmGX6))(3BJJsOD{{}  w/	 10 2000   A*BB-c                `   \          F  pV P                  VR 7      ;_uu_ 4        \        P                  ! RV4      p\        P                  ! V4      ! \
        P                  ! V4      4      pVP                  4       pV P                  VR4       RRR4       K  	  R#   + '       g   i     K  ; ir  )	r  r  r   rs   r|   r   r   r   r   r  s   &    r   r    TransformCodecTest.test_readline  sx    1Hx00mmGX6))(3BJJsOD(  w/	 10 2000r  c                   R p\          F  pV P                  VR7      ;_uu_ 4        Tp\        V4      p\        P                  ! W24      p\        P                  ! WB4      pV P                  WS4       \        V4      p\        P                  ! W24      pV P                  W14       \        P                  ! WB4      pV P                  Wc4       RRR4       K  	  R#   + '       g   i     K  ; i)s   12345ro  N)r  r  
memoryviewr   rs   r   ra   )r   originalrh   r   viewview_encodedview_decodeds   &      r   test_buffer_api_usage(TransformCodecTest.test_buffer_api_usage  s      1Hx00!$'}}T4%}}T<  4!$'}}T4  0%}}T<  4 10 2000s   B$CC)c           
        R p\          F  pV P                  VR7      ;_uu_ 4        RpVP                  V4      pV P                  \        V4      ;_uu_ 4       pVP                  V4       RRR4       V P                  XP                  P                  4       RRR4       K  	  R#   + '       g   i     LC; i  + '       g   i     K  ; i)zbad input typero  zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecsN)	r  r  formatr  r  rs   assertIsNoner  	__cause__)r   	bad_inputrh   fmtr  failures   &     r   /test_text_to_binary_denylists_binary_transformsBTransformCodecTest.test_text_to_binary_denylists_binary_transforms  s    $	1Hx00Kjj*++K==$$X. >!!'"3"3"="=> 10 2
 >=	 100s#   2B8B%*-B8%B50B88C	c                    R pV P                  \        V4      ;_uu_ 4        RP                  R4       RRR4       R#   + '       g   i     R# ; i)zR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager  N)r  r  rs   r   r  s   & r   -test_text_to_binary_denylists_text_transforms@TransformCodecTest.test_text_to_binary_denylists_text_transforms  s:    C##K55%,,X6 6555s	   =A	c           
     $   R p\          F  pV P                  VR7      ;_uu_ 4        \        P                  ! W4      pRpVP	                  V4      pV P                  \        V4      ;_uu_ 4        VP                  V4       RRR4       V P                  \        V4      ;_uu_ 4        \        V4      P                  V4       RRR4       RRR4       K  	  R#   + '       g   i     L_; i  + '       g   i     L1; i  + '       g   i     EK  ; i)s6   encode first to ensure we meet any format restrictionsro  zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsN)	r  r  r   rs   r+  r  r  ra   rK  )r   r   rh   encoded_datar/  r  s   &     r   /test_binary_to_text_denylists_binary_transformsBTransformCodecTest.test_binary_to_text_denylists_binary_transforms  s     I1Hx00%}}T<Kjj*++K== ''1 >++K==l+228< > 10 2 >=== 100s<   AC=.C &C=&C*C=C'"C=*C:5C==Dc           
        R \        R4      3 F  pV P                  VR7      ;_uu_ 4        RpV P                  \        V4      ;_uu_ 4       pVP	                  R4       RRR4       V P                  XP                  P                  4       RRR4       K  	  R#   + '       g   i     LC; i  + '       g   i     K  ; i)s	   immutables   mutable)r.  zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr  N)rK  r  r  r  ra   r,  r  r-  )r   r.  r  r0  s   &   r   -test_binary_to_text_denylists_text_transforms@TransformCodecTest.test_binary_to_text_denylists_text_transforms  s    &	*(=>I	22K++K==$$X. >!!'"3"3"="=> 32 ? >= 322s#   !B,B-B,B)$B,,B=zRequires zlib supportc                   R pV P                  \        P                  4      ;_uu_ 4       p\        P                  ! RR4       RRR4       V P                  VXP                  P                  ^ ,          4       R#   + '       g   i     L?; i)z'decoding with 'zlib_codec' codec failed   hellor  N)r   r  errorr   ra   r   r  	__notes__)r   r  r0  s   &  r   test_custom_zlib_error_is_noted2TransformCodecTest.test_custom_zlib_error_is_noted  s]     8tzz**gMM(L1 +g//99!<= +*   A99B		c                   ^ RI pRpV P                  VP                  4      ;_uu_ 4       p\        P                  ! RR4       RRR4       V P                  VXP                  P                  ^ ,          4       R#   + '       g   i     L?; i)r   Nz&decoding with 'hex_codec' codec failedr?  r  )binasciir   Errorr   ra   r   r  rA  )r   rF  r  r0  s   &   r   test_custom_hex_error_is_noted1TransformCodecTest.test_custom_hex_error_is_noted  s^    6x~~..'MM(K0 /g//99!<= /.rD  c           	     d   \         P                  4        F  w  r\        P                  ! V4      P                  pV FX  pV P                  VR 7      ;_uu_ 4        \        P                  ! V4      pV P                  VP                  V4       RRR4       KZ  	  K  	  R#   + '       g   i     Ks  ; i))aliasN)transform_aliasesitemsr   r  r  r  r   )r   
codec_namealiasesexpected_namerK  rB   s   &     r   test_aliasesTransformCodecTest.test_aliases   s}    #4#:#:#<J"MM*5::M \\\..!==/D$$TYY> /. ! $= /..s   3B	B/c                ,   \         P                  P                  \        P                  4      p\        P
                  P
                  P                  4        F:  pR V 2pV P                  \        P                  P                  V4      RV 24       K<  	  R# )z
encodings.zCodec module not found: N)ospathdirnamerM  __file__rO  valuesassertIsNotNone	importlibutil	find_spec)r   encodings_dirvalue	codec_mods   &   r   test_alias_modules_exist+TransformCodecTest.test_alias_modules_exist(  so    	(:(:;&&..557E$UG,I  !9!9)!D#;I;!GI 8r   c                    \         P                  ! R R4      pV P                  VR4       RpV P                  \         P                  ! VR4      V4       R# )s   space tab	eol 
zquopri-codecs   space=20tab=09eol=20
s   space tab eol
N)r   rs   r   ra   )r   r   	unescapeds   &  r   test_quopri_stateless(TransformCodecTest.test_quopri_stateless/  sD    -- 4nE";<&	y.A9Mr   c                R    V P                  \        \        P                  R R4       R# )r   zuu-codecN)r   r|  r   ra   r  s   &r   test_uu_invalid"TransformCodecTest.test_uu_invalid7  s    *fmmS*Er   r   N)r1   r2   r3   r4   r2  r  r   r(  r1  r5  r9  r<  rU  
skipUnlessr  rB  rH  rQ  r`  rd  rg  r6   rX   rY   s   @r   r  r    sq     	,005$
?7=? 67> 8>>?INF Fr   r  c                 ,    \         P                  V 4      # r   )_TEST_CODECSget)rN  s   &r   _get_test_codecrm  C  s    J''r   c                      a  ] tR tRt o R tR tR t]P                  R 4       t	R t
]3R ltR tR	 tR
 tR tR tR tR tR tR tR tR tRtV tR# )ExceptionNotesTestiG  c                    R V n         \        P                  ! \        4       V P	                  \        P
                  \        4       \        V n        R# )exception_notes_testN)rN  r   r  rm  rp  r  RuntimeErrorobj_to_raiser  s   &r   r  ExceptionNotesTest.setUpI  s3    0())?; )r   c                    \         P                  V P                  R 4       \        P                  P                  V P                  R 4       R # r   )rk  poprN  rM  _cacher  s   &r   tearDownExceptionNotesTest.tearDownW  s0    $/T__d3r   c                p    \         P                  ! WV P                  R 7      pV\        V P                  &   R# ))r  N)r   r8  rN  rk  )r   rs   ra   r  s   &&& r   	set_codecExceptionNotesTest.set_codec\  s)    %%f+/??<
(2T__%r   c              #  X  "   R P                  WP                  4      pV P                  V4      ;_uu_ 4       pVx  RRR4       V P                  VXP                  P
                  ^ ,          4       VP                  P
                  P                  4        R#   + '       g   i     Lc; i5i)z{} with {!r} codec failedN)r+  rN  r   r}  r  rA  clear)r   	operationexc_typer  full_msgcaughts   &&&&  r   assertNotedExceptionNotesTest.assertNoteda  sx     /66__.x((FL )h 0 0 : :1 =>""((* )(s   5B*BAB*B'	"B*c                    V P                   hr   )rs  )r   r   kwdss   &*,r   	raise_objExceptionNotesTest.raise_objj  s    r   c                    Wn         V P                  V P                  V P                  4       V P                  R W24      ;_uu_ 4        RP	                  V P
                  4       RRR4       V P                  R W24      ;_uu_ 4        \        P                  ! RV P
                  4       RRR4       V P                  RW24      ;_uu_ 4        RP                  V P
                  4       RRR4       V P                  RW24      ;_uu_ 4        \        P                  ! RV P
                  4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L|; i  + '       g   i     R# ; i)rh   	str_inputNdecoding   bytes input)rs  r{  r  r  rs   rN  r   ra   )r   rs  r  r  s   &&&&r   
check_noteExceptionNotesTest.check_noten  s    (t~~t~~6j(88t/ 9j(88MM+t7 9j(88!!$//2 9j(88MM.$//: 98 988888888s0   D3"E	E"E,3E	E	E)	,E=	c                2    V P                  \        R 4       R# )ry   Nr  rr  r  s   &r   test_raise_by_type%ExceptionNotesTest.test_raise_by_typez  s    b)r   c                @    R pV P                  \        V4      V4       R# )This should be notedNr  r4  s   & r   test_raise_by_value&ExceptionNotesTest.test_raise_by_value}  s    $S)3/r   c                X    R p ! R R\         4      pV P                  V! V4      W4       R# )r  c                       ] tR tRtRtRtR# )TExceptionNotesTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrori  r   N)r1   r2   r3   r4   	__slots__r6   r   r   r   MyRuntimeErrorr    s    Ir   r  Nrr  r  r   r  r  s   &  r   )test_raise_grandchild_subclass_exact_size<ExceptionNotesTest.test_raise_grandchild_subclass_exact_size  s&    $	\ 	s+SAr   c                X    R p ! R R\         4      pV P                  V! V4      W4       R# )r  c                       ] tR tRtRtR# )SExceptionNotesTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrori  r   N)r1   r2   r3   r4   r6   r   r   r   r  r    s    r   r  Nr  r  s   &  r   (test_raise_subclass_with_weakref_support;ExceptionNotesTest.test_raise_subclass_with_weakref_support  s&    $	\ 	s+SAr   c                H     ! R  R\         4      pV P                  VR4       R# )c                   &   a  ] tR tRt o R tRtV tR# )9ExceptionNotesTest.test_init_override.<locals>.CustomIniti  c                    R # r   r   r  s   &r   rJ   BExceptionNotesTest.test_init_override.<locals>.CustomInit.__init__  s    r   r   N)r1   r2   r3   r4   rJ   r6   rX   rY   s   @r   
CustomInitr    s      r   r  ry   Nr  )r   r  s   & r   test_init_override%ExceptionNotesTest.test_init_override  s    	 	 	
B'r   c                H     ! R  R\         4      pV P                  VR4       R# )c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )7ExceptionNotesTest.test_new_override.<locals>.CustomNewi  c                "   < \         SV `  V 4      # r   )r  __new__)clsr  s   &r   r  ?ExceptionNotesTest.test_new_override.<locals>.CustomNew.__new__  s    ws++r   r   )r1   r2   r3   r4   r  r6   rX   r  r  s   @@r   	CustomNewr    s     , ,r   r  ry   Nr  )r   r  s   & r   test_new_override$ExceptionNotesTest.test_new_override  s    	, 	, 		2&r   c                p    R p\        V4      p^Vn        V P                  VRP                  V4      4       R# )r  z^{}$N)rr  attrr  r+  )r   r  r  s   &  r   test_instance_attribute*ExceptionNotesTest.test_instance_attribute  s/    $3V]]3/0r   c                <    V P                  \        ^4      R4       R# )r^   1Nr  r  s   &r   test_non_str_arg#ExceptionNotesTest.test_non_str_arg  s    Q-r   c                D    R pV P                  \        RRR4      V4       R# )z^\('a', 'b', 'c'\)$r   r   r   Nr  )r   msg_res   & r   test_multiple_args%ExceptionNotesTest.test_multiple_args  s    'S#s3V<r   c                   R P                  V P                  4      pV P                  \        V4      ;_uu_ 4        RP	                  V P                  4       RRR4       V P                  \        V4      ;_uu_ 4        \
        P                  ! RV P                  4       RRR4       V P                  \        V4      ;_uu_ 4        RP                  V P                  4       RRR4       V P                  \        V4      ;_uu_ 4        \
        P                  ! RV P                  4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)z^unknown encoding: {}$z	str inputNr  )r+  rN  r  r  rs   r   ra   r4  s   & r   test_codec_lookup_failure,ExceptionNotesTest.test_codec_lookup_failure  s    &--doo>##K55t/ 6##K55MM+t7 6##K55!!$//2 6##K55MM.$//: 65 655555555s/   D2<"EE"E+2E	E	E(	+E<	c                   R  pR pV P                  W4       \        P                  ! RV P                  4      pV P	                  VR4       \        P
                  ! RV P                  4      pV P	                  VR4       RpVP                  V P                  4      pV P                  \        V4      ;_uu_ 4        RP                  V P                  4       RRR4       RpVP                  V P                  4      pV P                  \        V4      ;_uu_ 4        RP                  V P                  4       RRR4       R#   + '       g   i     Lq; i  + '       g   i     R# ; i)	c                      R# )
not bytes!)r  r   r   r   r  s   *,r   encode_to_strPExceptionNotesTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_str  s    ""r   c                      R# )   not str!)r  r   r   r  s   *,r   decode_to_bytesRExceptionNotesTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytes  s    !!r   Nr  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{  r   rs   rN  r   ra   r+  r  r  )r   r  r  r   decodedr/  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3t/ 4Fjj)##Is33!!$//2 43 43
 433s   9D>E>E	E"	)rN  rs  N)r1   r2   r3   r4   r  rx  r{  
contextlibcontextmanagerr  r  rr  r  r  r  r  r  r  r  r  r  r  r  r  r6   rX   rY   s   @r   ro  ro  G  s|     )4
3
 + +  6B 
;*0BB('1.=
	;3 3r   ro  win32z"code pages are specific to Windowsc                      a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR t]P&                  ! R^RR7      R 4       t]P&                  ! R^RR7      R 4       tRtV tR# )CodePageTesti    c                6   V P                  \        \        P                  RR4       V P                  \        \        P                  RR4       V P                  \
        \        P                  ^{R4       V P                  \
        \        P                  ^{R4       R# )r^   r      aNrV   )r   r|  r   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           	        V P                  \        R \        P                  RR4       V P                  \        R \        P
                  RRRR4       V P                  \        R\        P
                  V P                  RRR4       R# )	r       ÿs    r{   TCP_UTF8r&  N)r  r   r   r  r   r  r  r  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                   V EF/  vr4rVV'       d   Vw  pMTpVe    \         P                  ! WVR4      pV P	                  X^ ,          VV: RV: RV: RV^ ,          : R	V: 2	4       V P                  V^,          ^ 4       V P                  V^,          \        V4      4       M'V P                  \        \         P                  WVR4       Ve>   VP                  R
V 2V4      pV P	                  WV: RV: RV: RV: R	V: 2	4       EK
  V P                  \        VP                  R
V 2V4       EK2  	  R #   \         d-   p	T P                  RT: RT: RT: RT	: 24        R p	?	EL6R p	?	ii ; i)NTzUnable to decode z	 from "cp" with errors=: z.decode("cp", )= != r?   )
r   r  r   failr   assertGreaterEqualassertLessEqualr   r   ra   )
r   r?   r  r  r  r  restaltexpectedr  errs
   &&&       r   check_decodeCodePageTest.check_decode  sU   ,1(C#&#H$55bvtLG   XB

H>? ''
A6$$WQZS:!!"4++RfdD &**r"Y7  B>? !!"4JJ"RD	637 -2 * HII14b&#G H HHs   D99E0!E++E0c                   V EF  vr4rVV'       d   Vw  pMTpVe    \         P                  ! WV4      pV P	                  X^ ,          VV: RV: RV: RV^ ,          : RV: 2	4       V P	                  V^,          \        V4      4       VP                  R	V 2V4      pV P	                  WV: RV: RV: RV: RV: 2	4       K  V P                  \        \         P                  WV4       V P                  \        VP                  R	V 2V4       EK  	  R #   \         d-   p	T P                  RT: RT: RT: RT	: 24        R p	?	ELR p	?	ii ; i)
NzUnable to encode z to "cpr  r  z.encode("cpr  r  r  r?   )r   r  r   r  r   r   rs   r   )
r   r?   r  textr  r  r  r  r   r  s
   &&&       r   check_encodeCodePageTest.check_encode  s6   -2)D(#&#I$55bGG   XRX?@   SY7++2$i8  R+?@ !!"4++Rv?!!"4KK2bTF4/ .3 * III15r63H I IIs   DE#!E

Ec                N    V P                  R R4       V P                  R R4       R# )r  N)r  r{   r  )   ｄ騾r{      )u   r{   r&  )r  r{   N)r
  r   rU  )r
  r   s   [y]   [?])u   [€]r   r  )r
  r   s   [\xff])r
  r   s)   [\N{LATIN SMALL LETTER Y WITH DIAERESIS}])r
  r   s   [&#255;])u   r{   N)   []r  r  )r  r   N)r  r{   r  )r  r{   r  )r  r{   N   [])r  r   r   r  )r  r      [�]r  )r  r   z[\xff]r  )r  r  r  r  )r  r   Nr  )    abcr{   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                N    V P                  R R4       V P                  R R4       R# )i  N)r  )   é€r{      )r  r{   r&  )r  r{   N)r  r   r   )r  r      L   ?)   r     )r
  r   N)r  )r  r{   r  )r&  r{   r  r  r  s   &r   test_cp1252CodePageTest.test_cp1252?  s.    $ 
!
 
	 	$ !
 	r   c                N    V P                  R R4       V P                  R R4       R# )i  N)
)abc2%r{      abc2%)   ،ءيr{      )   ╢ç r{      )   r{      )   ╫r{   r  )   [٢]r{   N)r  r   rU  )r  r   r  )   r     )r  r   N))r  r{   r  )r  r{   r  )r  r{   r  )r  r{   r  )r  r{   r  )r  r{   N)   []r   r   )r  r   r   )r  r   z[\xa0])r  r  u   [])r  r   Nr  r  s   &r   
test_cp708CodePageTest.test_cp708Q  s.    #  
 	 	#  
 	r   c                N    V P                  R R4       V P                  R R4       R# )iN  N)r  )   §Äßr{      @[~)@r{   N)r!  r   r   )r!  r   r	  )   r  r  )r"  r   N)	r  )r   r{   r  )s   r{   u   aß)   ()r{   N)r#  r   z())r#  r   u   (�))r#  r   z(\xbf))r#  r  u   ())r#  r   Nr  r  s   &r   test_cp20106CodePageTest.test_cp20106n  s.    % 	"
 		 	% "
 	r   c                R    R pV P                  VR4       V P                  VR4       R# )  N)r  )r  r{      +AOkgrA-)rl  r{      +2//f/w-)r   r{      +3IA-)r   r{      +//0-)r  )r(  r{   r  )r)  r{   rl  )r*  r{   r   )r+  r{   r   )s   [+/]r{   r   )r  r{   r
  r  r   r?   s   & r   test_cp_utf7CodePageTest.test_cp_utf7  s3    " 
 	 	" 	
 		r   c                    V P                  R R4       V P                  V P                  R4       V P                  V P                  R4       R# )r  N))   r      騾)r0  r   u   �騾))   􏿿r   rl  )r2  r   u   �􏿿))	   [􏿿]r   s   [􏿿])r3  r   s   [􏿿?])r  r  r  r  s   &r   test_multibyte_encoding$CodePageTest.test_multibyte_encoding  sM    #  
 	 	$,, )
 	 	$,, )
 	r   c                   \         P                  '       d    \        P                  P	                  R 4       . RO\        RR4      ORN Fg  p\        V4      '       d.   V P                  \        P                  ! VR4      R	RV 24       KA  \         P                  '       g   KY  \        RV 24       Ki  	  V P                  \        P                  ! ^*R4      R
4       R# )r   i  r'  r  r?   z  skipping cp=N)i,  i-  i.  i1  i3  i5  i  r]  )u	   r^  )r   verboser6  stdoutrN   r_   rC   r   r   r  printr,  s   & r   test_code_page_decode_flags(CodePageTest.test_code_page_decode_flags  s     ???JJT"2%)2+02B $B''  !8!8V!DjTVWYVZR[\???N2$/02 	00V<2	4r   c                ^   \         P                  ! R RRR4      pV P                  VR4       \         P                  ! R RRR4      pV P                  VR	4       \         P                  ! R RRR4      pV P                  VR
4       \         P                  ! R RRR4      pV P                  VR4       R# )r     r{   Fs   s   r  Nr  )r1  r  )u   騾騾r  r]  )r   r  r   )r   r  s   & r   test_incrementalCodePageTest.test_incremental  s    ))#w%H'*))#*98*/1 	-0))#*=x*/1 	"56))#*0(*/1 	*-r   c                     ^ RI Hp X! 4       p\        P
                  ! RV 24       R#   \         d    T P                  R4        L@i ; i)r   )GetACPzrequires _winapi.GetACPr?   N)_winapirA  ImportErrorskipTestr   r  )r   rA  r?   s   &  r   test_mbcs_code_page CodePageTest.test_mbcs_code_page  sC    	5& X2$i   	5MM34	5s   * A	A	F)rR   memusedry_runc                   R V^,          ^,
          ,          R,           pV P                  \        V4      V^,           4       \        P                  ! RVRR4      pV P                  V^,          \        V4      4       ?V P                  \        V^ ,          4      V^,          4       V P                  V^ ,          R,          R4       V P                  V^ ,          R	R R4       R# )
s   01234567s
   r  r  TNr  N
0123456701Nu(   6701234567ir   r   r   r  r   rR   r   r  s   &&  r   test_large_inputCodePageTest.test_large_input  s    
 47A+.>?WtAv.))#w8I4PS\2WQZ'!*5C,7CD):	;r   c                   R V^,          ,          pV P                  \        V4      V^,          ^
,          4       \        P                  ! RVRR4      pV P                  V^,          \        V4      4       ?V P                  \        V^ ,          4      V4       V P                  V^ ,          R,          R4       V P                  V^ ,          RR R4       R# )	s
   0123456턀r  r   TrJ  u   0123456턀01Nu   56턀0123456턀irL  rM  s   &&  r   test_large_utf8_input"CodePageTest.test_large_utf8_input  s    
 *T1W5Wtqy2~6))%(DIS\2WQZ$/C*;<CD)+BCr   r   Nl        )r1   r2   r3   r4   r  r  r  r  r  r  r  r  r$  r-  r4  r:  r>  rE  r   
bigmemtestrN  rQ  r6   rX   rY   s   @r   r  r    s      GGL3>46 D$:0(4&.&! U1e<; =;" U1e<D =Dr   r  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )		ASCIITesti  c                H    V P                  R P                  R4      R4       R# )r  r  s   abc123Nr  r  s   &r   r  ASCIITest.test_encode  s    19=r   c           	         R FL  w  rpV P                  WVR7      ;_uu_ 4        V P                  VP                  RV4      V4       RRR4       KN  	  R#   + '       g   i     Kc  ; i)	   [ÿ€]r  r  N))rY  r   rU  )rY  r   s   [???])rY  r   s   [&#128;&#255;&#8364;])u   [ÿ€򫳞]r   s   [\x80\xff\u20ac\U000abcde]r  r  r  r  r   rs   r  s   &   r   test_encode_errorASCIITest.test_encode_error  sh    .
)D 4'/  1 1  Wm!D!)+1 1.
1 1 1   #AA&c                    V P                  \        4      ;_uu_ 4        R P                  RR4       RRR4       R#   + '       g   i     R# ; i)u   ÿr  r  Nr   r   rs   r  s   &r   !test_encode_surrogateescape_error+ASCIITest.test_encode_surrogateescape_error  s4    122):; 3222	   ;A	c                H    V P                  R P                  R4      R4       R# )r  r  r  N)r   ra   r  s   &r   r  ASCIITest.test_decode  s    w/7r   c           	         R FL  w  rpV P                  WVR7      ;_uu_ 4        V P                  VP                  RV4      V4       RRR4       KN  	  R#   + '       g   i     Kc  ; i)r  r  r  Nr  r  r  s   &   r   r  ASCIITest.test_decode_error  sh    .
)D 4'/  1 1  Wm!D!)+1 1.
1 1 1r^  r   N)r1   r2   r3   r4   r  r\  ra  r  r  r6   rX   rY   s   @r   rU  rU    s#     >+<
8
+ 
+r   rU  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )
Latin1Testi   c                    R FI  w  rV P                  WR7      ;_uu_ 4        V P                  VP                  R4      V4       RRR4       KK  	  R#   + '       g   i     K`  ; i)r  r   r  r  N))r  r  )u   éÿs   r[  r   r   r  s   &  r   r  Latin1Test.test_encode!  P    
ND 4;;  X!6A <;	
 <;;   "AA#c           	         R FL  w  rpV P                  WVR7      ;_uu_ 4        V P                  VP                  RV4      V4       RRR4       KN  	  R#   + '       g   i     Kc  ; i)   [€]r  r  N))rq  r   rU  )rq  r   s   [??])u	   [€򫳞]r   s   [\u20ac\U000abcde])rq  r   s   [&#8364;&#56448;]rZ  r[  r  s   &   r   test_encode_errorsLatin1Test.test_encode_errors)  sh    .
)D 4'/  1 1  X}!E!)+1 1.
1 1 1r^  c                    V P                  \        4      ;_uu_ 4        R P                  RR4       RRR4       R#   + '       g   i     R# ; i)u   €r  r  Nr`  r  s   &r   ra  ,Latin1Test.test_encode_surrogateescape_error7  s4    122!!(,=> 3222rc  c                    R FI  w  rV P                  WR7      ;_uu_ 4        V P                  VP                  R4      V4       RRR4       KK  	  R#   + '       g   i     K`  ; i)r  rk  r  N))r  r  )r  u   [ÿ]r  rl  s   &  r   r  Latin1Test.test_decode<  rn  ro  r   N)
r1   r2   r3   r4   r  rr  ra  r  r6   rX   rY   s   @r   ri  ri     s!     B+?
B Br   ri  c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
StreamRecoderTestiE  c                |   \         P                  ! 4       p\        P                  ! R 4      p\        P                  ! WP
                  VP                  \        P                  P                  \        P                  P                  4      pVP                  RR.4       V P                  VP                  4       R4       R# )r  r     bs   abN)r   r   r   r  rS  rs   ra   rM  r  r<  r=  
writelinesr   r  r   biocodecsrs   &   r   test_writelines!StreamRecoderTest.test_writelinesF  sw    jjlg&!!#||U\\"+//">">	@\@\^
tTl#/r   c                   \         P                  ! 4       p\        P                  ! R 4      p\        P                  ! WP
                  VP                  \        P                  P                  \        P                  P                  4      pRpVP                  VP                  R 4      4       V P                  VP                  4       VP                  R4      4       R# )r  u   àñér  N)r   r   r   r  rS  rs   ra   rM  r  r<  r=  rN   r   r  )r   r~  r  r  r  s   &    r   
test_writeStreamRecoderTest.test_writeN  s    jjlh'!!#||U\\"+//">">	@\@\^ 
X&'W)=>r   c                   \         P                  ! R P                  R4      4      p\        P                  ! VRR4      pV P                  VP                  4       R4       VP                  ^ 4       V P                  VP                  4       R4       V P                  VP                  4       R4       V P                  VP                  4       R4       V P                  VP                  4       R4       R# )zline1
line2
line3
r  r  s   line1
s   line2
s   line3
r   N)r   r   rs   r   rE  r   r   rB  r   r~  r  s   &  r   test_seeking_read#StreamRecoderTest.test_seeking_readY  s    jj077DEWk:
3


3
3
3,r   c                   \         P                  ! R P                  R4      4      p\        P                  ! VRR4      pVP                  ^4       VP                  R4       V P                  VP                  4       R4       VP                  ^ 4       V P                  VP                  4       R4       V P                  VP                  4       R4       V P                  VP                  4       R4       R# )z
123456789
r  r  s   
abc
s   789
s   1
s   abc
N)	r   r   rs   r   rE  rB  rN   r   r   r  s   &  r   test_seeking_write$StreamRecoderTest.test_seeking_writed  s    jj--k:;Wk: 	

1

/11r   c                X   \         P                  ! 4       p\        P                  ! R 4      p\        P                  ! WP
                  VP                  \        P                  P                  \        P                  P                  4      pV P                  \        R4      ;_uu_ 4        \        P                  ! V4       RRR4       V P                  \        R4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     LO; i  + '       g   i     R# ; i)r  rS  N)r   r   r   r  rS  rs   ra   rM  r  r<  r=  r  r  ro  ry  r}  s   &   r   rv  StreamRecoderTest.test_copyr  s    jjlg&!!#||U\\"+//">">	@\@\^ ##I??IIbM @##I??MM" @? @????s   'D$DD	D)	c           
     ^   \        R 4      p\        P                  ! R4      p\        P                  ! WP                  VP
                  \        P                  P                  \        P                  P                  4      p\        \        P                  ^,           4       Fc  pV P                  VR7      ;_uu_ 4        V P                  \        R4      ;_uu_ 4        \        P                   ! W44       RRR4       RRR4       Ke  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r   r  r}  rS  N)rE   r   r  rS  rs   ra   rM  r  r<  r=  r_   r  r  r  r  r  r  )r   r   r  r  r  s   &    r   r  StreamRecoderTest.test_pickle}  s    #Jg&!!!\\5<<"+//">">	@\@\^ 622Q67Eu--++IGGLL+ H .- 8GG .--s$   <DD2DDDD,r   N)r1   r2   r3   r4   r  r  r  r  rv  r  r6   rX   rY   s   @r   ry  ry  E  s(     0	?	-2		, 	,r   ry  zneed _testinternalcapi modulec                      a  ] tR tRt o Rt]P                  ! 4       tRtRt	Rt
RR ltR tR tR tR tR	 tRR
 ltR tR tR tR tR tRtV tR# )LocaleCodecTesti  z<
Test indirectly _Py_DecodeUTF8Ex() and _Py_EncodeUTF8Ex().
u   c                2    \         P                  ! V^ V4      # r   )_testinternalcapiEncodeLocaleEx)r   r  r  s   &&&r   rs   LocaleCodecTest.encode  s     //a@@r   c                   V P                    Fe  pV P                  VR 7      ;_uu_ 4         VP                  V P                  V4      pV P                  W!4      pV P	                  WC4       RRR4       Kg  	  R#   \
         dv    T P                  \        4      ;_uu_ 4       pT P                  Y!4       RRR4       M  + '       g   i     M; i\        XP                  4      pT P                  TR4        Li ; i  + '       g   i     K  ; i))r  Nz!encode error: pos=[0-9]+, reason=)STRINGSr  rs   ENCODINGr   r   r   rr  r~  r  assertRegex)r   r  r  r  r   r  errmsgs   &&     r   check_encode_strings$LocaleCodecTest.check_encode_strings  s    LLD4((	8#{{4==&AH #kk$7G$$W7 )( ! * S**<88BD1 9888 .F$$V-QR	S )((sF   C;A8"C;8(C8	 B;2	C8	;C/C8	5C;7C8	8C;;Dc                (    V P                  R 4       R# r{   Nr  r  s   &r   test_encode_strict"LocaleCodecTest.test_encode_strict      !!(+r   c                (    V P                  R 4       R# r  Nr  r  s   &r   test_encode_surrogateescape+LocaleCodecTest.test_encode_surrogateescape      !!"34r   c                     V P                  R R4       T P                  R4       R#   \         d;   p\        T4      R8X  d%   T P                  T P                  : R24        Rp?LRh Rp?ii ; i)ry   r   unsupported error handlerz4 encoder doesn't support surrogatepass error handlerN)rs   r|  r~  rD  r  r  r   r  s   & r   test_encode_surrogatepass)LocaleCodecTest.test_encode_surrogatepass  sm    	KKO, 	!!/2  	3x66 1 2< = > > 	   ' A,/A'&A''A,c                    V P                  \        4      ;_uu_ 4       pV P                  R R4       RRR4       V P                  \	        XP
                  4      R4       R#   + '       g   i     L7; i)ry   r   Nr  )r   r|  rs   r   r~  r  r   r  s   & r   %test_encode_unsupported_error_handler5LocaleCodecTest.test_encode_unsupported_error_handler  sL    z**bKK./ +R\\*,GH +*   A  A0	c                2    \         P                  ! V^ V4      # r  )r  DecodeLocaleEx)r   r   r  s   &&&r   ra   LocaleCodecTest.decode  s     //FCCr   c                   V P                   R 8H  pV'       d   RpMRp\        V P                  4      pV P                   Fv  p VP	                  V P                   V4      pWd9  d   VP                  V4       T'       g   KA  TP	                  T P                   R4      pYv8w  g   Ke  TP                  T4       Kx  	  V Fe  pV P                  VR7      ;_uu_ 4         VP                  V P                   V4      pV P                  Wa4      p	V P                  W4       RRR4       Kg  	  R#   \         d    Rp Li ; i  \         dv    T P                  \        4      ;_uu_ 4       p
T P                  Ya4       RRR4       M  + '       g   i     M; i\        X
P                  4      pT P                  TR4        Li ; i  + '       g   i     EK  ; i)r  r  r{   Nr   )r   zdecode error: )r  r9  BYTES_STRINGSr  rs   r   r   r  ra   r   r   r   rr  r~  r  assertStartsWith)r   r  is_utf8encode_errorsstringsr  r   encoded2r  r  r  r  s   &&          r   check_decode_strings$LocaleCodecTest.check_decode_strings  sp   ==G+-M$Mt))*LLD++dmm]C)NN7+ w;;t}}oF&NN8, ! Gg..	8&~~dmmVDH #kk':G$$W7 /.  &  * D**<88BG4 9888 .F))&2BC	D /..sZ   3D%F;D85"F;%D54D58(F8	 E;2	F8	;F/F8	5F;7F8	8F;;Gc                (    V P                  R 4       R# r  r  r  s   &r   test_decode_strict"LocaleCodecTest.test_decode_strict  r  r   c                (    V P                  R 4       R# r  r  r  s   &r   test_decode_surrogateescape+LocaleCodecTest.test_decode_surrogateescape  r  r   c                     V P                  R R4       T P                  R4       R#   \         d;   p\        T4      R8X  d%   T P                  T P                  : R24        Rp?LRh Rp?ii ; i)r   r   r  z4 decoder doesn't support surrogatepass error handlerN)ra   r|  r~  rD  r  r  r  s   & r   test_decode_surrogatepass)LocaleCodecTest.test_decode_surrogatepass  sm    	KK_- 	!!/2  	3x66 1 2< = > > 	r  c                    V P                  \        4      ;_uu_ 4       pV P                  R R4       RRR4       V P                  \	        XP
                  4      R4       R#   + '       g   i     L7; i)r   r   Nr  )r   r|  ra   r   r~  r  r  s   & r   %test_decode_unsupported_error_handler5LocaleCodecTest.test_decode_unsupported_error_handler  sL    z**bKK/0 +R\\*,GH +*r  r   N)r  u   ulatin1:§éu   u255:ÿu   UCS:é€􏿿u   surrogates:)s
   blatin1:s   b255:rz   )r1   r2   r3   r4   rW   r6  getfilesystemencodingr  r  r  
SURROGATESrs   r  r  r  r  r  ra   r  r  r  r  r  r6   rX   rY   s   @r   r  r    st      ((*H*G 8MJA8,5
3I
D 8D,5
3I Ir   r  c                   <   a  ] tR tRt o RtR tR tR tR tRt	V t
R# )		Rot13Testi  z"Test the educational ROT-13 codec.c                X    \         P                  ! R R4      pV P                  VR4       R# )zCaesar liked ciphersrot-13zPnrfne yvxrq pvcurefN)r   rs   r   )r   
ciphertexts   & r   r  Rot13Test.test_encode  s$    ]]#98D
%;<r   c                X    \         P                  ! R R4      pV P                  VR4       R# )zRg gh, Oehgr?r  zEt tu, Brute?N)r   ra   r   )r   	plaintexts   & r   r  Rot13Test.test_decode  s"    MM/8<	O4r   c                    \         P                  ! R 4      ! 4       pVP                  R4      pV P                  VR4       R# )r  zABBA nag Cheryl BakerzNOON ant Purely OnxreN)r   rr   rs   r   )r   r  r  s   &  r   r  !Rot13Test.test_incremental_encode  s5    ..x8:^^$;<
%<=r   c                    \         P                  ! R 4      ! 4       pVP                  R4      pV P                  VR4       R# )r  zterra Ares envy thazgreen Nerf rail gunN)r   r`   ra   r   )r   r  r  s   &  r   r  !Rot13Test.test_incremental_decode
  s5    ..x8:NN#89	$9:r   r   N)r1   r2   r3   r4   rW   r  r  r  r  r6   rX   rY   s   @r   r  r    s!     ,=5>
; ;r   r  c                   *   a  ] tR tRt o RtR tRtV tR# )Rot13UtilTesti  zTest the ROT-13 codec via rot13 function,
i.e. the user has done something like:
$ echo "Hello World" | python -m encodings.rot_13
c                    ^ RI Hp \        P                  ! R4      p\        P                  ! 4       pV! W#4       VP	                  ^ 4       VP                  4       pV P                  VR4       R# )r   )r  z)Gb or, be abg gb or, gung vf gur dhrfgvbaz)To be, or not to be, that is the questionN)encodings.rot_13r  r   r:  rB  rT   r   )r   r  infileoutfile
plain_texts   &    r   test_rot13_funcRot13UtilTest.test_rot13_func  sQ    *HI++-fQ\\^
7	9r   r   N)r1   r2   r3   r4   rW   r  r6   rX   rY   s   @r   r  r    s     	9 	9r   r  c                   0   a  ] tR tRt o RtR tR tRtV tR# )CodecNameNormalizationTesti!  zTest codec name normalizationc                  aa RoRoVV3R lp\         P                  ! V4       V P                  \         P                  V4       V P	                  S\         P
                  ! R4      4       V P	                  S\         P
                  ! R4      4       V P	                  S\         P
                  ! R4      4       V P	                  S\         P
                  ! R4      4       V P	                  S\         P
                  ! R4      4       V P	                  S\         P
                  ! R4      4       V P	                  S\         P
                  ! R	4      4       V P	                  S\         P
                  ! R
4      4       V P	                  S\         P
                  ! R4      4       V P	                  S\         P
                  ! R4      4       R# )r^   Nc                    < V R 8X  d   S# S# )aaa_8r   )rh   FOUND	NOT_FOUNDs   &r   r  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)r^   r  r^  r  )NNNN)r   r  rp  r  r   r  )r   r  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                F   \         P                  pV P                  V! R 4      R 4       V P                  V! R4      R 4       V P                  V! R4      R 4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       R# )r  u   utfé€􏿿-8zutf   8zUTF 8UTF_8zutf.8zutf...8N)rM  normalize_encodingr   )r   	normalizes   & r   !test_encodings_normalize_encoding<CodecNameNormalizationTest.test_encodings_normalize_encoding9  s    00	7+W5#>?I9-w7 	7+W57+W59-y9r   r   N)	r1   r2   r3   r4   rW   r  r  r6   rX   rY   s   @r   r  r  !  s     'D,
: 
:r   r  __main__))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 <--)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  )s   X­ßİ℡ǰ ªΰ s   xssi̇telǰ aΰ )s   Xß㌖İ℡⒟㌀s*   xssキロメートルi̇tel(d)アパート)r  r  r  r  )quopriquoted_printablequotedprintable)Wr   r  ro  rZ  r   r  rT  r6  rU  rM  r   r   testr   test.supportr   r:  rC  r  r   r   rC   r  rE   r\   rw   TestCaser   r9  rP  r\  r  r  r  r  r  r  r   rH  r  rj   r   r9  reprr  r  r  r  r  r  r  r  r  r+  r  r   r-  r  rX  ry  r  r  r  r  r  r  r  rL  r  r  r  rk  rm  ro  ri  platformr  rU  ri  ry  rV  r  r  r  r  r1   mainr   r   r   <module>r     s       	  	 
      "
,$(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VVVV"#V. /V23V89V@AVFGVLMVRSVXYV^_VdeVjkVpqVv
wV|}VBCVHIVNOVT
UVZ[V`aVfgVlmVrsVxyV~VDEVJKVPQVVWV\]VbcVhiVnoVtuVz{V@AVFGVR SVX,YVb2cVrP8$$ P(z6H%% z6z~Ix(( ~IB+x(( +2+x(( +(+X.. +*
0h'' 
0ff
f f 	f
 f f f f f f f f f f f  !f" #f$ %f& 'f( )f* +f, -f. /f0 1f2 3f4 5f6 7f8 9f: ;f< =f> ?f@ AfB CfD EfF GfH IfJ KfL MfN OfP QfR SfT UfV WfX YfZ [f\ ]f^ _f` afb cfd 
eff gfh 	ifj kfl mfn ofp qfr sft ufv wfx yfz {f| }f~ f@ AfB CfD EfF GfH IfJ KfL MfN OfP QfR SfT UfV WfX YfZ [f\ ]f^ _f` afb cfd eff gfh ifj kfl mfn ofp qfr sft ufv wfx yfz {f| }f~ f@ AfB CfD EfF GfH IfJ K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  Xy)E%wi 6 $$\2',fol#- $$[1&+Wk"EF** EFZ (E3** E3R 
S\\W,9;dD8$$ dD;dDN	$+!! $+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 gy    ^\  D  		sH    W: X
 X 1X* :	XX
	XX	X'&X'*X54X5