Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib/python3.5/site-packages/aioredis/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib/python3.5/site-packages/aioredis/__pycache__/util.cpython-35.pyc



�(Z��@sddlmZmZddlmZe�Zedd�edd�e	dd�e
dd�ed	d�iZd
d�Z
dd
�Zdd�Zdd�Zdd�Zdd�ZGdd�de�ZGdd�d�Zdd�Zdd�Zdd�Zd d!�Zd"S)#�)�urlparse�	parse_qsl�)�loggercCs|S)N�)�valrr�>/opt/alt/python35/lib/python3.5/site-packages/aioredis/util.py�<lambda>sr	cCs|S)Nr)rrrrr	scCs
|jd�S)Nzutf-8)�encode)rrrrr	
scCst|�jd�S)Nzutf-8)�strr
)rrrrr	scCst|�jd�S)Nzutf-8)rr
)rrrrr	scCstt|��jd�S)Nzutf-8)r�lenr
)Zsizedrrr�
_bytes_lensr
cs�t���fdd�}|dt|��xl|D]d}t|�tkr�tt|�|�}|dt|��||�q6tdj|���q6W�S)z�Encodes arguments into redis bulk-strings array.

    Raises TypeError if any of args not of bytearray, bytes, float, int, or str
    type.
    cs�j|d�S)Ns
)�extend)�data)�bufrr�addszencode_command.<locals>.add�*�$zIArgument {!r} expected to be of bytearray, bytes, float, int, or str type)�	bytearrayr
�type�_converters�	TypeError�format)�argsr�argZbargr)rr�encode_commands	

	rcsFt|t�r|j��St|t�rB�fdd�|D�S|S)Ncsg|]}t|���qSr)�decode)�.0�o)�encodingrr�
<listcomp>2s	zdecode.<locals>.<listcomp>)�
isinstance�bytesr�list)�objrr)rrr.s

rc�s%|IdH}|dkr|S|dkS)N�QUEUED�QUEUED�OK�OK)r%r&)r'r(r)�fut�resrrr�wait_ok6sr+c�s(|IdH}|dkr|S|||�S)N�QUEUEDr&)r,r&r)r)�type_�kwargs�resultrrr�wait_convert=sr0c�s:|IdH}|dkr|St|�}tt||��S)N�QUEUEDr&)r1r&)�iter�dict�zip)r)r*�itrrr�wait_make_dictDs
r6c@s(eZdZdd�Zdd�ZdS)�coerced_keys_dictcCs5t|t�s%tt|�|�}tj||�S)N)r!r"rrr3�__getitem__)�self�otherrrrr8Nszcoerced_keys_dict.__getitem__cCs5t|t�s%tt|�|�}tj||�S)N)r!r"rrr3�__contains__)r9r:rrrr;Sszcoerced_keys_dict.__contains__N)�__name__�
__module__�__qualname__r8r;rrrrr7Lsr7c@s:eZdZdZdd�Zdd�Zdd	�Zd
S)�	_ScanIter�_scan�_cur�_retcCs||_d|_g|_dS)N�0)r@rArB)r9�scanrrr�__init__]s		z_ScanIter.__init__cCs|S)Nr)r9rrr�	__aiter__bsz_ScanIter.__aiter__c�stx:|jr<|jr<|j|j�IdH\|_|_qW|jrZ|jrZt�n|jjd�}|SdS)Nr)rBrAr@�StopAsyncIteration�pop)r9�retrrr�	__anext__es'	z_ScanIter.__anext__N)r@rArB)r<r=r>�	__slots__rErFrJrrrrr?Ysr?cGsW|j�rFtjd||�|j�sStd|||f��n
|j|�dS)Nz#Waiter future is already done %r %rz waiting future is in wrong state)�doner�debug�	cancelled�AssertionErrorZ
set_result)r)r/�inforrr�_set_resultos
rQcCsQ|j�r@tjd|�|j�sMtd||f��n
|j|�dS)Nz Waiter future is already done %rz waiting future is in wrong state)rLrrMrNrOZ
set_exception)r)�	exceptionrrr�_set_exceptionxs
rScCs�t|�}|jdks0td|jf��|jdkrI|ifSi}xit|jdd�D]R\}}||ks�td||f��|s�td	||f��|||<qeW|jdkr |js�td
|f��|jstd|jf��|jt|d|j�fS|j	p,dt
|jp;d
�f}|j}|jd�ro|jdd�}t|||j�}|jdkr�d|d<||fS)afParse Redis connection URI.

    Parse according to IANA specs:
    * https://www.iana.org/assignments/uri-schemes/prov/redis
    * https://www.iana.org/assignments/uri-schemes/prov/rediss

    Also more rules applied:

    * empty scheme is treated as unix socket path no further parsing is done.

    * 'unix://' scheme is treated as unix socket path and parsed.

    * Multiple query parameter values and blank values are considered error.

    * DB number specified as path and as query parameter is considered error.

    * Password specified in userinfo and as query parameter is
      considered error.
    ��redis�rediss�unixzUnsupported URI scheme�keep_blank_valuesTz#Multiple parameters are not allowedz Empty parameters are not allowedzEmpty path is not allowedz*Netlocation is not allowed for unix schemeZ	localhosti��/rN�ssl)rTrUrVrW)
r�schemerOr�query�path�netloc�_parse_uri_options�password�hostname�int�port�
startswith)�url�rr\�p�v�addressr]�optionsrrr�	parse_url�s.
"!
$	
rkcCs_dd�}i}||�}||jd��}|dks`|dks`td||f��|dk	ry||d<n|dk	r�||d<|jd�}|s�|s�td��|r�||d<n|r�||d<d|kr�|d|d<d|kr;|dd
ks'td|df��|dd	k|d<d|kr[t|d�|d<|S)NcSs`|s
dS|j�s(td|f��|dksV|jd�sVtd|f��t|�S)NzInvalid decimal integer�0z'Expected integer without leading zeroes)�	isdecimalrOrdrb)rrrr�parse_db_num�sz(_parse_uri_options.<locals>.parse_db_numZdbz,Single DB value expected, got path and queryr`z@Single password value is expected, got in net location and queryrrZ�true�falsez1Expected 'ssl' param to be 'true' or 'false' only�timeout)rorp)�getrO�float)�paramsr]r`rnrjZdb1Zdb2Z	password2rrrr_�s6

	

r_N)�urllib.parserr�logr�objectZ_NOTSETr"rrrbrsrr
rrr+r0r6r3r7r?rQrSrkr_rrrr�<module>s&	
		0