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]