[Python-checkins] distutils2 (merge default -> default): Branch merge, reverting some of Alexis’ changes.

eric.araujo python-checkins at python.org
Tue Sep 13 13:43:49 CEST 2011


http://hg.python.org/distutils2/rev/eee8d2a46e62
changeset:   1144:eee8d2a46e62
parent:      1140:e0098d4649a6
parent:      1143:a8ef48dacaff
user:        Éric Araujo <merwok at netwok.org>
date:        Tue Sep 13 13:28:48 2011 +0200
summary:
  Branch merge, reverting some of Alexis’ changes.

The print statement fixes that were in my branch override the print(u'')
calls added by Alexis; the import at function scope were removed for the
usual reasons; d2._backport.hashlib is used if hashlib is not available
instead of md5.

files:
  distutils2/_backport/tests/test_sysconfig.py  |  13 +-
  distutils2/command/install_data.py            |   2 +-
  distutils2/command/register.py                |  16 +-
  distutils2/compiler/bcppcompiler.py           |   6 +-
  distutils2/create.py                          |  38 ++++----
  distutils2/depgraph.py                        |  20 ++--
  distutils2/dist.py                            |  24 ++--
  distutils2/run.py                             |  43 ++++-----
  distutils2/tests/__init__.py                  |   8 +
  distutils2/tests/support.py                   |  11 +-
  distutils2/tests/test_command_build_ext.py    |   4 +-
  distutils2/tests/test_command_install_dist.py |  10 +-
  distutils2/tests/test_command_register.py     |  12 +-
  distutils2/util.py                            |  30 +++---
  14 files changed, 125 insertions(+), 112 deletions(-)


diff --git a/distutils2/_backport/tests/test_sysconfig.py b/distutils2/_backport/tests/test_sysconfig.py
--- a/distutils2/_backport/tests/test_sysconfig.py
+++ b/distutils2/_backport/tests/test_sysconfig.py
@@ -15,7 +15,7 @@
         get_scheme_names, _main, _SCHEMES)
 
 from distutils2.tests import unittest, TESTFN, unlink
-from distutils2.tests.support import EnvironGuard
+from distutils2.tests.support import EnvironRestorer
 from test.test_support import TESTFN, unlink
 
 try:
@@ -24,7 +24,10 @@
     skip_unless_symlink = unittest.skip(
         'requires test.test_support.skip_unless_symlink')
 
-class TestSysConfig(EnvironGuard, unittest.TestCase):
+
+class TestSysConfig(EnvironRestorer, unittest.TestCase):
+
+    restore_environ = ['MACOSX_DEPLOYMENT_TARGET', 'PATH']
 
     def setUp(self):
         super(TestSysConfig, self).setUp()
@@ -245,13 +248,13 @@
         # On Windows, the EXE needs to know where pythonXY.dll is at so we have
         # to add the directory to the path.
         if sys.platform == 'win32':
-            os.environ['Path'] = ';'.join((
-                os.path.dirname(sys.executable), os.environ['Path']))
+            os.environ['PATH'] = ';'.join((
+                os.path.dirname(sys.executable), os.environ['PATH']))
 
         # Issue 7880
         def get(python):
             cmd = [python, '-c',
-                   'import sysconfig; print(sysconfig.get_platform())']
+                   'import sysconfig; print sysconfig.get_platform()']
             p = subprocess.Popen(cmd, stdout=subprocess.PIPE, env=os.environ)
             return p.communicate()
         real = os.path.realpath(sys.executable)
diff --git a/distutils2/command/install_data.py b/distutils2/command/install_data.py
--- a/distutils2/command/install_data.py
+++ b/distutils2/command/install_data.py
@@ -4,10 +4,10 @@
 
 import os, sys
 from shutil import Error
-from distutils2._backport.sysconfig import get_paths, format_value
 from distutils2 import logger
 from distutils2.util import convert_path
 from distutils2.command.cmd import Command
+from distutils2._backport.sysconfig import get_paths, format_value
 
 
 class install_data(Command):
