from pathlib import Path from pkg_resources import parse_version from setuptools import __version__ as setuptools_version from setuptools import find_packages, setup version = (Path(__file__).parent / "scrapy/VERSION").read_text("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") install_requires = [ "Twisted>=18.9.0", "cryptography>=3.4.6", "cssselect>=0.9.1", "itemloaders>=1.0.1", "parsel>=1.5.0", "pyOpenSSL>=21.0.0", "queuelib>=1.4.2", "service_identity>=18.1.0", "w3lib>=1.17.0", "zope.interface>=5.1.0", "protego>=0.1.15", "itemadapter>=0.1.0", "setuptools", "packaging", "tldextract", "lxml>=4.3.0", ] extras_require = {} cpython_dependencies = [ "PyDispatcher>=2.0.5", ] if has_environment_marker_platform_impl_support(): extras_require[ ':platform_python_implementation == "CPython"' ] = cpython_dependencies extras_require[':platform_python_implementation == "PyPy"'] = [ "PyPyDispatcher>=2.1.0", ] else: install_requires.extend(cpython_dependencies) setup( name="Scrapy", version=version, url="https://scrapy.org", project_urls={ "Documentation": "https://docs.scrapy.org/", "Source": "https://github.com/scrapy/scrapy", "Tracker": "https://github.com/scrapy/scrapy/issues", }, description="A high-level Web Crawling and Web Scraping framework", long_description=open("README.rst", encoding="utf-8").read(), author="Scrapy developers", author_email="pablo@pablohoffman.com", maintainer="Pablo Hoffman", maintainer_email="pablo@pablohoffman.com", license="BSD", packages=find_packages(exclude=("tests", "tests.*")), include_package_data=True, zip_safe=False, entry_points={"console_scripts": ["scrapy = scrapy.cmdline:execute"]}, classifiers=[ "Framework :: Scrapy", "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", ], python_requires=">=3.7", install_requires=install_requires, extras_require=extras_require, )