From b0a9236357dd74381b5a014e3de15a3a52de4f7d Mon Sep 17 00:00:00 2001 From: Konstantin Lopuhin Date: Mon, 19 Jun 2017 19:16:50 +0300 Subject: [PATCH] Use environment markers for custom PyPy requirements --- setup.py | 23 ++++++++++++++++++++++- tox.ini | 1 - 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 086ab8142..c03f0b9f7 100644 --- a/setup.py +++ b/setup.py @@ -1,11 +1,31 @@ from os.path import dirname, join -from setuptools import setup, find_packages +from pkg_resources import parse_version +from setuptools import setup, find_packages, __version__ as setuptools_version with open(join(dirname(__file__), 'scrapy/VERSION'), 'rb') as f: version = f.read().decode('ascii').strip() +def has_environment_marker_platform_impl_support(): + """Code extracted from 'pytest/setup.py' + https://github.com/pytest-dev/pytest/blob/7538680c/setup.py#L31 + + The first known release to support environment marker with range operators + it is 18.5, see: + https://setuptools.readthedocs.io/en/latest/history.html#id235 + """ + return parse_version(setuptools_version) >= parse_version('18.5') + + +extras_require = {} + +if has_environment_marker_platform_impl_support(): + extras_require[':platform_python_implementation == "PyPy"'] = [ + 'PyPyDispatcher>=2.1.0', + ] + + setup( name='Scrapy', version=version, @@ -53,4 +73,5 @@ setup( 'PyDispatcher>=2.0.5', 'service_identity', ], + extras_require=extras_require, ) diff --git a/tox.ini b/tox.ini index c559f1e47..6987847f8 100644 --- a/tox.ini +++ b/tox.ini @@ -57,7 +57,6 @@ commands = [testenv:pypy] basepython = pypy commands = - pip install PyPyDispatcher>=2.0.6 py.test {posargs:scrapy tests} [testenv:py33]