
    ;e                    z	   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dl
mZ 	 d dlZn# e$ r dZY nw xY w	 d dlZn# e$ r dZY nw xY w	 d dlZ ej        ej                  Zn# e$ r dZdZY nw xY wd Zd Z G d	 d
e          Z G d d          Z G d de          Z G d deej                  Z G d deej                  Z G d deej                  Z G d deej                  Z G d deej                  Z G d deej                  Z  G d deej                  Z! G d deej                  Z" G d d ej                  Z# G d! d"ej                  Z$ G d# d$e!ej                  Z% G d% d&ej                  Z&g d'Z'e'D ]%Z( e)e(          d(k    r e* e+e(                     & G d) d*ej                  Z,g d+Z- G d, d-ej                  Z. G d. d/ej                  Z/ G d0 d1ej                  Z0 G d2 d3ej                  Z1 G d4 d5ej                  Z2g d6Z3 e4e d7          re35                    d8            e4e d9          re35                    d:           d;gZ6 G d< d=ej        e          Z7 G d> d?ej                  Z8 G d@ dAej                  Z9 G dB dCej                  Z: G dD dEeej                  Z; G dF dGeej                  Z< G dH dIej                  Z= G dJ dKej                  Z> G dL dMej                  Z?g dNZ@dOdPgdQgg dRdSgdTgdUZA	 d dlBZBe@5                    dV           dWdXgeAdV<   n# e$ r dZBY nw xY w	 d dlCZCe@5                    dY           dZgeAdY<   n# e$ r Y nw xY w G d[ d\ej                  ZDi ZEd] ZF G d^ d_ej                  ZG ejH        ejI        d`k    da           G db dcej                              ZJ G dd deej                  ZK G df dgej                  ZL G dh diej                  ZM ejN        edu dj           G dk dlej                              ZO G dm dnej                  ZP G do dpej                  ZQ G dq drej                  ZReSdsk    r ejT                     dS dS )t    N)mock)support)	os_helper)warnings_helperc                       fd}|S )Nc                 d                          |           |t          |           f           d S N)assertEquallen)inputexpectcoderselfs     '/usr/lib/python3.11/test/test_codecs.pycheckzcoding_checker.<locals>.check    s2    uE

';<<<<<     )r   r   r   s   `` r   coding_checkerr      s'    = = = = = =Lr   c                   
 ddl m}m}m} ddlm}m
mmm	} ddd G 
fddt           j
                  } ||| ||                    } |d	 |d
          f          } |            }	 || d|	          S )Nr   )POINTERWINFUNCTYPEWinDLL)BOOLBYTEWCHARUINTDWORD      i  c                   J    e Zd Zdfd z  fd z  fdfdfdz  fgZdS )'is_code_page_present.<locals>.CPINFOEXWMaxCharSizeDefaultCharLeadByteUnicodeDefaultCharCodePageCodePageNameN)__name__
__module____qualname___fields_)r   MAX_DEFAULTCHARMAX_LEADBYTESMAX_PATHr   r   s   r   	CPINFOEXWr"   ,   sT        "D)"D$89m!34)51&#U8^46r   r0   GetCPInfoExWkernel32)ctypesr   r   r   ctypes.wintypesr   r   r   r   r   	Structure)cpr   r   r   r   r   r0   	prototypeGetCPInfoExinfor   r-   r.   r/   r   r   s             @@@@@@r   is_code_page_presentr:   %   s   3333333333>>>>>>>>>>>>>>MOH6 6 6 6 6 6 6 6 6 6 6 6F$ 6 6 6 D$wwy/A/ABBI)^VVJ-?-?@AAK9;;D;r1d###r   c                   &    e Zd ZdZd Zd ZddZdS )QueuezF
    queue: write bytes at one end, read bytes from the other end
    c                     || _         d S r
   _buffer)r   buffers     r   __init__zQueue.__init__=   s    r   c                 &    | xj         |z  c_         d S r
   r>   )r   charss     r   writezQueue.write@   s    r   r   c                     |dk     r| j         }| j         d d         | _         |S | j         d |         }| j         |d          | _         |S Nr   r>   )r   sizess      r   readz
Queue.readC   sP    66A<+DLHUdU#A<.DLHr   N)r   )r)   r*   r+   __doc__rA   rD   rI   r   r   r   r<   r<   9   sP                  r   r<   c                       e Zd Zd Zd ZdS )MixInCheckStateHandlingc                    t          t          |          dz             D ]]} t          j        |                      }|                    |d |                   }|                                }|                     |d         t                     |d         s||                    |d         d d         df           | 	                    |                    |d                               | 
                    ||                                            t          j        |                      }|                    |           |                    ||d          d          }| 
                    |||z              _d S )N   r   T)ranger   codecsgetincrementaldecoderdecodegetstateassertIsInstanceintsetstate
assertTruer   	r   encodingurH   idpart1statepart2s	            r   check_state_handling_decodez3MixInCheckStateHandling.check_state_handling_decodeO   sY   s1vvax 	- 	-A6,X6688AHHQrrUOOEJJLLE!!%(C000 8 6

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

555 7,X6688AJJuHHQqrrUD))EQe,,,,'	- 	-r   c                    t          t          |          dz             D ]} t          j        |                      }|                    |d |                   }|                                } t          j        |                      }|                    |           |                    ||d          d          }|                     |||z              d S )NrN   T)rO   r   rP   getincrementalencoderencoderS   rV   r   rX   s	            r   check_state_handling_encodez3MixInCheckStateHandling.check_state_handling_encodee   s    s1vvax 	- 	-A6,X6688AHHQrrUOOEJJLLE6,X6688AJJuHHQqrrUD))EQe,,,,	- 	-r   N)r)   r*   r+   r`   rd   r   r   r   rL   rL   N   s2        - - -,- - - - -r   rL   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dZ
d	 Zd
 ZdS )ReadTestc           	         t          d          } t          j        | j                  |          }d}t	          |                    | j                  |d          D ]U\  }}|                    t          |g                     ||                                z  }| 	                    ||           V| 	                    |                                d           | 	                    |j
        d            t          j        | j                              }d}t	          |                    | j                  |d          D ]A\  }}||                    t          |g                    z  }| 	                    ||           B| 	                    |                    dd          d           | 	                    |j        d           |                                 d}t	          |                    | j                  |d          D ]A\  }}||                    t          |g                    z  }| 	                    ||           B| 	                    |                    dd          d           | 	                    |j        d           |                    | j                  }	| 	                    |d                    t          j        d |	D             | j                                       d S )Nr    Tstrictc                 .    g | ]}t          |g          S r   bytes.0cs     r   
<listcomp>z*ReadTest.check_partial.<locals>.<listcomp>   s     &C&C&CauaSzz&C&C&Cr   )r<   rP   	getreaderrY   ziprc   rD   rm   rI   r   
bytebufferrQ   rR   r@   resetjoin
iterdecode)
r   r   partialresultsqrresultrp   partialresultr\   encodeds
             r   check_partialzReadTest.check_partialq   s   
 #JJ+FT]++A.."%ell4=&A&A>Z^"_"_"_ 	4 	4QGGE1#JJaffhhFV]33332&&&s+++ 8F(7799"%ell4=&A&A>Z^"_"_"_ 	4 	4QahhuaSzz***FV]3333#t,,b1113''' 	
			"%ell4=&A&A>Z^"_"_"_ 	4 	4QahhuaSzz***FV]3333#t,,b1113''' ,,t}--GGF%&C&C7&C&C&CT]SSTT	
 	
 	
 	
 	
r   c                       fddfd	}d}d}d}                       ||d          |                                  ||d          |                                  ||dd          |                                  ||dd          |           d	}g }g }t          |          D ]D\  }}	|                    |d
z  d
z   dz  |	z              |                    |d
z  d
z   dz             E                       |d                    |          d          d                    |                                            |d                    |          d          d                    |                     t	          d          D ]}
|D ]}	d|
dz  |	z   dz   z  } |          }t	          d          D ]\}                      |                    d          |
dz  |	z                                    |                    d          d           ] |          }t	          d          D ]Y}                      |                    d          |
dz                                   |                    d          d           Zd S )Nc                     t          j        |                     j                            } t	          j        j                  |          S r
   ioBytesIOrc   rY   rP   rr   )r   streamr   s     r   rr   z)ReadTest.test_readline.<locals>.getreader   s=    ZT] ; ;<<F26#DM226:::r   Tc                      |           }g }	 |                     ||          }|sn|                    |           0d                    |          S )NT)rG   keepends|)readlineappendrv   )r   r   rG   readerlineslinerr   s         r   readalllinesz,ReadTest.test_readline.<locals>.readalllines   se    Yu%%FE#D8DD T"""	#
 88E??"r   u   foo
bar
bazspam eggsu   foo
|bar
|baz|spam |eggszfoo|bar|baz|spam|eggsF
   )

u       u   あrh   r   P   azxxx
r   xxx)TN)r   	enumerater   rv   rO   r   )r   r   rH   	sexpectedsexpectednoendslineendsvwvwor[   lineendrG   r   rr   s   `           @r   test_readlinezReadTest.test_readline   s   	; 	; 	; 	; 	;	# 	# 	# 	# 	# 	# .9	1a..	:::a//AAAar22I>>>a33_EEE1%h// 	- 	-LQIIquSy(*W4555JJ#c	8+,,,,bggbkk488#((2,,GGGbggbkk599388C==III "II 	 	D#  S7*W45"1r  A$$66S7*   $$66    #1r  A$$77S   $$77   	 	r   c                 |    g d}d                     |           fd} |            }                     |                                |d                                         |                                d                     |dd                                                    |                                d            |            }                     |                                |d                                         |                    d          |d         d                                         |                    d          d                                |                    d          t	          |d                   dz   d          d d                     |            }                     |                                |d                                         |                                |dd                                          |                                d            |            }                     |                    dd	          d d                                         |                                dd                                          |                                d            |            }                     |                    dd	          d d                                         |                    d          d                                         |                    d          d                                |                    d          d
d                     |            }                     |                    dd	          d d                                         |                                |d         dd          g|dd          z                                   |                                d           d S )N)zHumpty Dumpty sat on a wall,
z!Humpty Dumpty had a great fall.
z-All the king's horses and all the king's menz#Couldn't put Humpty together again.rh   c                      t          j                            j                            }  t	          j        j                  |           S r
   r   )r   datar   s    r   rr   z8ReadTest.test_mixed_readline_and_read.<locals>.getreader   s=    ZDM : :;;F26#DM226:::r   r   rN   d   (      )rG   rC      j   )rv   r   r   rI   r   	readlines)r   r   rr   fr   s   `   @r   test_mixed_readline_and_readz%ReadTest.test_mixed_readline_and_read   s   8 8 8 wwu~~	; 	; 	; 	; 	; 	;
 IKKuQx00027759#5#56662&&& IKKuQx000E!HQK000B'''d3uQx==1+<+=+=&>tt&DEEE IKKuQx000abb	2222&&& IKKRq1148<<<48,,,2&&& IKKRq1148<<<DG,,,B'''d1S5k222 IKKRq1148<<<q!""qrr(BCCC2&&&&&r   c                 2   g d}t          j        d                    |                              | j                            } t          j        | j                  |          }t          |          D ]!\  }}|                     |||                    "d S )N)=z:<%!--===================================================
z,    BLOG index page: show recent articles,
z7    today's articles, or articles of a specific date.
z>========================================================--%>
z!<%@inputencoding="ISO-8859-1"%>
z<%@pagetemplate=TEMPLATE.y%>
z$<%@import=import frog.util, frog%>
z!<%@import=import frog.objects%>
z9<%@import=from frog.storageerrors import StorageError%>
z<%
r   zimport logging
z+log=logging.getLogger("Snakelets.logger")
r   r   zuser=self.SessionCtx.user
z-storageEngine=self.SessionCtx.storageEngine
r   r   z-def readArticlesFromDate(date, count=None):
z2    entryids=storageEngine.listBlogEntries(date)
z%    entryids.reverse() # descending
z    if count:
z#        entryids=entryids[:count]
z
    try:
z\        return [ frog.objects.BlogEntry.load(storageEngine, date, Id) for Id in entryids ]
z    except StorageError,x:
z6        log.error("Error loading articles: "+str(x))
z,        self.abort("cannot load articles")
r   zshowdate=None
r   zarg=self.Request.getArg()
zif arg=="today":
z,    #-------------------- TODAY'S ARTICLES
z-    self.write("<h2>Today's articles</h2>")
z(    showdate = frog.util.isodatestr() 
.    entries = readArticlesFromDate(showdate)
zelif arg=="active":
z4    #-------------------- ACTIVE ARTICLES redirect
z     self.Yredirect("active.y")
zelif arg=="login":
z/    #-------------------- LOGIN PAGE redirect
z    self.Yredirect("login.y")
zelif arg=="date":
z7    #-------------------- ARTICLES OF A SPECIFIC DATE
z2    showdate = self.Request.getParameter("date")
zV    self.write("<h2>Articles written on %s</h2>"% frog.util.mediumdatestr(showdate))
r   zelse:
z+    #-------------------- RECENT ARTICLES
z,    self.write("<h2>Recent articles</h2>")
z.    dates=storageEngine.listBlogEntryDates()
z    if dates:
z        entries=[]
z        SHOWAMOUNT=10
z         for showdate in dates:
zW            entries.extend( readArticlesFromDate(showdate, SHOWAMOUNT-len(entries)) )
z*            if len(entries)>=SHOWAMOUNT:
z                break
z                
rh   )	r   r   rv   rc   rY   rP   rr   r   r   )r   rH   r   r   r[   r   s         r   test_bug1175396zReadTest.test_bug1175396  s    >
 >
 >
~ BGGAJJ--dm<<==0!$-0088"6** 	) 	)IQT1Q4((((	) 	)r   c                 n   t          d          } t          j        | j                  |          } t          j        | j                  |          }|                    d           |                     |                    d          d           |                    d           |                     |                    d          d           |                     |                    d          d           |                    d	           |                     |                    d          d	           |                     |                    d          d           |                    d           |                     |                    d
          d           |                    d           |                     |                    d
          d           |                     |                    d
          d           |                    d	           |                     |                    d
          d	           |                     |                    d
          d           |                    d           |                     |                    d
          d           d S )Nr   zfooFr   fooz
barrh   barbazTr   zbarzfoo
)r<   rP   	getwriterrY   rr   rD   r   r   )r   ry   writerr   s       r   test_readlinequeuezReadTest.test_readlinequeueL  sY   #JJ0!$-00330!$-0033 	W%88%@@@Y%88"===%88%@@@U%88%@@@%88"=== 	W$77AAAY$77>>>$77AAAU$77???$77<<<Y$77CCCCCr   c                    d}d}d}||z   |z                        | j                  }t          j        |          } t	          j        | j                  |          }|                     |                                |           |                     |                                |           |                     |                                |           |                     |                                d           d S )NzAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z`offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!!
znext line.
rh   rc   rY   r   r   rP   rr   r   r   )r   s1s2s3rH   r   r   s          r   test_bug1098990_azReadTest.test_bug1098990_ag  s    RqU2Xdm,,A0!$-0088**B///**B///**B///**B/////r   c                    d}d}d}d}d}||z   |z   |z   |z                        | j                  }t          j        |          } t	          j        | j                  |          }|                     |                                |           |                     |                                |           |                     |                                |           |                     |                                |           |                     |                                |           |                     |                                d           d S )Nzaaaaaaaaaaaaaaaaaaaaaaaa
zbbbbbbbbbbbbbbbbbbbbbbbb
zstillokay:bbbbxx
zbroken!!!!badbad
zagainokay.
rh   r   )	r   r   r   r   s4s5rH   r   r   s	            r   test_bug1098990_bzReadTest.test_bug1098990_bt  s/   ++##U2Xb[^##DM22A0!$-0088**B///**B///**B///**B///**B///**B/////r      �c                    |                      t          dj        | j                   |                     d                    | j        d          d                    | j                             |                     d                    | j        d          d                    | j                             |                     d                    | j        d          d                    | j                             |                     d                    | j        d          d	                    | j                             |                     d                    | j        d
          d                    | j                             |                     d                    | j        d          d	                    | j                             |                     d                    | j        d
          d                    | j                             d                    | j                  }dD ]\  }}|                    | j                  t          |          d          }|                    | j                  t          |          d          }|dz   |z   }||z   | j        z   |z   }|                      t          |j        | j                   |                     |                    | j        d          |           |                     |                    | j        d          |           |                     |                    | j        d          ||z              |                     |                    | j        d
          || j	        z   |z              d
                    d | j        D                       }|                     |                    | j        d          ||z   |z              d S )Nu      []backslashreplacez[\udc80]namereplacexmlcharrefreplacez
