3
Ĥ[                 @   s~   d dl Z d dlmZ d dlmZmZmZ d dlmZm	Z	 d dl
mZ e jeZdddZdd	d
Zdd Zdd Zdd ZdS )    N)walk)abspathisfilejoin)PopenPIPE)PUBLIC_DIR_RE.pyc             c   s   t |}t| tt fr>x| D ]}xt|D ]
}|V  q*W qW nZt| rX| j|rX| V  n@x>tt| D ].\}}}x"|D ]}|j|rvt||V  qvW qfW dS )z6Generate *.py file names available in given directory.N)	tuple
isinstancelistfrom_directoryr   endswithr   r   r   )dname
extensionsitemfnrootdirsZ
file_names r   %/usr/share/python3/debpython/files.pyr      s    


r   c             c   sl   t |}td|  dtd}|j \}}|jdkr<td|  t|d}x |j D ]}|j|rP|V  qPW dS )z4Generate *.py file names available in given package.z/usr/bin/dpkg -L %sT)shellstdoutr   zcannot get content of %szutf-8N)	r
   r   r   communicate
returncode	Exceptionstr
splitlinesr   )Zpackage_namer   processr   stderrliner   r   r   from_package.   s    



r!   c             c   s"   x| D ]}|j |r|V  qW dS )z4Generate *.py file names that match given directory.N)
startswith)filesr   r   r   r   r   filter_directory<   s    

r$   c             c   sd   t dd |D }t dd |D }x:| D ]2}tj|}|r*|jd}||ksV||kr*|V  q*W dS )z3Generate *.py file names that match given versions.c             s   s   | ]}d | V  qdS )z%d.%dNr   ).0ir   r   r   	<genexpr>E   s    z filter_public.<locals>.<genexpr>c             s   s   | ]}t |d  V  qdS )r   N)r   )r%   r&   r   r   r   r'   F   s       N)setr   matchgroup)r#   versionsZvstrZshared_vstrr   
public_dirversr   r   r   filter_publicC   s    


r/   c             c   s*   t |}x| D ]}|j|s|V  qW dS )z<Removes files with matching extensions from given generator.N)r
   r   )r#   r   r   r   r   r   filter_out_extO   s    

r0   r	   )r1   r	   )r2   )loggingosr   os.pathr   r   r   
subprocessr   r   	debpythonr   	getLogger__name__logr   r!   r$   r/   r0   r   r   r   r   <module>   s   


