o
     JAf:                     @   sj   	 d dl Z d dlZd dlZd dlZg dZi Zdd ZdddZdddZdd	d
Z	dddZ
dd ZdS )    N)getline
clearcache
checkcache	lazycachec                   C   s   	 t   d S N)cacheclear r	   r	    /usr/lib/python3.10/linecache.pyr      s   r   c                 C   s:   	 t | |}d|  krt|krn dS ||d  S dS )N    )getlineslen)filenamelinenomodule_globalslinesr	   r	   r
   r      s   
r   c                 C   sT   	 | t v rt |  }t|dkrt |  d S zt| |W S  ty)   t  g  Y S w )Nr      )r   r   updatecacheMemoryErrorr   )r   r   entryr	   r	   r
   r   $   s   r   c              	   C   s   	 | d u rt t }n
| tv r| g}nd S |D ]?} t|  }t|dkr%q|\}}}}|d u r0qzt|}W n tyF   t| d  Y qw ||jksQ||j	krWt| d  qd S )Nr   )
listr   keysr   osstatOSErrorpopst_sizest_mtime)r   	filenamesr   sizemtimer   fullnamer   r	   r	   r
   r   4   s.   r   c                 C   s  	 | t v rtt |  dkrt | d  | r| dr!| dr!g S | }zt|}W n ty   | }t| |rnz	t |  d  }W n t	tfyL   Y n"w |d u rUg  Y S t|d dd |
 D |ft | < t |  d  Y S tj| rxg  Y S tjD ](}z	tj||}W n ttfy   Y q{w zt|}W  n ty   Y q{w g  Y S Y nw zt|}| }W d    n1 sw   Y  W n tttfy   g  Y S w |r|d d	s|d  d	7  < |j|j}	}
|	|
||ft | < |S )
Nr   <>r   c                 S   s   g | ]}|d  qS )
r	   ).0liner	   r	   r
   
<listcomp>p   s    zupdatecache.<locals>.<listcomp>r   r%   )r   r   r   
startswithendswithr   r   r   r   ImportError
splitlinespathisabssysjoin	TypeErrorAttributeErrortokenizeopen	readlinesUnicodeDecodeErrorSyntaxErrorr   r   )r   r   r"   r   basenamedatadirnamefpr   r    r!   r	   r	   r
   r   P   sn   


)
r   c                 C   s   	 | t v rtt |  dkrdS dS | r| dr| drdS |r_d|v r_|d }|d }d u rH|d }rHz|j}W n	 tyG   Y nw t|d	d }|r_|r_t	||}|ft | < dS dS )
Nr   TFr#   r$   __name__
__loader____spec__
get_source)
r   r   r*   r+   getloaderr3   getattr	functoolspartial)r   r   namerB   specr@   	get_linesr	   r	   r
   r      s,   

r   r   )rD   r0   r   r4   __all__r   r   r   r   r   r   r   r	   r	   r	   r
   <module>   s    




C