diff options
Diffstat (limited to 'Lib/packaging/compat.py')
-rw-r--r-- | Lib/packaging/compat.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Lib/packaging/compat.py b/Lib/packaging/compat.py new file mode 100644 index 0000000000..dcb58f527e --- /dev/null +++ b/Lib/packaging/compat.py @@ -0,0 +1,51 @@ +"""Compatibility helpers.""" + +from packaging import logger + + +# 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 packaging.util import Mixin2to3 as _Mixin2to3 + _CONVERT = True + _KLASS = _Mixin2to3 +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 |