Final bag of small changes coming from distutils2.

- minor cleanup in Metadata
- trigger creation of the sysconfig._CONFIG_VARS dict
- home_page is used over home-page: it’s not a compound word, it’s an
  escaped space

Distutils2 is now synchronized with Packaging.
This commit is contained in:
Éric Araujo 2011-09-19 15:12:23 +02:00
parent c1b7e7f8bb
commit 505f0ebf88
9 changed files with 22 additions and 29 deletions

View file

@ -5,9 +5,9 @@ sys.prefix or sys.exec_prefix.
""" """
import os import os
from shutil import rmtree from shutil import rmtree
from sysconfig import get_python_version from sysconfig import get_python_version
from packaging.util import get_platform from packaging.util import get_platform
from packaging.command.cmd import Command from packaging.command.cmd import Command
from packaging.errors import PackagingPlatformError from packaging.errors import PackagingPlatformError
@ -24,7 +24,7 @@ class bdist_dumb(Command):
"platform name to embed in generated filenames " "platform name to embed in generated filenames "
"(default: %s)" % get_platform()), "(default: %s)" % get_platform()),
('format=', 'f', ('format=', 'f',
"archive format to create (tar, gztar, zip)"), "archive format to create (tar, gztar, bztar, zip)"),
('keep-temp', 'k', ('keep-temp', 'k',
"keep the pseudo-installation tree around after " + "keep the pseudo-installation tree around after " +
"creating the distribution archive"), "creating the distribution archive"),

View file

@ -1,8 +1,4 @@
"""Compatibility helpers. """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 from packaging import logger
@ -10,8 +6,6 @@ from packaging import logger
# XXX Having two classes with the same name is not a good thing. # XXX Having two classes with the same name is not a good thing.
# XXX 2to3-related code should move from util to this module # 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: try:
from packaging.util import Mixin2to3 as _Mixin2to3 from packaging.util import Mixin2to3 as _Mixin2to3
_CONVERT = True _CONVERT = True

View file

@ -552,16 +552,17 @@ class Metadata:
return data return data
# Mapping API # Mapping API
# XXX these methods should return views or sets in 3.x
def keys(self): def keys(self):
return _version2fieldlist(self['Metadata-Version']) return list(_version2fieldlist(self['Metadata-Version']))
def __iter__(self): def __iter__(self):
for key in self.keys(): for key in self.keys():
yield key yield key
def values(self): def values(self):
return [self[key] for key in list(self.keys())] return [self[key] for key in self.keys()]
def items(self): def items(self):
return [(key, self[key]) for key in list(self.keys())] return [(key, self[key]) for key in self.keys()]

View file

@ -23,12 +23,11 @@ from packaging.version import get_version_predicate
from packaging import __version__ as packaging_version from packaging import __version__ as packaging_version
from packaging.pypi.base import BaseClient from packaging.pypi.base import BaseClient
from packaging.pypi.dist import (ReleasesList, EXTENSIONS, from packaging.pypi.dist import (ReleasesList, EXTENSIONS,
get_infos_from_url, MD5_HASH) get_infos_from_url, MD5_HASH)
from packaging.pypi.errors import (PackagingPyPIError, DownloadError, from packaging.pypi.errors import (PackagingPyPIError, DownloadError,
UnableToDownload, CantParseArchiveName, UnableToDownload, CantParseArchiveName,
ReleaseNotFound, ProjectNotFound) ReleaseNotFound, ProjectNotFound)
from packaging.pypi.mirrors import get_mirrors from packaging.pypi.mirrors import get_mirrors
from packaging.metadata import Metadata
__all__ = ['Crawler', 'DEFAULT_SIMPLE_INDEX_URL'] __all__ = ['Crawler', 'DEFAULT_SIMPLE_INDEX_URL']

View file