[&#56448;]ignore[]replacez[?]   []z[??]rh   ))   𐿿A)[])r   r      surrogatepassc              3       K   | ]	}d |z  V  
dS )\x%02xNr   )ro   bs     r   	<genexpr>z0ReadTest.test_lone_surrogates.<locals>.<genexpr>  sB       'J 'J+, (11} 'J 'J 'J 'J 'J 'Jr   )assertRaisesUnicodeEncodeErrorrc   rY   r   r   ill_formed_sequenceUnicodeDecodeErrorrR   ill_formed_sequence_replacerv   )	r   bombeforeafterbefore_sequenceafter_sequencetest_stringtest_sequencer   s	            r   test_lone_surrogateszReadTest.test_lone_surrogates  s   ,hot}MMM**4=:LMM$++DM::	< 	< 	<**4=-HH$++DM::	< 	< 	<**4=:MNN%,,T];;	= 	= 	=**4=(CCT]33	5 	5 	5**4=)DDdm44	6 	6 	6 	)00IIT]33	5 	5 	5)00	JJt}55	7 	7 	7 ii&&3 	@ 	@MFE$mmDM::3s8899EO"\\$-88SCN 8+e3K ?2!568FGM0-2F"m- - -[//0?A A*, , , ]11$-2AC C(* * * ]11$-JJ#e^- - -]11$-KK#d&FFNP P P!ww 'J 'J040H'J 'J 'J  J  J]11$-ASTT#&66>@ @ @ @+	@ 	@r   c                    d                     | j        d          }t          dt          |                    D ]} t	          j        | j                  d          }|                     |                    |d |                   d           |                     |                    ||d          d          d           d                     | j        d          }t          dt          |                    D ]} t	          j        | j                  d          }|                     |                    |d |                   d           |                     |                    ||d                    d           d S )Nu   r   rN   rh   Tu   )rc   rY   rO   r   rP   rQ   r   rR   )r   r   r[   decs       r   test_incremental_surrogatepassz'ReadTest.test_incremental_surrogatepass  s`    t}o>>q#d))$$ 	C 	CA=&.t}==oNNCSZZRaR112666SZZQRR$77BBBBt}o>>q#d))$$ 	= 	=A=&.t}==oNNCSZZRaR112666SZZQRR118<<<<	= 	=r   N)r)   r*   r+   r~   r   r   r   r   r   r   r   r   r   r   r   r   rf   rf   p   s        )
 )
 )
V9 9 9v.' .' .'`C) C) C)JD D D60 0 00 0 0" #+*@ *@ *@X= = = = =r   rf   c                   d    e Zd ZdZej        dk    rdZndZdZdZd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )	UTF32Testutf-32little          ܀s$     s   p   a   m   s   p   a   m   s$        s   p   a   m   s   p   a   mc                    t          j        | j                  \  }}}}t          j                    } ||          }|                    d           |                    d           |                                }|                     || j        k    p
|| j	        k               t          j        |          } ||          }| 
                    |                                d           d S NspamspamspamrP   lookuprY   r   r   rD   getvaluerW   spamlespamber   rI   r   _r   r   rH   r   r\   s          r   test_only_one_bomzUTF32Test.test_only_one_bom      "M$-88!F6JLLF1II		JJLLT[(<A,<===JqMMF1II:.....r   c                 ^   t          j        d          } t          j        | j                  |          }|                     t          |j                   t          j        d          } t          j        | j                  |          }|                     t          |j                   d S )N   s   r   r   rP   rr   rY   r   UnicodeErrorrI   r   rH   r   s      r   test_badbomzUTF32Test.test_badbom  s    Jy!!+FT]++A..,///Jy!!+FT]++A..,/////r   c                 6    |                      dg d           d S )N    ÿĀ￿𐀀)rh   rh   rh   rh   rh   rh   rh    r   r   r       ÿr   r   r       ÿĀr   r   r       ÿĀ￿r   r   r   r   r~   r   s    r   test_partialzUTF32Test.test_partial  s6    ,  	
 	
 	
 	
 	
r   c                     |                      dt          j        ddd                     |                      dt          j        ddd                     d S N)r   rN      r   T)rh   rN   r   r   rP   utf_32_decoder  s    r   test_handlerszUTF32Test.test_handlers	  l    -gy$GG	I 	I 	I-gxFF	H 	H 	H 	H 	Hr   c                 V    |                      t          t          j        ddd           d S N   rj   T)r   r   rP   r  r  s    r   test_errorszUTF32Test.test_errors  3    ,f.B!8T	3 	3 	3 	3 	3r   c                     |                      | j        d| j                   |                      | j        d| j                   d S Nr   r`   rY   r   r   r  s    r   test_decoder_statezUTF32Test.test_decoder_state  Z    (()3T[	B 	B 	B(()3T[	B 	B 	B 	B 	Br   c                     d}|                      dt          j        |          d                    d}|                      dt          j        |          d                    d S )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀r   s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    r  )r   
encoded_le
encoded_bes      r   test_issue8941zUTF32Test.test_issue8941  su     F
,-j99!<	> 	> 	>E
,-j99!<	> 	> 	> 	> 	>r   N)r)   r*   r+   rY   sys	byteorderr   r   r   r   r   r  r	  r  r  r  r   r   r   r   r     s        H
}  11FFFF/ / /0 0 0
 
 
>H H H3 3 3B B B> > > > >r   r   c                   .    e Zd ZdZdZd Zd Zd Zd ZdS )UTF32LETest	utf-32-ler   c                 6    |                      dg d           d S Nr   )rh   rh   rh   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  s    r   r  zUTF32LETest.test_partial(  6    ,  	
 	
 	
 	
 	
r   c                 b    |                      d                    | j                  d           d S )N   𐈃s    r   rc   rY   r  s    r   test_simplezUTF32LETest.test_simpleC  /    ,,T];;=PQQQQQr   c                 V    |                      t          t          j        ddd           d S r  )r   r   rP   utf_32_le_decoder  s    r   r  zUTF32LETest.test_errorsF  3    ,f.E!8T	3 	3 	3 	3 	3r   c                 f    d}|                      dt          j        |          d                    d S )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r  r   )r   rP   r(  r   r}   s     r   r  zUTF32LETest.test_issue8941J  A     -,099!<	> 	> 	> 	> 	>r   N	r)   r*   r+   rY   r   r  r%  r  r  r   r   r   r  r  $  ^        H-
 
 
6R R R3 3 3> > > > >r   r  c                   .    e Zd ZdZdZd Zd Zd Zd ZdS )UTF32BETest	utf-32-ber   c                 6    |                      dg d           d S r   r  r  s    r   r  zUTF32BETest.test_partialV  r!  r   c                 b    |                      d                    | j                  d           d S )Nr#  s    r$  r  s    r   r%  zUTF32BETest.test_simpleq  r&  r   c                 V    |                      t          t          j        ddd           d S r  )r   r   rP   utf_32_be_decoder  s    r   r  zUTF32BETest.test_errorst  r)  r   c                 f    d}|                      dt          j        |          d                    d S )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r  r   )r   rP   r5  r+  s     r   r  zUTF32BETest.test_issue8941x  r,  r   Nr-  r   r   r   r0  r0  R  r.  r   r0  c                   j    e Zd ZdZej        dk    rdZndZdZdZd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )	UTF16Testutf-16r         ܀s   s p a m s p a m s    s p a m s p a mc                    t          j        | j                  \  }}}}t          j                    } ||          }|                    d           |                    d           |                                }|                     || j        k    p
|| j	        k               t          j        |          } ||          }| 
                    |                                d           d S r   r   r   s          r   r   zUTF16Test.test_only_one_bom  r   r   c                 ^   t          j        d          } t          j        | j                  |          }|                     t          |j                   t          j        d          } t          j        | j                  |          }|                     t          |j                   d S )Ns   r   r   r   s      r   r   zUTF16Test.test_badbom  s    J{##+FT]++A..,///J*+++FT]++A..,/////r   c                 6    |                      dg d           d S )Nr   )rh   rh   rh   r   r   r   r   r   r   r   r   r   r   r   r  r  s    r   r  zUTF16Test.test_partial  s6    ,  	
 	
 	
 	
 	
r   c                     |                      dt          j        ddd                     |                      dt          j        ddd                     d S r  )r   rP   utf_16_decoder  s    r   r	  zUTF16Test.test_handlers  r
  r   c                 V    |                      t          t          j        ddd           d S r  )r   r   rP   r@  r  s    r   r  zUTF16Test.test_errors  r  r   c                     |                      | j        d| j                   |                      | j        d| j                   d S r  r  r  s    r   r  zUTF16Test.test_decoder_state  r  r   c                    d}|                     | j                  }|                     t          j        t          j                   t          t          j        d          5 }|                    |           d d d            n# 1 swxY w Y   t          j        t          j        d| j                  5 }| 	                    |
                                |           d d d            d S # 1 swxY w Y   d S )NzHello
world
wbrz   rY   )rc   rY   
addCleanupr   unlinkTESTFNopenrD   rP   r   rI   )r   r   rH   fpr   s        r   test_bug691291zUTF16Test.test_bug691291  sM   
 "IIdm$$	()*:;;;)"D)) 	RHHQKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	[)3"&-1 1 1 	04:V[[]]B///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s$   !BB
B4)C**C.1C.c                    dD ]}|                      t                    5 }t          j        t          j        || j                   d d d            n# 1 swxY w Y   |                     dt          |j	                             dD ]}|                      t                    5 }t          j        t          j        || j                   d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )N)UrUzr+UrE  zinvalid mode)rtwtatzr+tz'can't have text and binary mode at once)
r   
ValueErrorrP   rI  r   rH  rY   assertInstr	exception)r   modecms      r   test_invalid_modeszUTF16Test.test_invalid_modes  s   & 	= 	=D"":.. L"I,dT]KKKKL L L L L L L L L L L L L L LMM.#bl*;*;<<<<- 	- 	-D"":.. L"I,dT]KKKKL L L L L L L L L L L L L L LMMCbl++- - - -	- 	-s#   'AA	A	$'CC	C	N)r)   r*   r+   rY   r  r  r   r   r   r   r   r  r	  r  r  rK  rX  r   r   r   r8  r8    s        H
}  ))@F@F/ / /0 0 0
 
 
*H H H3 3 3B B B0 0 0
- 
- 
- 
- 
-r   r8  c                   (    e Zd ZdZdZd Zd Zd ZdS )UTF16LETest	utf-16-ler:  c                 6    |                      dg d           d S Nr   )rh   r   r   r   r   r   r   r   r   r   r   r   r  r  s    r   r  zUTF16LETest.test_partial  6    ,  	
 	
 	
 	
 	
r   c                     g d}|D ]W\  }}|                      t          t          j        |dd           |                     |                    dd          |           Xd S )N)r  r   )s   A Z   A�)s	   A B C D Z   ABCD�)s    r   )s    Ar   )s    A    �A)s    A rc  rj   Tzutf-16ler   )r   r   rP   utf_16_le_decoder   rR   r   testsrawexpecteds       r   r  zUTF16LETest.test_errors      
 
 
 # 	J 	JMC0&2I!8T3 3 3SZZ
I>>IIII	J 	Jr   c                     |                      d                    | j                  d           |                      d                    | j                  d           d S )Nr#  s    ީr   rc   rY   rR   r  s    r   test_nonbmpzUTF16LETest.test_nonbmp	  g    ,,T];;,	. 	. 	.,33DMBB%	' 	' 	' 	' 	'r   Nr)   r*   r+   rY   r   r  r  rl  r   r   r   rZ  rZ    O        H%
 
 
&J J J' ' ' ' 'r   rZ  c                   (    e Zd ZdZdZd Zd Zd ZdS )UTF16BETest	utf-16-ber;  c                 6    |                      dg d           d S r]  r  r  s    r   r  zUTF16BETest.test_partial  r^  r   c                     g d}|D ]W\  }}|                      t          t          j        |dd           |                     |                    dd          |           Xd S )N)r`  )s    Ara  )s	    A B C DZrb  )s    r   )s    r   )s     Arc  )s     Arc  rj   Tzutf-16ber   )r   r   rP   utf_16_be_decoder   rR   re  s       r   r  zUTF16BETest.test_errors&  ri  r   c                     |                      d                    | j                  d           |                      d                    | j                  d           d S )Nr#  s    rk  r  s    r   rl  zUTF16BETest.test_nonbmp5  rm  r   Nrn  r   r   r   rq  rq    ro  r   rq  c                   L     e Zd ZdZdZdZdZd Zd Zd Z	 fdZ
d	 Zd
 Z xZS )UTF8Testutf-8s   u	   ���r   c                 6    |                      dg d           d S )N    ÿ߿ࠀ￿𐀀)r   r   r   r       ÿ߿r|  r|      ÿ߿ࠀr}  r}      ÿ߿ࠀ￿r~  r~  r~  r{  r  r  s    r   r  zUTF8Test.test_partialA  s6    2  	
 	
 	
 	
 	
r   c                 r    d}|                      | j        ||                    | j                             d S )Nu    ÿĀ߿ࠀ￿􏿿)r`   rY   rc   )r   rZ   s     r   r  zUTF8Test.test_decoder_stateW  sE    @(()*AHHT],C,C	E 	E 	E 	E 	Er   c                     dD ]e\  }}}|                      |||          5  |                     |                    | j        |          |           d d d            n# 1 swxY w Y   fd S )N)   []r   r   )r  r   u   [��])r  surrogateescape   [])r  r   z
[\x80\xff]r   error_handlerrh  )subTestr   rR   rY   r   r   r  rh  s       r   test_decode_errorzUTF8Test.test_decode_error\  s    .
 		+ 		+)D- 4}'/  1 1 + +  T]M!J!J!)+ + ++ + + + + + + + + + + + + + +		+ 		+s   0AA!	$A!	c                    t                                                       |                     d                    | j        d          | j        dz              |                     t                    5 }d                    | j        d           d d d            n# 1 swxY w Y   |j        }|                     |j	        |j
        |j                 d           d S )Nr   r  s   []u   []u   )superr   r   rc   rY   BOMr   r   rU  objectstartend)r   rW  exc	__class__s      r   r   zUTF8Test.test_lone_surrogatesh  s   $$&&& 	**4=:KLLI-	/ 	/ 	/ 122 	Lb"))$-9JKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	LlCIcg$56GGGGGs   3BB"Bc                    |                      d                    | j        d          | j        dz              |                      d                    | j        d          | j        dz              |                      d                    | j        d          | j        dz              |                      d                    | j        d          d           |                      d                    | j        d          d           |                     t          j        d                     |                     t                    5  d                    | j        d           d d d            n# 1 swxY w Y   |                     t                    5  d	                    | j        d           d d d            d S # 1 swxY w Y   d S )
Nu	   abcdefr   s	   abcdefu   𐿿s   𐿿r   s   []s   abcs   abcz)
r   rc   rY   r  rR   rW   rP   lookup_errorr   r   r  s    r   test_surrogatepass_handlerz#UTF8Test.test_surrogatepass_handlert  sh   ..t}oNN$99	; 	; 	;+224=/RR$CC	E 	E 	E)00PP$AA	C 	C 	C 	.55dm_UU'	) 	) 	)8??__+	- 	- 	- 	+O<<===122 	B 	B!!$-AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B122 	C 	C""4=/BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs$   E--E14E1F;;F?F?c                 f   g d}dD ]}dD ]}|                     ||z               |                    d           |D ]r}|                     |          5   t          j        | j                              }|                     t          |j        |           d d d            n# 1 swxY w Y   sd S )N)                  r  )         s      s      s   s      s   s   )   r  )s   s   s   s   s   s   s   r   )	r   extendr  rP   rQ   rY   r   r   rR   )r   casesprefixsuffixr   r   s         r   test_incremental_errorsz UTF8Test.test_incremental_errors  s>    POO> 	. 	.F + . .Vf_----. N 	O 	O 	O  	H 	HD4(( H HAf24=AACC!!"4cj$GGGH H H H H H H H H H H H H H H	H 	Hs   AB%%B)	,B)	)r)   r*   r+   rY   r   r   r  r  r  r  r   r  r  __classcell__r  s   @r   rx  rx  ;  s        H)".
C
 
 
,E E E

+ 
+ 
+
H 
H 
H 
H 
HC C C&H H H H H H Hr   rx  c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )UTF7Testutf-7c                    d}|                      |                    | j                  |                    d                     |                      |                    d                              | j                  |           d}|                      |                    | j                  |                    d                     |                      |                    d                              | j                  |           |                      d                    | j                  d           |                      d                    | j                  d           d}|                      |                    | j                  |                    d                     |                      |                    d                              | j                  |           d                    t          t          t          t          d                                                              t          ||z   d	z   |z             z
                      }|                      |                    | j                  d
           d S )NzGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?asciiz !"#$%&*;<=>@[]^_`{|}za+bs   a+-bz 	
