Migrate project metadata to `pyproject.toml`

Since setuptools defaults `include_package_data` to `True` if it sees
a `project` table, explicitly set it to `False` to prevent unnecessary
files from being added.

Due to differences between the semantics of `pyproject.toml` and
`setup.py` settings, there are some minor changes in the resulting
metadata:

    diff -Nur dist-old/whl/pip-23.1.dev0.dist-info/METADATA dist/whl/pip-23.1.dev0.dist-info/METADATA
    --- dist-old/whl/pip-23.1.dev0.dist-info/METADATA       2023-03-28 18:46:48.000000000 +0300
    +++ dist/whl/pip-23.1.dev0.dist-info/METADATA   2023-03-28 18:43:28.000000000 +0300
    @@ -2,10 +2,9 @@
     Name: pip
     Version: 23.1.dev0
     Summary: The PyPA recommended tool for installing Python packages.
    -Home-page: https://pip.pypa.io/
    -Author: The pip developers
    -Author-email: distutils-sig@python.org
    +Author-email: The pip developers <distutils-sig@python.org>
     License: MIT
    +Project-URL: Homepage, https://pip.pypa.io/
     Project-URL: Documentation, https://pip.pypa.io
     Project-URL: Source, https://github.com/pypa/pip
     Project-URL: Changelog, https://pip.pypa.io/en/stable/news/
    @@ -24,6 +23,7 @@
     Classifier: Programming Language :: Python :: Implementation :: CPython
     Classifier: Programming Language :: Python :: Implementation :: PyPy
     Requires-Python: >=3.7
    +Description-Content-Type: text/x-rst
     License-File: LICENSE.txt
     License-File: AUTHORS.txt

black uses the `project.requires-python` setting to infer the target
Python version. Reformat one file in which this actually changes the
formatting.
This commit is contained in:
Роман Донченко 2023-03-19 18:50:47 +03:00
parent dfaac0a688
commit 003c7ac56b
4 changed files with 43 additions and 36 deletions

1
news/11909.process.rst Normal file
View File

@ -0,0 +1 @@
Most project metadata is now defined statically via pip's ``pyproject.toml`` file.

View File

@ -1,5 +1,44 @@
[project]
dynamic = ["version", "scripts"]
name = "pip"
description = "The PyPA recommended tool for installing Python packages."
readme = "README.rst"
license = {text = "MIT"}
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Topic :: Software Development :: Build Tools",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"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 :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
]
authors = [
{name = "The pip developers", email = "distutils-sig@python.org"},
]
# NOTE: requires-python is duplicated in __pip-runner__.py.
# When changing this value, please change the other copy as well.
requires-python = ">=3.7"
[project.urls]
Homepage = "https://pip.pypa.io/"
Documentation = "https://pip.pypa.io"
Source = "https://github.com/pypa/pip"
Changelog = "https://pip.pypa.io/en/stable/news/"
[build-system]
requires = ["setuptools", "wheel"]
# The lower bound is for <https://github.com/pypa/setuptools/issues/3865>.
requires = ["setuptools>=67.6.1", "wheel"]
build-backend = "setuptools.build_meta"
[tool.towncrier]

View File

@ -21,44 +21,14 @@ def get_version(rel_path: str) -> str:
raise RuntimeError("Unable to find version string.")
long_description = read("README.rst")
setup(
name="pip",
version=get_version("src/pip/__init__.py"),
description="The PyPA recommended tool for installing Python packages.",
long_description=long_description,
license="MIT",
classifiers=[
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Topic :: Software Development :: Build Tools",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"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 :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
],
url="https://pip.pypa.io/",
project_urls={
"Documentation": "https://pip.pypa.io",
"Source": "https://github.com/pypa/pip",
"Changelog": "https://pip.pypa.io/en/stable/news/",
},
author="The pip developers",
author_email="distutils-sig@python.org",
package_dir={"": "src"},
packages=find_packages(
where="src",
exclude=["contrib", "docs", "tests*", "tasks"],
),
include_package_data=False,
package_data={
"pip": ["py.typed"],
"pip._vendor": ["vendor.txt"],
@ -82,7 +52,4 @@ setup(
],
},
zip_safe=False,
# NOTE: python_requires is duplicated in __pip-runner__.py.
# When changing this value, please change the other copy as well.
python_requires=">=3.7",
)

View File

@ -406,7 +406,7 @@ class KeyringSubprocessResult(KeyringModuleV1):
stdin: Optional[Any] = None,
stdout: Optional[Any] = None,
input: Optional[bytes] = None,
check: Optional[bool] = None
check: Optional[bool] = None,
) -> Any:
if cmd[1] == "get":
assert stdin == -3 # subprocess.DEVNULL