[Python-checkins] cpython: Packaging cleanup: remove conditionals for < 2.6 support.

eric.araujo python-checkins at python.org
Mon Sep 19 16:10:49 CEST 2011


http://hg.python.org/cpython/rev/60deed9538fa
changeset: 72401:60deed9538fa
parent: 72384:c6d52971dd2a
user: Éric Araujo <merwok at netwok.org>
date: Sat Sep 17 03:31:51 2011 +0200
summary:
 Packaging cleanup: remove conditionals for < 2.6 support.
PEP 370 features and sys.dont_write_bytecode are always available
in 3.3; the distutils2 backport still has the conditionals.
I also renamed an internal misnamed method and fixed a few things
(“packaging2” name, stray print, unused import, fd leak).
files:
 Lib/packaging/command/build_ext.py | 17 +-
 Lib/packaging/command/build_py.py | 2 +-
 Lib/packaging/command/install_dist.py | 59 +++------
 Lib/packaging/command/install_distinfo.py | 7 +-
 Lib/packaging/command/install_lib.py | 2 +-
 Lib/packaging/compiler/bcppcompiler.py | 1 -
 Lib/packaging/compiler/ccompiler.py | 1 -
 Lib/packaging/compiler/unixccompiler.py | 2 +-
 Lib/packaging/dist.py | 4 +-
 Lib/packaging/tests/test_command_build_ext.py | 8 +-
 Lib/packaging/tests/test_command_build_py.py | 2 -
 Lib/packaging/tests/test_command_install_dist.py | 12 +-
 Lib/packaging/tests/test_command_install_lib.py | 11 +-
 Lib/packaging/tests/test_mixin2to3.py | 3 -
 Lib/packaging/tests/test_util.py | 4 -
 Lib/packaging/util.py | 6 +-
 16 files changed, 46 insertions(+), 95 deletions(-)
diff --git a/Lib/packaging/command/build_ext.py b/Lib/packaging/command/build_ext.py
--- a/Lib/packaging/command/build_ext.py
+++ b/Lib/packaging/command/build_ext.py
@@ -3,6 +3,7 @@
 import os
 import re
 import sys
+import site
 import logging
 import sysconfig
 
@@ -15,9 +16,6 @@
 from packaging.compiler.extension import Extension
 from packaging import logger
 
-import site
-HAS_USER_SITE = True
-
 if os.name == 'nt':
 from packaging.compiler.msvccompiler import get_build_version
 MSVC_VERSION = int(get_build_version())
@@ -62,6 +60,8 @@
 ('inplace', 'i',
 "ignore build-lib and put compiled extensions into the source " +
 "directory alongside your pure Python modules"),
+ ('user', None,
+ "add user include, library and rpath"),
 ('include-dirs=', 'I',
 "list of directories to search for header files" + sep_by),
 ('define=', 'D',
@@ -88,12 +88,8 @@
 "path to the SWIG executable"),
 ]
 
- boolean_options = ['inplace', 'debug', 'force']
+ boolean_options = ['inplace', 'debug', 'force', 'user']
 
