parameters: (self, infiles, outfile, func, args,
                    exec_msg=None, skip_msg=None, level=1)
docstring: Special case of 'execute()' for operations that process one or
          more input files and generate one output file.  Works just like
          'execute()', except the operation is skipped and a different
          message printed if 'outfile' already exists and is newer than all
          files listed in 'infiles'.  If the command defined 'self.force',
          and it is true, then the command is unconditionally run -- does no
          timestamp checks.
docstring_summary: Special case of 'execute()' for operations that process one or
          more input files and generate one output file.  Works just like
          'execute()', except the operation is skipped and a different
          message printed if 'outfile' already exists and is newer than all
          files listed in 'infiles'.  If the command defined 'self.force',
          and it is true, then the command is unconditionally run -- does no
          timestamp checks.
docstring_tokens: Special case of execute () for operations that process one or more input files and generate one output file . Works just like execute () except the operation is skipped and a different message printed if outfile already exists and is newer than all files listed in infiles . If the command defined self . force and it is true then the command is unconditionally run -- does no timestamp checks .
function: def make_file(self, infiles, outfile, func, args,
                    exec_msg=None, skip_msg=None, level=1):
          """Special case of 'execute()' for operations that process one or
          more input files and generate one output file.  Works just like
          'execute()', except the operation is skipped and a different
          message printed if 'outfile' already exists and is newer than all
          files listed in 'infiles'.  If the command defined 'self.force',
          and it is true, then the command is unconditionally run -- does no
          timestamp checks.
          """
          if skip_msg is None:
              skip_msg = "skipping %s (inputs unchanged)" % outfile
  
          # Allow 'infiles' to be a single string
          if isinstance(infiles, str):
              infiles = (infiles,)
          elif not isinstance(infiles, (list, tuple)):
              raise TypeError, \
                    "'infiles' must be a string, or a list or tuple of strings"
  
          if exec_msg is None:
              exec_msg = "generating %s from %s" % \
                         (outfile, ', '.join(infiles))
  
          # If 'outfile' must be regenerated (either because it doesn't
          # exist, is out-of-date, or the 'force' flag is true) then
          # perform the action that presumably regenerates it
          if self.force or dep_util.newer_group(infiles, outfile):
              self.execute(func, args, exec_msg, level)
  
          # Otherwise, print the "skip" message
          else:
              log.debug(skip_msg)
function_tokens: def make_file ( self , infiles , outfile , func , args , exec_msg = None , skip_msg = None , level = 1 ) : if skip_msg is None : skip_msg = "skipping %s (inputs unchanged)" % outfile # Allow 'infiles' to be a single string if isinstance ( infiles , str ) : infiles = ( infiles , ) elif not isinstance ( infiles , ( list , tuple ) ) : raise TypeError , "'infiles' must be a string, or a list or tuple of strings" if exec_msg is None : exec_msg = "generating %s from %s" % ( outfile , ', ' . join ( infiles ) ) # If 'outfile' must be regenerated (either because it doesn't # exist, is out-of-date, or the 'force' flag is true) then # perform the action that presumably regenerates it if self . force or dep_util . newer_group ( infiles , outfile ) : self . execute ( func , args , exec_msg , level ) # Otherwise, print the "skip" message else : log . debug ( skip_msg )