rh      +sX   +AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	r   rc   rY   rR   rv   sortedsetrm   rO   )r   set_dset_owsother_asciis        r   
test_asciizUTF7Test.test_ascii  s(    	dm44ell76K6KLLLg..55dmDDeLLL'dm44ell76K6KLLLg..55dmDDeLLLdm44g>>>66>>>4=11299W3E3EFFF7++224=AA2FFFggfSuT{{););)B)B)D)D%E%E%()<r)A%B%B&C D D E E++DM::D	E 	E 	E 	E 	Er   c                 6    |                      dg d           d S )N   a+-b cdĀe𐀀f) r   r   a+za+-a+-br  r  r  r  za+-b a+-b cr  r  r  r  u   a+-b c	   a+-b cdr  r  r  r  u   a+-b cdĀ   a+-b cdĀer  r  r  r  r  r  r  u   a+-b cdĀe𐀀r  r  r  s    r   r  zUTF7Test.test_partial  6    .! ! !$	
 $	
 $	
 $	
 $	
r   c           	         g d}|D ]\  }}|                      |          5  |                     t          t          j        |dd           |                     |                    dd          |           d d d            n# 1 swxY w Y   d S )N))s   bu   �b)s   ab   a�b)s   abu   a��b)s   a+IK   a�)s   a+IK-br  )s   a+IK,br  )s   a+IKx   a€�)s   a+IKx-b   a€�b)s   a+IKwgrr  )s	   a+IKwgr-br  )s   a+IKwgr,r  )s
   a+IKwgr,-bu	   a€�-b)s   a+IKwgrB
   a€€�)s
   a+IKwgrB-b   a€€�b)s
   a+/,+IKw-b   a�€b)s   a+//,+IKw-br  )s   a+///,+IKw-b   a￿�€b)s   a+////,+IKw-br  )s   a+IKw-bu   a€b�)s   a+IKwbr  )s   a+@br  rg  rj   Tr  r   )r  r   r   rP   utf_7_decoder   rR   re  s       r   r  zUTF7Test.test_errors  s    
 
 
. # 	K 	KMC#&& K K!!"4f6I #Xt5 5 5  GY!?!?JJJK K K K K K K K K K K K K K K	K 	Ks   ABB	B	c                    |                      d                    | j                  d           |                      d                    | j                  d           |                      d                    | j                  d           |                      d                    | j                  d           |                      d                    | j                  d           |                      d                    | j                  d           |                      d                    | j                  d           |                      d                    | j                  d	           |                      d	                    | j                  d           |                      d
                    | j                  d           d S )Nu   𐒠s   +2AHcoA-u   s   +2AHcoAu   €𐒠s
   +IKzYAdyg-s	   +IKzYAdygu
   €€𐒠s   +IKwgrNgB3KA-s   +IKwgrNgB3KArk  r  s    r   rl  zUTF7Test.test_nonbmp  s   ,,T];;[III..t}=={KKK++DM::LIII**4=99<HHH+224=AA=QQQ--dm<<>PQQQ,,T];;=OPPP188GG)	+ 	+ 	+)00??1	3 	3 	3//>>1	3 	3 	3 	3 	3r   c                     g d}|D ]]\  }}|                      |          5  |                     |                    dd          |           d d d            n# 1 swxY w Y   ^d S )N))s   a+2AE-bu   ab)s   a+2AEbr  )s   a+2AEr  )s   a+2AEA-br  )s   a+2AH-br  )s
   a+IKzYAQ-bu   a€b)s
   a+IKzYAQbr  )s   a+IKzYAQA-br  )s
   a+IKzYAd-br  )s   a+IKwgrNgB-bu   a€€b)s   a+IKwgrNgBbr  )s
   a+IKwgrNgBr  )s   a+IKwgrNgBA-br  r  r  r   r  r   rR   re  s       r   r   zUTF7Test.test_lone_surrogates
  s    
 
 
 # 	K 	KMC#&& K K  GY!?!?JJJK K K K K K K K K K K K K K K	K 	Ks   +AA	 A	N)	r)   r*   r+   rY   r  r  r  rl  r   r   r   r   r  r    sp        HE E E4%
 %
 %
NK K K<3 3 3K K K K Kr   r  c                       e Zd Zd Zd ZdS )UTF16ExTestc                 X    |                      t          t          j        dddd           d S )Nr  rj   r   T)r   r   rP   utf_16_ex_decoder  s    r   r  zUTF16ExTest.test_errors!  s-    ,f.EwPXZ[]abbbbbr   c                 P    |                      t          t          j                   d S r
   )r   	TypeErrorrP   r  r  s    r   test_bad_argszUTF16ExTest.test_bad_args$  s!    )V%<=====r   N)r)   r*   r+   r  r  r   r   r   r  r    s5        c c c> > > > >r   r  c                        e Zd Zd Zd Zd ZdS )ReadBufferTestc                     dd l }|                     t          j        |                     dd                    d           d S )Nr   r      spam)r     )arrayr   rP   readbuffer_encode)r   r  s     r   
test_arrayzReadBufferTest.test_array)  sL    $U[[g%>%>??	
 	
 	
 	
 	
r   c                 V    |                      t          j        d          d           d S )Nrh   r   r   )r   rP   r  r  s    r   
test_emptyzReadBufferTest.test_empty0  s)    1"55x@@@@@r   c                     |                      t          t          j                   |                      t          t          j        d           d S N*   )r   r  rP   r  r  s    r   r  zReadBufferTest.test_bad_args3  s<    )V%=>>>)V%=rBBBBBr   N)r)   r*   r+   r  r  r  r   r   r   r  r  '  sI        
 
 
A A AC C C C Cr   r  c                   >    e Zd ZdZej        Zd Zd Zd Z	d Z
d ZdS )UTF8SigTest	utf-8-sigc                 6    |                      dg d           d S )N   ﻿ ÿ߿ࠀ￿𐀀)rh   rh   rh   rh   rh   u   ﻿   ﻿ r     ﻿ ÿr     ﻿ ÿ߿r  r     ﻿ ÿ߿ࠀr  r     ﻿ ÿ߿ࠀ￿r  r  r  r  r  r  s    r   r  zUTF8SigTest.test_partial;  s6    8  	
 	
 	
 	
 	
r   c                 N    |                      t          dd          d           d S )N   ﻿r  rh   r   rT  r  s    r   test_bug1601501zUTF8SigTest.test_bug1601501W  s(    _k::B?????r   c                      t          j        d                      }d}|                     |                    |                    d                    |           d S )Nr  r   )rP   rQ   r   rR   rc   )r   r\   rH   s      r   test_bomzUTF8SigTest.test_bom[  sS    5F(5577!((;"7"788!<<<<<r   c                    d}t           j        dz   }t          j        d          }d gt          t	          dd                    z   g dz   D ]} |t          j        |                    }t          j                    }	 ||                    |          }n|                                }|sn|	                    |           E|
                                }|                     ||           d S Nu   ABC¡∀XYZs   ABC¡∀XYZr  rN      )@   r        i   )rP   BOM_UTF8rr   listrO   r   r   StringIOrI   rD   r   r   	r   	unistring
bytestringr   sizehintistreamostreamr   gots	            r   test_stream_bomzUTF8SigTest.test_stream_bom`  s    (	_'DD
!+..eArll!3!331112 	- 	-HfRZ
3344GkmmG$'"<<11DD"<<>>D d###$ ""$$CS),,,,	- 	-r   c                    d}d}t          j        d          }d gt          t          dd                    z   g dz   D ]} |t	          j        |                    }t	          j                    }	 ||                    |          }n|                                }|sn|                    |           E|	                                }| 
                    ||           d S r  )rP   rr   r  rO   r   r   r  rI   rD   r   r   r  s	            r   test_stream_barezUTF8SigTest.test_stream_barev  s    (	2
!+..eArll!3!331112 	- 	-HfRZ
3344GkmmG$'"<<11DD"<<>>D d###$ ""$$CS),,,,	- 	-r   N)r)   r*   r+   rY   rP   r  r  r  r  r  r  r  r   r   r   r  r  7  sn        H
/C
 
 
8@ @ @= = =
- - -,- - - - -r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )EscapeDecodeTestc                     |                      t          j        d          d           |                      t          j        t                                d           d S )Nr   r  )r   rP   escape_decode	bytearrayr  s    r   r  zEscapeDecodeTest.test_empty  sN    -c22H===-ikk::HEEEEEr   c                     t           j        }t          d          D ]?}t          |g          }|dk    r'|                      ||dz             |dz   df           @d S )Nr     \   0r    )rP   r
  rO   rm   r   r   rR   r   s      r   test_rawzEscapeDecodeTest.test_raw  sp    %s 	B 	BAqc

AEzz  D!1!1AHa=AAA	B 	Br   c           	         t           j        }t          | |          } |dd            |dd            |dd            |dd            |d	d
            |dd            |dd            |dd            |dd            |dd            |dd            |dd
            |dd            |dd            |dd            |dd            |d d!            |d"d            |d#d!           t          d$d%          D ]}t	          |g          }|d&vrD|                     t                    5   |d'|z   d'|z              d d d            n# 1 swxY w Y   |                     t                    5   |d'|                                z   d'|                                z              d d d            n# 1 swxY w Y   |                     t                    5   |d(d(           d d d            n# 1 swxY w Y   |                     t                    5   |d)d)           d d d            n# 1 swxY w Y   |                     t                    5   |d*d*           d d d            n# 1 swxY w Y   t          d+d,          D ]T}|                     t                    5   |d-|z  t	          |d.z  g                     d d d            n# 1 swxY w Y   Ud S )/N   [\
]   []   [\"]s   ["]   [\']s   [']   [\\]s   [\]   [\a]s   []   [\b]s   []   [\t]s   [	]   [\n]s   [
]   [\v]s   []   [\f]s   []   [\r]s   []   [\7]   [\78]s   [8]   [\41]s   [!]   [\418]s   [!8]   [\101]s   [A]   [\1010]s   [A0]   [\x41]   [\x410]a   {   s   abfnrtvxr     \8   \9   \r  r     \%o   )rP   r
  r   rO   rm   assertWarnsDeprecationWarningupperr   rR   r   r[   r   s        r   test_escapezEscapeDecodeTest.test_escape  s   %tV,,ihhh   h	"""h	"""h	"""h	"""h	"""h	"""h	"""h	"""i$$$i   j'"""j&!!!k7###j&!!!k7###r3 	< 	<Aqc

A##%%&899 0 0E%!)UQY///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0!!"455 < <eaggii'):;;;< < < < < < < < < < < < < < <011 	" 	"E&&!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"011 	" 	"E&&!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"011 	( 	(E)Y'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(uf%% 	7 	7A!!"455 7 7gk5!e)#5#56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7sl   E  E$	'E$	7GG	G	.HHH,II	I	*JJ
J:!K''K+	.K+	c                    t           j        }|                     t          |d           |                     t          |d           |                      |dd          d           |                      |dd          d           |                     t          |d           |                     t          |d	           |                      |d
d          d           |                      |d
d          d           d S )Ns   \xs   [\x]s   [\x]\xr   )r  r   r   )   [?]?r   s   \x0s   [\x0]s   [\x0]\x0)r     )r3  r4  )rP   r
  r   rR  r   )r   rR   s     r   r  zEscapeDecodeTest.test_errors  s    %*ff555*fh777
H55zBBB
I66EEE*fg666*fi888h77DDDi88,GGGGGr   N)r)   r*   r+   r  r  r1  r  r   r   r   r  r    s\        F F FB B B%7 %7 %7N	H 	H 	H 	H 	Hr   r  ))u"   ليهمابتكلموشعربي؟s   egbpdaj6bu4bxfgehfvwxn)u   他们为什么不说中文s   ihqwcrb4cv8a8dqg056pqjye)u   他們爲什麽不說中文s   ihqwctvzc91f659drss3x8bo0yb)u   Pročprostěnemluvíčeskys   Proprostnemluvesky-uyb24dma41a)u,   למההםפשוטלאמדבריםעבריתs   4dbcagdahymbxekheh6e0a7fei0b)uZ   यहलोगहिन्दीक्योंनहींबोलसकतेहैंs,   i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd)u6   なぜみんな日本語を話してくれないのかs&   n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa)uH   세계의모든사람들이한국어를이해한다면얼마나좋을까sE   989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c)u8   почемужеонинеговорятпорусскиs    b1abfaaepdrnnbgefbaDotcwatmq2g4l)u*   PorquénopuedensimplementehablarenEspañols-   PorqunopuedensimplementehablarenEspaol-fmd56a)u-   TạisaohọkhôngthểchỉnóitiếngViệts,   TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g)u   3年B組金八先生s   3B-ww4c5e180e575a65lsy2b)u"   安室奈美恵-with-SUPER-MONKEYSs(   -with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n)u'   Hello-Another-Way-それぞれの場所s(   Hello-Another-Way--fc4qua05auwb3674vfr0b)u   ひとつ屋根の下2s   2-u9tlzr9756bt3uc0v)u   MajiでKoiする5秒前s   MajiKoi5-783gue6qz075azm5e)u   パフィーdeルンバs   de-jg4avhby1noc0d)u   そのスピードでs   d9juau41awczczp)z-> $1.00 <-s   -> $1.00 <--r    c                        e Zd Zd Zd Zd ZdS )PunycodeTestc                     t           D ]n\  }}|                     t          |                    d          d                                          t          |d                                                     od S Npunycoder  )punycode_testcasesr   rT  rc   lowerr   unipunys      r   test_encodezPunycodeTest.test_encode:  s|    + 		 		IC CJJz**G44::<<D'""((**   		 		r   c                    t           D ]\  }}|                     ||                    d                     |                    d                              d          }|                     ||                    d                     d S r8  )r:  r   rR   rc   r<  s      r   test_decodezPunycodeTest.test_decodeF  s    + 	; 	;ICS$++j"9"9:::;;w''..w77DS$++j"9"9::::	; 	;r   c                 `   ddt                      fdg}|D ]\  }}}|                     ||          5  t          |t                    r#|                     t           |j        d|           n*|                     |                    d|          |           d d d            n# 1 swxY w Y   d S )N   xn--w&rj   )rC  r   zxn-)r>  errorsr9  )r   r  
isinstance	Exceptionr   rR   r   )r   	testcasesr>  rD  rh  s        r   test_decode_invalidz PunycodeTest.test_decode_invalidL  s   ,..1(
	 '0 	P 	P"D&(477 P Ph	22 P%%lDKVTTTT$$T[[V%D%DhOOO	P P P P P P P P P P P P P P P	P 	Ps   A#B""B&	)B&	N)r)   r*   r+   r?  rA  rH  r   r   r   r6  r6  9  sF        
 
 
; ; ;
P 
P 
P 
P 
Pr   r6  )-)s%   foo­͏᠆᠋bar​⁠baz︀︈️﻿s	   foobarbaz)s   CAFEs   cafe)s   ßs   ss)s   İs   i̇)s   Ńͺs   ń ιNN)s   ǰ ªs   ǰ a)s   ᾷs   ᾶι)   ǰrJ  )   ΐrK  )   ΰrL  )   ẖrM  )   ὖrN  )    rO  )s    rO  )s    N)s    rO  )s   ​r   )s   　rO  )   rP  )s   N)s   ᠎N)r  r   )s   𝅵N)s   N)s   󱈴N)s   􏈴N)s   򏿾N)s   􏿿N)s   N)s   �N)s   ⿵N)s   ́s   ́)s   ‎N)s   ‪N)s   󠀁N)s   󠁂N)s   foo־barN)s	   fooﵐbarN)s	   fooﹶbars	   foo َbar)s   ا1N)   ا1بrQ  rI  )s   X­ßİ℡ǰ ªΰ s   xssi̇telǰ aΰ )s   Xß㌖İ℡⒟㌀s*   xssキロメートルi̇tel(d)アパートc                       e Zd Zd ZdS )NameprepTestc           	         ddl m} t          t                    D ]\  }\  }}|t	          |dd          }||                     t          ||           ;t	          |dd          }	 |                      ||          |           m# t          $ r.}t          j
        d|dz   t	          |          fz            d }~ww xY wd S )Nr   )nameprepry  r   zTest 3.%d: %srN   )encodings.idnarU  r   nameprep_testsrT  r   r   r   rF  r   
