diff options
| author | Xavier Fernandez <xavier.fernandez@polyconseil.fr> | 2016-07-17 14:52:16 +0200 |
|---|---|---|
| committer | Xavier Fernandez <xavier.fernandez@polyconseil.fr> | 2016-07-21 11:28:38 +0200 |
| commit | d079163e74166860fedbfe0abcfcb820507368fd (patch) | |
| tree | 69539ea65f1b2f67efde8885c31a955e7ea4eccd /setuptools | |
| parent | fd3ff004cd3570460a079de785846f54ae1ee36f (diff) | |
| download | python-setuptools-git-d079163e74166860fedbfe0abcfcb820507368fd.tar.gz | |
Also update the Metadata-Version when adding Requires-Python
Diffstat (limited to 'setuptools')
| -rw-r--r-- | setuptools/dist.py | 38 | ||||
| -rw-r--r-- | setuptools/tests/test_egg_info.py | 6 |
2 files changed, 41 insertions, 3 deletions
diff --git a/setuptools/dist.py b/setuptools/dist.py index 0a192553..705ce9a3 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -12,6 +12,7 @@ import distutils.dist from distutils.core import Distribution as _Distribution from distutils.errors import (DistutilsOptionError, DistutilsPlatformError, DistutilsSetupError) +from distutils.util import rfc822_escape from setuptools.extern import six from setuptools.extern.six.moves import map @@ -44,10 +45,45 @@ def _patch_distribution_metadata_write_pkg_file(): """Patch write_pkg_file to also write Requires-Python/Requires-External""" original_write = distutils.dist.DistributionMetadata.write_pkg_file + # Based on Python 3.5 version def write_pkg_file(self, file): """Write the PKG-INFO format data to a file object. """ - original_write(self, file) + version = '1.0' + if (self.provides or self.requires or self.obsoletes or + self.classifiers or self.download_url): + version = '1.1' + # Setuptools specific for PEP 345 + if hasattr(self, 'python_requires'): + version = '1.2' + + file.write('Metadata-Version: %s\n' % version) + file.write('Name: %s\n' % self.get_name()) + file.write('Version: %s\n' % self.get_version()) + file.write('Summary: %s\n' % self.get_description()) + file.write('Home-page: %s\n' % self.get_url()) + file.write('Author: %s\n' % self.get_contact()) + file.write('Author-email: %s\n' % self.get_contact_email()) + file.write('License: %s\n' % self.get_license()) + if self.download_url: + file.write('Download-URL: %s\n' % self.download_url) + + long_desc = rfc822_escape(self.get_long_description()) + file.write('Description: %s\n' % long_desc) + + keywords = ','.join(self.get_keywords()) + if keywords: + file.write('Keywords: %s\n' % keywords) + + self._write_list(file, 'Platform', self.get_platforms()) + self._write_list(file, 'Classifier', self.get_classifiers()) + + # PEP 314 + self._write_list(file, 'Requires', self.get_requires()) + self._write_list(file, 'Provides', self.get_provides()) + self._write_list(file, 'Obsoletes', self.get_obsoletes()) + + # Setuptools specific for PEP 345 if hasattr(self, 'python_requires'): file.write('Requires-Python: %s\n' % self.python_requires) diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py index 0b9da538..dff2a8c8 100644 --- a/setuptools/tests/test_egg_info.py +++ b/setuptools/tests/test_egg_info.py @@ -223,8 +223,10 @@ class TestEggInfo(object): env=environ, ) egg_info_dir = os.path.join('.', 'foo.egg-info') - pkginfo = os.path.join(egg_info_dir, 'PKG-INFO') - assert 'Requires-Python: >=2.7.12' in open(pkginfo).read().split('\n') + with open(os.path.join(egg_info_dir, 'PKG-INFO')) as pkginfo_file: + pkg_info_lines = pkginfo_file.read().split('\n') + assert 'Requires-Python: >=2.7.12' in pkg_info_lines + assert 'Metadata-Version: 1.2' in pkg_info_lines def test_python_requires_install(self, tmpdir_cwd, env): self._setup_script_with_requires( |
