[Python-checkins] distutils2 (merge default -> python3): Merge compat/_backport cleanup from default.

eric.araujo python-checkins at python.org
Wed Nov 23 16:45:59 CET 2011


http://hg.python.org/distutils2/rev/7e7f23d10484
changeset:   1263:7e7f23d10484
branch:      python3
parent:      1261:bf1b6478e134
parent:      1262:a382d149a0f0
user:        Éric Araujo <merwok at netwok.org>
date:        Wed Nov 23 13:58:51 2011 +0100
summary:
  Merge compat/_backport cleanup from default.

For some reason, the diff for distutils/_backport/misc.py makes it seem
like it’s a new file instead of showing the changes I did during the
merge.

files:
  distutils2/_backport/__init__.py    |   6 +-
  distutils2/compat.py                |  87 +++-------------
  distutils2/command/build_py.py      |   3 +-
  distutils2/command/build_scripts.py |   2 +-
  distutils2/command/install_lib.py   |   2 +-
  distutils2/compat.py                |  38 +-------
  distutils2/dist.py                  |   2 +-
  distutils2/markers.py               |   6 +-
  distutils2/pypi/simple.py           |   4 +-
  distutils2/run.py                   |   2 +-
  distutils2/util.py                  |   2 +-
  11 files changed, 35 insertions(+), 119 deletions(-)


diff --git a/distutils2/_backport/__init__.py b/distutils2/_backport/__init__.py
--- a/distutils2/_backport/__init__.py
+++ b/distutils2/_backport/__init__.py
@@ -1,4 +1,6 @@
-"""Modules copied from Python 3 standard libraries.
+"""Modules copied from Python 3 standard libraries, for internal use only.
 
-Individual classes and objects like the any function are in compat.
+Individual classes and functions are found in d2._backport.misc.  Intended
+usage is to always import things missing from 3.1 from that module: the
+built-in/stdlib objects will be used if found.
 """
diff --git a/distutils2/compat.py b/distutils2/_backport/misc.py
copy from distutils2/compat.py
copy to distutils2/_backport/misc.py
--- a/distutils2/compat.py
+++ b/distutils2/_backport/misc.py
@@ -1,73 +1,17 @@
-"""Compatibility helpers.
+"""Backports for individual classes and functions."""
 