TestFailed)r   rU  posorigpreppedes         r   test_nameprepzNameprepTest.test_nameprep  s    ++++++$-n$=$= 	P 	P C$|tWo66D!!,$????gw@@P$$XXd^^W====  P P P!,_As1vv-NOOOP	P 	Ps   (B
C )B;;C N)r)   r*   r+   r]  r   r   r   rS  rS    s(        P P P P Pr   rS  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	IDNACodecTestc                 &   |                      t          dd          d           |                      t          dd          d           |                      t          dd          d           |                      t          dd          d	           d S )
N
   python.orgidna
python.org   python.org.python.org.   xn--pythn-mua.org   pythön.org   xn--pythn-mua.org.   pythön.org.r  r  s    r   test_builtin_decodez!IDNACodecTest.test_builtin_decode  s    ]F33\BBB^V44mDDD16::OLLL2F;;=MNNNNNr   c                 N   |                      d                    d          d           |                      d                    d          d           |                      d                    d          d           |                      d                    d          d	           d S )
Nrc  rb  ra  re  rd  rg  rf  ri  rh  r   rc   r  s    r   test_builtin_encodez!IDNACodecTest.test_builtin_encode  s    ,,V44mDDD--f55~FFF//779MNNN)0088:OPPPPPr   c                 (   |                      t          d          5  d                    d           d d d            n# 1 swxY w Y   |                      t          d          5  d                    d           d d d            d S # 1 swxY w Y   d S )Nztoo longsT  xn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarb  sN   xn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)assertRaisesRegexr   rR   r  s    r    test_builtin_decode_length_limitz.IDNACodecTest.test_builtin_decode_length_limit  s   ##L*== 	3 	3"**6222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3##L*== 	1 	1 ((000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s!   >AA$BBBc                      t          j        d          t          j        d                    }|                    d           |                     |                                d           d S )Nrb     abc   rh   )rP   rr   r   r   rI   r   )r   rz   s     r   test_streamzIDNACodecTest.test_stream  sY    $FV$$RZ%7%788	q			2&&&&&r   c                 *   |                      d                    t          j        d dD             d                    d           |                      d                    t          j        d dD             d                    d           |                      d                    t          j        d	 d
D             d                    d           |                      d                    t          j        d d
D             d                    d            t          j        d                      }|                      |                    d          d           |                      |                    d          d           |                      |                    d          d           |                      |                    dd          d           |                                 |                      |                    d          d           |                      |                    d          d           |                      |                    d          d           |                      |                    dd          d           d S )Nrh   c              3   6   K   | ]}t          |g          V  d S r
   rl   rn   s     r   r   z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>!  s*      &I&IauaSzz&I&I&I&I&I&Ir   ra  rb  rc  c              3   6   K   | ]}t          |g          V  d S r
   rl   rn   s     r   r   z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>%  s*      &J&JauaSzz&J&J&J&J&J&Jr   rd  re  c              3   6   K   | ]}t          |g          V  d S r
   rl   rn   s     r   r   z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>)  *      &Q&QauaSzz&Q&Q&Q&Q&Q&Qr   rh  ri  c              3   6   K   | ]}t          |g          V  d S r
   rl   rn   s     r   r   z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>-  ry  r   s   xn--xams	   ple-9ta.ou	   äxample.s   rgr   Torgs   rg.zorg.)r   rv   rP   rw   rQ   rR   ru   )r   decoders     r   test_incremental_decodez%IDNACodecTest.test_incremental_decode  se   GGF%&I&I=&I&I&I6RRSS	
 	
 	
 	GGF%&J&J>&J&J&JFSSTT	
 	
 	
 	GGF%&Q&Q;P&Q&Q&QSYZZ[[	
 	
 	
 	GGF%&Q&Q;P&Q&Q&QSYZZ[[	
 	
 	

 7&.v6688
55r:::77GGG..333T22E:::
55r:::77GGG//888T22B77777r   c                 6   |                      d                    t          j        dd                    d           |                      d                    t          j        dd                    d           |                      d                    t          j        dd                    d           |                      d                    t          j        dd                    d            t          j        d                      }|                      |                    d	          d           |                      |                    d
          d           |                      |                    dd          d           |                                 |                      |                    d	          d           |                      |                    d          d           |                      |                    dd          d           d S )Nr   rc  rb  ra  re  rd  ri  rh  u   äxz	ample.orgs   xn--xample-9ta.rh   Ts   orgz
ample.org.s   xn--xample-9ta.org.)r   rv   rP   
iterencoderb   rc   ru   )r   encoders     r   test_incremental_encodez%IDNACodecTest.test_incremental_encode=  s   HHV&|V<<==	
 	
 	
 	HHV&}f==>>	
 	
 	
 	HHV&'7@@AA!	
 	
 	
 	HHV&'7@@AA!	
 	
 	

 7&.v668800#666446HIIID116:::00#666557MNNND11377777r   c                     d                     dd           d                    dd           dD ]F}|                     t          dj         d|           |                     t          dj        d|           GdS )z$Only supports "strict" error handlerrc  rb  rj   ra  )r   r   r   r  N)rc   rR   r   rF  r   rD  s     r   r  zIDNACodecTest.test_errorsY  s    FH---VX...# 	6 	6Fi)<ffMMMi$ff6 6 6 6	6 	6r   N)
r)   r*   r+   rj  rm  rp  rt  r}  r  r  r   r   r   r_  r_    s        O O OQ Q Q1 1 1' ' '
8 8 8<8 8 886 6 6 6 6r   r_  c                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )CodecsModuleTestc                    |                      t          j        dd          d           |                     t          t          j                   |                      t          j        d          d           |                     t
          t          j        dd           |                      t          j        dd          d           |                      t          j        d	dd
          d           d S )N   latin-1   äöürr  abcr  r  objrY      []r   rD  r   )r   rP   rR   r   r  r   r  s    r   rA  zCodecsModuleTest.test_decodef  s    	BB'	) 	) 	))V]333v..666,fmWgNNN 	?YOOO'	) 	) 	)y'(KKK	 	 	 	 	r   c                 8   |                      t          j        dd          d           |                     t          t          j                   |                     t
          t          j        dd           |                      t          j        d          d           |                     t          t          j        dd	           |                      t          j        dd
          d           |                      t          j        dd	d          d           d S )Nr  r  r  r   __spam__r  rr  u   ÿffr  r     [ÿ]r   r  r  )r   rP   rc   r   r  LookupErrorr   r  s    r   r?  zCodecsModuleTest.test_encodes  s   ~yAA(	* 	* 	*)V]333+v}eZHHHu--v666,fmXwOOO 	>INNN(	* 	* 	*xJJJ	  	  	  	  	 r   c                     |                      t          t          j                   |                      t          t          j        d           d S r  )r   r  rP   registerr  s    r   test_registerzCodecsModuleTest.test_register  s:    )V_555)V_b99999r   c                    d}t          j                    }t          j        |           |                     t
          t          j        |           |                    |           |                                 t          j	        |           |                     t          t          j        |           |                                 d S )Nnonexistent_codec_name)r   MockrP   r  r   r  r   assert_called_with
reset_mock
unregisterr  assert_not_called)r   namesearch_functions      r   test_unregisterz CodecsModuleTest.test_unregister  s    ')++((()V]D999**4000""$$$/***+v}d;;;))+++++r   c                     |                      t          t          j                   |                      t          t          j        d           |                      t          t          j        d           d S )Nr   )r   r  rP   r   r  r  s    r   test_lookupzCodecsModuleTest.test_lookup  sT    )V]333+v}jAAA+v}c:::::r   c                     |                      t          t          j                   |                      t          t          j        d           d S Nr  )r   r  rP   
getencoderr  r  s    r   test_getencoderz CodecsModuleTest.test_getencoder  <    )V%6777+v'8*EEEEEr   c                     |                      t          t          j                   |                      t          t          j        d           d S r  )r   r  rP   
getdecoderr  r  s    r   test_getdecoderz CodecsModuleTest.test_getdecoder  r  r   c                     |                      t          t          j                   |                      t          t          j        d           d S r  )r   r  rP   rr   r  r  s    r   test_getreaderzCodecsModuleTest.test_getreader  <    )V%5666+v'7DDDDDr   c                     |                      t          t          j                   |                      t          t          j        d           d S r  )r   r  rP   r   r  r  s    r   test_getwriterzCodecsModuleTest.test_getwriter  r  r   c                    t          j        t           j                  }|                     t           j        t           j        |           	 t          j        t           j        d           n*# t           j        $ r |                     d           Y nw xY wt          j        d          }|                     |j	        d           d S )Ntr_TRztest needs Turkish localeASCIIr  )
locale	setlocaleLC_CTYPErF  ErrorskipTestrP   r   r   r  )r   	oldlocalerp   s      r   test_lookup_issue1813z&CodecsModuleTest.test_lookup_issue1813  s     $V_55	(&/9EEE	7V_g6666| 	7 	7 	7MM566666	7 M'"")))))s   A+ +$BBc                     d}|                      |t          j                   t          j        D ]}t          t          |           d S )N),rc   rR   r  	CodecInfoCodecIncrementalEncoderIncrementalDecoderStreamReaderStreamWriterr   r  r  rb   rQ   rr   r   register_errorr  strict_errorsreplace_errorsignore_errorsxmlcharrefreplace_errorsbackslashreplace_errorsnamereplace_errorsrI  EncodedFiler  rw   r  BOM_BEBOM_LEr  	BOM_UTF16BOM_UTF16_BEBOM_UTF16_LE	BOM_UTF32BOM_UTF32_BEBOM_UTF32_LEBOM32_BEBOM32_LEBOM64_BEBOM64_LEStreamReaderWriterStreamRecoder)assertCountEqualrP   __all__getattr)r   apis     r   test_allzCodecsModuleTest.test_all  sQ    
$ 	c6>222> 	! 	!CFC    	! 	!r   c                 n   |                      t          j        t          j                   dD ]}|                     |          5  t          j        t          j        |d          5 }|                     |t
          j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )N)wrz   zr+w+r   r  r  )	rF  r   rG  rH  r  rP   rI  rT   r  )r   rV  files      r   	test_openzCodecsModuleTest.test_open  sE   	()*:;;;5 	G 	GDd## G GK	 0$@@GDH%%dF,EFFFG G G G G G G G G G G G G G G G G G G G G G G G G G G G G G	G 	Gs6   !B)%!BB)BB)BB))B-	0B-	c                    |                      t          t          j        dd           |                      t          t          j        dd           |                      t          t          j        dd           |                      t          t          j        dd           dD ]R}|                      t          t          j        dd|           |                      t          t          j        dd|           Sd S )Nr  	undefinedrr  rh   r   )rj   r   r   r   )r   r   rP   rc   rR   r  s     r   test_undefinedzCodecsModuleTest.test_undefined  s    ,ukJJJ,v{KKK,r;GGG,sKHHHI 	< 	<Fluk6; ; ;lv{F< < < <	< 	<r   c                 n   t          j                    }t          j        d|          5 }|                     t                    5  t          j        t          j        dd           d d d            n# 1 swxY w Y    |            j	        
                                 d d d            d S # 1 swxY w Y   d S )Nzbuiltins.openrP  zinvalid-encoding)r   	mock_openpatchr   r  rP   rI  r   rH  closeassert_called)r   r  r  s      r   'test_file_closes_if_lookup_error_raisedz8CodecsModuleTest.test_file_closes_if_lookup_error_raised  s0   N$$	Z33 	)t"";// H HI,d4FGGGH H H H H H H H H H H H H H H DFFL&&(((		) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s5   B*!A1%B*1A5	5B*8A5	9$B**B.1B.N)r)   r*   r+   rA  r?  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  d  s               : : :
, 
, 
,; ; ;
F F FF F FE E EE E E* * *! ! !.G G G	< 	< 	<) ) ) ) )r   r  c                       e Zd Zd Zd ZdS )StreamReaderTestc                 j    t          j        d          | _        t          j        d          | _        d S )Nry     한
글)rP   rr   r   r   r   r   r  s    r   setUpzStreamReaderTest.setUp  s*    &w//j!>??r   c                     |                      | j                  }|                     |                                ddg           d S )Nu   한
u   글)r   r   r   r   )r   r   s     r   test_readlineszStreamReaderTest.test_readlines  s>    KK$$X(>?????r   N)r)   r*   r+   r  r  r   r   r   r  r    s:        @ @ @@ @ @ @ @r   r  c                       e Zd Zd ZdS )EncodedFileTestc                 v   t          j        d          }t          j        |dd          }|                     |                                d           t          j                    }t          j        |dd          }|                    d           |                     |                                d           d S )Nr  r[  ry  s   \
  r     ü   )r   r   rP   r  r   rI   rD   r   r   r   efs      r   
test_basiczEncodedFileTest.test_basic  s    J455;88$;<<<JLL7I66
w/////r   N)r)   r*   r+   r  r   r   r   r  r    s#        0 0 0 0 0r   r  )er  big5	big5hkscscharmapcp037cp1006cp1026cp1125cp1140cp1250cp1251cp1252cp1253cp1254cp1255cp1256cp1257cp1258cp424cp437cp500cp720cp737cp775cp850cp852cp855cp856cp857cp858cp860cp861cp862cp863cp864cp865cp866cp869cp874cp875cp932cp949cp950euc_jis_2004euc_jisx0213euc_jpeuc_krgb18030gb2312gbk	hp_roman8hzrb  
iso2022_jpiso2022_jp_1iso2022_jp_2iso2022_jp_2004iso2022_jp_3iso2022_jp_ext
iso2022_kr	iso8859_1
iso8859_10
iso8859_11
iso8859_13
iso8859_14
iso8859_15
iso8859_16	iso8859_2	iso8859_3	iso8859_4	iso8859_5	iso8859_6	iso8859_7	iso8859_8	iso8859_9johabkoi8_rkoi8_tkoi8_ukz1048latin_1mac_cyrillic	mac_greekmac_iceland
mac_latin2	mac_romanmac_turkishpalmosptcp154r9  raw_unicode_escape	shift_jisshift_jis_2004shift_jisx0213tis_620unicode_escapeutf_16	utf_16_be	utf_16_leutf_7utf_8mbcs_encodembcs
oem_encodeoemr9  c                       e Zd Zd Zej         ej        edu d          d                         Z	d Z
d Zd Zd Zd	 ZdS )
BasicUnicodeTestc           	         d}t           D ]m}t          j        |          j        }|                    d          r|dz  }n|dk    rd}|dk    r>|                     |                    dd          |                    dd                      t          j        |          |          \  }}|                     |t          |          d|z              t          j	        |          |          \  }}|                     ||d|z             |t          vrt          d          } t          j        |          |          }d}	|D ]g}
|                    |
           |                                }|                     t!          |          t"          u t!          |                     |	|z  }	ht          d          } t          j        |          |          }d	}|	D ]<}
|                    t#          |
g                     ||                                z  }=|                     ||d|z             |t          vr6	  t          j        |                      d}	|D ]}
|	                    |
          z  }	|	                    d	d
          z  }	 t          j        |                      d	}|	D ](}
|                    t#          |
g                    z  })|                    dd
          z  }|                     ||d|z             d	                    t          j        t          j        ||          |                    }|                     ||d|z             d	                    t          j        t          j        d	|          |                    }|                     |d	           n# t4          $ r Y nw xY w|dvr	  t          j        |          d          d                    fd|D                       }	 t          j        |          d          d	                    fd|	D                       }|                     ||d|z             \# t4          $ r Y iw xY wod S )Nabc123_codecrG  r\  r   -encoding=%rr   rh   Trb  r\  r   c              3   B   K   | ]}                     |          V  d S r
   rc   )ro   rp   r  s     r   r   z/BasicUnicodeTest.test_basics.<locals>.<genexpr>  s/      0N0Nq1B1B0N0N0N0N0N0Nr   c              3   ^   K   | ]'}                     t          |g                    V  (d S r
   rR   rm   )ro   rp   r|  s     r   r   z/BasicUnicodeTest.test_basics.<locals>.<genexpr>  sS       0H 0H45 18uaSzz0J0J 0H 0H 0H 0H 0H 0Hr   )all_unicode_encodingsrP   r   r  endswithr   r   r  r   r  broken_unicode_with_statefulr<   r   rD   rI   rW   typerm   rr   rb   rc   rQ   rR   rv   rw   r  r  )r   rH   rY   r  r   rG   rC   ry   r   encodedresultrp   chunkr   decodedresultr{   r|  r  s                  @@r   test_basicszBasicUnicodeTest.test_basicst  s   - L	C L	CH=**/D  ** ! Y&& v~~  !1!1#s!;!;!%c3!7!79 9 9 4)(33A66IQT3q66=8+CDDD7F-h77::MUDUA}x'?@@@;;;#JJ3)(33A66 # + +ALLOOOFFHHEOODKK5$8$u++FFF!U*MM#JJ3)(33A66 "& 3 3AGGE1#JJ'''!V[[]]2MM  =83KLLL;;;1Df:8DDFFG
 %(M ; ;%):)::!W^^B%=%==MDf:8DDFFG$&M* D D%qc

)C)CC!W^^C%>%>>M$$]A%2X%=? ? ?  WWV%6"-a::H&F &F G GF$$VQ0HIII  WWV%6"-b(;;X&G &G H HF$$VR00001 #   D4 #333
C"H&">x"H"H"R"R ),0N0N0N0NA0N0N0N(N(N"H&">x"H"H"R"R(* 0H 0H 0H 0H9F0H 0H 0H )H )H(()6)AC C C C '   IL	C L	Cs$   N;;
OOQ((
Q65Q6Nzneed _testcapi modulec                    d}t           D ]}}|t          vrp	 t          j        |          d}|D ]}|                    |          z  }|                    dd          z  }t          j        |          d}|D ](}|                    t          |g                    z  })|                    dd          z  }|                     ||d|z             n# t          $ r Y nw xY w|dvr	 t          j        |d          d
                    fd|D                       }t          j        |d          d
                    fd	|D                       }|                     ||d|z             l# t          $ r Y yw xY wd S )
