From d4351ac5a287eb96521f09618bbbe1c73f4e6884 Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Sun, 14 Oct 2018 21:44:32 +0200 Subject: [PATCH 1/3] 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", From 7855284ef72bb7176aca7eba90e02f6825eb17f9 Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Mon, 15 Oct 2018 07:30:07 +0200 Subject: [PATCH 2/3] move most setuptools parameters over to setup.cfg --- setup.cfg | 26 +++++++++++++++++++++- setup.py | 65 ++++++++++++++++++++----------------------------------- 2 files changed, 48 insertions(+), 43 deletions(-) diff --git a/setup.cfg b/setup.cfg index e01ab74d5..a898b66c6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,10 +3,16 @@ name = pytest description = pytest: simple powerful testing with Python long_description = file: README.rst +url = "https://docs.pytest.org/en/latest/" +project_urls = + Source=https://github.com/pytest-dev/pytest + Tracker=https://github.com/pytest-dev/pytest/issues +author = Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others +license = MIT license license_file = LICENSE - +keywords = test, unittest classifiers = Development Status :: 6 - Mature Intended Audience :: Developers @@ -24,7 +30,25 @@ classifiers = Programming Language :: Python :: 3.5 Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 +platforms = unix, linux, osx, cygwin, win32 +[options] +zip_safe = no +packages = + _pytest + _pytest.assertion + _pytest._code + _pytest.mark + _pytest.config + +py_modules = pytest +python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* + + +[options.entry_points] +console_scripts = + pytest=pytest:main + py.test=pytest:main [build_sphinx] source-dir = doc/en/ diff --git a/setup.py b/setup.py index 83e2a36dc..6bab5312d 100644 --- a/setup.py +++ b/setup.py @@ -2,52 +2,33 @@ import os from setuptools import setup -def main(): - 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", - "setuptools", - "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") +# TODO: if py gets upgrade to >=1.6, +# remove _width_of_current_line in terminal.py +INSTALL_REQUIRES = [ + "py>=1.5.0", + "six>=1.10.0", + "setuptools", + "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") + + +def main(): setup( use_scm_version={"write_to": "src/_pytest/_version.py"}, - url="https://docs.pytest.org/en/latest/", - project_urls={ - "Source": "https://github.com/pytest-dev/pytest", - "Tracker": "https://github.com/pytest-dev/pytest/issues", - }, - license="MIT license", - platforms=["unix", "linux", "osx", "cygwin", "win32"], - author=( - "Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, " - "Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others" - ), - entry_points={"console_scripts": ["pytest=pytest:main", "py.test=pytest:main"]}, - keywords="test unittest", - # the following should be enabled for release - setup_requires=["setuptools-scm", "setuptools>30.3"], + 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, - packages=[ - "_pytest", - "_pytest.assertion", - "_pytest._code", - "_pytest.mark", - "_pytest.config", - ], - py_modules=["pytest"], - zip_safe=False, + install_requires=INSTALL_REQUIRES, ) From d65c7658d507597e7fb42590290c8cd2feeef639 Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Mon, 15 Oct 2018 07:32:38 +0200 Subject: [PATCH 3/3] changelog --- changelog/4149.feature.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog/4149.feature.rst diff --git a/changelog/4149.feature.rst b/changelog/4149.feature.rst new file mode 100644 index 000000000..7f9908b15 --- /dev/null +++ b/changelog/4149.feature.rst @@ -0,0 +1 @@ +Require setuptools>=30.3 and move most of the metadata to ``setup.cfg``.