[Python-checkins] CVS: distutils/distutils filelist.py,1.2,1.3

Greg Ward python-dev@python.org
Sat, 29 Jul 2000 17:21:39 -0700


Update of /cvsroot/python/distutils/distutils
In directory slayer.i.sourceforge.net:/tmp/cvs-serv15041

Modified Files:
	filelist.py 
Log Message:
Renamed 'process_line()' to 'process_template_line()', and factored out
'_parse_template_line()'.

Index: filelist.py
===================================================================
RCS file: /cvsroot/python/distutils/distutils/filelist.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** filelist.py	2000/07/30 00:08:13	1.2
--- filelist.py	2000/07/30 00:21:36	1.3
***************
*** 17,20 ****
--- 17,21 ----
  from glob import glob
  from distutils.util import convert_path
+ from distutils.errors import DistutilsTemplateError, DistutilsInternalError
  
  class FileList:
***************
*** 65,188 ****
  
      
!     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
  
!             pattern_list = map(convert_path, words[1:])
  
!         elif action in ('recursive-include','recursive-exclude'):
              if len (words) < 3:
!                 self.warn \
!                     ("invalid template line: " +
!                      "'%s' expects <dir> <pattern1> <pattern2> ..." %
!                      action)
!                 return
  
              dir = convert_path(words[1])
!             pattern_list = map (convert_path, words[2:])
  
!         elif action in ('graft','prune'):
              if len (words) != 2:
!                 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):
!                 self.warn \
!                     (("no previously-included directories found " +
!                       "matching '%s'") %
!                      dir_pattern)
          else:
!             raise RuntimeError, \
                    "this cannot happen: invalid action '%s'" % action
  
!     # process_line ()
  
  
--- 66,182 ----
  
      
!     def _parse_template_line (self, line):
          words = string.split (line)
          action = words[0]
+ 
+         patterns = dir = dir_pattern = None
  
!         if action in ('include', 'exclude',
!                       'global-include', 'global-exclude'):
              if len (words) < 2:
!                 raise DistutilsTemplateError, \
!                       "'%s' expects <pattern1> <pattern2> ..." % action
  
!             patterns = map(convert_path, words[1:])
  
!         elif action in ('recursive-include', 'recursive-exclude'):
              if len (words) < 3:
!                 raise DistutilsTemplateError, \
!                       "'%s' expects <dir> <pattern1> <pattern2> ..." % action
  
              dir = convert_path(words[1])
!             patterns = map(convert_path, words[2:])
  
!         elif action in ('graft', 'prune'):
              if len (words) != 2:
!                 raise DistutilsTemplateError, \
!                      "'%s' expects a single <dir_pattern>" % action
  
!             dir_pattern = convert_path(words[1])
  
          else:
!             raise DistutilsTemplateError, "unknown action '%s'" % action
! 
!         return (action, pattern, dir, dir_pattern)
! 
!     # _parse_template_line ()
!     
! 
!     def process_template_line (self, line):    
  
+         # Parse the line: split it up, make sure the right number of words
+         # are there, and return the relevant words.  'action' is always
+         # defined: it's the first word of the line.  Which of the other
+         # three are defined depends on the action; it'll be either
+         # patterns, (dir and patterns), or (dir_pattern).
+         (action, patterns, dir, dir_pattern) = self._parse_template_line(line)
+ 
          # 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.
          if action == 'include':
!             self.debug_print("include " + string.join(patterns))
!             for pattern in patterns:
                  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(patterns))
!             for pattern in patterns:
                  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(patterns))
!             for pattern in patterns:
                  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(patterns))
!             for pattern in patterns:
                  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(patterns)))
!             for pattern in patterns:
                  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(patterns)))
!             for pattern in patterns:
                  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):
!                 self.warn(("no previously-included directories found " +
!                            "matching '%s'") %
!                           dir_pattern)
          else:
!             raise DistutilsInternalError, \
                    "this cannot happen: invalid action '%s'" % action
  
!     # process_template_line ()