Nrb  r   rh   Tre  rf  r   c              3   B   K   | ]}                     |          V  d S r
   rh  )ro   rp   cencoders     r   r   z4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>  s/      0O0O1C1C0O0O0O0O0O0Or   c              3   ^   K   | ]'}                     t          |g                    V  (d S r
   rj  )ro   rp   cdecoders     r   r   z4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>  sS       0H 0H45 19qc

0K0K 0H 0H 0H 0H 0H 0Hr   )rk  rm  	_testcapicodec_incrementalencoderrc   codec_incrementaldecoderrR   rm   r   r  rv   )r   rH   rY   ro  rp   rq  rw  ru  s         @@r   test_basics_capiz!BasicUnicodeTest.test_basics_capi  s,    - !	C !	CH;;;?(A(KKH
 %(M < <%););;!X__R%>%>>M(A(KKH$&M* E E%s)D)DD!X__S$%?%??M$$]A%2X%=? ? ? ? #   D  #333
C#,#EhPX#Y#Y ),0O0O0O0OQ0O0O0O(O(O#,#EhPX#Y#Y(* 0H 0H 0H 0H9F0H 0H 0H )H )H(()6)AC C C C '   3!	C !	Cs#   C
C('C(0E88
FFc                 n   ddz  }t           D ]}|dk    r	|t          v r t          j        |          t	          j        |                    |                              }t          d          D ]B}|                    dd           |	                                }| 
                    ||           Cd S )Nz%s
%s
)X  abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123X  def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456rb  r   r   )rk  rm  rP   rr   r   r   rc   rO   seekrI   r   )r   rH   rY   r   tr   s         r   	test_seekzBasicUnicodeTest.test_seek  s    55- 
	* 
	*H6!!777/V%h//
188H;M;M0N0NOOF1XX * *Aq!!!{{}}  D))))	*
	* 
	*r   c                     t           D ]Q}t          j        |          }|                     t          |           |dvr|                     t          |d           Rd S )N)rb  r9  r  )rk  rP   r  r   r  )r   rY   r|  s      r   test_bad_decode_argsz%BasicUnicodeTest.test_bad_decode_args  sf    - 	: 	:H'11Gi111333!!)Wb999		: 	:r   c                 x    t           D ]1}t          j        |          }|                     t          |           2d S r
   )rk  rP   r  r   r  )r   rY   r  s      r   test_bad_encode_argsz%BasicUnicodeTest.test_bad_encode_args  sD    - 	2 	2H'11Gi1111	2 	2r   c                 f    ddl m} t          |j                  }|                     ||           d S )Nr   )r   )	encodingsr   rn  encoding_tabler   )r   r   
table_types      r   "test_encoding_map_type_initializedz3BasicUnicodeTest.test_encoding_map_type_initialized  s@    $$$$$$&/00
Z00000r   c                     d}t           D ]_}|t          vrT|                     |||                    |                     |                     |||                    |                     `d S )Nrb  )rk  rm  r`   rc   rd   )r   rZ   rY   s      r   r  z#BasicUnicodeTest.test_decoder_state  sy    - 	R 	RH;;;001ahhx>P>PQQQ001ahhx>P>PQQQ	R 	Rr   )r)   r*   r+   rr  r   cpython_onlyunittestskipIfrx  r{  r  r  r  r  r  r   r   r   r`  r`  s  s        NC NC NC` X_Y$&(?@@#C #C A@ #CJ* * *: : :2 2 2
1 1 1R R R R Rr   r`  c                        e Zd Zd Zd Zd ZdS )CharmapTestc                    |                      t          j        ddd          d           |                      t          j        ddd          d           |                     t          t          j        ddd           |                     t          t          j        ddd           |                      t          j        dd	d          d
           |                      t          j        dd	d          d
           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           t          t          d                    }|                      t          j        |dd          dt          |          f           d S )N    rj   r  r  rs     􏿿bcr  rs  abu   ab￾r   u   ab�rs  r   zab\x02rs  r   r  rs  r  rh   )r   rP   charmap_decoder   r   rm   rO   r   r   allbytess     r   test_decode_with_string_mapz'CharmapTest.test_decode_with_string_map  s#   !/8UCC	
 	
 	

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

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

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

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

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

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

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

 s$$!(Hb99X	
 	
 	
 	
 	
r   c                    |                      t          j        dddddd          d           |                      t          j        dddd	d
d          d           |                      t          j        dddddd          d           |                      t          j        dddddd          d           |                     t          t          j        ddddd           |                     t          t          j        ddddd d           |                     t          t          j        dddddd           |                      t          j        ddddd          d           |                      t          j        ddddd d          d           |                      t          j        dddddd          d           |                      t          j        ddddd          d           |                      t          j        ddddd d          d           |                      t          j        dddddd          d           |                      t          j        ddddd          d           |                      t          j        ddddd d          d           |                      t          j        dddddd          d           t          t          d                    }|                      t          j        |di           dt          |          f           |                     t          dt          j        dddd	dd           |                     t          dt          j        dddd	dd           d S )Nr  rj   r   r   rp   r   rN   r    r  AaBbCc)AaBbCcrs     􏿿r  rh   r  r   rN   u   ￾r   r  r   r  r   r  z.character mapping must be in range\(0x110000\)r   iɚ;)
r   rP   r  r   r   rm   rO   r   ro  r  r  s     r   test_decode_with_int2str_mapz(CharmapTest.test_decode_with_int2str_mapM  s   !/8&)cc":":< <	
 	
 	
 	!/8&*t"="=? ?	
 	
 	
 	!/8&2ss"C"CE E	
 	
 	
 	!/8&)cb"9"9; ;	
 	
 	
 	,!?H'*s#3#3	
 	
 	

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

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

 	y>!X34B'?'?	
 	
 	
 	y>!X34I'F'F	
 	
 	
 	
 	
r   c           
         t          d          }t          d          }t          d          }|                     t          j        dd|||d          d           |                     t          j        ddd||d          d	           |                     t          j        ddt          j        ||d          t          t          j                  d
z   df           |                     t          t          j        ddt          j        dz   ||d           |                     t          t          j        dd||d           |                     t          t          j        dd||dd           |                     t          j        dd||d          d           |                     t          j        dd||dd          d           |                     t          j        dd||d          d           |                     t          j        dd||dd          d           |                     t          j        dd||d          d           |                     t          j        dd||dd          d           d S )Nr   r   rp   r  rj   r  r  i r  bcrs  rN   r  i  r   r  r   r  r   r  )
ordr   rP   r  r  
maxunicodechrr   r  r   )r   r   r   rp   s       r   test_decode_with_int2int_mapz(CharmapTest.test_decode_with_int2int_map  s   HHHHHH!/8&'A!"4"46 6	
 	
 	
 	!/8&.1";";= =	
 	
 	
 	!/8&)nq"A"AC C  4'+	
 	
 	
 	)!?H'*~'9aA#F#F	
 	
 	

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

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

 	!/9&'A,,0 0	
 	
 	
 	!/9&'A&"9"9; ;	
 	
 	
 	!/3E&'A,,0 0	
 	
 	
 	!/3E&'A&"9"9; ;	
 	
 	
 	!/8&'A,,0 0	
 	
 	
 	!/8&'A&"9"9; ;	
 	
 	
 	
 	
r   N)r)   r*   r+   r  r  r  r   r   r   r  r    sK        5
 5
 5
nr
 r
 r
hI
 I
 I
 I
 I
r   r  c                       e Zd Zd Zd ZdS )WithStmtTestc                    t          j        d          }t          j        |dd          5 }|                     |                                d           d d d            n# 1 swxY w Y   |                     |j                   d S )Nr  r  ry  r  )r   r   rP   r  r   rI   rW   closedr  s      r   test_encodedfilezWithStmtTest.test_encodedfile	  s    J{##9g66 	1"RWWYY000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1!!!!!s   )A  A$'A$c                    t          j        d          }t          j        d          }t          j        ||j        |j        d          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Nr  ry  rj      ü)	r   r   rP   r   r  streamreaderstreamwriterr   rI   )r   r   r9   srws       r   test_streamreaderwriterz$WithStmtTest.test_streamreaderwriter	  s    J{##}W%%&q$*;'+'8(D D 	1GJSXXZZ000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   
)B  BBN)r)   r*   r+   r  r  r   r   r   r  r  	  s2        " " "1 1 1 1 1r   r  c                       e Zd Zd Zd ZdS )	TypesTestc                    t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j	        t           j
        t           j        t           j        g}t          t           d          r|                    t           j                   |D ]}|                     t"          |d           d S )Nmbcs_decoder   )rP   r  utf_8_decoderd  ru  r  r  r(  r5  utf_32_ex_decodelatin_1_decodeascii_decoder  hasattrr   r  r   r  )r   decodersr|  s      r   test_decode_unicodezTypesTest.test_decode_unicode	  s     ### ###!!
 6=)) 	0OOF./// 	9 	9Gi%8888	9 	9r   c                 &   |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                     t
          t          j        d           |                      t          j        dd          d           |                      t          j        dd          d	           |                     t
          t          j        d           |                      t          j        dd          d           |                      t          j        dd          d	           d S )
Nz\u1234)u   ሴr   s   \u1234
   \U00110000z
\U00110000r   r   r   r   )z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30r   )r   rP   unicode_escape_decoderaw_unicode_escape_decoder   r   r  s    r   test_unicode_escapezTypesTest.test_unicode_escape2	  ss    	5i@@-PPP5jAA=QQQ9)DDmTTT9*EE}UUU,f.JN[[[5mYOOQ_```5mEWXXJ	L 	L 	L 	,f.NP^___9-SSUcddd9-I[\\J	L 	L 	L 	L 	Lr   N)r)   r*   r+   r  r  r   r   r   r  r  	  s7        9 9 9*L L L L Lr   r  c                   @    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 ZdS )
UnicodeEscapeTestzunicode-escapeNc                     |                      t          j        d          d           |                      t          j        d          d           d S Nrh   r  r   rh   r   )r   rP   unicode_escape_encoder  r  s    r   r  zUnicodeEscapeTest.test_emptyJ	  sJ    5b998DDD5c::GDDDDDr   c                     t           j        }t          dd          D ]D}|dk    r<|                      |t	          |                    t          |g          df           Ed S )N       \   rN   )rP   r  rO   r   r  rm   r   rc   r   s      r   test_raw_encodez!UnicodeEscapeTest.test_raw_encodeN	  si    -r3 	B 	BAH}}  A%**aAAA	B 	Br   c                     t           j        }t          d          D ]J}|dk    rB|                      |t	          |g          dz             t          |          dz   df           Kd S )Nr  r  r  0r    )rP   r  rO   r   rm   r  r  s      r   test_raw_decodez!UnicodeEscapeTest.test_raw_decodeT	  ss    -s 	O 	OAH}}  qc

T(9!:!:SVVc\1<MNNN	O 	Or   c                    t           j        }t          | |          } |dd            |dd            |dd            |dd           t          d	          D ]A}t	          |          d
vr. |t	          |          d|z                                             Bt          dd          D ]0} |t	          |          d|z                                             1 |dd            |dd           d S )N	s   \tr   s   \nr   s   \r\s   \\r  z	
r   r  r     €   \u20ac   𝄠
   \U0001d120)rP   r  r   rO   r  rc   r   rc   r   r   s       r   test_escape_encodez$UnicodeEscapeTest.test_escape_encodeZ	  s   -tV,,dFdFdFdFr 	8 	8A1vvX%%c!ffy1}4466777sC 	4 	4AE#a&&9q=00223333h
