a
    {3e                     @   s   d dl Z d dlZd dlmZmZmZ d dlmZmZ e	dZ
dd edD ZdZd	Zed
 Zee Zee d Zee ZedZedZe dZG dd dZG dd dZdS )    N)ascii_lettersascii_lowercasedigits)Optionalcastasciic                 C   s   h | ]}d |d dqS )%02Xr   )encode).0i r   C/home/pi/bot/my_env/lib/python3.9/site-packages/yarl/_quoting_py.py	<setcomp>       r      z:/?#[]@z!$'()*,+&=;z-._~s   [A-Z0-9][A-Z0-9]z[A-Fa-f0-9][A-Fa-f0-9]zutf-8c                   @   sF   e Zd ZdddddeeeeddddZee ee d	d
dZdS )_Quoter FT)safe	protectedqsrequoteN)r   r   r   r   returnc                C   s   || _ || _|| _|| _d S )N)_safe
_protected_qs_requote)selfr   r   r   r   r   r   r   __init__   s    z_Quoter.__init__valr   c                 C   s|  |d u rd S t |tstd|s&dS tt|jddd}t }t }| j}|t7 }| jsb|d7 }|| j	7 }|d}d}|t
|k r`|| }|d	7 }|r|tv r|d
 }|| t
|dkr|d	d  }	t|	s|d |  |d8 }qzz"tt|d	d  ddd}
W n2 tyL   |d |  |d8 }Y qzY n0 |
| j	v rf|| n$|
|v r|t|
 n
|| |  qzt
|dkrz|t
|krz|d |  |d	8 }qzn@|tdkr
| jr
|  || |t
|krz|d qz| jr0|tdkr0|td qz||v rF|| qz|d|dd qz|d}||krx|S |S )NArgument should be strr   utf8ignore)errorsr   r   r             s   %25      baser    +r	   )
isinstancestr	TypeErrorr   r
   	bytearrayr   ALLOWEDr   r   lenBASCII_LOWERCASEappend_IS_HEXmatchextendclearchrintdecode
ValueErrorordr   )r   r!   Zbvalretpctr   Zbsafeidxchbufunquotedret2r   r   r   __call__$   s    





"











z_Quoter.__call____name__
__module____qualname__r0   boolr   r   rG   r   r   r   r   r      s   r   c                   @   s>   e Zd ZdddeeddddZee ee dd	d
ZdS )	_Unquoterr   F)unsafer   N)rN   r   r   c                C   s$   || _ || _t | _tdd| _d S )NT)r   )_unsafer   r   _quoter
_qs_quoter)r   rN   r   r   r   r   r   w   s    z_Unquoter.__init__r    c                 C   s  |d u rd S t |tstd|s&dS ttjt }g }d}|t|k r|| }|d7 }|dkr|t|d kr|||d  }t	|rt
t|ddg}|d7 }z||}W n tyB   |d	 t|jd	  }	|||	|d	   |  z||}W n0 ty<   |||d	 |  Y Y q<Y n0 Y n0 |sLq<| jr|d
v r| |}
|
d u rztd||
 q<|| jv r| |}
|
d u rtd||
 q<|| q<|jr|d t|jd	  }	|||	|d   |  |dkr8| jr || jv r,|d q<|d q<|| jv r~|d tt| dd  }|D ]}|| qjq<|| q<|jr||t|j d	 d   d|}||kr|S |S )Nr"   r   r   r&   r   r)   r*   r+   r(   z+=&;zCannot quote Noner.   r-   )r/   r0   r1   r   codecsBufferedIncrementalDecoderutf8_decoderr4   _IS_HEX_STR	fullmatchbytesr<   r=   UnicodeDecodeErrorbufferr6   resetr   rQ   RuntimeErrorrO   rP   hexr?   upperjoin)r   r!   decoderr@   rB   rC   rA   brE   Z	start_pctZto_addhrF   r   r   r   rG   }   s    










z_Unquoter.__call__rH   r   r   r   r   rM   v   s   rM   )rR   restringr   r   r   typingr   r   r
   r5   rangeZBPCT_ALLOWEDZ
GEN_DELIMSZSUB_DELIMS_WITHOUT_QSZ
SUB_DELIMSZRESERVEDZ
UNRESERVEDr3   compiler7   rU   getincrementaldecoderrT   r   rM   r   r   r   r   <module>   s    



`