@ -35,7 +35,7 @@ class BuildDumbTestCase(support.TempdirManager,
dist = Distribution({'name': 'foo', 'version': '0.1', dist = Distribution({'name': 'foo', 'version': '0.1',
'py_modules': ['foo'], 'py_modules': ['foo'],
'home-page': 'xxx', 'author': 'xxx', 'home_page': 'xxx', 'author': 'xxx',
'author_email': 'xxx'}) 'author_email': 'xxx'})
os.chdir(pkg_dir) os.chdir(pkg_dir)
cmd = bdist_dumb(dist) cmd = bdist_dumb(dist)

View file

@ -4,14 +4,13 @@ import site
import sysconfig import sysconfig
import textwrap import textwrap
from io import StringIO from io import StringIO
from sysconfig import _CONFIG_VARS
from packaging.dist import Distribution from packaging.dist import Distribution
from packaging.errors import (UnknownFileError, CompileError, from packaging.errors import (UnknownFileError, CompileError,
PackagingPlatformError) PackagingPlatformError)
from packaging.command.build_ext import build_ext from packaging.command.build_ext import build_ext
from packaging.compiler.extension import Extension from packaging.compiler.extension import Extension
from test.script_helper import assert_python_ok
from test.script_helper import assert_python_ok
from packaging.tests import support, unittest, verbose from packaging.tests import support, unittest, verbose
@ -75,16 +74,16 @@ class BuildExtTestCase(support.TempdirManager,
sys.platform = 'sunos' # fooling finalize_options sys.platform = 'sunos' # fooling finalize_options
old_var = _CONFIG_VARS.get('Py_ENABLE_SHARED') old_var = sysconfig.get_config_var('Py_ENABLE_SHARED')
_CONFIG_VARS['Py_ENABLE_SHARED'] = 1 sysconfig._CONFIG_VARS['Py_ENABLE_SHARED'] = 1
try: try:
cmd.ensure_finalized() cmd.ensure_finalized()
finally: finally:
sys.platform = old sys.platform = old
if old_var is None: if old_var is None:
del _CONFIG_VARS['Py_ENABLE_SHARED'] del sysconfig._CONFIG_VARS['Py_ENABLE_SHARED']
else: else:
_CONFIG_VARS['Py_ENABLE_SHARED'] = old_var sysconfig._CONFIG_VARS['Py_ENABLE_SHARED'] = old_var
# make sure we get some library dirs under solaris # make sure we get some library dirs under solaris
self.assertGreater(len(cmd.library_dirs), 0) self.assertGreater(len(cmd.library_dirs), 0)

View file

@ -99,7 +99,7 @@ class RegisterTestCase(support.TempdirManager,
def _get_cmd(self, metadata=None): def _get_cmd(self, metadata=None):
if metadata is None: if metadata is None:
metadata = {'home-page': 'xxx', 'author': 'xxx', metadata = {'home_page': 'xxx', 'author': 'xxx',
'author_email': 'xxx', 'author_email': 'xxx',
'name': 'xxx', 'version': 'xxx'} 'name': 'xxx', 'version': 'xxx'}
pkg_info, dist = self.create_dist(**metadata) pkg_info, dist = self.create_dist(**metadata)

View file

@ -72,7 +72,7 @@ class DistributionTestCase(support.TempdirManager,
Distribution(attrs={'author': 'xxx', Distribution(attrs={'author': 'xxx',
'name': 'xxx', 'name': 'xxx',
'version': '1.2', 'version': '1.2',
'home-page': 'xxxx', 'home_page': 'xxxx',
'badoptname': 'xxx'}) 'badoptname': 'xxx'})
logs = self.get_logs(logging.WARNING) logs = self.get_logs(logging.WARNING)
self.assertEqual(len(logs), 1) self.assertEqual(len(logs), 1)
@ -82,7 +82,7 @@ class DistributionTestCase(support.TempdirManager,
# an empty options dictionary should not stay in the # an empty options dictionary should not stay in the
# list of attributes # list of attributes
dist = Distribution(attrs={'author': 'xxx', 'name': 'xxx', dist = Distribution(attrs={'author': 'xxx', 'name': 'xxx',
'version': '1.2', 'home-page': 'xxxx', 'version': '1.2', 'home_page': 'xxxx',
'options': {}}) 'options': {}})
self.assertEqual([], self.get_logs(logging.WARNING)) self.assertEqual([], self.get_logs(logging.WARNING))
@ -99,7 +99,7 @@ class DistributionTestCase(support.TempdirManager,
dist = Distribution(attrs={'author': 'xxx', dist = Distribution(attrs={'author': 'xxx',
'name': 'xxx', 'name': 'xxx',
'version': 'xxx', 'version': 'xxx',
'home-page': 'xxxx', 'home_page': 'xxxx',
'options': {'sdist': {'owner': 'root'}}}) 'options': {'sdist': {'owner': 'root'}}})
self.assertIn('owner', dist.get_option_dict('sdist')) self.assertIn('owner', dist.get_option_dict('sdist'))

View file

@ -101,7 +101,7 @@ class MetadataTestCase(LoggingCatcher,
# XXX caveat: the keys method and friends are not 3.x-style views # XXX caveat: the keys method and friends are not 3.x-style views
# should be changed or documented # should be changed or documented
self.assertEqual(list(metadata), list(metadata.keys())) self.assertEqual(list(metadata), metadata.keys())
def test_read_metadata(self): def test_read_metadata(self):
fields = {'name': 'project', fields = {'name': 'project',
@ -301,7 +301,7 @@ class MetadataTestCase(LoggingCatcher,
Metadata(mapping={'author': 'xxx', Metadata(mapping={'author': 'xxx',
'name': 'xxx', 'name': 'xxx',
'version': 'xxx', 'version': 'xxx',
'home-page': 'xxxx'}) 'home_page': 'xxxx'})
logs = self.get_logs(logging.WARNING) logs = self.get_logs(logging.WARNING)
self.assertEqual(1, len(logs)) self.assertEqual(1, len(logs))
self.assertIn('not a valid version', logs[0]) self.assertIn('not a valid version', logs[0])