-This module provides individual classes or objects backported from
-Python 3.2, for internal use only.  Whole modules are in _backport.
-"""
+import os
+import sys
 
-import sys
-from distutils2 import logger
+__all__ = ['cache_from_source', 'callable', 'fsencode']
 
 
-# XXX Having two classes with the same name is not a good thing.
-# XXX 2to3-related code should move from util to this module
-
 try:
-    from distutils2.util import Mixin2to3 as _Mixin2to3
-    _CONVERT = True
-    _KLASS = _Mixin2to3
+    from imp import cache_from_source
 except ImportError:
-    _CONVERT = False
-    _KLASS = object
-
-__all__ = ['Mixin2to3']
-
-
-class Mixin2to3(_KLASS):
-    """ The base class which can be used for refactoring. When run under
-    Python 3.0, the run_2to3 method provided by Mixin2to3 is overridden.
-    When run on Python 2.x, it merely creates a class which overrides run_2to3,
-    yet does nothing in particular with it.
-    """
-    if _CONVERT:
-
-        def _run_2to3(self, files, doctests=[], fixers=[]):
-            """ Takes a list of files and doctests, and performs conversion
-            on those.
-              - First, the files which contain the code(`files`) are converted.
-              - Second, the doctests in `files` are converted.
-              - Thirdly, the doctests in `doctests` are converted.
-            """
-            if fixers:
-                self.fixer_names = fixers
-
-            logger.info('converting Python code')
-            _KLASS.run_2to3(self, files)
-
-            logger.info('converting doctests in Python files')
-            _KLASS.run_2to3(self, files, doctests_only=True)
-
-            if doctests != []:
-                logger.info('converting doctest in text files')
-                _KLASS.run_2to3(self, doctests, doctests_only=True)
-    else:
-        # If run on Python 2.x, there is nothing to do.
-
-        def _run_2to3(self, files, doctests=[], fixers=[]):
-            pass
-
-
-# The rest of this file does not exist in packaging
-# functions are sorted alphabetically and are not included in __all__
-
-
-def fsencode(filename):
-    if isinstance(filename, bytes):
-        return filename
-    elif isinstance(filename, str):
-        return filename.encode(sys.getfilesystemencoding())
-    else:
-        raise TypeError("expect bytes or str, not %s" %
-                        type(filename).__name__)
+    def cache_from_source(py_file, debug=__debug__):
+        ext = debug and 'c' or 'o'
+        return py_file + ext
 
 
 try:
@@ -80,8 +24,13 @@
 
 
 try:
-    from imp import cache_from_source
-except ImportError:
-    def cache_from_source(py_file, debug=__debug__):
-        ext = debug and 'c' or 'o'
-        return py_file + ext
+    fsencode = os.fsencode
+except AttributeError:
+    def fsencode(filename):
+        if isinstance(filename, bytes):
+            return filename
+        elif isinstance(filename, str):
+            return filename.encode(sys.getfilesystemencoding())
+        else:
+            raise TypeError("expect bytes or str, not %s" %
+                            type(filename).__name__)
diff --git a/distutils2/command/build_py.py b/distutils2/command/build_py.py
--- a/distutils2/command/build_py.py
+++ b/distutils2/command/build_py.py
@@ -5,9 +5,10 @@
 
 from distutils2 import logger
 from distutils2.util import convert_path
-from distutils2.compat import Mixin2to3, cache_from_source
+from distutils2.compat import Mixin2to3
 from distutils2.errors import PackagingOptionError, PackagingFileError
 from distutils2.command.cmd import Command
+from distutils2._backport.misc import cache_from_source
 
 # marking public APIs
 __all__ = ['build_py']
diff --git a/distutils2/command/build_scripts.py b/distutils2/command/build_scripts.py
--- a/distutils2/command/build_scripts.py
+++ b/distutils2/command/build_scripts.py
@@ -8,8 +8,8 @@
 from distutils2.util import convert_path, newer
 from distutils2 import logger
 from distutils2.compat import Mixin2to3
-from distutils2.compat import fsencode
 from distutils2._backport import sysconfig
+from distutils2._backport.misc import fsencode
 
 
 # check if Python is called on the first line with this expression
diff --git a/distutils2/command/install_lib.py b/distutils2/command/install_lib.py
--- a/distutils2/command/install_lib.py
+++ b/distutils2/command/install_lib.py
@@ -3,9 +3,9 @@
 import os
 
 from distutils2 import logger
-from distutils2.compat import cache_from_source
 from distutils2.command.cmd import Command
 from distutils2.errors import PackagingOptionError
+from distutils2._backport.misc import cache_from_source
 
 
 # Extension for Python source files.
diff --git a/distutils2/compat.py b/distutils2/compat.py
--- a/distutils2/compat.py
+++ b/distutils2/compat.py
@@ -1,10 +1,5 @@
-"""Compatibility helpers.
+"""Support for build-time 2to3 conversion."""
 