- if HAS_USER_SITE:
- user_options.append(('user', None,
- "add user include, library and rpath"))
- boolean_options.append('user')
 
 help_options = [
 ('help-compiler', None,
@@ -120,8 +116,7 @@
 self.compiler = None
 self.swig = None
 self.swig_opts = None
- if HAS_USER_SITE:
- self.user = None
+ self.user = None
 
 def finalize_options(self):
 self.set_undefined_options('build',
@@ -270,7 +265,7 @@
 self.swig_opts = self.swig_opts.split(' ')
 
 # Finally add the user include and library directories if requested
- if HAS_USER_SITE and self.user:
+ if self.user:
 user_include = os.path.join(site.USER_BASE, "include")
 user_lib = os.path.join(site.USER_BASE, "lib")
 if os.path.isdir(user_include):
diff --git a/Lib/packaging/command/build_py.py b/Lib/packaging/command/build_py.py
--- a/Lib/packaging/command/build_py.py
+++ b/Lib/packaging/command/build_py.py
@@ -388,7 +388,7 @@
 self.build_module(module, module_file, package)
 
 def byte_compile(self, files):
- if hasattr(sys, 'dont_write_bytecode') and sys.dont_write_bytecode:
+ if sys.dont_write_bytecode:
 logger.warning('%s: byte-compiling is disabled, skipping.',
 self.get_command_name())
 return
diff --git a/Lib/packaging/command/install_dist.py b/Lib/packaging/command/install_dist.py
--- a/Lib/packaging/command/install_dist.py
+++ b/Lib/packaging/command/install_dist.py
@@ -14,9 +14,6 @@
 from packaging.errors import PackagingOptionError
 
 
-HAS_USER_SITE = True
-
-
 class install_dist(Command):
 
 description = "install everything from build directory"
@@ -27,6 +24,9 @@
 "installation prefix"),
 ('exec-prefix=', None,
 "(Unix only) prefix for platform-specific files"),
+ ('user', None,
+ "install in user site-packages directory [%s]" %
+ get_path('purelib', '%s_user' % os.name)),
 ('home=', None,
 "(Unix only) home directory to install under"),
 
@@ -97,15 +97,7 @@
 ]
 
 boolean_options = ['compile', 'force', 'skip-build', 'no-distinfo',
- 'requested', 'no-record']
-
- if HAS_USER_SITE:
- user_options.append(
- ('user', None,
- "install in user site-packages directory [%s]" %
- get_path('purelib', '%s_user' % os.name)))
-
- boolean_options.append('user')
+ 'requested', 'no-record', 'user']
 
 negative_opt = {'no-compile': 'compile', 'no-requested': 'requested'}
 
@@ -115,8 +107,7 @@
 self.prefix = None
 self.exec_prefix = None
 self.home = None
- if HAS_USER_SITE:
- self.user = False
+ self.user = False
 
 # These select only the installation base; it's up to the user to
 # specify the installation scheme (currently, that means supplying
@@ -135,9 +126,8 @@
 self.install_lib = None # set to either purelib or platlib
 self.install_scripts = None
 self.install_data = None
- if HAS_USER_SITE:
- self.install_userbase = get_config_var('userbase')
- self.install_usersite = get_path('purelib', '%s_user' % os.name)
+ self.install_userbase = get_config_var('userbase')
+ self.install_usersite = get_path('purelib', '%s_user' % os.name)
 
 self.compile = None
 self.optimize = None
@@ -219,9 +209,8 @@
 raise PackagingOptionError(
 "must supply either home or prefix/exec-prefix -- not both")
 
- if HAS_USER_SITE and self.user and (
- self.prefix or self.exec_prefix or self.home or
- self.install_base or self.install_platbase):
+ if self.user and (self.prefix or self.exec_prefix or self.home or
+ self.install_base or self.install_platbase):
 raise PackagingOptionError(
 "can't combine user with prefix/exec_prefix/home or "
 "install_base/install_platbase")
@@ -274,11 +263,9 @@
 'exec_prefix': exec_prefix,
 'srcdir': srcdir,
 'projectbase': projectbase,
- }
-
- if HAS_USER_SITE:
- self.config_vars['userbase'] = self.install_userbase
- self.config_vars['usersite'] = self.install_usersite
+ 'userbase': self.install_userbase,
+ 'usersite': self.install_usersite,
+ }
 
 self.expand_basedirs()
 
@@ -295,9 +282,9 @@
 
 self.dump_dirs("post-expand_dirs()")
 
- # Create directories in the home dir:
- if HAS_USER_SITE and self.user:
- self.create_home_path()
+ # Create directories under USERBASE
+ if self.user:
+ self.create_user_dirs()
 
 # Pick the actual directory to install all modules to: either
 # install_purelib or install_platlib, depending on whether this
@@ -311,10 +298,8 @@
 
 # Convert directories from Unix /-separated syntax to the local
 # convention.
- self.convert_paths('lib', 'purelib', 'platlib',
- 'scripts', 'data', 'headers')
- if HAS_USER_SITE:
- self.convert_paths('userbase', 'usersite')
+ self.convert_paths('lib', 'purelib', 'platlib', 'scripts',
+ 'data', 'headers', 'userbase', 'usersite')
 
 # Well, we're not actually fully completely finalized yet: we still
 # have to deal with 'extra_path', which is the hack for allowing
