
    ґ2d                         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ZddZd	 Zd
 Zd ZdS )    N)walk)abspathisfilejoin)PopenPIPE)PUBLIC_DIR_REz.pyc              #     K   t          |          }t          | t          t           f          r| D ]}t          |          D ]}|V  dS t	          |           r|                     |          r| V  dS t          t          |                     D ]2\  }}}|D ])}|                    |          rt          ||          V  *3d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_namess          %/usr/share/python3/debpython/files.pyr   r      s     z""J%$'' 
) 	 	D$T**  	 	 
 )5>>*55 )&*75>>&:&: 	) 	)"D$
  ) );;z** )tR..((()	) 	)    c              #   N  K   t          |          }t          dd| ft          t                    }|                                \  }}|j        dk    rt          d| z            t          |d          }|                                D ]}|                    |          r|V  dS )z4Generate *.py file names available in given package.z/usr/bin/dpkgz-L)stdoutstderrr   zcannot get content of %szutf-8N)	r   r   r   communicate
returncode	Exceptionstr
splitlinesr   )package_namer   processr   r   lines         r   from_packager%   .   s      z""J_dL9$ $& & &G((**NFFQ2\ABBB!!F!!##  ==$$ 	JJJ r   c              #   F   K   | D ]}|                     |          r|V  dS )z4Generate *.py file names that match given directory.N)
startswith)filesr   r   s      r   filter_directoryr)   <   s=        == 	HHH r   c              #      K   t          d |D                       }t          d |D                       }| D ]9}t          j        |          }|r!|                    d          }||v s||v r|V  :dS )z3Generate *.py file names that match given versions.c              3       K   | ]	}d |z  V  
dS )z%d.%dN .0is     r   	<genexpr>z filter_public.<locals>.<genexpr>E   s&      --qw{------r   c              3   @   K   | ]}t          |d                    V  dS )r   N)r    r-   s     r   r0   z filter_public.<locals>.<genexpr>F   s,      22Ac!A$ii222222r      N)setr	   matchgroup)r(   versionsvstrshared_vstrr   
public_dirverss          r   filter_publicr;   C   s      --H-----D2222222K  "(,,
 	##A&&D{""ddll r   c              #   d   K   t          |          }| D ]}|                    |          s|V  dS )z<Removes files with matching extensions from given generator.N)r   r   )r(   r   r   s      r   filter_out_extr=   O   sJ      z""J  {{:&& 	HHH r   )r
   )loggingosr   os.pathr   r   r   
subprocessr   r   	debpythonr	   	getLogger__name__logr   r%   r)   r;   r=   r,   r   r   <module>rF      s   *        ) ) ) ) ) ) ) ) ) ) " " " " " " " " # # # # # #g!!) ) ) )      	 	 	    r   