U
    „zk^Î  ã                   @   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  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©z.pyc                 c   sŒ   t |ƒ}t| tt fƒr6| D ]}t|ƒD ]
}|V  q&qnRt| ƒrP|  |¡rP| V  n8tt| ƒƒD ]*\}}}|D ]}| |¡rjt||ƒV  qjq\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   sh   t |ƒ}td|  dtd�}| ¡ \}}|jdkr<td|  ƒ‚t|dƒ}| ¡ D ]}| |¡rN|V  qNd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   ZcommunicateÚ
returncodeÚ	ExceptionÚstrÚ
splitlinesr   )Zpackage_namer   Zprocessr   ÚstderrÚliner   r   r   Úfrom_package.   s     ÿ


r   c                 c   s   | D ]}|  |¡r|V  qdS )z4Generate *.py file names that match given directory.N)Ú
startswith)Úfilesr   r   r   r   r   Úfilter_directory<   s    
r"   c                 c   s`   t dd„ |D ƒƒ}t dd„ |D ƒƒ}| D ]2}t |¡}|r(| d¡}||ksT||kr(|V  q(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&   F   s     é   N)Úsetr   ÚmatchÚgroup)r!   ZversionsZvstrZshared_vstrr   Z
public_dirZversr   r   r   Úfilter_publicC   s    

r+   c                 c   s&   t |ƒ}| D ]}| |¡s|V  qdS )z<Removes files with matching extensions from given generator.N)r
   r   )r!   r   r   r   r   r   Úfilter_out_extO   s    
r,   )r	   )r	   )ZloggingÚosr   Úos.pathr   r   r   Ú
subprocessr   r   Z	debpythonr   Z	getLoggerÚ__name__Úlogr   r   r"   r+   r,   r   r   r   r   Ú<module>   s   