@@ -355,7 +340,7 @@
 "installation scheme is incomplete")
 return
 
- if HAS_USER_SITE and self.user:
+ if self.user:
 if self.install_userbase is None:
 raise PackagingPlatformError(
 "user base directory is not specified")
@@ -383,7 +368,7 @@
 
 def finalize_other(self):
 """Finalize options for non-posix platforms"""
- if HAS_USER_SITE and self.user:
+ if self.user:
 if self.install_userbase is None:
 raise PackagingPlatformError(
 "user base directory is not specified")
@@ -494,10 +479,8 @@
 attr = "install_" + name
 setattr(self, attr, change_root(self.root, getattr(self, attr)))
 
- def create_home_path(self):
- """Create directories under ~."""
- if HAS_USER_SITE and not self.user:
- return
+ def create_user_dirs(self):
+ """Create directories under USERBASE as needed."""
 home = convert_path(os.path.expanduser("~"))
 for name, path in self.config_vars.items():
 if path.startswith(home) and not os.path.isdir(path):
diff --git a/Lib/packaging/command/install_distinfo.py b/Lib/packaging/command/install_distinfo.py
--- a/Lib/packaging/command/install_distinfo.py
+++ b/Lib/packaging/command/install_distinfo.py
@@ -2,14 +2,13 @@
 
 # Forked from the former install_egg_info command by Josip Djolonga
 
+import os
 import csv
-import os
-import re
 import hashlib
+from shutil import rmtree
 
+from packaging import logger
 from packaging.command.cmd import Command
-from packaging import logger
-from shutil import rmtree
 
 
 class install_distinfo(Command):
diff --git a/Lib/packaging/command/install_lib.py b/Lib/packaging/command/install_lib.py
--- a/Lib/packaging/command/install_lib.py
+++ b/Lib/packaging/command/install_lib.py
@@ -114,7 +114,7 @@
 return outfiles
 
 def byte_compile(self, files):
- if getattr(sys, 'dont_write_bytecode'):
+ if sys.dont_write_bytecode:
 # XXX do we want this? because a Python runs without bytecode
 # doesn't mean that the *dists should not contain bytecode
 #--or does it?
diff --git a/Lib/packaging/compiler/bcppcompiler.py b/Lib/packaging/compiler/bcppcompiler.py
--- a/Lib/packaging/compiler/bcppcompiler.py
+++ b/Lib/packaging/compiler/bcppcompiler.py
@@ -352,5 +352,4 @@
 try:
 self.spawn(pp_args)
 except PackagingExecError as msg:
- print(msg)
 raise CompileError(msg)
diff --git a/Lib/packaging/compiler/ccompiler.py b/Lib/packaging/compiler/ccompiler.py
--- a/Lib/packaging/compiler/ccompiler.py
+++ b/Lib/packaging/compiler/ccompiler.py
@@ -5,7 +5,6 @@
 """
 
 import os
-import sys
 from shutil import move
 from packaging import logger
 from packaging.util import split_quoted, execute, newer_group, spawn
diff --git a/Lib/packaging/compiler/unixccompiler.py b/Lib/packaging/compiler/unixccompiler.py
--- a/Lib/packaging/compiler/unixccompiler.py
+++ b/Lib/packaging/compiler/unixccompiler.py
@@ -127,7 +127,7 @@
 executables['ranlib'] = ["ranlib"]
 
 # Needed for the filename generation methods provided by the base
- # class, CCompiler. NB. whoever instantiates/uses a particular
+ # class, CCompiler. XXX whoever instantiates/uses a particular
 # UnixCCompiler instance should set 'shared_lib_ext' -- we set a
 # reasonable common default here, but it's not necessarily used on all
 # Unices!
diff --git a/Lib/packaging/dist.py b/Lib/packaging/dist.py
--- a/Lib/packaging/dist.py
+++ b/Lib/packaging/dist.py
@@ -537,7 +537,7 @@
 def _get_command_groups(self):
 """Helper function to retrieve all the command class names divided
 into standard commands (listed in
- packaging2.command.STANDARD_COMMANDS) and extra commands (given in
+ packaging.command.STANDARD_COMMANDS) and extra commands (given in
 self.cmdclass and not standard commands).
 """
 extra_commands = [cmd for cmd in self.cmdclass
@@ -547,7 +547,7 @@
 def print_commands(self):
 """Print out a help message listing all available commands with a
 description of each. The list is divided into standard commands
