mirror of
https://github.com/python/cpython.git
synced 2025-11-01 02:38:53 +00:00
initial import of the packaging package in the standard library
This commit is contained in:
parent
566f8a646e
commit
1231a4e097
193 changed files with 30376 additions and 149 deletions
57
Lib/packaging/compat.py
Normal file
57
Lib/packaging/compat.py
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
"""Compatibility helpers.
|
||||
|
||||
This module provides classes, variables and imports which are used to
|
||||
support packaging across Python 2.x and 3.x.
|
||||
"""
|
||||
|
||||
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
|
||||
|
||||
# TODO Move common code here: PY3 (bool indicating if we're on 3.x), any, etc.
|
||||
|
||||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue