B UG@sddlZddlZddlZddZedZedZddZdd Zd d Z d d Z ddZ e dkrye eWnek re dYnXdS)NcCstjdd}|stddSi}x|D]}t||q(Wtdt|tdt|}t|tdt|}t|tdt|}t|dS) Nz usage: pdeps file.py file.py ...z --- Uses ---z--- Used By ---z--- Closure of Uses ---z--- Closure of Used By ---r)sysargvprintprocess printresultsinverseclosure)argstablearginvreachZinvreachr8/opt/alt/python37/lib64/python3.7/Tools/scripts/pdeps.pymains& rz^[ ]*from[ ]+([^ ]+)[ ]+z^[ ]*import[ ]+([^#]+)cCst|d}tj|}|dddkr2|dd}g||<}x|}|sNPx2|dddkr|}|snP|dd|}qPWt|pt|}|r@|jdd\\}} \} } nq@|| |  d} x&| D]} | } | |kr| | qWq@W| dS)Nrz.py\r,) openospathbasenamereadlinem_importmatchm_fromregssplitstripappendclose)filenamer fpmodlistlineZnextlineZm_foundabZa1Zb1ZwordsZwordrrrrBs0     rcCst|}i}x |D]}||dd||<qWd}xd|rd}xV|D]N}xH||D]<}||krTx.||D]"}|||krj|||d}qjWqTWqFWq8W|S)Nrr)r(keysr#)r modulesrr'ZchangeZmomrrrr ^s    r cCsHi}x>|D]2}||kr"g||<x||D]}t|||q,WqW|S)N)r,store)r rkeyitemrrrr {sr cCs&||kr|||n |g||<dS)N)r#)dictr0r1rrrr/sr/cCst|}d}x|D]}t|t|}qWx`|D]X}t||}t||ddd||krjtdddx|D]}t|ddqpWtq2WdS)Nr: )endz(*))sortedr,maxlenrljust)r r-maxlenr'r(refrrrrs      r__main__r)rrerrcompilerrrr r r/r__name__exitKeyboardInterruptrrrrs