U
    cUh                     @  sr   d Z ddlmZ ddlmZ ddlmZmZmZ er@ddl	m	Z	 G dd dZ
G dd	 d	e
ZG d
d de
ZdS )zb
The cache object API for implementing caches. The default is a thread
safe in-memory dictionary.
    )annotations)Lock)IOTYPE_CHECKINGMutableMapping)datetimec                   @  sP   e Zd ZdddddZddddd	d
ddZdd	dddZd	dddZdS )	BaseCachestrbytes | Nonekeyreturnc                 C  s
   t  d S NNotImplementedErrorselfr    r   ^/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/pip/_vendor/cachecontrol/cache.pyget   s    zBaseCache.getNbytesint | datetime | NoneNoner   valueexpiresr   c                 C  s
   t  d S r   r   r   r   r   r   r   r   r   set   s    zBaseCache.setc                 C  s
   t  d S r   r   r   r   r   r   delete   s    zBaseCache.delete)r   c                 C  s   d S r   r   )r   r   r   r   close   s    zBaseCache.close)N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r      s
    r   c                   @  sT   e Zd ZddddddZddd	d
dZddddddddZddd	ddZdS )	DictCacheNz!MutableMapping[str, bytes] | Noner   )	init_dictr   c                 C  s   t  | _|pi | _d S r   )r   lockdata)r   r$   r   r   r   __init__$   s    zDictCache.__init__r	   r
   r   c                 C  s   | j |d S r   )r&   r   r   r   r   r   r   (   s    zDictCache.getr   r   r   c              	   C  s&   | j  | j||i W 5 Q R X d S r   )r%   r&   updater   r   r   r   r   +   s    zDictCache.setc              	   C  s,   | j  || jkr| j| W 5 Q R X d S r   )r%   r&   popr   r   r   r   r   1   s    
zDictCache.delete)N)N)r    r!   r"   r'   r   r   r   r   r   r   r   r#   #   s
    r#   c                   @  s2   e Zd ZdZddddddZddd	d
dZdS )SeparateBodyBaseCacheag  
    In this variant, the body is not stored mixed in with the metadata, but is
    passed in (as a bytes-like object) in a separate call to ``set_body()``.

    That is, the expected interaction pattern is::

        cache.set(key, serialized_metadata)
        cache.set_body(key)

    Similarly, the body should be loaded separately via ``get_body()``.
    r	   r   r   )r   bodyr   c                 C  s
   t  d S r   r   )r   r   r+   r   r   r   set_bodyD   s    zSeparateBodyBaseCache.set_bodyzIO[bytes] | Noner   c                 C  s
   t  dS )z6
        Return the body as file-like object.
        Nr   r   r   r   r   get_bodyG   s    zSeparateBodyBaseCache.get_bodyN)r    r!   r"   __doc__r,   r-   r   r   r   r   r*   7   s   r*   N)r.   
__future__r   	threadingr   typingr   r   r   r   r   r#   r*   r   r   r   r   <module>   s   