From 3459381e2a271981e09441752962b748869adf5d Mon Sep 17 00:00:00 2001 From: Greg Ward Date: Sat, 24 Jun 2000 01:23:37 +0000 Subject: [PATCH] Changed so all the help-generating functions are defined, at module-level, in the module of the command classes that have command-specific help options. This lets us keep the principle of lazily importing the ccompiler module, and also gets away from defining non-methods at class level. --- Lib/distutils/command/bdist.py | 38 +++++++++++++++-------------- Lib/distutils/command/build.py | 7 +++++- Lib/distutils/command/build_clib.py | 7 +++++- Lib/distutils/command/build_ext.py | 10 +++++--- Lib/distutils/command/sdist.py | 35 +++++++++++++------------- 5 files changed, 56 insertions(+), 41 deletions(-) diff --git a/Lib/distutils/command/bdist.py b/Lib/distutils/command/bdist.py index 164699362dd..47d4cbc9652 100644 --- a/Lib/distutils/command/bdist.py +++ b/Lib/distutils/command/bdist.py @@ -14,6 +14,18 @@ from distutils.errors import * from distutils.util import get_platform +def show_formats (): + """Print list of available formats (arguments to "--format" option). + """ + from distutils.fancy_getopt import FancyGetopt + formats=[] + for format in bdist.format_commands: + formats.append(("formats=" + format, None, + bdist.format_command[format][1])) + pretty_printer = FancyGetopt(formats) + pretty_printer.print_help("List of available distribution formats:") + + class bdist (Command): description = "create a built (binary) distribution" @@ -24,6 +36,11 @@ class bdist (Command): "formats for distribution (comma-separated list)"), ] + help_options = [ + ('help-formats', None, + "lists available distribution formats", show_formats), + ] + # The following commands do not take a format option from bdist no_format_option = ('bdist_rpm',) @@ -38,24 +55,9 @@ class bdist (Command): 'ztar': ('bdist_dumb', "compressed tar file"), 'tar': ('bdist_dumb', "tar file"), 'zip': ('bdist_dumb', "ZIP file"), - } - - def show_formats (): - """Print list of available formats (arguments to "--format" option). - """ - from distutils.fancy_getopt import FancyGetopt - formats=[] - for format in bdist.format_command.keys(): - formats.append(("formats="+format, None, - bdist.format_command[format][1])) - formats.sort() - pretty_printer = FancyGetopt(formats) - pretty_printer.print_help("List of available distribution formats:") - - help_options = [ - ('help-formats', None, - "lists available distribution formats",show_formats), - ] + } + # establish the preferred order + format_commands = ['rpm', 'gztar', 'bztar', 'ztar', 'tar', 'zip'] def initialize_options (self): diff --git a/Lib/distutils/command/build.py b/Lib/distutils/command/build.py index d5513fc737a..1e87f23bbc4 100644 --- a/Lib/distutils/command/build.py +++ b/Lib/distutils/command/build.py @@ -9,7 +9,12 @@ __revision__ = "$Id$" import sys, os from distutils.core import Command from distutils.util import get_platform -from distutils.ccompiler import show_compilers + + +def show_compilers (): + from distutils.ccompiler import show_compilers + show_compilers() + class build (Command): diff --git a/Lib/distutils/command/build_clib.py b/Lib/distutils/command/build_clib.py index 9a82ac09174..7106882d792 100644 --- a/Lib/distutils/command/build_clib.py +++ b/Lib/distutils/command/build_clib.py @@ -23,7 +23,11 @@ import os, string from types import * from distutils.core import Command from distutils.errors import * -from distutils.ccompiler import new_compiler,show_compilers + + +def show_compilers (): + from distutils.ccompiler import show_compilers + show_compilers() class build_clib (Command): @@ -102,6 +106,7 @@ class build_clib (Command): return # Yech -- this is cut 'n pasted from build_ext.py! + from distutils.ccompiler import new_compiler self.compiler = new_compiler (compiler=self.compiler, verbose=self.verbose, dry_run=self.dry_run, diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index f3ff1571838..6b7ec74190e 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -14,7 +14,6 @@ from distutils.core import Command from distutils.errors import * from distutils.dep_util import newer_group from distutils.extension import Extension -from distutils.ccompiler import show_compilers # An extension name is just a dot-separated list of Python NAMEs (ie. # the same as a fully-qualified module name). @@ -22,6 +21,11 @@ extension_name_re = re.compile \ (r'^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$') +def show_compilers (): + from distutils.ccompiler import show_compilers + show_compilers() + + class build_ext (Command): description = "build C/C++ extensions (compile/link to build directory)" @@ -73,12 +77,12 @@ class build_ext (Command): ('compiler=', 'c', "specify the compiler type"), ] + help_options = [ ('help-compiler', None, - "lists available compilers",show_compilers), + "list available compilers", show_compilers), ] - def initialize_options (self): self.extensions = None self.build_lib = None diff --git a/Lib/distutils/command/sdist.py b/Lib/distutils/command/sdist.py index 93e53bbd66b..5627ebb9e5f 100644 --- a/Lib/distutils/command/sdist.py +++ b/Lib/distutils/command/sdist.py @@ -13,11 +13,27 @@ from glob import glob from distutils.core import Command from distutils.util import \ convert_path, create_tree, remove_tree, newer, write_file, \ - check_archive_formats, ARCHIVE_FORMATS + check_archive_formats from distutils.text_file import TextFile from distutils.errors import DistutilsExecError, DistutilsOptionError +def show_formats (): + """Print all possible values for the 'formats' option (used by + the "--help-formats" command-line option). + """ + from distutils.fancy_getopt import FancyGetopt + from distutils.archive_util import ARCHIVE_FORMATS + formats=[] + for format in ARCHIVE_FORMATS.keys(): + formats.append(("formats=" + format, None, + ARCHIVE_FORMATS[format][2])) + formats.sort() + pretty_printer = FancyGetopt(formats) + pretty_printer.print_help( + "List of available source distribution formats:") + + class sdist (Command): description = "create a source distribution (tarball, zip file, etc.)" @@ -43,22 +59,6 @@ class sdist (Command): ] - # XXX ugh: this has to precede the 'help_options' list, because - # it is mentioned there -- also, this is not a method, even though - # it's defined in a class: double-ugh! - def show_formats (): - """Print all possible values for the 'formats' option -- used by - the "--help-formats" command-line option. - """ - from distutils.fancy_getopt import FancyGetopt - formats=[] - for format in ARCHIVE_FORMATS.keys(): - formats.append(("formats="+format,None,ARCHIVE_FORMATS[format][2])) - formats.sort() - pretty_printer = FancyGetopt(formats) - pretty_printer.print_help( - "List of available source distribution formats:") - help_options = [ ('help-formats', None, "list available distribution formats", show_formats), @@ -69,7 +69,6 @@ class sdist (Command): default_format = { 'posix': 'gztar', 'nt': 'zip' } - def initialize_options (self): # 'template' and 'manifest' are, respectively, the names of # the manifest template and manifest file.