summaryrefslogtreecommitdiffstats
path: root/Lib/distutils/filelist.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/distutils/filelist.py')
-rw-r--r--Lib/distutils/filelist.py249
1 files changed, 126 insertions, 123 deletions
diff --git a/Lib/distutils/filelist.py b/Lib/distutils/filelist.py
index ee7051b..78f2a8d 100644
--- a/Lib/distutils/filelist.py
+++ b/Lib/distutils/filelist.py
@@ -19,15 +19,19 @@ from distutils.util import convert_path
class FileList:
- files = None # reference to files list to mainpulate
- allfiles = None # list of all files, if None will be filled
- # at first use from directory self.dir
- dir = None # directory from which files will be taken
- # to fill self.allfiles if it was not set otherwise
-
- # next both functions (callable objects) can be set by the user
- # warn: warning function
- # debug_print: debug function
+ """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)
+ """
def __init__(self,
files=[],
@@ -42,13 +46,14 @@ class FileList:
self.debug_print = debug_print
self.files = files
self.dir = dir
+
+ # if None, 'allfiles' will be filled when used for first time
self.allfiles = allfiles
- # if None, it will be filled, when used for first time
# standard warning and debug functions, if no other given
def __warn (self, msg):
- sys.stderr.write ("warning: template: %s\n" % msg)
+ sys.stderr.write ("warning: %s\n" % msg)
def __debug_print (self, msg):
"""Print 'msg' to stdout if the global DEBUG (taken from the
@@ -59,130 +64,128 @@ class FileList:
print msg
- def process_line(self, line):
+ def process_line (self, line):
+
+ words = string.split (line)
+ action = words[0]
+
+ # First, check that the right number of words are present
+ # for the given action (which is the first word)
+ if action in ('include','exclude',
+ 'global-include','global-exclude'):
+ if len (words) < 2:
+ self.warn \
+ ("invalid template line: " +
+ "'%s' expects <pattern1> <pattern2> ..." %
+ action)
+ return
- words = string.split (line)
- action = words[0]
+ pattern_list = map(convert_path, words[1:])
- # First, check that the right number of words are present
- # for the given action (which is the first word)
- if action in ('include','exclude',
- 'global-include','global-exclude'):
- if len (words) < 2:
- self.warn \
- ("invalid template line: " +
- "'%s' expects <pattern1> <pattern2> ..." %
- action)
- return
+ elif action in ('recursive-include','recursive-exclude'):
+ if len (words) < 3:
+ self.warn \
+ ("invalid template line: " +
+ "'%s' expects <dir> <pattern1> <pattern2> ..." %
+ action)
+ return
- pattern_list = map(convert_path, words[1:])
+ dir = convert_path(words[1])
+ pattern_list = map (convert_path, words[2:])
- elif action in ('recursive-include','recursive-exclude'):
- if len (words) < 3:
- self.warn \
- ("invalid template line: " +
- "'%s' expects <dir> <pattern1> <pattern2> ..." %
- action)
- return
+ elif action in ('graft','prune'):
+ if len (words) != 2:
+ self.warn \
+ ("invalid template line: " +
+ "'%s' expects a single <dir_pattern>" %
+ action)
+ return
- dir = convert_path(words[1])
- pattern_list = map (convert_path, words[2:])
+ dir_pattern = convert_path (words[1])
- elif action in ('graft','prune'):
- if len (words) != 2:
+ else:
+ self.warn ("invalid template line: " +
+ "unknown action '%s'" % action)
+ return
+
+ # OK, now we know that the action is valid and we have the
+ # right number of words on the line for that action -- so we
+ # can proceed with minimal error-checking. Also, we have
+ # defined either (pattern), (dir and pattern), or
+ # (dir_pattern) -- so we don't have to spend any time
+ # digging stuff up out of 'words'.
+
+ if action == 'include':
+ self.debug_print("include " + string.join(pattern_list))
+ for pattern in pattern_list:
+ if not self.select_pattern (pattern, anchor=1):
+ self.warn ("no files found matching '%s'" %
+ pattern)
+
+ elif action == 'exclude':
+ self.debug_print("exclude " + string.join(pattern_list))
+ for pattern in pattern_list:
+ if not self.exclude_pattern (pattern, anchor=1):
+ self.warn (
+ "no previously-included files found matching '%s'"%
+ pattern)
+
+ elif action == 'global-include':
+ self.debug_print("global-include " + string.join(pattern_list))
+ for pattern in pattern_list:
+ if not self.select_pattern (pattern, anchor=0):
+ self.warn (("no files found matching '%s' " +
+ "anywhere in distribution") %
+ pattern)
+
+ elif action == 'global-exclude':
+ self.debug_print("global-exclude " + string.join(pattern_list))
+ for pattern in pattern_list:
+ if not self.exclude_pattern (pattern, anchor=0):
self.warn \
- ("invalid template line: " +
- "'%s' expects a single <dir_pattern>" %
- action)
- return
-
- dir_pattern = convert_path (words[1])
-
- else:
- self.warn ("invalid template line: " +
- "unknown action '%s'" % action)
- return
-
- # OK, now we know that the action is valid and we have the
- # right number of words on the line for that action -- so we
- # can proceed with minimal error-checking. Also, we have
- # defined either (pattern), (dir and pattern), or
- # (dir_pattern) -- so we don't have to spend any time
- # digging stuff up out of 'words'.
-
- if action == 'include':
- self.debug_print("include " + string.join(pattern_list))
- for pattern in pattern_list:
- if not self.select_pattern (pattern, anchor=1):
- self.warn ("no files found matching '%s'" %
- pattern)
-
- elif action == 'exclude':
- self.debug_print("exclude " + string.join(pattern_list))
- for pattern in pattern_list:
- if not self.exclude_pattern (pattern, anchor=1):
- self.warn (
- "no previously-included files found matching '%s'"%
- pattern)
-
- elif action == 'global-include':
- self.debug_print("global-include " + string.join(pattern_list))
- for pattern in pattern_list:
- if not self.select_pattern (pattern, anchor=0):
- self.warn (("no files found matching '%s' " +
- "anywhere in distribution") %
- pattern)
-
- elif action == 'global-exclude':
- self.debug_print("global-exclude " + string.join(pattern_list))
- for pattern in pattern_list:
- if not self.exclude_pattern (pattern, anchor=0):
- self.warn \
- (("no previously-included files matching '%s' " +
- "found anywhere in distribution") %
- pattern)
-
- elif action == 'recursive-include':
- self.debug_print("recursive-include %s %s" %
- (dir, string.join(pattern_list)))
- for pattern in pattern_list:
- if not self.select_pattern (pattern, prefix=dir):
- self.warn (("no files found matching '%s' " +
- "under directory '%s'") %
- (pattern, dir))
-
- elif action == 'recursive-exclude':
- self.debug_print("recursive-exclude %s %s" %
- (dir, string.join(pattern_list)))
- for pattern in pattern_list:
- if not self.exclude_pattern(pattern, prefix=dir):
- self.warn \
- (("no previously-included files matching '%s' " +
- "found under directory '%s'") %
- (pattern, dir))
-
- elif action == 'graft':
- self.debug_print("graft " + dir_pattern)
- if not self.select_pattern(None, prefix=dir_pattern):
- self.warn ("no directories found matching '%s'" %
- dir_pattern)
-
- elif action == 'prune':
- self.debug_print("prune " + dir_pattern)
- if not self.exclude_pattern(None, prefix=dir_pattern):
+ (("no previously-included files matching '%s' " +
+ "found anywhere in distribution") %
+ pattern)
+
+ elif action == 'recursive-include':
+ self.debug_print("recursive-include %s %s" %
+ (dir, string.join(pattern_list)))
+ for pattern in pattern_list:
+ if not self.select_pattern (pattern, prefix=dir):
+ self.warn (("no files found matching '%s' " +
+ "under directory '%s'") %
+ (pattern, dir))
+
+ elif action == 'recursive-exclude':
+ self.debug_print("recursive-exclude %s %s" %
+ (dir, string.join(pattern_list)))
+ for pattern in pattern_list:
+ if not self.exclude_pattern(pattern, prefix=dir):
self.warn \
- (("no previously-included directories found " +
- "matching '%s'") %
- dir_pattern)
- else:
- raise RuntimeError, \
- "this cannot happen: invalid action '%s'" % action
+ (("no previously-included files matching '%s' " +
+ "found under directory '%s'") %
+ (pattern, dir))
+
+ elif action == 'graft':
+ self.debug_print("graft " + dir_pattern)
+ if not self.select_pattern(None, prefix=dir_pattern):
+ self.warn ("no directories found matching '%s'" %
+ dir_pattern)
+
+ elif action == 'prune':
+ self.debug_print("prune " + dir_pattern)
+ if not self.exclude_pattern(None, prefix=dir_pattern):
+ self.warn \
+ (("no previously-included directories found " +
+ "matching '%s'") %
+ dir_pattern)
+ else:
+ raise RuntimeError, \
+ "this cannot happen: invalid action '%s'" % action
# process_line ()
-
-
def select_pattern (self, pattern,
anchor=1, prefix=None, is_regex=0):
"""Select strings (presumably filenames) from 'files' that match