
    Mh!                        U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZmZ  ej        e          ZdZ	 dZ	 dZ	 dZ	  ej                    dej        d          ej        d         deZ	 d	 Z e            Z	 d
ZddZi Zeeef         ed<    G d d          Z ddZ!ddZ"d Z#ddZ$ddZ%ddZ&defdZ'd Z(ddZ)ddZ*ddZ+dS )    N)Path)DictAnyiX  i ' !   -   c                     t          j                                                    dk    r&t          t	          j        d          pddd          } n`t          j                                                    dk    rt          dddd          } n$t          t	          j        d          pd	d
          } |                                 S )NwindowsLOCALAPPDATA~ParsodarwinLibraryCachesXDG_CACHE_HOMEz~/.cacheparso)platformsystemlowerr   osgetenv
expanduser)dir_s    K/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/parso/cache.py_get_default_cache_pathr   B   s      I--BIn--4gwGG				 	 	"	"h	.	.CHg66BI.//=:wGG??    iQ c                 >    | pt           } |                     d          S )z
    The path where the cache lock is stored.

    Cache lock will prevent continous cache clearing and only allow garbage
    collection once a day (can be configured in _CACHE_CLEAR_THRESHOLD).
    zPARSO-CACHE-LOCK)_default_cache_pathjoinpath
cache_paths    r   _get_cache_clear_lock_pathr"   Y   s$     22J1222r   parser_cachec                       e Zd ZddZdS )_NodeCacheItemNc                 h    || _         || _        |t          j                    }|| _        || _        d S N)nodelinestimechange_time	last_used)selfr(   r)   r+   s       r   __init__z_NodeCacheItem.__init__h   s4    	
)++K&$r   r'   )__name__
__module____qualname__r.    r   r   r%   r%   g   s(        % % % % % %r   r%   c                    |                                 }|dS 	 t          |          |j                 }||j        k    rt	          j                    |_        |j        S dS # t          $ r t          | |j        ||          cY S w xY w)z0
    Returns a module or None, if it fails.
    Nr    )	get_last_modifiedr#   pathr+   r*   r,   r(   KeyError_load_from_file_system)hashed_grammarfile_ior!   p_timemodule_cache_items        r   load_moduler<   q   s     &&((F~t
(8F&222*.)++'$)) 32  
 
 
%L!	
 
 
 	
 	
 	

s   AA "BBc                    t          | ||          }	 |t          j                            |          k    rd S t	          |d          5 }t          j                     	 t          j        |          }t          j	                     n# t          j	                     w xY w	 d d d            n# 1 swxY w Y   t          | ||           t                              d|           |j        S # t          $ r Y d S w xY w)Nr    rbzpickle loaded: %s)_get_hashed_pathr   r5   getmtimeopengcdisablepickleloadenable_set_cache_itemLOGdebugr(   FileNotFoundError)r8   r5   r:   r!   fr;   s         r   r7   r7      s1   !.$:NNNJ&BG$$Z00004*d## 	qJLLL$*KNN!			 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	.?@@@		%t,,, %%    ttsR   #C) C) 	B+B2B+BB+C) +B//C) 2B/3C) )
C76C7c                 z   t          d t                                          D                       t          k    rbt	          j                    t
          z
  t                                          D ]-\  }}fd|                                D             t          |<   .|t                              | i           |<   d S )Nc              3   4   K   | ]}t          |          V  d S r'   )len).0vs     r   	<genexpr>z"_set_cache_item.<locals>.<genexpr>   s(      
1
1a3q66
1
1
1
1
1
1r   c                 2    i | ]\  }}|j         k    ||S r2   )r,   )rO   r5   	node_itemcutoff_times      r   
<dictcomp>z#_set_cache_item.<locals>.<dictcomp>   s7     ! ! !#D)&44 i444r   )sumr#   values_CACHED_SIZE_TRIGGERr*   _CACHED_FILE_MINIMUM_SURVIVALitems
setdefault)r8   r5   r;   keypath_to_item_maprT   s        @r   rG   rG      s    