diff --git a/distutils2/command/register.py b/distutils2/command/register.py
--- a/distutils2/command/register.py
+++ b/distutils2/command/register.py
@@ -144,16 +144,16 @@
  4. quit
 Your selection [default 1]: ''')
 
-            choice = input()
+            choice = raw_input()
             if not choice:
                 choice = '1'
             elif choice not in choices:
-                print('Please choose one of the four options!')
+                print 'Please choose one of the four options!'
 
         if choice == '1':
             # get the username and password
             while not username:
-                username = input('Username: ')
+                username = raw_input('Username: ')
             while not password:
                 password = getpass.getpass('Password: ')
 
@@ -179,7 +179,7 @@
                         get_pypirc_path())
                     choice = 'X'
                     while choice.lower() not in 'yn':
-                        choice = input('Save your login (y/N)?')
+                        choice = raw_input('Save your login (y/N)?')
                         if not choice:
                             choice = 'n'
                     if choice.lower() == 'y':
@@ -190,7 +190,7 @@
             data['name'] = data['password'] = data['email'] = ''
             data['confirm'] = None
             while not data['name']:
-                data['name'] = input('Username: ')
+                data['name'] = raw_input('Username: ')
             while data['password'] != data['confirm']:
                 while not data['password']:
                     data['password'] = getpass.getpass('Password: ')
@@ -199,9 +199,9 @@
                 if data['password'] != data['confirm']:
                     data['password'] = ''
                     data['confirm'] = None
-                    print("Password and confirm don't match!")
+                    print "Password and confirm don't match!"
             while not data['email']:
-                data['email'] = input('   EMail: ')
+                data['email'] = raw_input('   EMail: ')
             code, result = self.post_to_server(data)
             if code != 200:
                 logger.info('server response (%s): %s', code, result)
@@ -212,7 +212,7 @@
             data = {':action': 'password_reset'}
             data['email'] = ''
             while not data['email']:
-                data['email'] = input('Your email address: ')
+                data['email'] = raw_input('Your email address: ')
             code, result = self.post_to_server(data)
             logger.info('server response (%s): %s', code, result)
 
diff --git a/distutils2/compiler/bcppcompiler.py b/distutils2/compiler/bcppcompiler.py
--- a/distutils2/compiler/bcppcompiler.py
+++ b/distutils2/compiler/bcppcompiler.py
@@ -351,7 +351,5 @@
                 self.mkpath(os.path.dirname(output_file))
             try:
                 self.spawn(pp_args)
-            except PackagingExecError:
-                msg = sys.exc_info()[1]
-                print(msg)
-                raise CompileError(msg)
+            except PackagingExecError, exc:
+                raise CompileError(exc)
diff --git a/distutils2/create.py b/distutils2/create.py
--- a/distutils2/create.py
+++ b/distutils2/create.py
@@ -130,7 +130,7 @@
         if answer and answer[0].lower() in 'yn':
             return answer[0].lower()
 
-        print('\nERROR: You must select "Y" or "N".\n')
+        print '\nERROR: You must select "Y" or "N".\n'
 
 
 def ask(question, default=None, helptext=None, required=True,
@@ -154,19 +154,19 @@
 
         line = sys.stdin.readline().strip()
         if line == '?':
-            print('=' * 70)
-            print(helptext)
-            print('=' * 70)
+            print '=' * 70
+            print helptext
+            print '=' * 70
             continue
         if default and not line:
             return default
         if not line and required:
-            print('*' * 70)
-            print('This value cannot be empty.')
-            print('===========================')
+            print '*' * 70
+            print 'This value cannot be empty.'
+            print '==========================='
             if helptext:
-                print(helptext)
-            print('*' * 70)
+                print helptext
+            print '*' * 70
             continue
         return line
 
@@ -273,9 +273,9 @@
     def _write_cfg(self):
         if os.path.exists(_FILENAME):
             if os.path.exists('%s.old' % _FILENAME):
-                print("ERROR: %(name)s.old backup exists, please check that "
-                      "current %(name)s is correct and remove %(name)s.old" %
-                      {'name': _FILENAME})
+                print ('ERROR: %(name)s.old backup exists, please check that '
+                       'current %(name)s is correct and remove %(name)s.old' %
+                       {'name': _FILENAME})
                 return
             shutil.move(_FILENAME, '%s.old' % _FILENAME)
 
@@ -324,7 +324,7 @@
         fp.close()
 
         os.chmod(_FILENAME, 00644)
-        print('Wrote "%s".' % _FILENAME)
+        print 'Wrote %r.' % _FILENAME
 
     def convert_py_to_cfg(self):
         """Generate a setup.cfg from an existing setup.py.
@@ -631,8 +631,8 @@
                         break
 
             if len(found_list) == 0:
-                print('ERROR: Could not find a matching license for "%s"' %
-                      license)
+                print ('ERROR: Could not find a matching license for "%s"' %
+                       license)
                 continue
 
             question = 'Matching licenses:\n\n'
@@ -653,8 +653,8 @@
             try:
                 index = found_list[int(choice) - 1]
             except ValueError:
-                print("ERROR: Invalid selection, type a number from the list "
-                      "above.")
+                print ('ERROR: Invalid selection, type a number from the list '
+                       'above.')
 
             classifiers.add(_CLASSIFIERS_LIST[index])
 
@@ -677,8 +677,8 @@
                     classifiers.add(key)
                     return
                 except (IndexError, ValueError):
-                    print("ERROR: Invalid selection, type a single digit "
-                          "number.")
+                    print ('ERROR: Invalid selection, type a single digit '
+                           'number.')
 
 
 def main():
diff --git a/distutils2/depgraph.py b/distutils2/depgraph.py
--- a/distutils2/depgraph.py
+++ b/distutils2/depgraph.py
@@ -238,19 +238,19 @@
         e = sys.exc_info()[1]
         tempout.seek(0)
         tempout = tempout.read()
-        print(u'Could not generate the graph')
-        print(tempout)
-        print(e)
+        print 'Could not generate the graph'
+        print tempout
+        print e
         sys.exit(1)
 
     for dist, reqs in graph.missing.items():
         if len(reqs) > 0:
-            print(u"Warning: Missing dependencies for %r:" % dist.name,
-                  ", ".join(reqs))
+            print 'Warning: Missing dependencies for %r:' % dist.name, \
+                  ', '.join(reqs)
     # XXX replace with argparse
     if len(sys.argv) == 1:
-        print(u'Dependency graph:')
-        print(u'   ', repr(graph).replace(u'\n', u'\n    '))
+        print 'Dependency graph:'
+        print '   ', repr(graph).replace('\n', '\n    ')
         sys.exit(0)
     elif len(sys.argv) > 1 and sys.argv[1] in ('-d', '--dot'):
         if len(sys.argv) > 2:
@@ -263,11 +263,11 @@
         f.close()
         tempout.seek(0)
         tempout = tempout.read()
-        print(tempout)
-        print('Dot file written at %r' % filename)
+        print tempout
+        print 'Dot file written at %r' % filename
         sys.exit(0)
     else:
-        print('Supported option: -d [filename]')
+        print 'Supported option: -d [filename]'
         sys.exit(1)
 
 
diff --git a/distutils2/dist.py b/distutils2/dist.py
--- a/distutils2/dist.py
+++ b/distutils2/dist.py
@@ -511,14 +511,14 @@
                 options = self.global_options
             parser.set_option_table(options)
             parser.print_help(self.common_usage + "\nGlobal options:")
-            print(u'')
+            print
 
         if display_options:
             parser.set_option_table(self.display_options)
             parser.print_help(
                 "Information display options (just display " +
                 "information, ignore any commands)")
-            print(u'')
+            print
 
         for command in self.commands:
             if isinstance(command, type) and issubclass(command, Command):
@@ -531,9 +531,9 @@
             else:
                 parser.set_option_table(cls.user_options)
             parser.print_help("Options for %r command:" % cls.__name__)
-            print(u'')
+            print
 
-        print(gen_usage(self.script_name))
+        print gen_usage(self.script_name)
 
     def handle_display_options(self, option_order):
         """If there were any non-global "display-only" options
@@ -546,8 +546,8 @@
         # we ignore "foo bar").
         if self.help_commands:
             self.print_commands()
-            print(u'')
-            print(gen_usage(self.script_name))
+            print
+            print gen_usage(self.script_name)
             return 1
 
         # If user supplied any of the "display metadata" options, then
@@ -563,12 +563,12 @@
                 opt = opt.replace('-', '_')
                 value = self.metadata[opt]
                 if opt in ('keywords', 'platform'):
-                    print(','.join(value))
+                    print ','.join(value)
                 elif opt in ('classifier', 'provides', 'requires',
                              'obsoletes'):
-                    print('\n'.join(value))
+                    print '\n'.join(value)
                 else:
-                    print(value)
+                    print value
                 any_display_options = True
 
         return any_display_options
@@ -577,14 +577,14 @@
         """Print a subset of the list of all commands -- used by
         'print_commands()'.
         """
-        print(header + ":")
+        print header + ":"
 
         for cmd in commands:
             cls = self.cmdclass.get(cmd) or get_command_class(cmd)
             description = getattr(cls, 'description',
                                   '(no description available)')
 
-            print("  %-*s  %s" % (max_length, cmd, description))
+            print "  %-*s  %s" % (max_length, cmd, description)
 
     def _get_command_groups(self):
         """Helper function to retrieve all the command class names divided
@@ -614,7 +614,7 @@
                                 "Standard commands",
                                 max_length)
         if extra_commands:
-            print(u'')
+            print
             self.print_command_list(extra_commands,
                                     "Extra commands",
                                     max_length)
diff --git a/distutils2/run.py b/distutils2/run.py
--- a/distutils2/run.py
+++ b/distutils2/run.py
@@ -10,7 +10,9 @@
 from distutils2.dist import Distribution
 from distutils2.util import _is_archive_file, generate_setup_py
 from distutils2.command import get_command_class, STANDARD_COMMANDS
+from distutils2.install import install, install_local_project, remove
 from distutils2.database import get_distribution, get_distributions
+from distutils2.depgraph import generate_graph
 from distutils2.fancy_getopt import FancyGetopt
 from distutils2.errors import (PackagingArgError, PackagingError,
                               PackagingModuleError, PackagingClassError,
@@ -197,7 +199,7 @@
         def wrapper(*args, **kwargs):
             f_args = args[1]
             if '--help' in f_args or '-h' in f_args:
-                print(self.help_msg)
+                print self.help_msg
                 return
             return f(*args, **kwargs)
         return wrapper
@@ -217,7 +219,6 @@
 
 @action_help(graph_usage)
 def _graph(dispatcher, args, **kw):
-    from distutils2.depgraph import generate_graph
     name = args[1]
     dist = get_distribution(name, use_egg_info=True)
     if dist is None:
@@ -226,12 +227,11 @@
     else:
         dists = get_distributions(use_egg_info=True)
         graph = generate_graph(dists)
-        print(graph.repr_node(dist))
+        print graph.repr_node(dist)
 
 
 @action_help(install_usage)
 def _install(dispatcher, args, **kw):
-    from distutils2.install import install, install_local_project
     # first check if we are in a source directory
     if len(args) < 2:
         # are we inside a project dir?
@@ -279,18 +279,17 @@
 
     for key in keys:
         if key in metadata:
-            print(metadata._convert_name(key) + ':')
+            print metadata._convert_name(key) + ':'
             value = metadata[key]
             if isinstance(value, list):
                 for v in value:
-                    print('   ', v)
+                    print '   ', v
             else:
-                print('   ', value.replace('\n', '\n    '))
+                print '   ', value.replace('\n', '\n    ')
 
 
 @action_help(remove_usage)
 def _remove(distpatcher, args, **kw):
-    from distutils2.install import remove
     opts = _parse_args(args[1:], 'y', [])
     if 'y' in opts:
         auto_confirm = True
@@ -316,14 +315,14 @@
     commands = STANDARD_COMMANDS  # + extra commands
 
     if args == ['--list-commands']:
-        print('List of available commands:')
+        print 'List of available commands:'
         cmds = sorted(commands)
 
         for cmd in cmds:
             cls = dispatcher.cmdclass.get(cmd) or get_command_class(cmd)
             desc = getattr(cls, 'description',
                             '(no description available)')
-            print('  %s: %s' % (cmd, desc))
+            print '  %s: %s' % (cmd, desc)
         return
 
     while args:
@@ -361,7 +360,7 @@
 
     number = 0
     for dist in results:
-        print('%r %s (from %r)' % (dist.name, dist.version, dist.path))
+        print '%r %s (from %r)' % (dist.name, dist.version, dist.path)
         number += 1
 
     if number == 0:
@@ -574,18 +573,18 @@
         # late import because of mutual dependence between these modules
         from distutils2.command.cmd import Command
 
-        print('Usage: pysetup [options] action [action_options]')
-        print(u'')
+        print 'Usage: pysetup [options] action [action_options]'
+        print
         if global_options_:
             self.print_usage(self.parser)
-            print(u'')
+            print
 
         if display_options_:
             parser.set_option_table(display_options)
             parser.print_help(
                 "Information display options (just display " +
                 "information, ignore any commands)")
-            print(u'')
+            print
 
         for command in commands:
             if isinstance(command, type) and issubclass(command, Command):
@@ -599,15 +598,15 @@
                 parser.set_option_table(cls.user_options)
 
             parser.print_help("Options for %r command:" % cls.__name__)
-            print(u'')
+            print
 
     def _show_command_help(self, command):
         if isinstance(command, basestring):
             command = get_command_class(command)
 
         desc = getattr(command, 'description', '(no description available)')
-        print('Description:', desc)
-        print(u'')
+        print 'Description:', desc
+        print
 
         if (hasattr(command, 'help_options') and
             isinstance(command.help_options, list)):
@@ -617,7 +616,7 @@
             self.parser.set_option_table(command.user_options)
 
         self.parser.print_help("Options:")
-        print(u'')
+        print
 
     def _get_command_groups(self):
         """Helper function to retrieve all the command class names divided
@@ -644,7 +643,7 @@
 
         self.print_command_list(std_commands, "Standard commands", max_length)
         if extra_commands:
-            print(u'')
+            print
             self.print_command_list(extra_commands, "Extra commands",
                                     max_length)
 
@@ -652,14 +651,14 @@
         """Print a subset of the list of all commands -- used by
         'print_commands()'.
         """
-        print(header + ":")
+        print header + ":"
 
         for cmd in commands:
             cls = self.cmdclass.get(cmd) or get_command_class(cmd)
             description = getattr(cls, 'description',
                                   '(no description available)')
 
-            print("  %-*s  %s" % (max_length, cmd, description))
+            print "  %-*s  %s" % (max_length, cmd, description)
 
     def __call__(self):
         if self.action is None:
diff --git a/distutils2/tests/__init__.py b/distutils2/tests/__init__.py
--- a/distutils2/tests/__init__.py
+++ b/distutils2/tests/__init__.py
@@ -16,6 +16,7 @@
 import os
 import sys
 import unittest2 as unittest
+from distutils2.tests.support import TESTFN
 
 # XXX move helpers to support, add tests for them, remove things that
 # duplicate test.support (or keep them for the backport; needs thinking)
@@ -130,3 +131,10 @@
         del sys.modules[name]
     except KeyError:
         pass
+
+
+def unlink(filename):
+    try:
+        os.unlink(filename)
+    except OSError:
+        pass
diff --git a/distutils2/tests/support.py b/distutils2/tests/support.py
--- a/distutils2/tests/support.py
+++ b/distutils2/tests/support.py
@@ -326,9 +326,9 @@
         except UnicodeEncodeError:
             pass
         else:
-            print('WARNING: The filename %r CAN be encoded by the filesystem encoding (%s). '
-                  'Unicode filename tests may not be effective'
-                  % (TESTFN_UNENCODABLE, TESTFN_ENCODING))
+            print ('WARNING: The filename %r CAN be encoded by the filesystem encoding (%s). '
+                   'Unicode filename tests may not be effective'
+                   % (TESTFN_UNENCODABLE, TESTFN_ENCODING))
             TESTFN_UNENCODABLE = None
 # Mac OS X denies unencodable filenames (invalid utf-8)
 elif sys.platform != 'darwin':
@@ -503,3 +503,8 @@
     except KeyError:
         pass
 
+try:
+    from test.test_support import skip_unless_symlink
+except ImportError:
+    skip_unless_symlink = unittest.skip(
+        'requires test.test_support.skip_unless_symlink')
diff --git a/distutils2/tests/test_command_build_ext.py b/distutils2/tests/test_command_build_ext.py
--- a/distutils2/tests/test_command_build_ext.py
+++ b/distutils2/tests/test_command_build_ext.py
@@ -465,8 +465,8 @@
     src = _get_source_filename()
     if not os.path.exists(src):
         if verbose:
-            print('test_command_build_ext: Cannot find source code (test'
-                  ' must run in python build dir)')
+            print ('test_command_build_ext: Cannot find source code (test'
+                   ' must run in python build dir)')
         return unittest.TestSuite()
     else:
         return unittest.makeSuite(BuildExtTestCase)
diff --git a/distutils2/tests/test_command_install_dist.py b/distutils2/tests/test_command_install_dist.py
--- a/distutils2/tests/test_command_install_dist.py
+++ b/distutils2/tests/test_command_install_dist.py
@@ -3,17 +3,17 @@
 import os
 import sys
 
-from sysconfig import (get_scheme_names, get_config_vars,
-                       _SCHEMES, get_config_var, get_path)
-
-_CONFIG_VARS = get_config_vars()
-
 from distutils2.command.install_dist import install_dist
 from distutils2.dist import Distribution
 from distutils2.errors import PackagingOptionError
 
 from distutils2.tests import unittest, support
 
+from distutils2._backport.sysconfig import (
+    get_scheme_names, get_config_vars, _SCHEMES, get_config_var, get_path)
+
+_CONFIG_VARS = get_config_vars()
+
 
 class InstallTestCase(support.TempdirManager,
                       support.LoggingCatcher,
diff --git a/distutils2/tests/test_command_register.py b/distutils2/tests/test_command_register.py
--- a/distutils2/tests/test_command_register.py
+++ b/distutils2/tests/test_command_register.py
@@ -120,7 +120,7 @@
         # Password : 'password'
         # Save your login (y/N)? : 'y'
         inputs = Inputs('1', 'tarek', 'y')
-        register_module.input = inputs
+        register_module.raw_input = inputs
         cmd.ensure_finalized()
         cmd.run()
 
@@ -168,7 +168,7 @@
         # this test runs choice 2
         cmd = self._get_cmd()
         inputs = Inputs('2', 'tarek', 'tarek at ziade.org')
-        register_module.input = inputs
+        register_module.raw_input = inputs
         # let's run the command
         # FIXME does this send a real request? use a mock server
         cmd.ensure_finalized()
@@ -185,7 +185,7 @@
         # this test runs choice 3
         cmd = self._get_cmd()
         inputs = Inputs('3', 'tarek at ziade.org')
-        register_module.input = inputs
+        register_module.raw_input = inputs
         cmd.ensure_finalized()
         cmd.run()
 
@@ -208,7 +208,7 @@
         cmd.ensure_finalized()
         cmd.strict = True
         inputs = Inputs('1', 'tarek', 'y')
-        register_module.input = inputs
+        register_module.raw_input = inputs
         self.assertRaises(PackagingSetupError, cmd.run)
 
         # metadata is OK but long_description is broken
@@ -229,7 +229,7 @@
         cmd.ensure_finalized()
         cmd.strict = True
         inputs = Inputs('1', 'tarek', 'y')
-        register_module.input = inputs
+        register_module.raw_input = inputs
         cmd.ensure_finalized()
         cmd.run()
 
@@ -237,7 +237,7 @@
         cmd = self._get_cmd()
         cmd.ensure_finalized()
         inputs = Inputs('1', 'tarek', 'y')
-        register_module.input = inputs
+        register_module.raw_input = inputs
         cmd.ensure_finalized()
         cmd.run()
 
diff --git a/distutils2/util.py b/distutils2/util.py
--- a/distutils2/util.py
+++ b/distutils2/util.py
@@ -1,33 +1,33 @@
 """Miscellaneous utility functions."""
 
-import codecs
 import os
 import re
 import csv
 import sys
 import errno
+import codecs
 import shutil
 import string
-try:
-    from hashlib import md5
-except ImportError: #<2.5
-    from md5 import md5
 import tarfile
 import zipfile
 import posixpath
 import subprocess
-try:
-    from glob import iglob as std_iglob
-except ImportError:#<2.5
-    from glob import glob as std_iglob
 from fnmatch import fnmatchcase
 from inspect import getsource
 from ConfigParser import RawConfigParser
+try:
+    from glob import iglob as std_iglob
+except ImportError:
+    from glob import glob as std_iglob
+try:
+    import hashlib
+except ImportError:
+    from distutils2._backport import hashlib
 
 from distutils2 import logger
 from distutils2.errors import (PackagingPlatformError, PackagingFileError,
-                              PackagingByteCompileError, PackagingExecError,
-                              InstallationException, PackagingInternalError)
+                               PackagingByteCompileError, PackagingExecError,
+                               InstallationException, PackagingInternalError)
 from distutils2._backport import sysconfig
 
 _PLATFORM = None
@@ -1156,11 +1156,11 @@
 def ask(message, options):
     """Prompt the user with *message*; *options* contains allowed responses."""
     while True:
-        response = input(message)
+        response = raw_input(message)
         response = response.strip().lower()
         if response not in options:
-            print('invalid response:', repr(response))
-            print('choose one of', ', '.join(repr(o) for o in options))
+            print 'invalid response:', repr(response)
+            print 'choose one of', ', '.join(repr(o) for o in options)
         else:
             return response
 
@@ -1212,7 +1212,7 @@
             # do not put size and md5 hash, as in PEP-376
             writer.writerow((fpath, '', ''))
         else:
-            hash = md5()
+            hash = hashlib.md5()
             fp = open(fpath, 'rb')
             hash.update(fp.read())
             fp.close()

-- 
Repository URL: http://hg.python.org/distutils2


More information about the Python-checkins mailing list