B
    18\K                 @   s   d dl Z d dlZd dlZdd ZedZedZdd Zdd	 Zd
d Z	dd Z
dd Zedkrye e  W n ek
r   e d Y nX dS )    Nc              C   s   t jdd  } | std dS i }x| D ]}t|| q(W td t| td t|}t| td t|}t| td t|}t| dS )	N   z usage: pdeps file.py file.py ...   z--- Uses ---z--- Used By ---z--- Closure of Uses ---z--- Closure of Used By ---r   )sysargvprintprocessprintresultsinverseclosure)argstablearginvreachZinvreach r   S/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Tools/scripts/pdeps.pymain   s&    
r   z^[ 	]*from[ 	]+([^ 	]+)[ 	]+z^[ 	]*import[ 	]+([^#]+)c             C   s  t | d}tj| }|dd  dkr2|d d }g  ||< }x| }|sNP x2|dd  dkr| }|snP |d d | }qPW t|pt|}|r@|jd d \\}}	\}
}nq@||
| 	d}x&|D ]}|
 }||kr|| qW q@W |  d S )Nrz.py\r   ,)openospathbasenamereadlinem_importmatchm_fromregssplitstripappendclose)filenamer   fpmodlistlineZnextlineZm_foundabZa1Zb1wordswordr   r   r   r   B   s0    
  
r   c             C   s   t |  }i }x |D ]}| | d d  ||< qW d}xd|rd}xV|D ]N}xH|| D ]<}||krTx.|| D ]"}||| krj|| | d}qjW qTW qFW q8W |S )Nr   r   )r(   keysr#   )r   modulesr   r'   Zchangemomr   r   r   r
   ^   s    

r
   c             C   sH   i }x>|   D ]2}||kr"g ||< x| | D ]}t||| q,W qW |S )N)r.   store)r   r   keyitemr   r   r   r	   {   s    r	   c             C   s&   || kr| |  | n
|g| |< d S )N)r#   )dictr3   r4   r   r   r   r2      s    r2   c             C   s   t |  }d}x|D ]}t|t|}qW x`|D ]X}t | | }t||ddd ||krjtddd x|D ]}t|dd qpW t  q2W d S )Nr   : )endz(*))sortedr.   maxlenr   ljust)r   r/   maxlenr'   r(   refr   r   r   r      s    
 

r   __main__r   )r   rer   r   compiler   r   r   r
   r	   r2   r   __name__exitKeyboardInterruptr   r   r   r   <module>   s   

	