- (listed in packaging2.command.STANDARD_COMMANDS) and extra commands
+ (listed in packaging.command.STANDARD_COMMANDS) and extra commands
 (given in self.cmdclass and not standard commands). The
 descriptions come from the command class attribute
 'description'.
diff --git a/Lib/packaging/tests/test_command_build_ext.py b/Lib/packaging/tests/test_command_build_ext.py
--- a/Lib/packaging/tests/test_command_build_ext.py
+++ b/Lib/packaging/tests/test_command_build_ext.py
@@ -18,18 +18,13 @@
 support.LoggingCatcher,
 unittest.TestCase):
 def setUp(self):
- # Create a simple test environment
- # Note that we're making changes to sys.path
 super(BuildExtTestCase, self).setUp()
 self.tmp_dir = self.mkdtemp()
 self.old_user_base = site.USER_BASE
 site.USER_BASE = self.mkdtemp()
 
 def tearDown(self):
- # Get everything back to normal
- if sys.version > "2.6":
- site.USER_BASE = self.old_user_base
-
+ site.USER_BASE = self.old_user_base
 super(BuildExtTestCase, self).tearDown()
 
 def test_build_ext(self):
@@ -94,7 +89,6 @@
 # make sure we get some library dirs under solaris
 self.assertGreater(len(cmd.library_dirs), 0)
 
- @unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher')
 def test_user_site(self):
 dist = Distribution({'name': 'xx'})
 cmd = build_ext(dist)
diff --git a/Lib/packaging/tests/test_command_build_py.py b/Lib/packaging/tests/test_command_build_py.py
--- a/Lib/packaging/tests/test_command_build_py.py
+++ b/Lib/packaging/tests/test_command_build_py.py
@@ -99,8 +99,6 @@
 os.chdir(cwd)
 sys.stdout = old_stdout
 
- @unittest.skipUnless(hasattr(sys, 'dont_write_bytecode'),
- 'sys.dont_write_bytecode not supported')
 def test_dont_write_bytecode(self):
 # makes sure byte_compile is not used
 pkg_dir, dist = self.create_dist()
diff --git a/Lib/packaging/tests/test_command_install_dist.py b/Lib/packaging/tests/test_command_install_dist.py
--- a/Lib/packaging/tests/test_command_install_dist.py
+++ b/Lib/packaging/tests/test_command_install_dist.py
@@ -72,7 +72,6 @@
 check_path(cmd.install_scripts, os.path.join(destination, "bin"))
 check_path(cmd.install_data, destination)
 
- @unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher')
 def test_user_site(self):
 # test install with --user
 # preparing the environment for the test
@@ -173,12 +172,11 @@
 cmd.home = 'home'
 self.assertRaises(PackagingOptionError, cmd.finalize_options)
 
- if sys.version >= '2.6':
- # can't combine user with with prefix/exec_prefix/home or
- # install_(plat)base
- cmd.prefix = None
- cmd.user = 'user'
- self.assertRaises(PackagingOptionError, cmd.finalize_options)
+ # can't combine user with with prefix/exec_prefix/home or
+ # install_(plat)base
+ cmd.prefix = None
+ cmd.user = 'user'
+ self.assertRaises(PackagingOptionError, cmd.finalize_options)
 
 def test_old_record(self):
 # test pre-PEP 376 --record option (outside dist-info dir)
diff --git a/Lib/packaging/tests/test_command_install_lib.py b/Lib/packaging/tests/test_command_install_lib.py
--- a/Lib/packaging/tests/test_command_install_lib.py
+++ b/Lib/packaging/tests/test_command_install_lib.py
@@ -7,13 +7,6 @@
 from packaging.compiler.extension import Extension
 from packaging.errors import PackagingOptionError
 
