47f ddlZddlmZddlmZmZmZddlmZm Z ddl m Z eje Zd dZd dZdZd Zd Zy) N)walk)abspathisfilejoin)PopenPIPE) PUBLIC_DIR_REc#PKt|}t|ttfr|D]}t|D]}|yt |r|j |r|yt t|D]-\}}}|D]"}|j |st||$/yw)z6Generate *.py file names available in given directory.N) tuple isinstancelistfrom_directoryrendswithrrr)dname extensionsitemfnrootdirs file_namess %/usr/share/python3/debpython/files.pyrrsz"J%$' D$T*    5>>*5 &*75>&: ) "D$   );;z*tR.( ) )s BB&B&c#"Kt|}tdd|ftt}|j\}}|jdk7rt d|zt |d}|jD]}|j|s|yw)z4Generate *.py file names available in given package.z /usr/bin/dpkgz-L)stdoutstderrrzcannot get content of %szutf-8N) r rr communicate returncode Exceptionstr splitlinesr) package_namerprocessrrlines r from_packager#.sz"J_dL9$ $&G((*NFFQ2\ABB  !F!!# == $Js BBBc#FK|D]}|j|s|yw)z4Generate *.py file names that match given directory.N) startswith)filesrrs rfilter_directoryr'<s& == Hs!!c#Ktd|D}td|D}|D]8}tj|}|s|jd}||vs||vs5|:yw)z3Generate *.py file names that match given versions.c3&K|] }d|z yw)z%d.%dN.0is r z filter_public..Es-qw{-sc38K|]}t|dyw)rN)rr+s rr.z filter_public..Fs2Ac!A$i2sN)setr matchgroup)r&versionsvstr shared_vstrr public_dirverss r filter_publicr9Csk -H- -D222K"((, ##A&D{"ddl sAA%A%A%c#\Kt|}|D]}|j|r|yw)zrEsD*))"#g! )  rD