Add support for new environment marker usages

This commit is contained in:
Tzu-ping Chung 2018-01-09 14:17:25 +08:00
parent 794fb193ba
commit b256cd2a6a
2 changed files with 22 additions and 6 deletions

View File

@ -179,6 +179,7 @@ Tom Dalton
Tom Viner Tom Viner
Trevor Bekolay Trevor Bekolay
Tyler Goodlet Tyler Goodlet
Tzu-ping Chung
Vasily Kuznetsov Vasily Kuznetsov
Victor Uriarte Victor Uriarte
Vidar T. Fauske Vidar T. Fauske

View File

@ -23,23 +23,34 @@ with open('README.rst') as fd:
long_description = fd.read() long_description = fd.read()
def has_environment_marker_support(): def get_environment_marker_support_level():
""" """
Tests that setuptools has support for PEP-426 environment marker support. Tests how well setuptools supports PEP-426 environment marker.
The first known release to support it is 0.7 (and the earliest on PyPI seems to be 0.7.2 The first known release to support it is 0.7 (and the earliest on PyPI seems to be 0.7.2
so we're using that), see: http://pythonhosted.org/setuptools/history.html#id142 so we're using that), see: https://setuptools.readthedocs.io/en/latest/history.html#id350
The support is later enhanced to allow direct conditional inclusions inside install_requires,
which is now recommended by setuptools. It first appeared in 36.2.0, went broken with 36.2.1, and
again worked since 36.2.2, so we're using that. See:
https://setuptools.readthedocs.io/en/latest/history.html#v36-2-2
https://github.com/pypa/setuptools/issues/1099
References: References:
* https://wheel.readthedocs.io/en/latest/index.html#defining-conditional-dependencies * https://wheel.readthedocs.io/en/latest/index.html#defining-conditional-dependencies
* https://www.python.org/dev/peps/pep-0426/#environment-markers * https://www.python.org/dev/peps/pep-0426/#environment-markers
* https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-platform-specific-dependencies
""" """
try: try:
return pkg_resources.parse_version(setuptools.__version__) >= pkg_resources.parse_version('0.7.2') version = pkg_resources.parse_version(setuptools.__version__)
if version >= pkg_resources.parse_version('36.2.2'):
return 2
if version >= pkg_resources.parse_version('0.7.2'):
return 1
except Exception as exc: except Exception as exc:
sys.stderr.write("Could not test setuptool's version: %s\n" % exc) sys.stderr.write("Could not test setuptool's version: %s\n" % exc)
return False return 0
def main(): def main():
@ -54,7 +65,11 @@ def main():
# used by tox.ini to test with pluggy master # used by tox.ini to test with pluggy master
if '_PYTEST_SETUP_SKIP_PLUGGY_DEP' not in os.environ: if '_PYTEST_SETUP_SKIP_PLUGGY_DEP' not in os.environ:
install_requires.append('pluggy>=0.5,<0.7') install_requires.append('pluggy>=0.5,<0.7')
if has_environment_marker_support(): environment_marker_support_level = get_environment_marker_support_level()
if environment_marker_support_level >= 2:
install_requires.append('funcsigs;python_version<"3.0"')
install_requires.append('colorama;sys_platform=="win32"')
elif environment_marker_support_level == 1:
extras_require[':python_version<"3.0"'] = ['funcsigs'] extras_require[':python_version<"3.0"'] = ['funcsigs']
extras_require[':sys_platform=="win32"'] = ['colorama'] extras_require[':sys_platform=="win32"'] = ['colorama']
else: else: