U
    be                     @   sN   d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 G dd dZ
dS )zC
Useful testing utilities.

This module is considered public API.

    N)MemcacheClientErrorMemcacheIllegalInputError)LegacyWrappingSerde)check_key_helperc                   @   s   e Zd ZdZd5ddZdd	 Zd
d Zd6ddZdd ZeZ	d7ddZ
d8ddZeZd9ddZd:ddZd;ddZd<ddZd=ddZd>dd Zd?d!d"ZeZd#d$ Zd@d%d&ZdAd'd(ZdBd)d*Zd+d, Zd-d. ZdCd/d0Zd1d2 Zd3d4 ZdS )DMockMemcacheClientz2
    A (partial) in-memory mock for Clients.

    NFTasciic                 C   sV   i | _ |pt||| _|| _|| _|| _|| _|| _|| _t	| _
d | _|| _|| _d S N)	_contentsr   serdeallow_unicode_keysserverconnect_timeouttimeoutno_delay
ignore_excsocketsocket_modulesockencodingtls_context)selfr   r
   
serializerZdeserializerr   r   r   r   r   Zdefault_noreplyr   r   r    r   W/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pymemcache/test/utils.py__init__   s    zMockMemcacheClient.__init__c                 C   s   t || jdS )zChecks key and add key_prefix.)r   )r   r   )r   keyr   r   r   	check_key8   s    zMockMemcacheClient.check_keyc                 C   s   | j   dS )z%Method used to clear/reset mock cacheN)r	   clearr   r   r   r   r   <   s    zMockMemcacheClient.clearc                 C   sT   |  |}|| jkr|S | j| \}}}|rD|t k rD| j|= |S | j|||S r   )r   r	   timer
   Zdeserialize)r   r   defaultexpirevalueflagsr   r   r   get@   s    

zMockMemcacheClient.getc                 C   s,   i }|D ]}|  |}|d k	r|||< q|S r   )r$   )r   keysoutr   r"   r   r   r   get_manyM   s    

zMockMemcacheClient.get_manyr   c              	   C   s   |  |}t|trLt|tsLz|| j}W n ttfk
rJ   tY nX | j	
||\}}|rn|t 7 }|||f| j|< dS NT)r   
isinstancestrbytesencoder   UnicodeEncodeErrorUnicodeDecodeErrorr   r
   	serializer   r	   )r   r   r"   r!   noreplyr#   r   r   r   setW   s    

zMockMemcacheClient.setc           	      C   sD   g }|  D ]*\}}| j|||||d}|s|| q|r@g S |S Nr#   )itemsr1   append)	r   valuesr!   r0   r#   resultr   r"   retr   r   r   set_manyg   s    zMockMemcacheClient.set_manyc                 C   s>   |  |}|d k	}|r*| j||| |d |s2|s6d S || S Nr0   r$   r1   r   r   r"   r0   currentpresentr   r   r   incrq   s
    
zMockMemcacheClient.incrc                 C   s>   |  |}|d k	}|r*| j||| |d |s2|s6d S || S r:   r<   r=   r   r   r   decrx   s
    
zMockMemcacheClient.decrc                 C   s4   |  |}|d k	}|s*| j|||||d |p2| S r2   r<   r   r   r"   r!   r0   r#   r>   r?   r   r   r   add   s
    
zMockMemcacheClient.addc                 C   s(   |  |}| j|d }|d k	}|p&|S r   )r   r	   pop)r   r   r0   r>   r?   r   r   r   delete   s    
zMockMemcacheClient.deletec                 C   s   |D ]}|  || qdS r(   )rE   )r   r%   r0   r   r   r   r   delete_many   s    zMockMemcacheClient.delete_manyc              	   C   sp   |  |}|d k	rlt|trTt|tsTz|| j}W n ttfk
rR   tY nX | j	||| |||d dS Nr3   T
r$   r)   r*   r+   r,   r   r-   r.   r   r1   r   r   r"   r!   r0   r#   r>   r   r   r   prepend   s    

zMockMemcacheClient.prependc              	   C   sp   |  |}|d k	rlt|trTt|tsTz|| j}W n ttfk
rR   tY nX | j	||| |||d dS rG   rH   rI   r   r   r   r5      s    

zMockMemcacheClient.appendc                 G   s&   dddddddddddddddddS )Nr   g      ?Fz	in-memory i  )versionZrusage_userZrusage_systemZhash_is_expandingZslab_reassign_runningZinterZ	evictionsZgrowth_factorZstat_key_prefixumaskZdetail_enabledZcas_enabledZauth_enabled_saslZmaxconns_fastZslab_reassignZslab_automover   )r   _argsr   r   r   stats   s"    zMockMemcacheClient.statsc                 C   s2   |  |}|d k	}|r*| j|||||d |p0|S r2   r<   rB   r   r   r   replace   s
    
zMockMemcacheClient.replacec                 C   s   t dd S )Nz$CAS is not enabled for this instance)r   )r   r   r"   casr!   r0   r#   r   r   r   rQ      s    zMockMemcacheClient.casc                 C   s8   |  |}|d k	}|r(| j||||d |s0|r4dS dS )Nr;   TFr<   )r   r   r!   r0   r>   r?   r   r   r   touch   s
    
zMockMemcacheClient.touchc                 C   s   dS r(   r   )r   memlimitr   r   r   cache_memlimit   s    z!MockMemcacheClient.cache_memlimitc                 C   s   dS )Nr   r   r   r   r   r   rL      s    zMockMemcacheClient.versionc                 C   s   |    |p| ji kS r   )r   r	   )r   delayr0   r   r   r   	flush_all   s    zMockMemcacheClient.flush_allc                 C   s   d S r   r   r   r   r   r   quit   s    zMockMemcacheClient.quitc                 C   s   d S r   r   r   r   r   r   close   s    zMockMemcacheClient.close)NNNNNNFFNTFr   N)N)r   TN)r   TN)F)F)r   TN)T)T)r   TN)r   TN)r   TN)r   FN)r   T)r   T)__name__
__module____qualname____doc__r   r   r   r$   r'   Z	get_multir1   r9   Z	set_multir@   rA   rC   rE   rF   rJ   r5   Zdelete_multirO   rP   rQ   rR   rT   rL   rV   rW   rX   r   r   r   r   r      sP                
!













r   )r\   r   r   Zpymemcache.exceptionsr   r   Zpymemcache.serder   Zpymemcache.client.baser   r   r   r   r   r   <module>   s   