/ lib / parso / cache.pyc
cache.pyc
 1  o

 2  %��c!�@sdUddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
 3  mZddlm
Z
mZe�e�ZdZ	dZ	dZ	dZ	de��ejdejdefZ	d	d
 4  �Ze�Z	dZd(dd
�ZiZe
eefed<Gdd�d�Z d(dd�Z!d(dd�Z"dd�Z#d)dd�Z$d(dd�Z%d(dd�Z&defdd�Z'd d!�Z(d(d"d#�Z)d(d$d%�Z*d(d&d'�Z+dS)*�N)�Path)�Dict�AnyiXi�'�!z
 5  %s-%s%s-%s�cCspt����dkrtt�d�pddd�}|��St����dkr*tdddd�}|��Stt�d�p1d	d
 6  �}|��S)N�windows�LOCALAPPDATA�~ZParso�darwin�Library�Caches�XDG_CACHE_HOMEz~/.cache�parso)�platform�system�lowerr�os�getenv�
 7  expanduser)�dir_�r��C:\Users\Jacks.GUTTSPC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\parso\cache.py�_get_default_cache_pathBs��ri�QcCs|pt}|�d�S)z�
 8      The path where the cache lock is stored.
 9  
10      Cache lock will prevent continous cache clearing and only allow garbage
11      collection once a day (can be configured in _CACHE_CLEAR_THRESHOLD).
12      zPARSO-CACHE-LOCK)�_default_cache_path�joinpath��
13  cache_pathrrr�_get_cache_clear_lock_pathYs
14  r�parser_cachec@seZdZddd�ZdS)�_NodeCacheItemNcCs,||_||_|durt��}||_||_dS�N)�node�lines�time�change_time�	last_used)�selfr!r"r$rrr�__init__hs
15  z_NodeCacheItem.__init__r )�__name__�
16  __module__�__qualname__r'rrrrrgsrc	Csj|��}|dur
17  dSzt||j}||jkr t��|_|jWSWdSty4t||j||d�YSw)z0
18      Returns a module or None, if it fails.
19      Nr)	�get_last_modifiedr�pathr$r#r%r!�KeyError�_load_from_file_system)�hashed_grammar�file_ior�p_time�module_cache_itemrrr�load_moduleqs"
20  
21  �
22  ��r3c	Cs�t|||d�}z7|tj�|�krWdSt|d��}t��zt�|�}Wt�	�nt�	�wWd�n1s8wYWn
23  t
24  yHYdSwt|||�t�
d|�|jS)Nr�rbzpickle loaded: %s)�_get_hashed_pathrr,�getmtime�open�gc�disable�pickle�load�enable�FileNotFoundError�_set_cache_item�LOG�debugr!)r/r,r1r�fr2rrrr.�s"���r.csftdd�t��D��tkr)t��t�t��D]\}}�fdd�|��D�t|<q|t�|i�|<dS)Ncss�|]}t|�VqdSr )�len)�.0�vrrr�	<genexpr>�s�z"_set_cache_item.<locals>.<genexpr>cs i|]\}}|j�kr||�qSr)r%)rCr,Z	node_item�Zcutoff_timerr�
25  <dictcomp>�s
26  
27  �z#_set_cache_item.<locals>.<dictcomp>)�sumr�values�_CACHED_SIZE_TRIGGERr#�_CACHED_FILE_MINIMUM_SURVIVAL�items�
28  setdefault)r/r,r2�keyZpath_to_item_maprrFrr>�s
29  �r>Tc	Cs�|j}z|dur
30  dn|��}Wn
tyd}d}Ynwt|||�}t|||�|rS|durUz
31  t||||d�WntyKt�d|t	�YdSwt
32  |d�dSdSdS)NFrz6Tried to save a file to %s, but got permission denied.)r,r+�OSErrorrr>�_save_to_file_system�PermissionError�warnings�warn�Warning�_remove_cache_and_update_lock)	r/r0�moduler"�picklingrr,r1�itemrrr�try_to_save_module�s(�
33  ��	�rYcCsJtt|||d�d��}t�||tj�Wd�dS1swYdS)Nr�wb)r7r5r:�dump�HIGHEST_PROTOCOL)r/r,rXrrArrrrP�s"�rPcCs"|durt}t�|�t��dSr )r�shutil�rmtreer�clearrrrr�clear_cache�s
34  r`c
35  Cs�|durt}|��sdSt�|�D]1}|�|�}|��sqt�|�D]}|��jt	t
3637  �krAzt�|j�Wq"t
y@Yq"wq"qdS)NFT)r�existsr�listdirr�is_dir�scandir�stat�st_atime�_CACHED_FILE_MAXIMUM_SURVIVALr#�remover,rO)rZinactivity_threshold�dirnameZversion_path�filerrr�clear_inactive_cache�s$
38  ���rkcCsXz	t�|d�WdSty+z
t|d�}|��WYdSttfy*YYdSww)N�aFT)r�utimer=r7�closerO�IOError)r,rjrrr�_touch�s�
39  ���rpcCsht|d�}ztj�|�}Wntyd}Ynw|dus%|tt��kr2t|�s+dSt|d�dSdS)NrF)	rrr,r6r=�_CACHE_CLEAR_THRESHOLDr#rprk)rZ	lock_pathZclear_lock_timerrrrU�s
40  ��rUcCs8t|d�}t�t|��d����}tj�|d||f�S)Nrzutf-8z	%s-%s.pkl)	�_get_cache_directory_path�hashlib�sha256�str�encode�	hexdigestrr,�join)r/r,r�	directoryZ	file_hashrrrr5s
41  r5cCs,|durt}|�t�}|��st�|�|Sr )rr�_VERSION_TAGrar�makedirs)rryrrrrr
s
42  
43  rrr )TN),r#r�sysrsr8r]r�loggingrRr:�pathlibr�typingrr�	getLoggerr(r?rKrgrJ�_PICKLE_VERSION�python_implementation�version_inforzrrrqrrru�__annotations__rr3r.r>rYrPr`rkrprUr5rrrrrr�<module>s`
44  
45  �
46  	
47  
48  
49  
50  
51  
52  
53  
54  �
55  
56