U
    ^g*
                     @  s   U d dl mZ d dlmZ d dlmZmZmZ d dlm	Z
 ee ZdZdZi Zded< d	d
dddZefddd	d	dd	dddZdS )    )annotations)Sequence)ascii_lettersdigits	hexdigits)quotez;/?:@&=+$,-_.!~*'()#z	-_.!~*'()zdict[str, list[str]]encode_cachestrzSequence[str])excludereturnc                 C  s   | t krt |  S g }|t | < tdD ]J}t|}|tkrD|| q$|ddt|dd    dd    q$tt| D ]}| | |t| | < q||S )N   %0   )	r   rangechrASCII_LETTERS_AND_DIGITSappendhexupperlenord)r
   cacheich r   1/tmp/pip-unpacked-wheel-avu6tzza/mdurl/_encode.pyget_encode_cache   s    ,r   T)keep_escapedbool)stringr
   r   r   c          	      C  sd  d}t |}t| }d}||k r`t| | }|r|dkr|d |k rtdd | |d |d  D r|| ||d  7 }|d7 }|d7 }q|d	k r||| 7 }|d7 }q|d
krF|dkrF|d
kr4|dkr4|d |k r4t| |d  }|dkr4|dkr4|t| | | |d   7 }|d7 }|d7 }q|d7 }|d7 }q|t| | 7 }|d7 }q|S )N r   %   r   c                 s  s   | ]}|t kV  qd S )N)r   ).0cr   r   r   	<genexpr>;   s     zencode.<locals>.<genexpr>      r   i   i  i  i   z	%EF%BF%BD)r   r   r   allencode_uri_component)	r!   r
   r   resultr   lr   codeZ	next_coder   r   r   encode-   s<    
""
r.   N)
__future__r   collections.abcr   r!   r   r   r   urllib.parser   r*   r   ZENCODE_DEFAULT_CHARSZENCODE_COMPONENT_CHARSr   __annotations__r   r.   r   r   r   r   <module>   s    