3 $f#@sddlZddlZddlZddlmZejdZdZdZddZ dd Z d d Z Gd d d ej Z Gdddej ZGdddejZGddde ejZGddde ejZddZdS)N) ucd_3_2_0u [.。.。]sxn--zxn--cCs g}x(|D] }tj|rq |jtj|q Wdj|}tjd|}xr|D]j}tj|stj|stj |stj |stj |stj |stj |stj|stj|rJtd|qJWdd|D}t|rtdd|Drtd|d  p|d  rtd |S) NZNFKCzInvalid character %rcSsg|]}tj|qS) stringprepZ in_table_d1).0xrr/usr/lib64/python3.6/idna.py )sznameprep..css|]}tj|VqdS)N)rZ in_table_d2)rrrrr 1sznameprep..zViolation of BIDI requirement 2rzViolation of BIDI requirement 3)rZ in_table_b1appendZ map_table_b2join unicodedataZ normalizeZ in_table_c12Z in_table_c22Z in_table_c3Z in_table_c4Z in_table_c5Z in_table_c6Z in_table_c7Z in_table_c8Z in_table_c9 UnicodeErrorany)labelZnewlabelcZRandALrrrnamepreps2               rcCsy|jd}Wntk r"Yn*Xdt|ko:dknrD|Stdt|}y|jd}Wntk rvYn*Xdt|kodknr|Std|jtrtd|jd}t|}dt|kodknr|StddS)Nasciir@zlabel empty or too longzLabel starts with ACE prefixpunycode)encoderlenr startswith sace_prefix ace_prefix)rrrrToASCII<s,  rcCst|trd}n,y|jd}d}Wntk r:d}YnX|stt|}y|jd}Wntk rrtdYnX|jtst|dS|ttd}|j d}t |}t|dj t|dkrtd|||S)NTrFzInvalid character in IDN labelrzIDNA does not round-trip) isinstancebytesrrrrrstrrdecoderlower)rZ pure_asciiZlabel1resultZlabel2rrr ToUnicodegs*       r$c@s eZdZdddZdddZdS) Codecstrictc Cs|dkrtd||sd Sy|jd}Wntk r>YnjX|jd}x8|dd D](}dt|kordknsXtd qXWt|d dkrtd |t|fSt}tj|}|r|d rd}|d=nd}x(|D] }|r|jd|jt|qWt ||t|fS)Nr&zunsupported error handling rr.r rzlabel empty or too longzlabel too long)r'rr r r r ) rrUnicodeEncodeErrorsplitr bytearraydotsextendrr)selfinputerrorsr#labelsr trailing_dotrrrrs4       z Codec.encodec Cs|dkrtd||sd St|ts.t|}t|kr^y|jdt|fStk r\YnX|jd}|rt|d dkrd}|d =nd}g}x|D]}|jt |qWdj ||t|fS) Nr&zUnsupported error handling rrrr(r .)rrr r ) rrrrr!rUnicodeDecodeErrorr*r r$r)r.r/r0r1r2r#rrrrr!s(    z Codec.decodeN)r&)r&)__name__ __module__ __qualname__rr!rrrrr%s %r%c@seZdZddZdS)IncrementalEncoderc Cs|dkrtd||sdStj|}d}|rT|dsBd}|d =n|sT|d =|rTd}t}d}x<|D]4}|r~|jd|d7}|jt||t|7}qdW||7}|t|7}t||fS) Nr&zunsupported error handling r'rr r()r'rr r r )rr,r*r+r-rrr) r.r/r0finalr1r2r#sizerrrr_buffer_encodes2     z!IncrementalEncoder._buffer_encodeN)r5r6r7r;rrrrr8sr8c@seZdZddZdS)IncrementalDecoderc Cs|dkrtd||sdSt|tr2tj|}nt|d}|jd}d}|rt|d sbd}|d =n|st|d =|rtd}g}d}x2|D]*}|jt||r|d7}|t|7}qWdj||}|t|7}||fS) Nr&zUnsupported error handling rrrr3r )rrr r r ) rrr r,r*r r$rr) r.r/r0r9r1r2r#r:rrrr_buffer_decodes6       z!IncrementalDecoder._buffer_decodeN)r5r6r7r=rrrrr<sr<c@s eZdZdS) StreamWriterN)r5r6r7rrrrr>"sr>c@s eZdZdS) StreamReaderN)r5r6r7rrrrr?%sr?c Cs tjdtjtjttttdS)NZidna)namerr!incrementalencoderincrementaldecoder streamwriter streamreader) codecs CodecInfor%rr!r8r<r>r?rrrr getregentry*srG)rrerErrcompiler,rrrrr$r%BufferedIncrementalEncoderr8BufferedIncrementalDecoderr<r>r?rGrrrrs  .+)H#'