1
1<..00
1
1
1115III ikk$AA%1%7%7%9%9 	 	!C!! ! ! !'7'='='?'?! ! !L 9JLNB//555r   Tc                 h   |j         }	 |d n|                                }n# t          $ r d }d}Y nw xY wt          |||          }t	          | ||           |rV|V	 t          | |||           t          |           d S # t          $ r! t          j	        d|z  t                     Y d S w xY wd S d S )NFr    z6Tried to save a file to %s, but got permission denied.)r5   r4   OSErrorr%   rG   _save_to_file_system_remove_cache_and_update_lockPermissionErrorwarningswarnWarning)	r8   r9   moduler)   picklingr!   r5   r:   items	            r   try_to_save_moduleri      s   <D7+D+D+F+F    &%00DND$/// AD$	A t
SSSS *Z@@@@@@  	 	 	 MH4O     		A A$$s   " 33B 'B-,B-c                     t          t          | ||          d          5 }t          j        ||t          j                   d d d            d S # 1 swxY w Y   d S )Nr    wb)rA   r?   rD   dumpHIGHEST_PROTOCOL)r8   r5   rh   r!   rK   s        r   r`   r`      s    	~t
KKKT	R	R 6VWD!V45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   !AAAc                 r    | t           } t          j        |            t                                           d S r'   )r   shutilrmtreer#   clearr    s    r   clear_cacherr      s5    (

M*r   c                    | t           } |                                 sdS t          j        |           D ]}|                     |          }|                                s,t          j        |          D ]c}|                                j        t          z   t          j
                    k    r+	 t          j        |j                   S# t          $ r Y _w xY wddS )NFT)r   existsr   listdirr   is_dirscandirstatst_atime_CACHED_FILE_MAXIMUM_SURVIVALr*   remover5   r_   )r!   inactivity_thresholddirnameversion_pathfiles        r   clear_inactive_cacher      s     (
 u:j))  !**733""$$ 	J|,, 	 	Dyy{{#&CCty{{RRIdi((((   H S	 ts   -C
CCc                     	 t          j        | d            nO# t          $ rB 	 t          | d          }|                                 n# t
          t          f$ r Y Y dS w xY wY nw xY wdS )NaFT)r   utimerJ   rA   closer_   IOError)r5   r   s     r   _touchr      s    
t   	c??DJJLLLL! 	 	 	555	 L 4s2    
A$$AA$AA$AA$#A$c                    t          |           }	 t          j                            |          }n# t          $ r d }Y nw xY w||t
          z   t          j                    k    r#t          |          sdS t          |            d S d S )Nr    F)	r"   r   r5   r@   rJ   _CACHE_CLEAR_THRESHOLDr*   r   r   )r!   	lock_pathclear_lock_times      r   ra   ra      s    *jAAAI'**955    	33ty{{BBi   	 5
333333 CBs   2 A Ac                     t          |          }t          j        t          |                              d                                                    }t          j                            || d|d          S )Nr    zutf-8r   z.pkl)	_get_cache_directory_pathhashlibsha256strencode	hexdigestr   r5   join)r8   r5   r!   	directory	file_hashs        r   r?   r?     sd    )Z@@@Is4yy//8899CCEEI7<<	...)))#LMMMr   c                     | t           } |                     t                    }|                                st	          j        |           |S r'   )r   r   _VERSION_TAGrt   r   makedirs)r!   r   s     r   r   r     sJ    (
##L11I 
Ir   r'   )TN),r*   r   sysr   rB   ro   r   loggingrc   rD   pathlibr   typingr   r   	getLoggerr/   rH   rY   rz   rX   _PICKLE_VERSIONpython_implementationversion_infor   r   r   r   r"   r#   r   __annotations__r%   r<   r7   rG   ri   r`   rr   r   r   ra   r?   r   r2   r   r   <module>r      s    				 



  				                   g!! '  !2 
  	 
 #H"$$$$QQO	   .-//  & 3 3 3 3  "d38n ! ! !% % % % % % % %
 
 
 
,& & & &*J J J A A A A26 6 6 6
    6   ,	 	 	4 4 4 4&N N N N     r   