o
�J�h�
� @ s4 d dl Z d dlmZ d dlmZ G dd� de�ZdS )� N)�MutableMapping)� lru_cachec @ s` e Zd ZdZ ddd�Zdd� Zdd � Zd
d� Zdd
� Zdd� Z dd� Z
dd� Zdd� ZdS )�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.
� c s � j �| d �S �N)�_cache�pop)�key��self� �MC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\fsspec\dircache.py�<lambda>3 s z#DirCache.__init__.<locals>.<lambda>N)r �_timesr �_q�use_listings_cache�listings_expiry_time� max_paths)r r r r �kwargsr r
r
�__init__ s
zDirCache.__init__c C sJ | j d ur| j�|d�t�� | j k r| j|= | jr | �|� | j| S )Nr )r r �get�timer r r �r �itemr r r
�__getitem__8 s
zDirCache.__getitem__c C s | j �� d S r )r �clearr
r r r
r @ s zDirCache.clearc C s
t | j�S r )�lenr r
r r r
�__len__C s
zDirCache.__len__c C s$ z| | W dS t y Y dS w )NTF)�KeyErrorr r r r
�__contains__F s �zDirCache.__contains__c C sD | j sd S | jr
| �|� || j|<