-try:
- no_bytecode = sys.dont_write_bytecode
- bytecode_support = True
-except AttributeError:
- no_bytecode = False
- bytecode_support = False
-
 
 class InstallLibTestCase(support.TempdirManager,
 support.LoggingCatcher,
@@ -40,7 +33,7 @@
 cmd.finalize_options()
 self.assertEqual(cmd.optimize, 2)
 
- @unittest.skipIf(no_bytecode, 'byte-compile not supported')
+ @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile not supported')
 def test_byte_compile(self):
 pkg_dir, dist = self.create_dist()
 cmd = install_lib(dist)
@@ -89,8 +82,6 @@
 # get_input should return 2 elements
 self.assertEqual(len(cmd.get_inputs()), 2)
 
- @unittest.skipUnless(bytecode_support,
- 'sys.dont_write_bytecode not supported')
 def test_dont_write_bytecode(self):
 # makes sure byte_compile is not used
 pkg_dir, dist = self.create_dist()
diff --git a/Lib/packaging/tests/test_mixin2to3.py b/Lib/packaging/tests/test_mixin2to3.py
--- a/Lib/packaging/tests/test_mixin2to3.py
+++ b/Lib/packaging/tests/test_mixin2to3.py
@@ -9,7 +9,6 @@
 support.LoggingCatcher,
 unittest.TestCase):
 
- @unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher')
 def test_convert_code_only(self):
 # used to check if code gets converted properly.
 code = "print 'test'"
@@ -26,7 +25,6 @@
 
 self.assertEqual(expected, converted)
 
- @unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher')
 def test_doctests_only(self):
 # used to check if doctests gets converted properly.
 doctest = textwrap.dedent('''\
@@ -57,7 +55,6 @@
 
 self.assertEqual(expected, converted)
 
- @unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher')
 def test_additional_fixers(self):
 # used to check if use_2to3_fixers works
 code = 'type(x) is not T'
diff --git a/Lib/packaging/tests/test_util.py b/Lib/packaging/tests/test_util.py
--- a/Lib/packaging/tests/test_util.py
+++ b/Lib/packaging/tests/test_util.py
@@ -319,8 +319,6 @@
 res = get_compiler_versions()
 self.assertEqual(res[2], None)
 
- @unittest.skipUnless(hasattr(sys, 'dont_write_bytecode'),
- 'sys.dont_write_bytecode not supported')
 def test_dont_write_bytecode(self):
 # makes sure byte_compile raise a PackagingError
 # if sys.dont_write_bytecode is True
@@ -407,7 +405,6 @@
 finally:
 sys.path.remove(tmp_dir)
 
- @unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher')
 def test_run_2to3_on_code(self):
 content = "print 'test'"
 converted_content = "print('test')"
@@ -422,7 +419,6 @@
 file_handle.close()
 self.assertEqual(new_content, converted_content)
 
- @unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher')
 def test_run_2to3_on_doctests(self):
 # to check if text files containing doctests only get converted.
 content = ">>> print 'test'\ntest\n"
diff --git a/Lib/packaging/util.py b/Lib/packaging/util.py
--- a/Lib/packaging/util.py
+++ b/Lib/packaging/util.py
@@ -326,7 +326,7 @@
 """
 # nothing is done if sys.dont_write_bytecode is True
 # FIXME this should not raise an error
- if hasattr(sys, 'dont_write_bytecode') and sys.dont_write_bytecode:
+ if sys.dont_write_bytecode:
 raise PackagingByteCompileError('byte-compiling is disabled.')
 
 # First, if the caller didn't force us into direct or indirect mode,
@@ -346,8 +346,10 @@
 # run it with the appropriate flags.
 if not direct:
 from tempfile import mkstemp
- # XXX script_fd may leak, use something better than mkstemp
+ # XXX use something better than mkstemp
 script_fd, script_name = mkstemp(".py")
+ os.close(script_fd)
+ script_fd = None
 logger.info("writing byte-compilation script '%s'", script_name)
 if not dry_run:
 if script_fd is not None:
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /