
    f2                         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 j                  e      ZddZddZd Zd	 Zd
 Zy)    N)walkenviron)abspathisfilejoin)PopenPIPE)PUBLIC_DIR_REc              #   P  K   t        |      }t        | t        t         f      r| D ]  }t        |      D ]  }|   yt	        |       r| j                  |      r|  yt        t        |             D ]-  \  }}}|D ]"  }|j                  |      st        ||       $ / yw)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&*75>&: 	)"D$
  );;z*tR.()	)s   BB&B&c              #   d  K   t        |      }t        j                         }d|d<   t        dd| ft        t        |      }|j                         \  }}|j                  dk7  rt        d| z        |j                  dd	
      }|j                         D ]  }|j                  |      s|  yw)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   lines          r   from_packager)   .   s     z"J
,,.CCM_dL9$ $#/G((*NFFQ2\ABB]]79]5F!!# ==$Js   B&B0)B0c              #   F   K   | D ]  }|j                  |      s|  yw)z4Generate *.py file names that match given directory.N)
startswith)filesr   r   s      r   filter_directoryr-   >   s&      ==Hs   !!c              #      K   t        d |D              }t        d |D              }| D ]8  }t        j                  |      }|s|j                  d      }||v s||v s5| : yw)z3Generate *.py file names that match given versions.c              3   &   K   | ]	  }d |z    yw)z%d.%dN .0is     r   	<genexpr>z filter_public.<locals>.<genexpr>G   s     -qw{-s   c              3   8   K   | ]  }t        |d            yw)r   N)strr1   s     r   r4   z filter_public.<locals>.<genexpr>H   s     2Ac!A$i2s      N)setr
   matchgroup)r,   versionsvstrshared_vstrr   
public_dirverss          r   filter_publicr@   E   sk     -H--D222K "((,
##A&D{"ddls   AA%A%A%c              #   \   K   t        |      }| D ]  }|j                  |      r|  yw)z<Removes files with matching extensions from given generator.N)r   r   )r,   r   r   s      r   filter_out_extrB   Q   s0     z"J {{:&Hs   ",,))z.py)loggingosr   r   os.pathr   r   r   
subprocessr   r	   	debpythonr
   	getLogger__name__logr   r)   r-   r@   rB   r0       r   <module>rL      sD   *   ) ) " #g!)  	rK   