o
    å¹´f-  ã                   @   s‚   d dl Z d dlmZ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Úenviron)ÚabspathÚisfileÚjoin)ÚPopenÚPIPE)ÚPUBLIC_DIR_RE©z.pyc                 c   s’   � t |ƒ}t| tt fƒr| D ]}t|ƒD ]}|V  qqdS t| ƒr+|  |¡r+| V  dS tt| ƒƒD ]\}}}|D ]}| |¡rEt||ƒV  q8q1dS )z6Generate *.py file names available in given directory.N)	ÚtupleÚ
isinstanceÚlistÚfrom_directoryr   Úendswithr   r   r   )ÚdnameÚ
extensionsÚitemÚfnÚrootÚdirsÚ
file_names© r   ú%/usr/share/python3/debpython/files.pyr      s"   €ÿÿ

€þÿr   c                 c   s‚   � t |ƒ}t ¡ }d|d< tdd| ftt|d�}| ¡ \}}|jdkr)td|  ƒ‚|jdd	d
�}| 	¡ D ]
}| 
|¡r>|V  q4dS )z4Generate *.py file names available in given package.zC.UTF-8ÚLC_ALLz/usr/bin/dpkgz-L)ÚstdoutÚstderrÚenvr   zcannot get content of %szutf-8Úreplace)ÚerrorsN)r   r   Úcopyr   r   ÚcommunicateÚ
returncodeÚ	ExceptionÚdecodeÚ
splitlinesr   )Úpackage_namer   r   Úprocessr   r   Ú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   sb   � t dd„ |D ƒƒ}t dd„ |D ƒƒ}| D ]}t |¡}|r.| d¡}||v s+||v 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>G   s   € z filter_public.<locals>.<genexpr>c                 s   s   � | ]	}t |d  ƒV  qdS )r   N)Ústrr,   r   r   r   r/   H   s   € é   N)Úsetr	   ÚmatchÚgroup)r*   ÚversionsÚvstrÚshared_vstrr   Ú
public_dirÚversr   r   r   Úfilter_publicE   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_extQ   s   €
€þr;   )r
   )ÚloggingÚosr   r   Úos.pathr   r   r   Ú
subprocessr   r   Ú	debpythonr	   Ú	getLoggerÚ__name__Úlogr   r(   r+   r:   r;   r   r   r   r   Ú<module>   s   


