Plan 9 from Bell Labs’s /usr/web/sources/contrib/bichued/root/sys/lib/python/distutils/filelist.pyc

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


�
��c
@s�dZdZddkZddkZddkZddkZddkTddklZddkl	Z	ddk
lZlZddk
lZd	fd
��YZeid�Zd�Zd
edd�ZdS(ssdistutils.filelist

Provides the FileList class, used for poking about the filesystem
and building lists of files.
s4$Id: filelist.py 37828 2004-11-10 22:23:15Z loewis $i�N(t*(tglob(tconvert_path(tDistutilsTemplateErrortDistutilsInternalError(tlogtFileListcBs�eZdZddd�Zd�Zeid�Zd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zdddd
�Zdddd�ZRS(s�A list of files built by on exploring the filesystem and filtered by
    applying various patterns to what we find there.

    Instance attributes:
      dir
        directory from which files will be taken -- only used if
        'allfiles' not supplied to constructor
      files
        list of filenames currently being built/filtered/manipulated
      allfiles
        complete list of files under consideration (ie. without any
        filtering applied)
    cCsd|_g|_dS(N(tNonetallfilestfiles(tselftwarntdebug_print((s%/sys/lib/python/distutils/filelist.pyt__init__#s	cCs
||_dS(N(R(R
R((s%/sys/lib/python/distutils/filelist.pytset_allfiles,scCst|�|_dS(N(tfindallR(R
tdir((s%/sys/lib/python/distutils/filelist.pyR/scCs$ddkl}|o	|GHndS(s~Print 'msg' to stdout if the global DEBUG (taken from the
        DISTUTILS_DEBUG environment variable) flag is true.
        i�(tDEBUGN(tdistutils.debugR(R
tmsgR((s%/sys/lib/python/distutils/filelist.pyR2scCs|ii|�dS(N(R	tappend(R
titem((s%/sys/lib/python/distutils/filelist.pyR<scCs|ii|�dS(N(R	textend(R
titems((s%/sys/lib/python/distutils/filelist.pyR?scCs_ttii|i�}|i�g|_x-|D]%}|iittii|��q2WdS(N(	tmaptostpathtsplitR	tsortRtapplytjoin(R
tsortable_filest
sort_tuple((s%/sys/lib/python/distutils/filelist.pyRBs
	cCs[xTtt|i�ddd�D]3}|i||i|djo|i|=q q WdS(Niii�(trangetlenR	(R
ti((s%/sys/lib/python/distutils/filelist.pytremove_duplicatesMs cCs)ti|�}|d}d}}}|djo;t|�djotd|�ntt|d�}n�|djoKt|�djotd|�nt|d�}tt|d�}nS|djo8t|�djotd|�nt|d�}ntd|�||||fS(Nitincludetexcludesglobal-includesglobal-excludeis&'%s' expects <pattern1> <pattern2> ...isrecursive-includesrecursive-excludeis,'%s' expects <dir> <pattern1> <pattern2> ...tgrafttprunes#'%s' expects a single <dir_pattern>sunknown action '%s'(sincludesexcludesglobal-includesglobal-exclude(srecursive-includesrecursive-exclude(R'sprune(tstringRRR"RRR(R
tlinetwordstactiontpatternsRtdir_pattern((s%/sys/lib/python/distutils/filelist.pyt_parse_template_lineVs,




cCsF|i|�\}}}}|djoY|idti|��x�D]0}|i|dd�ptid|�qIqIWn�|djoY|idti|��x�|D]0}|i|dd�ptid|�q�q�Wn\|d	jo]|id
ti|��x1|D]4}|i|dd�ptidd
|�qqWn�djoY|idti|��x�|D]0}|i|dd�ptid|�qqWn�|djof|id|ti|�f�x[|D]7}|i|d|�ptidd||�q�q�n|djob|id|ti|�f�x�D]3}|i|d|�ptid||�q^q^Wn�|djo?|id|�|idd|�ptid|�qBn^|djoC|id|�|idd|�ptidd|�qBnt	d|�dS( NR%sinclude tanchoris%warning: no files found matching '%s'R&sexclude s9warning: no previously-included files found matching '%s'sglobal-includesglobal-include is&warning: no files found matching '%s' sanywhere in distributionsglobal-excludesglobal-exclude sRwarning: no previously-included files matching '%s' found anywhere in distributionsrecursive-includesrecursive-include %s %stprefixsunder directory '%s'srecursive-excludesrecursive-exclude %s %ssNwarning: no previously-included files matching '%s' found under directory '%s'R'sgraft s+warning: no directories found matching '%s'R(sprune s)no previously-included directories found s
matching '%s's'this cannot happen: invalid action '%s'(
R/RR)Rtinclude_patternRRtexclude_patternRR(R
R*R,R-RR.tpattern((s%/sys/lib/python/distutils/filelist.pytprocess_template_line{st
	
	
	
	
		
		
	
	iicCs�d}t||||�}|id|i�|idjo|i�nxL|iD]A}|i|�o+|id|�|ii|�d}qWqWW|S(s�Select strings (presumably filenames) from 'self.files' that
        match 'pattern', a Unix-style wildcard (glob) pattern.  Patterns
        are not quite the same as implemented by the 'fnmatch' module: '*'
        and '?'  match non-special characters, where "special" is platform-
        dependent: slash on Unix; colon, slash, and backslash on
        DOS/Windows; and colon on Mac OS.

        If 'anchor' is true (the default), then the pattern match is more
        stringent: "*.py" will match "foo.py" but not "foo/bar.py".  If
        'anchor' is false, both of these will match.

        If 'prefix' is supplied, then only filenames starting with 'prefix'
        (itself a pattern) and ending with 'pattern', with anything in between
        them, will match.  'anchor' is ignored in this case.

        If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and
        'pattern' is assumed to be either a string containing a regex or a
        regex object -- no translation is done, the regex is just compiled
        and used as-is.

        Selected strings will be added to self.files.

        Return 1 if files are found.
        is%include_pattern: applying regex r'%s's adding iN(	ttranslate_patternRR4RRRtsearchR	R(R
R4R0R1tis_regextfiles_foundt
pattern_retname((s%/sys/lib/python/distutils/filelist.pyR2�s	
cCs�d}t||||�}|id|i�xjtt|i�ddd�D]I}|i|i|�o,|id|i|�|i|=d}qOqOW|S(s�Remove strings (presumably filenames) from 'files' that match
        'pattern'.  Other parameters are the same as for
        'include_pattern()', above.
        The list 'self.files' is modified in place.
        Return 1 if files are found.
        is%exclude_pattern: applying regex r'%s'ii�s
 removing (R6RR4R!R"R	R7(R
R4R0R1R8R9R:R#((s%/sys/lib/python/distutils/filelist.pyR3�s	 
N(t__name__t
__module__t__doc__RR
RRtcurdirRRRRRR$R/R5R2R3(((s%/sys/lib/python/distutils/filelist.pyRs		
						%	P.cCsddkl}l}l}l}g}|g}|i}|i}x�|o�|�}ti|�}	x�|	D]�}
|ti	joti
i||
�}n|
}ti|�}||}
||
�o|i|�ql||
�o||
�o||�qlqlWqFW|S(s^Find all files under 'dir' and return the list of full filenames
    (relative to 'dir').
    i�(tST_MODEtS_ISREGtS_ISDIRtS_ISLNK(tstatR@RARBRCtpopRRtlistdirR?RR(RR@RARBRCtlisttstackREtpushtnamesR;tfullnameRDtmode((s%/sys/lib/python/distutils/filelist.pyRs("			
	

cCs(ti|�}tidd|�}|S(s�Translate a shell-like glob pattern to a regular expression; return
    a string containing the regex.  Differs from 'fnmatch.translate()' in
    that '*' does not match "special characters" (which are
    platform-specific).
    s(^|[^\\])\.s\1[^/](tfnmatcht	translatetretsub(R4R:((s%/sys/lib/python/distutils/filelist.pyt
glob_to_re4s	iicCs�|o,t|�tjoti|�Sq3|Sn|ot|�}nd}|dj	o4t|�dd!}dtii|d|�}n|od|}nti|�S(sTranslate a shell-like wildcard pattern to a compiled regular
    expression.  Return the compiled regex.  If 'is_regex' true,
    then 'pattern' is directly compiled to a regex (if it's a string)
    or just returned as-is (assumes it's a regex object).
    tii�t^s.*N(	ttypet
StringTypeROtcompileRQRRRR(R4R0R1R8R:t	prefix_re((s%/sys/lib/python/distutils/filelist.pyR6Is
!(R>t__revision__RR)RORMttypesRtdistutils.utilRtdistutils.errorsRRt	distutilsRRR?RRQRR6(((s%/sys/lib/python/distutils/filelist.pys<module>s$
� 	

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].