###lN+++++r   c           
      T   t           j        }t          | |          } |dd            |dd            |dd            |dd            |d	d
            |dd            |dd            |dd            |dd            |dd            |dd            |dd
            |dd            |dd            |dd            |dd            |d d!            |d"d            |d#d!            |d$d%            |d&d'           t          d(d)          D ]}t	          |g          }|d*vrQ|                     t                    5   |d+|z   d,t          |          z              d d d            n# 1 swxY w Y   |                                d-vrf|                     t                    5   |d+|                                z   d,t          |d.z
            z              d d d            n# 1 swxY w Y   |                     t                    5   |d/d0           d d d            n# 1 swxY w Y   |                     t                    5   |d1d2           d d d            n# 1 swxY w Y   |                     t                    5   |d3d4           d d d            n# 1 swxY w Y   t          d5d6          D ]P}|                     t                    5   |d7|z  t          |                     d d d            n# 1 swxY w Y   Qd S )8Nr  r   r  z["]r  z[']r  z[\]r  z[]r  z[]r  z[	]r  z[
]r  z[]r  z[]r  z[]r  r  z[8]r   z[!]r!  z[!8]r"  z[A]r#  z[A0]r$  r%  r  r  r  r  r&  r'  s	   abfnrtuvxr  r  s   UNr  r(  z\8r)  z\9r*  u   \úr  r  r+  )	rP   r  r   rO   rm   r-  r.  r  r/  r0  s        r   test_escape_decodez$UnicodeEscapeTest.test_escape_decodei	  s   -tV,,ihhhh!!!h!!!h!!!h!!!h!!!h!!!h!!!h!!!i###ij&!!!j%   k6"""j%   k6"""j(###nl+++r3 	? 	?Aqc

A$$%%&899 4 4E%!)TCFF]3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4wwyy%%%%&899 ? ?E%!''))+TC"II-=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?011 	! 	!E&%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!011 	! 	!E&%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!011 	' 	'E)X&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'uf%% 	+ 	+A!!"455 + +gk3q66***+ + + + + + + + + + + + + + +	+ 	+sl    FF		F		 5HH	H	'I  II%I>>JJ#J<<K K 3LL 	#L 	c           	         t           j        }dD ]\  }}t          |          D ]}|                     t          |d|z   d|z  z              |                     t          |d|z   d|z  z   dz              d|z   d|z  z   dz   |z   d|z  z   }|                      ||d          dt          |          f           |                      ||d	          d
t          |          f           Ō|                     t          |d           |                      |dd          d           |                      |dd	          d           d S )N))   xr       ur     Ur  r  r     [\   ]   ]\r   r   r      [�]�r  rh   r   r  )rP   r  rO   r   r   r   r   r   rR   rp   r\   r[   r   s         r   test_decode_errorsz$UnicodeEscapeTest.test_decode_errors	  s   -3 		@ 		@DAq1XX @ @!!"4f"'!)d1f"46 6 6!!"4f"(1*tAv"5"<> > >zDF*V3a7$q&@  h!7!7$D		9JKKK  i!8!8"2CII!>@ @ @ @@ 	,fnEEE998DDD	::NKKKKKr   c                 6    |                      dg d           d S )N    	
\ÿ￿𐀀) rh   rh   rh   r   r    	r   	
r   	
r   	
\r  r  r      	
\ÿr  r  r  r  r  
    	
\ÿ￿r  r  r  r  r  r  r  r  r  r  r  r  s    r   r  zUnicodeEscapeTest.test_partial	  r  r   r)   r*   r+   rY   r   r  r  r  r  r  r  r  r   r   r   r  r  E	  s        HE E EB B BO O O, , ,(+ (+ (+TL L L %
 %
 %
 %
 %
r   r  c                   @    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 ZdS )
RawUnicodeEscapeTestzraw-unicode-escapeNc                     |                      t          j        d          d           |                      t          j        d          d           d S r  )r   rP   raw_unicode_escape_encoder  r  s    r   r  zRawUnicodeEscapeTest.test_empty	  sJ    9"==xHHH9#>>HHHHHr   c                     t           j        }t          d          D ]>}|                      |t	          |                    t          |g          df           ?d S )Nr  rN   )rP   r  rO   r   r  rm   r  s      r   r  z$RawUnicodeEscapeTest.test_raw_encode	  s\    1s 	> 	>AVVCFF^^eQCjj!_====	> 	>r   c                     t           j        }t          d          D ]D}|                      |t	          |g          dz             t          |          dz   df           Ed S )Nr  r  r  r    )rP   r  rO   r   rm   r  r  s      r   r  z$RawUnicodeEscapeTest.test_raw_decode	  sl    1s 	K 	KAVVE1#JJ$566Q#q8IJJJJ	K 	Kr   c                     t           j        }t          | |          }t          d          D ]3}|dvr- |dt	          |          z   dt          |g          z              4 |dd            |dd           d S )	Nr     uUr  r  r  r  r  r  )rP   r  r   rO   r  rm   r  s       r   r  z'RawUnicodeEscapeTest.test_escape_encode	  s    1tV,,s 	9 	9A~~dSVVmUUA3ZZ%7888h
###lN+++++r   c                     t           j        }t          | |          }t          d          D ]3}|dvr- |dt	          |g          z   dt          |          z              4 |dd            |dd           d S )	Nr  r  r  r  r  r  r  r  )rP   r  r   rO   rm   r  )r   rR   r   r   s       r   r  z'RawUnicodeEscapeTest.test_escape_decode	  s    1tV,,s 	9 	9A~~eeQCjj($Q-888j(###nl+++++r   c           	         t           j        }dD ]\  }}t          |          D ]}|                     t          |d|z   d|z  z              |                     t          |d|z   d|z  z   dz              d|z   d|z  z   dz   |z   d|z  z   }|                      ||d          dt          |          f           |                      ||d	          d
t          |          f           Ō|                     t          |d           |                      |dd          d           |                      |dd	          d           d S )N)r  r  r  r  r  r  r  r   r   r   r  r  r  r  )rP   r  rO   r   r   r   r   r  s         r   r  z'RawUnicodeEscapeTest.test_decode_errors	  s   1( 		@ 		@DAq1XX @ @!!"4f"'!)d1f"46 6 6!!"4f"(1*tAv"5"<> > >zDF*V3a7$q&@  h!7!7$D		9JKKK  i!8!8"2CII!>@ @ @ @@ 	,fnEEE998DDD	::NKKKKKr   c                 6    |                      dg d           d S )Nr  )r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  s    r   r  z!RawUnicodeEscapeTest.test_partial	  s6    .  	
 	
 	
 	
 	
r   r  r   r   r   r  r  	  s        #HI I I> > >
K K K
, , ,, , ,L L L 
 
 
 
 
r   r  c                       e Zd Zd ZdS )EscapeEncodeTestc                 |   g d}|D ][\  }}|                      |          5  |                     t          j        |          |           d d d            n# 1 swxY w Y   \|                     t
          t          j        d           |                     t
          t          j        t          d                     d S )N))r   r  )   foobar)r  r   )s	   spam eggs)s   spam\x00eggs	   )s   a'b)s   a\'brs  )s   b\c)s   b\\crs  )s   c
d)s   c\ndrs  )s   de)s   d\rers  )s   fg)s   f\x7fgrs  r  r   r  )r  r   rP   escape_encoder   r  r  )r   rf  r   outputs       r   r  z#EscapeEncodeTest.test_escape_encode
  s
   	
 	
 	
 " 	E 	ELD&4(( E E  !5d!;!;VDDDE E E E E E E E E E E E E E E)V%96BBB)V%99W;M;MNNNNNs   )AA	A	N)r)   r*   r+   r  r   r   r   r  r  
  s(        O O O O Or   r  c                   &    e Zd Zd Zd Zd Zd ZdS )SurrogateEscapeTestc                 V   |                      d                    dd          d           |                      d                    dd          d           |                      d                    dd          d           |                      d                    dd          d           d S )N   foobarry  r  	   foobars   u	   r   rR   rc   r  s    r   	test_utf8zSurrogateEscapeTest.test_utf83
  s    --g7HII'	) 	) 	)..w8IJJ&	( 	( 	( 	//9JKK-	/ 	/ 	/-44W>OPP(	* 	* 	* 	* 	*r   c                     |                      d                    dd          d           |                      d                    dd          d           d S )Nr  r  r  r  r  r  s    r   r  zSurrogateEscapeTest.test_ascii?
  sh    --g7HII'	) 	) 	)..w8IJJ&	( 	( 	( 	( 	(r   c                     |                      d                    dd          d           |                      d                    dd          d           d S )Ns   foobarz
iso-8859-3r  u	   foobarr  r  s    r   test_charmapz SurrogateEscapeTest.test_charmapF
  sh    --l<MNN'	) 	) 	)..|=NOO&	( 	( 	( 	( 	(r   c                 Z    |                      d                    dd          d           d S )Nu   r  r  s   rl  r  s    r   test_latin1zSurrogateEscapeTest.test_latin1M
  s;    9@@L]^^0	2 	2 	2 	2 	2r   N)r)   r*   r+   r  r  r  r  r   r   r   r  r  1
  sP        
* 
* 
*( ( (( ( (2 2 2 2 2r   r  c                       e Zd Zd ZdS )BomTestc                 :	   d}d}|                      t          j        t          j                   |D ]h}t	          j        t          j        d|          5 }|                    |           |                    |           |                    d           |                     |	                                |dz             |                    d           |                     |	                                |dz             d d d            n# 1 swxY w Y   t	          j        t          j        d|          5 }|                    |d                    | 
                    |                                d           |                    d           |                    |           |                    d           |                     |	                                |           d d d            n# 1 swxY w Y   t	          j        t          j        d|          5 }|j                            |d                    | 
                    |j                                        d           |j                            d           |j                            |           |                    d           |                     |	                                |           d d d            n# 1 swxY w Y   t	          j        t          j        d|          5 }|                    |           |                    |                                           |                    |           |                    d           |                     |	                                |dz             d d d            n# 1 swxY w Y   t	          j        t          j        d|          5 }|j                            |           |j                            |j                                                   |j                            |           |                    d           |                     |	                                |dz             d d d            n# 1 swxY w Y   jd S )N
1234567890)r9  r[  rr  r   r  r1  r  rE  r   r    )rF  r   rG  rH  rP   rI  rD   r  r   rI   assertNotEqualtellr   )r   r   rf  rY   r   s        r   
test_seek0zBomTest.test_seek0T
  s    		()*:;;; ,	5 ,	5HY-thGGG 51q			  4!8444q			  4!84445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 Y-thGGG 11Q   ##AFFHHa000q			q			  40001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Y-thGGG 11tAw'''##AHMMOOQ777a   t$$$q			  40001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Y-thGGG 51qvvxx   q			  4!84445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 Y-thGGG 51t$$$ahmmoo...t$$$q			  4!84445 5 5 5 5 5 5 5 5 5 5 5 5 5 5O,	5 ,	5s_   B+DD	D	8B+G//G3	6G3	B?K&&K*	-K*	BN00N4	7N4	B&RR	R	N)r)   r*   r+   r  r   r   r   r  r  S
  s#        55 55 55 55 55r   r  )base64_codecuu_codecquopri_codec	hex_codecbase64base_64uu)quopriquoted_printablequotedprintablehexrot13)r  r   r!  r"  rot_13
zlib_codecrs   zlib	bz2_codecbz2c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
 ej        ed	          d
             Zd Zd Zd Zd ZdS )TransformCodecTestc                    t          t          d                    }t          D ]}|                     |          5   t	          j        |          |          \  }}|                     |t          |                      t	          j        |          |          \  }}|                     |t          |                     |                     ||           d d d            n# 1 swxY w Y   d S )Nr  rE  )	rm   rO   bytes_transform_encodingsr  rP   r  r   r   r  )r   binputrY   orG   r[   s         r   rr  zTransformCodecTest.test_basics
  s"   uSzz""1 	, 	,Hx00 , ,7F-h77??	D  s6{{3337F-h77::	D  s1vv...  F+++, , , , , , , , , , , , , , ,	, 	,s   BC%%C)	,C)	c                 R   t           D ]}|                     |          5  t          j        d|          } t          j        |          t          j        |                    }|                                }|                     |d           d d d            n# 1 swxY w Y   d S NrE  r  )	r3  r  rP   rc   rr   r   r   rI   r   r   rY   sinr   souts        r   	test_readzTransformCodecTest.test_read
  s    1 	0 	0Hx00 0 0mGX663)(33BJsOODD{{}}  w///	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0   A/BB	"B	c                 R   t           D ]}|                     |          5  t          j        d|          } t          j        |          t          j        |                    }|                                }|                     |d           d d d            n# 1 swxY w Y   d S r7  )	r3  r  rP   rc   rr   r   r   r   r   r8  s        r   r   z TransformCodecTest.test_readline
  s    1 	0 	0Hx00 0 0mGX663)(33BJsOODD((  w///	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0r<  c                    d}t           D ]}|                     |          5  |}t          |          }t          j        ||          }t          j        ||          }|                     ||           t          |          }t          j        ||          }|                     ||           t          j        ||          }|                     ||           d d d            n# 1 swxY w Y   d S )Ns   12345rE  )r3  r  
memoryviewrP   rc   r   rR   )r   originalrY   r   viewview_encodedview_decodeds          r   test_buffer_api_usagez(TransformCodecTest.test_buffer_api_usage
  s1     1 	5 	5Hx00 
5 
5!$''}T844%}T8<<  t444!$''}T844  x000%}T8<<  t444
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5	5 	5s   B7C%%C)	,C)	c                 v   d}t           D ]}|                     |          5  d}|                    |          }|                     t          |          5 }|                    |           d d d            n# 1 swxY w Y   |                     |j        j                   d d d            n# 1 swxY w Y   d S )Nzbad input typerE  zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	r3  r  formatro  r  rc   assertIsNonerU  	__cause__)r   	bad_inputrY   fmtmsgfailures         r   /test_text_to_binary_denylists_binary_transformszBTransformCodecTest.test_text_to_binary_denylists_binary_transforms
  s9   $	1 	? 	?Hx00 ? ?Kjj**++K== /$$X.../ / / / / / / / / / / / / / /!!'"3"=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	?s5   3B-A7+B-7A;;B->A;?"B--B1	4B1	c                     d}|                      t          |          5  d                    d           d d d            d S # 1 swxY w Y   d S )NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager+  )ro  r  rc   r   rK  s     r   -test_text_to_binary_denylists_text_transformsz@TransformCodecTest.test_text_to_binary_denylists_text_transforms
  s    C##K55 	7 	7%,,X666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   AAAc                    d}t           D ]}|                     |          5  t          j        ||          }d}|                    |          }|                     t          |          5  |                    |           d d d            n# 1 swxY w Y   |                     t          |          5  t          |                              |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Ns6   encode first to ensure we meet any format restrictionsrE  zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	r3  r  rP   rc   rF  ro  r  rR   r  )r   r   rY   encoded_datarJ  rK  s         r   /test_binary_to_text_denylists_binary_transformszBTransformCodecTest.test_binary_to_text_denylists_binary_transforms
  s    I1 		= 		=Hx00 = =%}T8<<Kjj**++K== 2 2 ''1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2++K== = =l++228<<<= = = = = = = = = = = = = = == = = = = = = = = = = = = = =		= 		=sZ   AC8*B C8BC8BC82#C!C8!C%%C8(C%)C88C<	?C<	c                 \   dt          d          fD ]}|                     |          5  d}|                     t          |          5 }|                    d           d d d            n# 1 swxY w Y   |                     |j        j                   d d d            n# 1 swxY w Y   d S )Ns	   immutables   mutable)rI  zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr+  )r  r  ro  r  rR   rG  rU  rH  )r   rI  rK  rL  s       r   -test_binary_to_text_denylists_text_transformsz@TransformCodecTest.test_binary_to_text_denylists_text_transforms
  s0   &	*(=(=> 	? 	?I	22 ? ?K++K== /$$X.../ / / / / / / / / / / / / / /!!'"3"=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	?s5   B A*B *A..B 1A.2"B  B$	'B$	zRequires zlib supportc                    d}|                      t          j                  5 }t          j        dd           d d d            n# 1 swxY w Y   |                     |j        j        t          |j                             d S )Nz(^decoding with 'zlib_codec' codec failed   hellor,  )	r   r-  errorrP   rR   rT   rU  rH  rn  )r   rK  rL  s      r   !test_custom_zlib_error_is_wrappedz4TransformCodecTest.test_custom_zlib_error_is_wrapped  s     9tz** 	2gM(L111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2g/904W5F0G0G	I 	I 	I 	I 	Is   AAAc                    dd l }d}|                     |j                  5 }t          j        dd           d d d            n# 1 swxY w Y   |                     |j        j        t          |j                             d S )Nr   z'^decoding with 'hex_codec' codec failedrW  r"  )	binasciir   r  rP   rR   rT   rU  rH  rn  )r   r[  rK  rL  s       r    test_custom_hex_error_is_wrappedz3TransformCodecTest.test_custom_hex_error_is_wrapped  s    7x~.. 	1'M(K000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1g/904W5F0G0G	I 	I 	I 	I 	Is   AA
Ac                 :   t                                           D ]\  }}t          j        |          j        }|D ]_}|                     |          5  t          j        |          }|                     |j        |           d d d            n# 1 swxY w Y   `d S )N)alias)transform_aliasesitemsrP   r   r  r  r   )r   
codec_namealiasesexpected_namer^  r9   s         r   test_aliaseszTransformCodecTest.test_aliases  s    #4#:#:#<#< 	? 	?J"M*55:M  ? ?\\\.. ? ?!=//D$$TY>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ??	? 	?s   0BBBc                     t          j        dd          }|                     |d           d}|                     t          j        |d          |           d S )Ns   space tab	eol 
zquopri-codecs   space=20tab=09eol=20
s   space tab eol
)rP   rc   r   rR   )r   r}   	unescapeds      r   test_quopri_statelessz(TransformCodecTest.test_quopri_stateless$  sX    - 4nEE";<<<&	y.AA9MMMMMr   c                 T    |                      t          t          j        dd           d S )Nr   zuu-codec)r   rR  rP   rR   r  s    r   test_uu_invalidz"TransformCodecTest.test_uu_invalid,  s$    *fmS*EEEEEr   N)r)   r*   r+   rr  r;  r   rD  rM  rP  rS  rU  r  
skipUnlessr-  rY  r\  rd  rg  ri  r   r   r   r1  r1  
  s       	, 	, 	,0 0 00 0 05 5 5$
? 
? 
?7 7 7= = =? ? ? X677I I 87II I I? ? ?N N NF F F F Fr   r1  c                 6    t                               |           S r
   )_TEST_CODECSget)ra  s    r   _get_test_codecrn  ;  s    J'''r   c                       e Zd Zd Zd Zd Zej        d             Zd Z	e
fdZd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )ExceptionChainingTestc                     d| _         t          j        t                     |                     t          j        t                     t          | _        d S )Nexception_chaining_test)ra  rP   r  rn  rF  r  RuntimeErrorobj_to_raiser  s    r   r  zExceptionChainingTest.setUpA  s@    3((()?;;; )r   c                     t                               | j        d            t          j                            | j        d            d S r
   )rl  popra  r  _cacher  s    r   tearDownzExceptionChainingTest.tearDownO  s;    $///T_d33333r   c                 \    t          j        ||| j                  }|t          | j        <   d S )N)r  )rP   r  ra  rl  )r   rc   rR   
codec_infos       r   	set_codeczExceptionChainingTest.set_codecT  s4    %ff+/?< < <
(2T_%%%r   c              #   :  K   d                     || j        |j        |          }|                     ||          5 }|V  d d d            n# 1 swxY w Y   |                     |j        j        |           |                     |j        j        j                   d S )Nz${} with {!r} codec failed \({}: {}\))	rF  ra  r)   ro  rT   rU  rH  assertIsNotNone__traceback__)r   	operationexc_typerK  full_msgcaughts         r   assertWrappedz#ExceptionChainingTest.assertWrappedY  s      :AAT_h.?F F##Hh77 	6LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	f.8(CCCV-7EFFFFFs   AAAc                     | j         r
   )rt  )r   argskwdss      r   	raise_objzExceptionChainingTest.raise_objb  s    r   c                    || _         |                     | j        | j                   |                     d||          5  d                    | j                   d d d            n# 1 swxY w Y   |                     d||          5  t          j        d| j                   d d d            n# 1 swxY w Y   |                     d||          5  d                    | j                   d d d            n# 1 swxY w Y   |                     d||          5  t          j        d| j                   d d d            d S # 1 swxY w Y   d S )NrY   	str_inputdecoding   bytes input)rt  r{  r  r  rc   ra  rP   rR   )r   rt  rK  r  s       r   check_wrappedz#ExceptionChainingTest.check_wrappedf  s9   (t~t~666
Hc:: 	0 	0t///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0
Hc:: 	8 	8M+t777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8
Hc:: 	3 	3!!$/222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3
Hc:: 	; 	;M.$/:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;sG   A&&A*-A*B//B36B3C88C<?C<EE	Ec                 <    |                      t          d           d S )Nrh   r  rs  r  s    r   test_raise_by_typez(ExceptionChainingTest.test_raise_by_typer  s    <,,,,,r   c                 P    d}|                      t          |          |           d S )NThis should be wrappedr  rO  s     r   test_raise_by_valuez)ExceptionChainingTest.test_raise_by_valueu  s+    &<,,c22222r   c                 p    d} G d dt                     }|                      ||          ||           d S )Nr  c                       e Zd ZdZdS )WExceptionChainingTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrorr   N)r)   r*   r+   	__slots__r   r   r   MyRuntimeErrorr  {  s        IIIr   r  rs  r  r   rK  r  s      r   )test_raise_grandchild_subclass_exact_sizez?ExceptionChainingTest.test_raise_grandchild_subclass_exact_sizey  sY    &	 	 	 	 	\ 	 	 	>>#..^DDDDDr   c                 p    d} G d dt                     }|                      ||          ||           d S )Nr  c                       e Zd ZdS )VExceptionChainingTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)r)   r*   r+   r   r   r   r  r    s        Dr   r  r  r  s      r   (test_raise_subclass_with_weakref_supportz>ExceptionChainingTest.test_raise_subclass_with_weakref_support  sY    &	 	 	 	 	\ 	 	 	>>#..^DDDDDr   c                    fd}|                      ||           |                     t          |          5  d                    | j                   d d d            n# 1 swxY w Y   |                     t          |          5  t          j        d| j                   d d d            n# 1 swxY w Y   |                     t          |          5  d                    | j                   d d d            n# 1 swxY w Y   |                     t          |          5  t          j        d| j                   d d d            d S # 1 swxY w Y   d S )Nc                      r
   r   )r  r  rt  s     r   r  z:ExceptionChainingTest.check_not_wrapped.<locals>.raise_obj  s	    r   	str inputr  )r{  ro  rs  rc   ra  rP   rR   )r   rt  rK  r  s    `  r   check_not_wrappedz'ExceptionChainingTest.check_not_wrapped  s?   	 	 	 	 	y),,,##L#66 	0 	0t///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0##L#66 	8 	8M+t777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8##L#66 	3 	3!!$/222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3##L#66 	; 	;M.$/:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;sG   AA#&A#B,,B03B0C99C= C=EEEc                 X     G d dt                     }|                     |d           d S )Nc                       e Zd Zd ZdS )KExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInitc                     d S r
   r   r  s    r   rA   zTExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInit.__init__  s    r   N)r)   r*   r+   rA   r   r   r   
CustomInitr    s#            r   r  rh   rs  r  )r   r  s     r   !test_init_override_is_not_wrappedz7ExceptionChainingTest.test_init_override_is_not_wrapped  sJ    	 	 	 	 	 	 	 	 	z2.....r   c                 X     G d dt                     }|                     |d           d S )Nc                        e Zd Z fdZ xZS )IExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNewc                 F    t                                          |           S r
   )r  __new__)clsr  s    r   r  zQExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNew.__new__  s    wws+++r   )r)   r*   r+   r  r  r  s   @r   	CustomNewr    s8        , , , , , , , , ,r   r  rh   r  )r   r  s     r    test_new_override_is_not_wrappedz6ExceptionChainingTest.test_new_override_is_not_wrapped  sJ    	, 	, 	, 	, 	, 	, 	, 	, 	y"-----r   c                     d}t          |          }d|_        |                     |d                    |                     d S )NzThis should NOT be wrappedrN   z^{}$)rs  attrr  rF  )r   rK  r  s      r   &test_instance_attribute_is_not_wrappedz<ExceptionChainingTest.test_instance_attribute_is_not_wrapped  sC    *3sFMM#$6$677777r   c                 L    |                      t          d          d           d S )NrN   1r  rs  r  s    r   test_non_str_arg_is_not_wrappedz5ExceptionChainingTest.test_non_str_arg_is_not_wrapped  s$    |A44444r   c                 T    d}|                      t          ddd          |           d S )Nz^\('a', 'b', 'c'\)$r   r   rp   r  )r   msg_res     r   !test_multiple_args_is_not_wrappedz7ExceptionChainingTest.test_multiple_args_is_not_wrapped  s/    '|Cc::FCCCCCr   c                    d                     | j                  }|                     t          |          5  d                    | j                   d d d            n# 1 swxY w Y   |                     t          |          5  t          j        d| j                   d d d            n# 1 swxY w Y   |                     t          |          5  d                    | j                   d d d            n# 1 swxY w Y   |                     t          |          5  t          j        d| j                   d d d            d S # 1 swxY w Y   d S )Nz^unknown encoding: {}$r  r  )rF  ra  ro  r  rc   rP   rR   rO  s     r   %test_codec_lookup_failure_not_wrappedz;ExceptionChainingTest.test_codec_lookup_failure_not_wrapped  s&   &--do>>##K55 	0 	0t///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0##K55 	8 	8M+t777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8##K55 	3 	3!!$/222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3##K55 	; 	;M.$/:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;sG   AA!$A!B**B.1B.C77C;>C;EE	E	c                    d }d }|                      ||           t          j        d | j                  }|                     |d           t          j        d | j                  }|                     |d           d}|                    | j                  }|                     t          |          5  d                    | j                   d d d            n# 1 swxY w Y   d}|                    | j                  }|                     t          |          5  d                    | j                   d d d            d S # 1 swxY w Y   d S )	Nc                      dS )N)
not bytes!r   r   r  r  s     r   encode_to_strzSExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_str  s    "?r   c                      dS )N)   not str!r   r   r  s     r   decode_to_byteszUExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytes  s    !>r   r  r  zd^{!r} encoder returned 'str' instead of 'bytes'; use codecs.encode\(\) to encode to arbitrary types$r  zd^{!r} decoder returned 'bytes' instead of 'str'; use codecs.decode\(\) to decode to arbitrary types$r  )	r{  rP   rc   ra  r   rR   rF  ro  r  )r   r  r  r}   decodedrJ  rK  s          r   &test_unflagged_non_text_codec_handlingz<ExceptionChainingTest.test_unflagged_non_text_codec_handling  s   	# 	# 	#	" 	" 	"}o666-do66,///-do66+...Fjj))##Is33 	0 	0t///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0Fjj))##Is33 	3 	3!!$/222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s$   4CC"CEE	E	N)r)   r*   r+   r  rx  r{  
contextlibcontextmanagerr  r  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   rp  rp  ?  sI       ) ) )4 4 4
3 3 3
 G G G      9E 
; 
; 
; 
;- - -3 3 3E E EE E E; ; ;/ / /. . .8 8 85 5 5D D D

; 
; 
;3 3 3 3 3r   rp  win32z"code pages are specific to Windowsc                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z ej        ddd          d             Z ej        ddd          d             ZdS )CodePageTest  c                 >   |                      t          t          j        dd           |                      t          t          j        dd           |                      t
          t          j        dd           |                      t
          t          j        dd           d S )Nr   r      ar'  )r   rR  rP   code_page_encodecode_page_decodeOSErrorr  s    r   test_invalid_code_pagez#CodePageTest.test_invalid_code_page  s|    *f&=r3GGG*f&=r4HHH'6#:CEEE'6#:CFFFFFr   c           	         |                      t          dt          j        dd           |                      t          dt          j        dddd           |                      t          dt          j        | j        ddd           d S )	Nr        ÿs    rj   TCP_UTF8r  )ro  r   rP   r  r   r  r  r  s    r   test_code_page_namez CodePageTest.test_code_page_name  s    17#S&	2 	2 	217#S+x	G 	G 	G19#T\7Hd	L 	L 	L 	L 	Lr   c                    |D ]\  }}}|	 t          j        |||d          }n8# t          $ r+}|                     d|d|d|d|           Y d }~nd }~ww xY w|                     |d         ||d|d|d	|d         d
|	           |                     |d         d           |                     |d         t          |                     |                     t          t           j        |||d           d S )NTzUnable to decode z	 from "cp" with errors=: r   z.decode("cp", )= != rN   )	rP   r  r   failr   assertGreaterEqualassertLessEqualr   r   )r   r6   rf  rg  rD  rh  r  errs           r   check_decodezCodePageTest.check_decode  s|   %* 	D 	D!C#H$5b#vtLLGG) H H HIII14bbb&&&##G H H H H H H H HH   XssBBB


HH>? ? ? ''
A666$$WQZS::::!!"4+RfdD D D D	D 	Ds   $
A!AAc                    |D ]\  }}}|	 t          j        |||          }n8# t          $ r+}|                     d|d|d|d|           Y d }~nd }~ww xY w|                     |d         ||d|d|d|d         d	|	           |                     |d
         t          |                     |                     t          t           j        |||           d S )NzUnable to encode z to "cpr  r  r   z.encode("cpr  r  r  rN   )rP   r  r   r  r   r   r   )r   r6   rf  textrD  rh  r}   r  s           r   check_encodezCodePageTest.check_encode  sY   &+ 	? 	?"D&(#I$5b$GGGG) I I IIII15rrr66633H I I I I I I I II   XttRRRXX?@ @ @   SYY7777!!"4+Rv? ? ? ?	? 	?s   #
A!AAc                 ^    |                      dd           |                     dd           d S )Nr  )r  rj   rr  )   ｄ騾rj      )r  rj   N)r  r   r  )r  r   s   [y])u   [€]r   s   [?])r  r   s   [\xff])r  r   s)   [\N{LATIN SMALL LETTER Y WITH DIAERESIS}])r  r   s   [&#255;])u   rj   N)   []r  r  )r  r   N)rr  rj   r  )r  rj   r  )r  rj   N)r  r   r   )r  r   u   [�])r  r   z[\xff])r  r  r  )r  r   N)    abcrj   N)r  r   z abc)r  r   u   � abc)r  r   z\x81 abcr  r  r  s    r   
test_cp932zCodePageTest.test_cp932  sL    #  
 	 	 	  	#  
 	 	 	 	 	r   c                 ^    |                      dd           |                     dd           d S )Ni  )r  )   é€rj      )r  rj   r  )   Łrj   N)r  r   r   )r  r      L)   r     )r  r   N)r  )r  rj   r  )r  rj   r  r  r  s    r   test_cp1252zCodePageTest.test_cp1252,  sL    $ 
!
 
	 
	 
	 	$ !
 	 	 	 	 	r   c                 b    d}|                      |d           |                     |d           d S )N  )r  )r  rj      +AOkgrA-)r  rj      +2//f/w-)r   rj      +3IA-)r   rj      +//0-)r  )r  rj   r  )r  rj   r  )r  rj   r   )r  rj   r   )s   [+/]rj   r   )r  rj   r  r  r   r6   s     r   test_cp_utf7zCodePageTest.test_cp_utf7>  sQ    " 
 	 	 	 	" 	
 		 		 		 		 		r   c                     |                      dd           |                      | j        d           |                     | j        d           d S )Nr  ))   r      騾)r  r   u   �騾))   􏿿r   r  )r  r   u   �􏿿))	   [􏿿]r   s   [􏿿])r  r   s   [􏿿?])r  r  r  r  s    r   test_multibyte_encodingz$CodePageTest.test_multibyte_encodingR  sq    #  
 	 	 	 	$, )
 	 	 	 	$, )
 	 	 	 	 	r   c                    t           j        rt          j                            d           ddddddgt          dd	          d
R D ]]}t          |          r.|                     t          j	        |d          dd|            ?t           j        rt          d|            ^|                     t          j	        dd          d           d S )Nr   i,  i-  i.  i1  i3  i5  i  i  r  rr  r  r6   z  skipping cp=r  )u	   rs  )r   verboser  stdoutrD   rO   r:   r   rP   r  printr  s     r   test_code_page_decode_flagsz(CodePageTest.test_code_page_decode_flags`  s     ? 	#JT"""%ue 2%))2+02 2 
	1 
	1B $B'' 1  !8V!D!DjR[WYR[R[\\\\? 1/2//0000V<<2	4 	4 	4 	4 	4r   c                 n   t          j        dddd          }|                     |d           t          j        dddd          }|                     |d           t          j        dddd          }|                     |d	           t          j        dd
dd          }|                     |d           d S )Nr     rj   Fr  s   )r  r    s   )u   騾騾r  rr  r  )rP   r  r   )r   r  s     r   test_incrementalzCodePageTest.test_incrementals  s    )#w%HH'***)#*98*/1 1 	-000)#*=x*/1 1 	"5666)#*0(*/1 1 	*-----r   c                 0   d}d| }t          j        d|          5  	 t          j        |          }|                     |j        d           t          j        |           n# t          j        |           w xY w	 d d d            d S # 1 swxY w Y   d S )Ni r6   z_winapi.GetACP)return_valuer\  )r   r  rP   r   r   r  r  )r   	code_pager  codecs       r   test_mbcs_aliaszCodePageTest.test_mbcs_alias  s     	IZ(yAAA 	( 	((d++  V444!$''''!$'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s(   B/A$B$A::BBBl           F)rG   memusedry_runc                    d|dz  dz
  z  dz   }|                      t          |          |dz              t          j        d|dd          }|                      |d         t          |                     ~|                      t          |d	                   |d                    |                      |d	         d d
         d           |                      |d	         dd          d           d S )Ns   01234567r4  rN   s
   r    r  r  Tr   r   
