From: Greg Ward Date: Mon, 10 Apr 2000 01:30:44 +0000 (+0000) Subject: Added a check for the 'force' attribute in '__getattr__()' -- better than X-Git-Tag: v1.6a2~58 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e9613ae05fb722ff8121b2762df24c06e510a73d;p=python Added a check for the 'force' attribute in '__getattr__()' -- better than crashing when self.force not defined. Revise 'copy_file()' and 'copy_tree()' docstrings accordingly. Remove 'hasattr()' check for 'self.force' from 'make_file()'. --- diff --git a/Lib/distutils/cmd.py b/Lib/distutils/cmd.py index 76a76919cd..16008c4fd0 100644 --- a/Lib/distutils/cmd.py +++ b/Lib/distutils/cmd.py @@ -79,6 +79,11 @@ class Command: return getattr (self.distribution, attr) else: return myval + + # Needed because some Command methods assume 'self.force' exists, + # but not all commands define 'self.force'. Ugh. + elif attr == 'force': + return None else: raise AttributeError, attr @@ -307,8 +312,9 @@ class Command: def copy_file (self, infile, outfile, preserve_mode=1, preserve_times=1, link=None, level=1): - """Copy a file respecting verbose, dry-run and force flags (this - should only be used by commands that define 'self.force'!).""" + """Copy a file respecting verbose, dry-run and force flags. (The + former two default to whatever is in the Distribution object, and + the latter defaults to false for commands that don't define it.)""" return util.copy_file (infile, outfile, preserve_mode, preserve_times, @@ -322,8 +328,7 @@ class Command: preserve_mode=1, preserve_times=1, preserve_symlinks=0, level=1): """Copy an entire directory tree respecting verbose, dry-run, - and force flags (again, should only be used by commands - that define 'self.force').""" + and force flags.""" return util.copy_tree (infile, outfile, preserve_mode,preserve_times,preserve_symlinks, @@ -381,8 +386,7 @@ class Command: # 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 ((hasattr(self,'force') and self.force) or - util.newer_group (infiles, outfile)): + if self.force or util.newer_group (infiles, outfile): self.execute (func, args, exec_msg, level) # Otherwise, print the "skip" message