B
    u9a                 @   sj   d dl Z d dlZd dlZd dlZdddgZdddZi add ZdddZdd	dZ	dd
dZ
dd ZdS )    Ngetline
clearcache
checkcachec             C   s:   t | |}d|  kr"t|kr2n n||d  S dS d S )N    )getlineslen)filenamelinenomodule_globalslines r   /usr/lib/python3.7/linecache.pyr      s    
c               C   s   i a d S )N)cacher   r   r   r   r      s    c             C   sR   | t kr(t |  }t|dkr(t |  d S y
t| |S  tk
rL   t  g S X d S )Nr      )r   r   updatecacheMemoryErrorr   )r	   r   entryr   r   r   r   %   s    
r   c          	   C   s   | d krt t }n| tkr&| g}nd S x~|D ]v} t|  }t|dkrJq0|\}}}}|d kr`q0yt|}W n tk
r   t| = w0Y nX ||jks||jkr0t| = q0W d S )Nr   )	listr   keysr   osstatOSErrorst_sizest_mtime)r	   	filenamesr   sizemtimer   fullnamer   r   r   r   r   5   s&    
c             C   s  | t krtt |  dkrt | = | r6| dr:| dr:g S | }yt|}W n tk
rT   | }t| |ryt |  d  }W n ttfk
r   Y n<X |d krg S t|d dd |	 D |ft | < t |  d S tj
| rg S xjtj
D ]\}ytj
||}W n ttfk
r   wY nX yt|}P W q tk
rF   Y qX qW g S Y nX y"t|}| }W d Q R X W n tk
r   g S X |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>q   s    zupdatecache.<locals>.<listcomp>r   r!   )r   r   
startswithendswithr   r   r   	lazycacheImportError
splitlinespathisabssysjoin	TypeErrorAttributeErrortokenizeopen	readlinesr   r   )r	   r   r   r   basenamedatadirnamefpr   r   r   r   r   r   r   R   sV    



r   c             C   s   | t kr tt |  dkrdS dS | r8| dr<| dr<dS |rd|kr|d}|d }t|dd }|r|rt||}|ft | < dS dS )	Nr   TFr   r    
__loader____name__
get_source)r   r   r&   r'   getgetattr	functoolspartial)r	   r   nameloaderr:   	get_linesr   r   r   r(      s    

r(   )N)N)N)N)r=   r-   r   r1   __all__r   r   r   r   r   r   r(   r   r   r   r   <module>   s   




A