a *eg@srdZddlmZddlmZddlmZmZmZer@ddl m Z GdddZ Gdd d e Z Gd 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_CHECKINGMutableMapping)datetimec@sPeZdZdddddZddddd d d d Zdd dd dZd dddZdS) BaseCachestr bytes | NonekeyreturncCs tdSNNotImplementedErrorselfr rH/usr/local/lib/python3.9/site-packages/pip/_vendor/cachecontrol/cache.pygetsz BaseCache.getNbytesint | datetime | NoneNoner valueexpiresr cCs tdSrrrr rrrrrsetsz BaseCache.setcCs tdSrrrrrrdeleteszBaseCache.delete)r cCsdSrr)rrrrcloseszBaseCache.close)N)__name__ __module__ __qualname__rrrrrrrrrs rc@sTeZdZddddddZddd d d Zddd d ddddZddd ddZdS) DictCacheNz!MutableMapping[str, bytes] | Noner) init_dictr cCst|_|pi|_dSr)rlockdata)rr$rrr__init__#szDictCache.__init__r r r cCs|j|dSr)r&rrrrrr'sz DictCache.getrrrcCs:|j |j||iWdn1s,0YdSr)r%r&updaterrrrr*sz DictCache.setcCs@|j&||jvr|j|Wdn1s20YdSr)r%r&poprrrrr0s zDictCache.delete)N)N)r r!r"r'rrrrrrrr#"s r#c@s2eZdZdZddddddZddd d d Zd 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 rr)r bodyr cCs tdSrr)rr r+rrrset_bodyCszSeparateBodyBaseCache.set_bodyzIO[bytes] | Noner cCs tdS)z6 Return the body as file-like object. Nrrrrrget_bodyFszSeparateBodyBaseCache.get_bodyN)r r!r"__doc__r,r-rrrrr*6s r*N) r. __future__r threadingrtypingrrrrrr#r*rrrrs