summaryrefslogtreecommitdiff
path: root/setuptools
diff options
context:
space:
mode:
authorXavier Fernandez <xavier.fernandez@polyconseil.fr>2016-07-17 14:52:16 +0200
committerXavier Fernandez <xavier.fernandez@polyconseil.fr>2016-07-21 11:28:38 +0200
commitd079163e74166860fedbfe0abcfcb820507368fd (patch)
tree69539ea65f1b2f67efde8885c31a955e7ea4eccd /setuptools
parentfd3ff004cd3570460a079de785846f54ae1ee36f (diff)
downloadpython-setuptools-git-d079163e74166860fedbfe0abcfcb820507368fd.tar.gz
Also update the Metadata-Version when adding Requires-Python
Diffstat (limited to 'setuptools')
-rw-r--r--setuptools/dist.py38
-rw-r--r--setuptools/tests/test_egg_info.py6
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(