o
    svXjB  ã                   @   sj  d Z ddlZddlZddlZdd„ Zdd„ Zdd„ Zejd d	k s/ejd d	kr@ejd
 dk r@ddlZdd„ Z	dd„ Z
dd„ Zndd„ Z
dd„ Zejd d	k r‡ddlZzddlmZ W n eyl   G dd„ deƒZY nw dZdd„ Zee
ƒZ
eeƒZeeƒZeeƒZeeƒZejd d	k rÖddlmZ ddlmZmZ ddlmZmZ ddlmZ ddlmZ dd „ Zd!d"„ Z d#d$„ Z!d%d&„ Z"d'd(„ Z#d)d*„ Z$e%Z%e&Z&e'Z'e(Z(e)Z)ej*Z+n<dd+l,mZmZmZ dd,lmZ ddl-mZ d-d"„ Z d.d$„ Z!d/d&„ Z"d0d(„ Z#d1d „ Ze$Z$e.Z%e/Ze0Ze1Z&e2Z'e2Z(e3Z)e+Z+zdd2l-m4Z4m5Z5m6Z6 W dS  e�y4   dd2lm4Z4m5Z5m6Z6 Y dS w )3z5Internal module for Python 2 backwards compatibility.é    Nc                 O   ó   | j |i |¤ŽS ©N)Úsendall©ÚsockÚargsÚkwargs© r	   úJ/var/www/html/myproject/venv/lib/python3.10/site-packages/redis/_compat.pyr      ó   r   c                 O   r   r   )Úshutdownr   r	   r	   r
   r      r   r   c                 O   s   | j |g|¢R i |¤ŽS r   )Úwrap_socket)Úcontextr   r   r   r	   r	   r
   Ússl_wrap_socket   s   r   é   é   é   c           	   
   O   sæ   d\}}d}z|   ¡ }W n	 ty   Y nw |rt ¡ | }zK	 |r:|r:t ¡ }||kr3t tjd¡‚|  || ¡ zd}||i |¤ŽW W |rM|  |¡ S S  tjyi } z|jd tj	krdW Y d }~q‚ d }~ww |rr|  |¡ w w )N)Ng        FTz	timed outr   )
Ú
gettimeoutÚAttributeErrorÚtimeÚsocketÚerrorÚerrnoÚEWOULDBLOCKÚ
settimeoutr   ÚEINTR)	ÚsÚfuncr   r   ÚtimeoutÚdeadlineÚ	attemptedÚnowÚer	   r	   r
   Ú_retryable_call   s>   ÿÿù€ýÿr#   c                 O   ó   t | | jg|¢R i |¤ŽS r   )r#   Úrecvr   r	   r	   r
   r%   @   ó   r%   c                 O   r$   r   )r#   Ú	recv_intor   r	   r	   r
   r'   C   r&   r'   c                 O   r   r   )r%   r   r	   r	   r
   r%   G   r   c                 O   r   r   )r'   r   r	   r	   r
   r'   J   r   )ÚSSLErrorc                   @   s   e Zd ZdZdS )Ú	_SSLErrorz4A replacement in case ssl.SSLError is not available.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r	   r	   r
   r)   V   s    r)   )z!The handshake operation timed outzThe read operation timed outzThe write operation timed outc                    s   t  ˆ ¡‡ fdd„ƒ}|S )Nc               
      sn   zˆ| i |¤ŽW S  t y6 } z"t|jƒdkrt|jd ƒpd‰ t‡ fdd„tD ƒƒr1tj|jŽ ‚‚ d }~ww )Nr   r   Ú c                 3   s   � | ]}|ˆ v V  qd S r   r	   )Ú.0Úx©Úmessager	   r
   Ú	<genexpr>g   s   € z7_handle_ssl_timeout.<locals>.wrapper.<locals>.<genexpr>)r)   Úlenr   ÚunicodeÚanyÚ_EXPECTED_SSL_TIMEOUT_MESSAGESr   r   )r   r   r"   ©r   r1   r
   Úwrappera   s    €ûz$_handle_ssl_timeout.<locals>.wrapper)Ú	functoolsÚwraps)r   r9   r	   r8   r
   Ú_handle_ssl_timeout`   s   	r<   )Úunquote)Úparse_qsÚurlparse)ÚimapÚizip)Úletters)ÚQueuec                 G   s<   z	t | g|¢R Ž W S  ty   t| ƒ d¡}t |ƒ Y S w )z* return the unicode representation of obj Ústring_escape)r5   ÚUnicodeDecodeErrorÚstrÚencode)Úobjr   Ú
ascii_textr	   r	   r
   Úsafe_unicode{   s   ýrJ   c                 C   ó   |   ¡ S r   )Ú	iteritems©r0   r	   r	   r
   rL   „   ó   rL   c                 C   rK   r   )ÚiterkeysrM   r	   r	   r
   rO   ‡   rN   rO   c                 C   rK   r   )Ú
itervaluesrM   r	   r	   r
   rP   Š   rN   rP   c                 C   ó   t | tƒr| S |  dd¡S ©Nzutf-8Úreplace)Ú
isinstancerF   rG   rM   r	   r	   r
   Ú	nativestr�   r&   rU   c                 C   rK   r   )ÚnextrM   r	   r	   r
   rV   �   rN   rV   )r>   r=   r?   )Úascii_lettersc                 C   ó   t |  ¡ ƒS r   )ÚiterÚitemsrM   r	   r	   r
   rL   ž   ó   c                 C   rX   r   )rY   ÚkeysrM   r	   r	   r
   rO   ¡   r[   c                 C   rX   r   )rY   ÚvaluesrM   r	   r	   r
   rP   ¤   r[   c                 C   rQ   rR   )rT   rF   ÚdecoderM   r	   r	   r
   rU   §   r&   c                 C   s   t | tƒr|  dd¡} t| ƒS rR   )rT   Úbytesr^   rF   )Úvaluer	   r	   r
   rJ   ª   s   
)Ú	LifoQueueÚEmptyÚFull)7r-   r   r   Úsysr   r   r   Úversion_infor   r#   r%   r'   r:   Ússlr(   r)   ÚImportErrorÚ	Exceptionr7   r<   Úurllibr=   r?   r>   Ú	itertoolsr@   rA   ÚstringrB   rW   rC   rJ   rL   rO   rP   rU   rV   ÚunichrÚxrangeÚ
basestringr5   Úlongr   ÚBlockingIOErrorÚurllib.parseÚqueueÚchrÚmapÚzipÚrangerF   Úintra   rb   rc   r	   r	   r	   r
   Ú<module>   sŠ    %
ÿ	ÿ