o �J�h� �@s4ddlZddlmZddlmZGdd�de�ZdS)�N)�MutableMapping)� lru_cachec@s`eZdZdZ   ddd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dd�Z dd�Z dd�Z dS)�DirCachea� Caching of directory listings, in a structure like:: {"path0": [ {"name": "path0/file0", "size": 123, "type": "file", ... }, {"name": "path0/file1", }, ... ], "path1": [...] } Parameters to this class control listing expiry or indeed turn caching off TNc s@i�_i�_|rt|d��fdd���_|�_|�_|�_dS)a Parameters ---------- use_listings_cache: bool If False, this cache never returns items, but always reports KeyError, and setting items has no effect listings_expiry_time: int or float (optional) Time in seconds that a listing is considered valid. If None, listings do not expire. max_paths: int (optional) The number of most recent listings that are considered valid; 'recent' refers to when the entry was set. �cs�j�|d�S�N)�_cache�pop)�key��self��MC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\fsspec\dircache.py�<lambda>3sz#DirCache.__init__.<locals>.<lambda>N)r�_timesr�_q�use_listings_cache�listings_expiry_time� max_paths)r rrr�kwargsr r r �__init__s zDirCache.__init__cCsJ|jdur|j�|d�t��|j kr|j|=|jr |�|�|j|S)Nr)rr�get�timerrr�r �itemr r r � __getitem__8s   zDirCache.__getitem__cCs|j��dSr)r�clearr r r r r@szDirCache.clearcCs t|j�Sr)�lenrr r r r �__len__Cs zDirCache.__len__cCs$z||WdStyYdSw)NTF)�KeyErrorrr r r � __contains__Fs  �zDirCache.__contains__cCsD|jsdS|jr |�|�||j|<|jdur t��|j|<dSdSr)rrrrrrr)r r �valuer r r � __setitem__Ms   �zDirCache.__setitem__cCs |j|=dSr)r)r r r r r � __delitem__Vs zDirCache.__delitem__cst�j�}�fdd�|D�S)Nc3s�|] }|�vr|VqdSrr )�.0�kr r r � <genexpr>\s�z$DirCache.__iter__.<locals>.<genexpr>)�listr)r �entriesr r r �__iter__Ys zDirCache.__iter__cCst|j|j|jffSr)rrrrr r r r � __reduce__^s�zDirCache.__reduce__)TNN) �__name__� __module__� __qualname__�__doc__rrrrrr!r"r(r)r r r r rs �  r)r�collections.abcr� functoolsrrr r r r �<module>s  
Memory