From d4351ac5a287eb96521f09618bbbe1c73f4e6884 Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Sun, 14 Oct 2018 21:44:32 +0200 Subject: [PATCH] modernize packaging for setuptools>30.3 --- pyproject.toml | 3 +- setup.cfg | 30 +++++++++++++++++-- setup.py | 81 +++----------------------------------------------- 3 files changed, 34 insertions(+), 80 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index e82f051e1..c83bd853d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,7 @@ [build-system] requires = [ - "setuptools", + # sync with setup.py until we discard non-pep-517/518 + "setuptools>=30.3", "setuptools-scm", "wheel", ] diff --git a/setup.cfg b/setup.cfg index 816539e2e..e01ab74d5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,31 @@ +[metadata] + +name = pytest +description = pytest: simple powerful testing with Python +long_description = file: README.rst + + +license_file = LICENSE + +classifiers = + Development Status :: 6 - Mature + Intended Audience :: Developers + License :: OSI Approved :: MIT License + Operating System :: POSIX + Operating System :: Microsoft :: Windows + Operating System :: MacOS :: MacOS X + Topic :: Software Development :: Testing + Topic :: Software Development :: Libraries + Topic :: Utilities + Programming Language :: Python :: 2 + Programming Language :: Python :: 2.7 + Programming Language :: Python :: 3 + Programming Language :: Python :: 3.4 + Programming Language :: Python :: 3.5 + Programming Language :: Python :: 3.6 + Programming Language :: Python :: 3.7 + + [build_sphinx] source-dir = doc/en/ build-dir = doc/build @@ -13,8 +41,6 @@ universal = 1 ignore = _pytest/_version.py -[metadata] -license_file = LICENSE [devpi:upload] formats = sdist.tgz,bdist_wheel diff --git a/setup.py b/setup.py index 4c12fbfcc..83e2a36dc 100644 --- a/setup.py +++ b/setup.py @@ -1,63 +1,8 @@ import os -import sys -import setuptools -import pkg_resources from setuptools import setup -classifiers = [ - "Development Status :: 6 - Mature", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Operating System :: POSIX", - "Operating System :: Microsoft :: Windows", - "Operating System :: MacOS :: MacOS X", - "Topic :: Software Development :: Testing", - "Topic :: Software Development :: Libraries", - "Topic :: Utilities", -] + [ - ("Programming Language :: Python :: %s" % x) - for x in "2 2.7 3 3.4 3.5 3.6 3.7".split() -] - -with open("README.rst") as fd: - long_description = fd.read() - - -def get_environment_marker_support_level(): - """ - 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 - 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: - - * https://wheel.readthedocs.io/en/latest/index.html#defining-conditional-dependencies - * https://www.python.org/dev/peps/pep-0426/#environment-markers - * https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-platform-specific-dependencies - """ - try: - 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: - sys.stderr.write("Could not test setuptool's version: %s\n" % exc) - - # as of testing on 2018-05-26 fedora was on version 37* and debian was on version 33+ - # we should consider erroring on those - return 0 - def main(): - extras_require = {} install_requires = [ "py>=1.5.0", # if py gets upgrade to >=1.6, remove _width_of_current_line in terminal.py "six>=1.10.0", @@ -65,32 +10,16 @@ def main(): "attrs>=17.4.0", "more-itertools>=4.0.0", "atomicwrites>=1.0", + 'funcsigs;python_version<"3.0"', + 'pathlib2>=2.2.0;python_version<"3.6"', + 'colorama;sys_platform=="win32"', ] # if _PYTEST_SETUP_SKIP_PLUGGY_DEP is set, skip installing pluggy; # used by tox.ini to test with pluggy master if "_PYTEST_SETUP_SKIP_PLUGGY_DEP" not in os.environ: install_requires.append("pluggy>=0.7") - 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('pathlib2>=2.2.0;python_version<"3.6"') - 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.6"'] = ["pathlib2>=2.2.0"] - extras_require[':sys_platform=="win32"'] = ["colorama"] - else: - if sys.platform == "win32": - install_requires.append("colorama") - if sys.version_info < (3, 0): - install_requires.append("funcsigs") - if sys.version_info < (3, 6): - install_requires.append("pathlib2>=2.2.0") setup( - name="pytest", - description="pytest: simple powerful testing with Python", - long_description=long_description, use_scm_version={"write_to": "src/_pytest/_version.py"}, url="https://docs.pytest.org/en/latest/", project_urls={ @@ -104,14 +33,12 @@ def main(): "Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others" ), entry_points={"console_scripts": ["pytest=pytest:main", "py.test=pytest:main"]}, - classifiers=classifiers, keywords="test unittest", # the following should be enabled for release - setup_requires=["setuptools-scm"], + setup_requires=["setuptools-scm", "setuptools>30.3"], package_dir={"": "src"}, python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", install_requires=install_requires, - extras_require=extras_require, packages=[ "_pytest", "_pytest.assertion",