pX @sddlZddlmZddlmZmZmZddlmZm Z ddl m Z ej e ZdddZdd d Zd d Zd dZddZdS)N)walk)abspathisfilejoin)PopenPIPE) PUBLIC_DIR_RE.pyccst|}t|ttfrQx|D]"}xt|D] }|Vq;Wq(Wnwt|rt|j|rt|VnTxQtt|D]=\}}}x+|D]#}|j|rt||VqWqWdS)z6Generate *.py file names available in given directory.N) tuple isinstancelistfrom_directoryrendswithrrr)dname extensionsitemfnrootdirsZ file_namesr%/usr/share/python3/debpython/files.pyr s  " r ccst|}td|dddt}|j\}}|jdkrYtd|t|d}x(|jD]}|j|ru|VquWdS) z4Generate *.py file names available in given package.z/usr/bin/dpkg -L %sshellTstdoutrzcannot get content of %szutf-8N) r rr communicate returncode Exceptionstr splitlinesr)Z package_namerprocessrstderrlinerrr from_package.s  r!ccs)x"|D]}|j|r|VqWdS)z4Generate *.py file names that match given directory.N) startswith)filesrrrrrfilter_directory<s r$ccstdd|D}tdd|D}xO|D]G}tj|}|r9|jd}||ks{||kr9|Vq9WdS)z3Generate *.py file names that match given versions.css|]}d|VqdS)z%d.%dNr).0irrr Esz filter_public..css|]}t|dVqdS)rN)r)r%r&rrrr'FsN)setrmatchgroup)r#versionsZvstrZ shared_vstrr public_dirversrrr filter_publicCs r/ccs5t|}x"|D]}|j|s|VqWdS)zs