a
    lJh                     @   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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)Unioncastoverloadasciic                 C   s   h | ]}d |d dqS )%02Xr   )encode).0i r   B/var/www/shaz/venv/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                   @   sv   e Zd ZdddddeeeeddddZeeed	d
dZeddd	ddZeedf eedf 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 S r   r   r    r#   r   r   r   __call__$   s    z_Quoter.__call__c                 C   s   d S r   r   r$   r   r   r   r%   &   s    c                 C   sv  |d u rd S t |tstd|s&dS |jddd}t }t }| j}|t7 }| js\|d7 }|| j7 }|d}d}|t	|k rZ|| }|d	7 }|r|t
v r|d
 }|| t	|dkr|d	d  }	t|	s|d |  |d8 }qtz"tt|d	d  ddd}
W n2 tyF   |d |  |d8 }Y qtY n0 |
| jv r`|| n$|
|v rz|t|
 n
|| |  qtt	|dkrt|t	|krt|d |  |d	8 }qtn@|tdkr| jr|  || |t	|krt|d qt| jr*|tdkr*|td qt||v r@|| qt|d|dd qt|d}||krr|S |S )NArgument should be strr   utf8ignore)errorsr   r   r             s   %25      baser	    +r
   )
isinstancestr	TypeErrorr   	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   r%   (   s    





"











	__name__
__module____qualname__r4   boolr!   r   r%   r   r   r   r   r   r      s    r   c                   @   sv   e Zd ZdddddeeeeddddZeeedd	d
Zeddddd
Zeedf eedf ddd
ZdS )	_Unquoterr   F)r(   unsafer   plusN)r(   rQ   r   rR   r   c                C   s0   || _ || _|| _|| _t | _tdd| _d S )NT)r   )_ignore_unsafer   _plusr   _quoter
_qs_quoter)r    r(   rQ   r   rR   r   r   r   r!   z   s    z_Unquoter.__init__r"   c                 C   s   d S r   r   r$   r   r   r   r%      s    z_Unquoter.__call__c                 C   s   d S r   r   r$   r   r   r   r%      s    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 s|| jv r| |}
|
d u rtd||
 q<|| q<|jr|d t|jd	  }	|||	|d   |  |dkrL| js(| jr4|| jv r@|d q<|d q<|| jv r|d tt| dd  }|D ]}|| q~q<|| 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 Noner2   r1   )r3   r4   r5   r   codecsBufferedIncrementalDecoderutf8_decoderr8   _IS_HEX_STR	fullmatchbytesr@   rA   UnicodeDecodeErrorbufferr:   resetr   rW   RuntimeErrorrT   rS   rV   rU   hexrC   upperjoin)r    r#   decoderrD   rF   rG   rE   brI   Z	start_pctZto_addhrJ   r   r   r   r%      s    










rK   r   r   r   r   rP   y   s    rP   )rX   restringr   r   r   typingr   r   r   r   r9   rangeZBPCT_ALLOWEDZ
GEN_DELIMSZSUB_DELIMS_WITHOUT_QSZ
SUB_DELIMSZRESERVEDZ
UNRESERVEDr7   compiler;   r[   getincrementaldecoderrZ   r   rP   r   r   r   r   <module>   s    



c