Your IP : 18.119.255.183


Current Path : /opt/alt/python35/lib64/python3.5/encodings/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/encodings/__pycache__/punycode.cpython-35.opt-1.pyc



��Yf��@s;dZddlZdd�Zdd�Zdd�Zd	d
�Zdd�Zd
Zdd�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZGdd�dej�ZGdd�dej�ZGd d!�d!ej�ZGd"d#�d#eej�ZGd$d%�d%eej�Zd&d'�ZdS)(uY Codec for the Punicode encoding, as specified in RFC 3492

Written by Martin v. Löwis.
�NcCstt�}t�}xC|D];}t|�dkrG|jt|��q|j|�qWt|�}t|�|fS)z 3.1 Basic code point segregation�)�	bytearray�set�ord�append�add�sorted�bytes)�str�base�extended�c�r�7/opt/alt/python35/lib64/python3.5/encodings/punycode.py�	segregate
s		
rcCs7d}x*|D]"}t|�|kr
|d7}q
W|S)z@Return the length of str, considering only characters below max.r�)r)r
�max�resr
rrr�
selective_lens

rcCskt|�}xX|d7}||kr)dS||}||krM|d|fS||kr|d7}qWdS)aReturn a pair (index, pos), indicating the next occurrence of
    char in str. index is the position of the character considering
    only ordinals up to and including char, and pos is the position in
    the full string. index/pos is the starting position in the full
    string.rN���r)rr)�len)r
�char�index�pos�lr
rrr�selective_finds

rcCs�d}g}d}x�|D]�}d}}t|�}t||�}	|	d||}
xWt||||�\}}|dkr�P|
||7}
|j|
d�|}d}
qYW|}qW|S)z3.2 Insertion unsort codingrrrrrr)rrrr)r
rZoldchar�resultZoldindexr
rrrZcurlen�deltarrr�insertion_unsort0s$



rcCs6d|d|}|dkr"dS|dkr2dS|S)N�$r�r)�j�biasrrrr�TFsr#s$abcdefghijklmnopqrstuvwxyz0123456789cCs�t�}d}xwt||�}||krH|jt|�t|�S|jt|||d|�||d|}|d7}qWdS)z(3.3 Generalized variable-length integersrrrN)rr#r�digitsr	)�Nr"rr!�trrr�generate_generalized_integerNs	
!r'cCsr|r|d}n
|d}|||7}d}x$|dkrW|d}|d7}q4W|d||d}|S)Ni��ri��#r�&r)r�first�numcharsZ	divisionsr"rrr�adapt[s


r-cCsrt�}d}xVt|�D]H\}}t||�}|j|�t||dk||d�}qWt|�S)z3.4 Bias adaptation�Hrr)r�	enumerater'�extendr-r	)Zbaselen�deltasrr"Zpointsr�srrr�generate_integersjs	
$r3cCsLt|�\}}t||�}tt|�|�}|rH|d|S|S)N�-)rrr3r)�textrrr1rrr�punycode_encodeusr6c
Cs@d}d}d}x'yt||�}Wn8tk
rc|dkrQtd��|ddfSYnX|d7}d|ko�dknr�|d}nVd|ko�d	knr�|d
}n-|dkr�td||��n
|dfSt||�}	|||7}||	kr ||fS|d|	}|d7}qWdS)
z(3.3 Generalized variable-length integersrr�strictzincomplete punicode stringN�A�Z�0�9�z Invalid extended code point '%s'r)r�
IndexError�UnicodeErrorr#)
r�extposr"�errorsr�wr!rZdigitr&rrr�decode_generalized_numbers2





rBc	Csd}d
}d}d}x�|t|�krt||||�\}}|dkrX|S||d7}||t|�d7}|dkr�|dkr�td|��td	�}|t|�d}|d|�t|�||d�}t||dkt|��}|}qW|S)z3.2 Insertion unsort codingrrr.rNi��r7zInvalid character U+%x�?r)rrBr>r�chrr-)	rrr@rrr"r?Znewposrrrr�insertion_sort�s(	(
rEcCs�t|t�r|jd�}t|t�r9t|�}|jd�}|dkrrd}t|d�j�}n?t|d|�d|�}t||dd�d�j�}t|||�S)N�asciir4r�r)�
isinstancer
�encode�
memoryviewr	�rfind�upperrE)r5r@rrrrrr�punycode_decode�s#rMc@s.eZdZddd�Zddd�ZdS)�Codecr7cCst|�}|t|�fS)N)r6r)�self�inputr@rrrrrI�szCodec.encodecCs;|dkrtd|��t||�}|t|�fS)Nr7�replace�ignorezUnsupported error handling )r7rQrR)r>rMr)rOrPr@rrrr�decode�szCodec.decodeN)�__name__�
__module__�__qualname__rIrSrrrrrN�srNc@seZdZddd�ZdS)�IncrementalEncoderFcCs
t|�S)N)r6)rOrP�finalrrrrI�szIncrementalEncoder.encodeN)rTrUrVrIrrrrrW�srWc@seZdZddd�ZdS)�IncrementalDecoderFcCs2|jdkr"td|j��t||j�S)Nr7rQrRzUnsupported error handling )r7rQrR)r@r>rM)rOrPrXrrrrS�szIncrementalDecoder.decodeN)rTrUrVrSrrrrrY�srYc@seZdZdS)�StreamWriterN)rTrUrVrrrrrZ�srZc@seZdZdS)�StreamReaderN)rTrUrVrrrrr[�sr[cCs@tjdddt�jdt�jdtdtdtdt�S)	N�nameZpunycoderIrS�incrementalencoder�incrementaldecoder�streamwriter�streamreader)	�codecs�	CodecInforNrIrSrWrYrZr[rrrr�getregentry�s	rc)�__doc__rarrrrr#r$r'r-r3r6rBrErMrNrWrYrZr[rcrrrr�<module>s(



?>