0123456701iu(   6701234567r   r   rP   r  r   rG   r}   r  s       r   test_large_inputzCodePageTest.test_large_input  s    
 47A+.>?WtAv...)#w8I4PPS\\222WQZ'!*555CRC,777CDD):	; 	; 	; 	; 	;r   r   c                    d|dz  z  }|                      t          |          |dz  dz             t          j        d|dd          }|                      |d         t          |                     ~|                      t          |d                   |           |                      |d         d d         d	           |                      |d         d
d          d           d S )Ns
   0123456턀r4  r   r  r   TrN   r   u   0123456턀01iu   56턀0123456턀r  r  s       r   test_large_utf8_inputz"CodePageTest.test_large_utf8_input  s    
 *T1W5Wtqy2~666)%(DIIS\\222WQZ$///CRC*;<<<CDD)+BCCCCCr   N)r)   r*   r+   r  r  r  r  r  r  r  r  r  r
  r  r  r   
bigmemtestr  r  r   r   r   r  r    s/        GG G GL L LD D D$? ? ?   B  $  (  4 4 4&. . .&
( 
( 
( WU1e<<<; ; =<;" WU1e<<<D D =<D D Dr   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )	ASCIITestc                 X    |                      d                    d          d           d S )Nrb  r  s   abc123rl  r  s    r   r?  zASCIITest.test_encode  s*    119=====r   c                     dD ]`\  }}}|                      |||          5  |                     |                    d|          |           d d d            n# 1 swxY w Y   ad S )N))	   [ÿ€]r   r  )r"  r   s   [???])r"  r   s   [&#128;&#255;&#8364;])u   [ÿ€򫳞]r   s   [\x80\xff\u20ac\U000abcde]r  r  r  r  r  r  r   rc   r  s       r   test_encode_errorzASCIITest.test_encode_error  s    .
 	+ 	+)D- 4}'/  1 1 + +  Wm!D!D!)+ + ++ + + + + + + + + + + + + + +	+ 	+   +AA	A	c                     |                      t                    5  d                    dd           d d d            d S # 1 swxY w Y   d S )Nu   ÿr  r  r   r   rc   r  s    r   !test_encode_surrogateescape_errorz+ASCIITest.test_encode_surrogateescape_error  s    122 	< 	<):;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<   ?AAc                 X    |                      d                    d          d           d S )Nrr  r  r  )r   rR   r  s    r   rA  zASCIITest.test_decode  s*    w//77777r   c                     dD ]`\  }}}|                      |||          5  |                     |                    d|          |           d d d            n# 1 swxY w Y   ad S )Nr  r  r  r  r  s       r   r  zASCIITest.test_decode_error  s    .
 		+ 		+)D- 4}'/  1 1 + +  Wm!D!D!)+ + ++ + + + + + + + + + + + + + +		+ 		+r&  N)r)   r*   r+   r?  r%  r)  rA  r  r   r   r   r  r    s_        > > >+ + +< < <