-This module provides individual classes or objects backported from
-Python 3.2, for internal use only.  Whole modules are in _backport.
-"""
-
-import sys
 from distutils2 import logger
 
 
@@ -54,34 +49,3 @@
 
         def _run_2to3(self, files, doctests=[], fixers=[]):
             pass
-
-
-# The rest of this file does not exist in packaging
-# functions are sorted alphabetically and are not included in __all__
-
-
-def fsencode(filename):
-    if isinstance(filename, bytes):
-        return filename
-    elif isinstance(filename, str):
-        return filename.encode(sys.getfilesystemencoding())
-    else:
-        raise TypeError("expect bytes or str, not %s" %
-                        type(filename).__name__)
-
-
-try:
-    callable = callable
-except NameError:
-    from collections import Callable
-
-    def callable(obj):
-        return isinstance(obj, Callable)
-
-
-try:
-    from imp import cache_from_source
-except ImportError:
-    def cache_from_source(py_file, debug=__debug__):
-        ext = debug and 'c' or 'o'
-        return py_file + ext
diff --git a/distutils2/dist.py b/distutils2/dist.py
--- a/distutils2/dist.py
+++ b/distutils2/dist.py
@@ -5,7 +5,6 @@
 
 from distutils2 import logger
 from distutils2.util import strtobool, resolve_name
-from distutils2.compat import callable
 from distutils2.config import Config
 from distutils2.errors import (PackagingOptionError, PackagingArgError,
                                PackagingModuleError, PackagingClassError)
@@ -13,6 +12,7 @@
 from distutils2.command.cmd import Command
 from distutils2.metadata import Metadata
 from distutils2.fancy_getopt import FancyGetopt
+from distutils2._backport.misc import callable
 
 # Regex to define acceptable Packaging command names.  This is not *quite*
 # the same as a Python name -- leading underscores are not allowed.  The fact
diff --git a/distutils2/markers.py b/distutils2/markers.py
--- a/distutils2/markers.py
+++ b/distutils2/markers.py
@@ -3,9 +3,8 @@
 import os
 import sys
 import platform
-
+from io import BytesIO
 from tokenize import tokenize, NAME, OP, STRING, ENDMARKER, ENCODING
-from io import BytesIO
 
 __all__ = ['interpret']
 
@@ -32,7 +31,8 @@
          'os.name': os.name,
          'platform.version': platform.version(),
          'platform.machine': platform.machine(),
-         'platform.python_implementation': platform.python_implementation()}
+         'platform.python_implementation': platform.python_implementation(),
+        }
 
 
 class _Operation:
diff --git a/distutils2/pypi/simple.py b/distutils2/pypi/simple.py
--- a/distutils2/pypi/simple.py
+++ b/distutils2/pypi/simple.py
@@ -18,9 +18,9 @@
 from fnmatch import translate
 from functools import wraps
 from distutils2 import logger
+from distutils2 import __version__ as distutils2_version
+from distutils2.version import get_version_predicate
 from distutils2.metadata import Metadata
-from distutils2.version import get_version_predicate
-from distutils2 import __version__ as distutils2_version
 from distutils2.pypi.base import BaseClient
 from distutils2.pypi.dist import (ReleasesList, EXTENSIONS,
                                   get_infos_from_url, MD5_HASH)
diff --git a/distutils2/run.py b/distutils2/run.py
--- a/distutils2/run.py
+++ b/distutils2/run.py
@@ -9,7 +9,6 @@
 from distutils2 import logger
 from distutils2.dist import Distribution
 from distutils2.util import _is_archive_file, generate_setup_py
-from distutils2.compat import callable
 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
@@ -18,6 +17,7 @@
 from distutils2.errors import (PackagingArgError, PackagingError,
                                PackagingModuleError, PackagingClassError,
                                CCompilerError)
+from distutils2._backport.misc import callable
 
 
 command_re = re.compile(r'^[a-zA-Z]([a-zA-Z0-9_]*)$')
diff --git a/distutils2/util.py b/distutils2/util.py
--- a/distutils2/util.py
+++ b/distutils2/util.py
@@ -16,11 +16,11 @@
 from configparser import RawConfigParser
 
 from distutils2 import logger
-from distutils2.compat import cache_from_source
 from distutils2.errors import (PackagingPlatformError, PackagingFileError,
                                PackagingExecError, InstallationException,
                                PackagingInternalError)
 from distutils2._backport import shutil, sysconfig
+from distutils2._backport.misc import cache_from_source
 
 __all__ = [
     # file dependencies

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


More information about the Python-checkins mailing list