3
2a# @ s d dl Z d dlZd dlZd dlmZ ejdZdZdZdd Z dd Z
d
d ZG dd
d
ejZG dd dej
ZG dd dejZG dd deejZG dd deejZdd ZdS ) N) ucd_3_2_0u [.。.。]s xn--zxn--c C s g }x(| D ] }t j|rq
|jt j| q
W dj|} tjd| } xr| D ]j}t j|st j|st j |st j
|st j|st j|st j
|st j|st j|rJtd| qJW dd | D }xH|D ]@}|rtdd | D rtd|d s|d rtdqW | S )
N ZNFKCzInvalid character %rc S s g | ]}t j|qS )
stringprepZin_table_d1).0xr r )/opt/alt/python36/lib64/python3.6/idna.py
) s znameprep..c s s | ]}t j|V qd S )N)r Zin_table_d2)r r r r r 2 s znameprep..zViolation of BIDI requirement 2r zViolation of BIDI requirement 3)r Zin_table_b1appendZmap_table_b2joinunicodedata normalizeZin_table_c12Zin_table_c22Zin_table_c3Zin_table_c4Zin_table_c5Zin_table_c6Zin_table_c7Zin_table_c8Zin_table_c9UnicodeErrorany)labelZnewlabelcZRandALr r r nameprep s4
r c C s y| j d} W n tk
r" Y n*X dt| k o:dk n rD| S tdt| } y| j d} W n tk
rv Y n*X dt| k odk n r| S td| jtrtd| j d} t| } dt| k odk n r| S tdd S )Nasciir @ zlabel empty or too longzLabel starts with ACE prefixpunycode)encoder lenr
startswithsace_prefix
ace_prefix)r r r r ToASCII> s,
r c C s t | trd}n,y| jd} d}W n tk
r: d}Y nX |stt| } y| jd} W n tk
rr tdY nX | jtst| dS | ttd }|j d}t
|}t| dj t|dkrtd| ||S )NTr FzInvalid character in IDN labelr zIDNA does not round-trip)
isinstancebytesr r r r r strr decoder lower)r Z
pure_asciiZlabel1resultZlabel2r r r ToUnicodei s*
r% c @ s e Zd ZdddZdddZdS ) Codecstrictc C s |dkrt d| |sdS y|jd}W n tk
r> Y njX |jd}x8|d d D ](}dt| k ordk n sXt d qXW t|d
dkrt d
|t|fS t }tj|}|r|d rd}|d= nd}x(|D ] }|r|jd |jt| qW t || t|fS )Nr' zunsupported error handling r r .r r zlabel empty or too longzlabel too long)r( r r r r r )
r r UnicodeEncodeErrorsplitr bytearraydotsextendr r )selfinputerrorsr$ labelsr trailing_dotr r r r s4
zCodec.encodec C s |dkrt d| |sd S t|ts.t|}t|kr^y|jdt|fS tk
r\ Y nX |jd}|rt|d
dkrd}|d= nd}g }x|D ]}|jt | qW dj
|| t|fS )Nr' zUnsupported error handling r r r r) r .)r r r r )r r r r r" r UnicodeDecodeErrorr+ r
r% r )r/ r0 r1 r2 r3 r$ r r r r r" s(
zCodec.decodeN)r' )r' )__name__
__module____qualname__r r" r r r r r&