
    8@d?                         d dl mZ d dlZd dlmZ d dlmZ d dlmZ  ej        e	          Z
 G d d          Zd Z eed	
          Zd Z eei 
          ZdS )    )defaultdictN)time)
Completion)lspc                   v    e Zd ZddZed             Zej        d             Zd Zd Zde	fdZ
de	fd	Zd
 ZdS )Resolver  c                     || _         || _        i | _        || _        t	          t
                    | _        d| _        h d| _        d S )N   >   numpypandas
matplotlib
tensorflow)	callbackresolve_on_error_cache_time_to_liver   set
_cache_ttl_clear_every_cached_modules)selfr   r   time_to_lives       8lib/python3.11/site-packages/pylsp/plugins/_resolvers.py__init__zResolver.__init__   sK      0)%c**NNN    c                     | j         S N)r   r   s    r   cached_moduleszResolver.cached_modules   s    ##r   c                 .    t          |          | _        d S r   )r   r   )r   	new_values     r   r    zResolver.cached_modules"   s    "9~~r   c                     |                                  fd| j        D             }|D ]"}| j        |         D ]
}| j        |= | j        |= #d S )Nc                      g | ]
}|k     |S  r%   ).0	timestampnows     r   
<listcomp>z+Resolver.clear_outdated.<locals>.<listcomp>(   s*     
 
 
3 r   )time_keyr   r   )r   to_clearr*   keyr(   s       @r   clear_outdatedzResolver.clear_outdated&   s    mmoo
 
 
 
!_
 
 

 ! 	* 	*Hx0 % %K$$))	* 	*r   c                 H    t          t                      | j        z            S r   )intr   r   r   s    r   r*   zResolver.time_key2   s    466D..///r   
completionc                    |j         sd}n+|j                             d          }|o|d         | j        v }|r|                     |          }|| j        vr|                                 | j        z  dk    r|                                  |                     |          | j        |<   | j	        |                                          
                    |           | j        |         S |                     |          S )NF.r   )	full_namesplitr   _create_completion_idr   r*   r   r-   resolver   add)r   r0   	use_cachemodule_partsr,   s        r   get_or_createzResolver.get_or_create5   s    # 	QII%/55c::L$PaD<P)PI 	$,,Z88C$+%%==??T%66!;;'')))#'<<
#;#;C 044S999;s##||J'''r   c                 \    |j         |j        |j        |j        |                                 fS r   )r3   module_pathlinecolumnr*   )r   r0   s     r   r5   zResolver._create_completion_idH   s,     *"8OZ.MMOO
 	
r   c                     	 |                                 }|                     ||          S # t          $ r1}t                              d| d|            | j        cY d }~S d }~ww xY w)Nz.Something went wrong when resolving label for z: )get_signaturesr   	Exceptionlogwarningr   )r   r0   siges       r   r6   zResolver.resolveO   s    	)++--C==S111 	) 	) 	)KKZZZWXZZ[[[(((((((	)s   ), 
A'&A"A'"A'N)r	   )__name__
__module____qualname__r   propertyr    setterr-   r*   r   r:   r5   r6   r%   r   r   r   r      s        O O O O $ $ X$ . . .
* 
* 
*0 0 0(
 ( ( ( (&

 
 
 
 
) ) ) ) )r   r   c                     |rP| j         dv rGd                    d |d         j        D                       }d                    | j        |          }|S | j        S )N)functionmethod, c              3   $   K   | ]}|j         V  d S r   )namer&   params     r   	<genexpr>zformat_label.<locals>.<genexpr>\   s$      AA%5:AAAAAAr   r   z{}({}))typejoinparamsformatrP   )r0   rD   rV   labels       r   format_labelrY   Z   s_    
 z"888AA3q6=AAAAA
88?r    )r   r   c                    |si S i }d |d         j         D             }t          |          dk    rmt          j        j        |d<   | j        dz   }t          |          D ]4\  }}|d|dz   d|j        dz  }|t          |          dz
  k     r|d	z  }5|d
z  }||d<   nBt          |          dk    r"t          j        j        |d<   | j        dz   |d<   n| j        dz   |d<   |S )Nc                 6    g | ]}d |j         vr|j        dv|S )=>   */)descriptionrP   rQ   s     r   r)   z"format_snippet.<locals>.<listcomp>m   s<     5 5 5U%666z33 333r   r      insertTextFormat(z${:}rN   z)$0
insertTextz($0)z())rV   lenr   InsertTextFormatSnippetrP   	enumerate)r0   rD   snippet_completionpositional_argssnippetirR   s          r   format_snippetro   g   s1    	5 5#a&- 5 5 5O ?a141E1M-./C'!/22 	  	 HAuGQUUUEJJJ77G3''!+++45+2<((	_			"	"141E1M-.+5?V+C<((+5?T+A<(r   )collectionsr   loggingr   jedi.api.classesr   pylspr   	getLoggerrF   rB   r   rY   LABEL_RESOLVERro   SNIPPET_RESOLVERr%   r   r   <module>rw      s    $ # # # # #        ' ' ' ' ' '       g!!
C) C) C) C) C) C) C) C)P   <"EEE
  : 8^bIII   r   