8 8 8
+ 
+ 
+ 
+ 
+r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )
Latin1Testc                     dD ]]\  }}|                      ||          5  |                     |                    d          |           d d d            n# 1 swxY w Y   ^d S )N))r  rr  )u   éÿs   r   rh  latin1r$  r   r   rh  s      r   r?  zLatin1Test.test_encode      
 	B 	BND( 4(;; B B  X!6!6AAAB B B B B B B B B B B B B B B		B 	B   *AA	A	c                     dD ]`\  }}}|                      |||          5  |                     |                    d|          |           d d d            n# 1 swxY w Y   ad S )N))   [€]r   r  )r6  r   s   [??])u	   [€򫳞]r   s   [\u20ac\U000abcde])r6  r   s   [&#8364;&#56448;]r#  r  r1  r$  r  s       r   test_encode_errorszLatin1Test.test_encode_errors  s    .
 	+ 	+)D- 4}'/  1 1 + +  X}!E!E!)+ + ++ + + + + + + + + + + + + + +	+ 	+r&  c                     |                      t                    5  d                    dd           d d d            d S # 1 swxY w Y   d S )Nu   €r1  r  r(  r  s    r   r)  z,Latin1Test.test_encode_surrogateescape_error  s    122 	? 	?!!(,=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?r*  c                     dD ]]\  }}|                      ||          5  |                     |                    d          |           d d d            n# 1 swxY w Y   ^d S )N))rr  r  )r  u   [ÿ]r0  r1  r  r2  s      r   rA  zLatin1Test.test_decode  r3  r4  N)r)   r*   r+   r?  r7  r)  rA  r   r   r   r.  r.    sX        B B B+ + +? ? ?
B B B B Br   r.  c                   &    e Zd Zd Zd Zd Zd ZdS )StreamRecoderTestc                 R   t          j                    }t          j        d          }t          j        ||j        |j        t          j        j	        t          j        j
                  }|                    ddg           |                     |                                d           d S )Nr  r     bs   ab)r   r   rP   r   r  rc   rR   r  r  r  r  
writelinesr   r   )r   bior  srs       r   test_writelinesz!StreamRecoderTest.test_writelines   s    jllg&&!#u|U\"+/">	@\^ ^
tTl###/////r   c                    t          j                    }t          j        d          }t          j        ||j        |j        t          j        j	        t          j        j
                  }d}|                    |                    d                     |                     |                                |                    d                     d S )Nr1  u   àñéry  )r   r   rP   r   r  rc   rR   r  rZ  r  r  rD   r   r   )r   r?  r  r@  r  s        r   
test_writezStreamRecoderTest.test_write  s    jllh''!#u|U\"+/">	@\^ ^ 
X&&'''W)=)=>>>>>r   c                 :   t          j        d                    d                    }t          j        |dd          }|                     |                                d           |                    d           |                     |                                d           |                     |                                d           |                     |                                d           |                     |                                d           d S )	Nzline1
line2
line3
r[  ry  s   line1
r   s   line2
s   line3
r   )r   r   rc   rP   r  r   r   r  r   r?  r@  s      r   test_seeking_readz#StreamRecoderTest.test_seeking_read  s    j077DDEEWk::
333




333
333
333,,,,,r   c                 >   t          j        d                    d                    }t          j        |dd          }|                    d           |                    d           |                     |                                d           |                    d           |                     |                                d           |                     |                                d	           |                     |                                d           d S )
Nz
123456789
r[  ry  r    s   
abc
s   789
r   s   1
s   abc
)	r   r   rc   rP   r  r  rD   r   r   rE  s      r   test_seeking_writez$StreamRecoderTest.test_seeking_write  s    j--k::;;Wk:: 	



111



///11111111r   N)r)   r*   r+   rA  rC  rF  rH  r   r   r   r;  r;    sP        0 0 0	? 	? 	?	- 	- 	-2 2 2 2 2r   r;  zneed _testinternalcapi modulec                       e Zd ZdZ ej                    ZdZdZdZ	ddZ
d Zd Zd	 Zd
 Zd ZddZd Zd Zd Zd Zd ZdS )LocaleCodecTestzD
    Test indirectly _Py_DecodeUTF8Ex() and _Py_EncodeUTF8Ex().
    )r  u   ulatin1:§éu   u255:ÿu   UCS:é€􏿿u   surrogates:)s
   blatin1:s   b255:u   rj   c                 .    t          j        |d|          S rF   )_testinternalcapiEncodeLocaleEx)r   r  rD  s      r   rc   zLocaleCodecTest.encode:  s     /a@@@r   c           	         | j         D ]}|                     |          5  	 |                    | j        |          }|                     ||          }|                     ||           n# t
          $ ru |                     t                    5 }|                     ||           d d d            n# 1 swxY w Y   t          |j	                  }| 
                    |d           Y nw xY wd d d            n# 1 swxY w Y   d S )N)r  z!encode error: pos=[0-9]+, reason=)STRINGSr  rc   ENCODINGr   r   r   rs  rT  rU  assertRegex)r   rD  r  rh  r}   rW  errmsgs          r   check_encode_stringsz$LocaleCodecTest.check_encode_strings=  s   L 	8 	8D4(( 
8 
8	8#{{4=&AAH #kk$77G$$Wh7777 * S S S**<88 2BD&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ..F$$V-QRRRRR	S
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8	8 	8sW   C8A*-C8*$C)B1	%C)1B55C)8B59-C)&C8(C))C88C<	?C<	c                 0    |                      d           d S Nrj   rS  r  s    r   test_encode_strictz"LocaleCodecTest.test_encode_strictK      !!(+++++r   c                 0    |                      d           d S Nr  rV  r  s    r   test_encode_surrogateescapez+LocaleCodecTest.test_encode_surrogateescapeN      !!"344444r   c                     	 |                      dd           nI# t          $ r<}t          |          dk    r|                     | j        d           n Y d }~nd }~ww xY w|                     d           d S )Nrh   r   unsupported error handlerz4 encoder doesn't support surrogatepass error handler)rc   rR  rT  r  rP  rS  r   r  s     r   test_encode_surrogatepassz)LocaleCodecTest.test_encode_surrogatepassQ  s    	KKO,,,, 	 	 	3xx666 = = = > > > > > > > > >	 	!!/22222    
A2AAc                     |                      t                    5 }|                     dd           d d d            n# 1 swxY w Y   |                     t	          |j                  d           d S )Nrh   r   r^  )r   rR  rc   r   rT  rU  r   rW  s     r   %test_encode_unsupported_error_handlerz5LocaleCodecTest.test_encode_unsupported_error_handler]  s    z** 	0bKK.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0R\**,GHHHHH   >AAc                 .    t          j        |d|          S rF   )rL  DecodeLocaleEx)r   r}   rD  s      r   rR   zLocaleCodecTest.decodeb  s     /FCCCr   c           	         | j         dk    }|rd}nd}t          | j                  }| j        D ]}	 |                    | j         |          }||vr|                    |           n# t          $ r d }Y nw xY w|r6|                    | j         d          }||k    r|                    |           |D ]}|                     |          5  	 |                    | j         |          }|                     ||          }	| 	                    |	|           n# t          $ r |                     t                    5 }
|                     ||           d d d            n# 1 swxY w Y   t          |
j                  }|                     |                    d          |           Y nw xY wd d d            n# 1 swxY w Y   d S )Nry  r  rj   r   )r}   zdecode error: )rP  r  BYTES_STRINGSrO  rc   r   r   r  rR   r   r   r   rs  rT  rU  rW   
startswith)r   rD  is_utf8encode_errorsstringsr  r}   encoded2rh  r  rW  rR  s               r   check_decode_stringsz$LocaleCodecTest.check_decode_stringse  sz   =G+ 	%-MM$Mt)**L 	- 	-D++dm]CC'))NN7+++%     -;;t}oFFw&&NN8,,, 	8 	8Gg.. 
8 
8	8&~~dmVDDH #kk'6::G$$Wh7777 * Q Q Q**<88 5BGV4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 ..FOOF$5$56F$G$GPPPPP	Q
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8	8 	8sl   4A&&A54A5F7D)-F7$F(:E	F(E!!F($E!%A F(%F7'F((F77F;	>F;	c                 0    |                      d           d S rU  ro  r  s    r   test_decode_strictz"LocaleCodecTest.test_decode_strict  rX  r   c                 0    |                      d           d S rZ  rq  r  s    r   test_decode_surrogateescapez+LocaleCodecTest.test_decode_surrogateescape  r\  r   c                     	 |                      dd           nI# t          $ r<}t          |          dk    r|                     | j        d           n Y d }~nd }~ww xY w|                     d           d S )Nr   r   r^  z4 decoder doesn't support surrogatepass error handler)rR   rR  rT  r  rP  ro  r_  s     r   test_decode_surrogatepassz)LocaleCodecTest.test_decode_surrogatepass  s    	KK_---- 	 	 	3xx666 = = = > > > > > > > > >	 	!!/22222ra  c                     |                      t                    5 }|                     dd           d d d            n# 1 swxY w Y   |                     t	          |j                  d           d S )Nr   r   r^  )r   rR  rR   r   rT  rU  rc  s     r   %test_decode_unsupported_error_handlerz5LocaleCodecTest.test_decode_unsupported_error_handler  s    z** 	1bKK/000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1R\**,GHHHHHre  Nri   )r)   r*   r+   rJ   r  getfilesystemencodingrP  rO  ri  
SURROGATESrc   rS  rW  r[  r`  rd  rR   ro  rr  rt  rv  rx  r   r   r   rJ  rJ  -  s         )s(**H*G 8MJA A A A8 8 8, , ,5 5 5
3 
3 
3I I I
D D D D 8  8  8D, , ,5 5 5
3 
3 
3I I I I Ir   rJ  c                   *    e Zd ZdZd Zd Zd Zd ZdS )	Rot13Testz"Test the educational ROT-13 codec.c                 \    t          j        dd          }|                     |d           d S )NzCaesar liked ciphersrot-13zPnrfne yvxrq pvcuref)rP   rc   r   )r   
ciphertexts     r   r?  zRot13Test.test_encode  s1    ]#98DD
%;<<<<<r   c                 \    t          j        dd          }|                     |d           d S )NzRg gh, Oehgr?r~  zEt tu, Brute?)rP   rR   r   )r   	plaintexts     r   rA  zRot13Test.test_decode  s/    M/8<<	O44444r   c                      t          j        d                      }|                    d          }|                     |d           d S )Nr~  zABBA nag Cheryl BakerzNOON ant Purely Onxre)rP   rb   rc   r   )r   r  r  s      r   r  z!Rot13Test.test_incremental_encode  sI    8&.x88::^^$;<<
%<=====r   c                      t          j        d                      }|                    d          }|                     |d           d S )Nr~  zterra Ares envy thazgreen Nerf rail gun)rP   rQ   rR   r   )r   r|  r  s      r   r}  z!Rot13Test.test_incremental_decode  sI    8&.x88::NN#899	$9:::::r   N)r)   r*   r+   rJ   r?  rA  r  r}  r   r   r   r|  r|    sV        ,,= = =5 5 5> > >
; ; ; ; ;r   r|  c                       e Zd ZdZd ZdS )Rot13UtilTestzTest the ROT-13 codec via rot13 function,
    i.e. the user has done something like:
    $ echo "Hello World" | python -m encodings.rot_13
    c                    t          j        d          }t          j                    }t          j                            ||           |                    d           |                                }|                     |d           d S )Nz)Gb or, be abg gb or, gung vf gur dhrfgvbar   z)To be, or not to be, that is the question)r   r  r  r+  r*  r  rI   r   )r   infileoutfile
plain_texts       r   test_rot13_funczRot13UtilTest.test_rot13_func  sz    HII+--vw///Q\\^^
7	9 	9 	9 	9 	9r   N)r)   r*   r+   rJ   r  r   r   r   r  r    s-         9 9 9 9 9r   r  c                       e Zd ZdZd Zd ZdS )CodecNameNormalizationTestzTest codec name normalizationc                    ddfd}t          j        |           |                     t           j        |           |                     t          j        d                     |                     t          j        d                     |                     t          j        d                     |                     t          j        d                     |                     t          j        d                     |                     t          j        d	                     |                     t          j        d
                     |                     t          j        d                     |                     t          j        d                     |                     t          j        d                     d S )N)rN   r    rs  r  )NNNNc                     | dk    rS S )Naaa_8r   )rY   FOUND	NOT_FOUNDs    r   r  zFCodecNameNormalizationTest.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)rP   r  rF  r  r   r   )r   r  r  r  s     @@r   test_codecs_lookupz-CodecNameNormalizationTest.test_codecs_lookup  s   ,		! 	! 	! 	! 	! 	! 	((()?;;;g 6 6777g 6 6777i 8 8999i 8 8999.? @ @AAAFM'$:$:;;;FM)$<$<===FM'$:$:;;;FM'$:$:;;;FM/$B$BCCCCCr   c                    t           j        }|                      |d          d           |                      |d          d           |                      |d          d           |                      |d          d           |                      |d          d           |                      |d          d           d S )NrZ  u   utfé€􏿿-8zutf   8zUTF 8UTF_8zutf.8zutf...8)r  normalize_encodingr   )r   	normalizes     r   !test_encodings_normalize_encodingz<CodecNameNormalizationTest.test_encodings_normalize_encoding  s    0	7++W555#>??III9--w777 	7++W5557++W5559--y99999r   N)r)   r*   r+   rJ   r  r  r   r   r   r  r    s;        ''D D D,
: 
: 
: 
: 
:r   r  __main__)UrP   r  r   r  r  r  r  r   testr   test.supportr   r   rx  ImportErrorrL  r3   sizeofc_wcharSIZEOF_WCHAR_Tr   r:   r  r<   rL   rf   TestCaser   r  r0  r8  rZ  rq  rx  r  r  r  r  r  r:  r[   r   r	  reprr6  rW  rS  r_  r  r  r  rk  r  r   rm  r`  r  r  r  r  r  r  r  r  r3  r_  r-  r/  r1  rl  rn  rp  rj  platformr  r  r.  r;  r  rJ  r|  r  r  r)   mainr   r   r   <module>r     s        				  



                  " " " " " " ( ( ( ( ( (   III   3MMM
 #V]6>22NN	    FNNN  $ $ $(    F   *- - - - - - - -DQ= Q= Q= Q= Q=& Q= Q= Q=h
]> ]> ]> ]> ]>(+ ]> ]> ]>@+> +> +> +> +>(H- +> +> +>\+> +> +> +> +>(H- +> +> +>\`- `- `- `- `-(+ `- `- `-F*' *' *' *' *'(H- *' *' *'X*' *' *' *' *'(H- *' *' *'X[H [H [H [H [Hx* [H [H [H|CK CK CK CK CKx* CK CK CKL> > > > >(# > > >C C C C CX& C C C S- S- S- S- S-(H- S- S- S-l<H <H <H <H <Hx( <H <H <H@e e e N 
  A
s1vvqyydd1ggP P P P P8$ P P PBV V VrP P P P P8$ P P P(Z6 Z6 Z6 Z6 Z6H% Z6 Z6 Z6z~) ~) ~) ~) ~)x( ~) ~) ~)B@ @ @ @ @x( @ @ @
0 
0 
0 
0 
0h' 
0 
0 
0f f f P 76=!! )  (((
76<   (  '''   
_R _R _R _R _Rx(*A _R _R _RDu
 u
 u
 u
 u
(# u
 u
 u
p1 1 1 1 18$ 1 1 1&L &L &L &L &L! &L &L &LRC
 C
 C
 C
 C
("3 C
 C
 C
JP
 P
 P
 P
 P
8X%6 P
 P
 P
fO O O O Ox( O O O(2 2 2 2 2(+ 2 2 2D65 65 65 65 65h 65 65 65r    y)EEEi  6KKK $$\222',fol##	    DDD
-JJJ $$[111&+Wk""	  	 	 	D	CF CF CF CF CF* CF CF CF\ ( ( (S3 S3 S3 S3 S3H- S3 S3 S3n S\W,9; ;XD XD XD XD XD8$ XD XD; ;XDv$+ $+ $+ $+ $+! $+ $+ $+N"B "B "B "B "B" "B "B "BJ+2 +2 +2 +2 +2) +2 +2 +2\ "d*,KLLnI nI nI nI nIh' nI nI MLnIb; ; ; ; ;! ; ; ;*9 9 9 9 9H% 9 9 9 ": ": ": ": ":!2 ": ": ":J zHMOOOOO sW   ; AA	A AAA6 6	BBM/ /M98M9=N N%$N%