mirror of
https://github.com/certbot/certbot.git
synced 2026-05-28 04:34:11 -04:00
Set up released packages minus dns plugins to use pyproject.toml (#10417)
Part of https://github.com/certbot/certbot/issues/10403. As far as I can tell, "stick it in setup.py" is the official way of handling complex dependencies. But since the version is static, we have a little more choice here than we had with `certbot/pyproject.toml`. We could put the version in the respective `pyproject.toml`s and read it directly from the toml file with something like [this](https://stackoverflow.com/a/78082561). Or otherwise load and parse that file. The benefit of doing it that way is that all non-certbot versions would be canonically in the `pyproject.toml`, and also if we wanted we could use that same toml parsing to change the version at release time instead of `sed`. I actually suspect `acme`, `certbot-ci`, and `certbot-compatibility-test` will be the only ones where we can completely delete `setup.py`, as the others all have lockstep dependencies. (side note - we just never update `certbot-ci` version. it's still set at `0.32.0.dev0`. there's no way this matters but just noting.) I chose to do it this way instead because it seems cleaner since we have to keep `setup.py` around anyway, but I don't have a strong preference. Based on what I've read, there's not actually a clean way to grab and insert the version number within the toml file. This is due to [design decisions](https://github.com/toml-lang/toml/issues/77) by the toml authors. The clean `all` extras specification that we used in `certbot/pyproject.toml` [seems to be an outlier](https://github.com/pypa/setuptools/discussions/3627#discussioncomment-6476654) because it's pip handling the self-reference, not toml.
This commit is contained in:
parent
80fa8ad738
commit
d5dd8e47e1
7 changed files with 157 additions and 142 deletions
55
acme/pyproject.toml
Normal file
55
acme/pyproject.toml
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
[build-system]
|
||||
requires = ["setuptools"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "acme"
|
||||
dynamic = ["version"]
|
||||
description = "ACME protocol implementation in Python"
|
||||
readme = "README.rst"
|
||||
license = "Apache-2.0"
|
||||
requires-python = ">=3.10"
|
||||
authors = [
|
||||
{ name = "Certbot Project", email = "certbot-dev@eff.org" },
|
||||
]
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Intended Audience :: Developers",
|
||||
"Programming Language :: Python",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Internet :: WWW/HTTP",
|
||||
"Topic :: Security",
|
||||
]
|
||||
dependencies = [
|
||||
"cryptography>=43.0.0",
|
||||
"josepy>=2.0.0",
|
||||
# PyOpenSSL>=25.0.0 is just needed to satisfy mypy right now so this dependency can probably be
|
||||
# relaxed to >=24.0.0 if needed.
|
||||
"PyOpenSSL>=25.0.0",
|
||||
"pyrfc3339",
|
||||
"requests>=2.25.1",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
docs = [
|
||||
"Sphinx>=1.0", # autodoc_member_order = 'bysource', autodoc_default_flags
|
||||
"sphinx_rtd_theme",
|
||||
]
|
||||
test = [
|
||||
"pytest",
|
||||
"pytest-xdist",
|
||||
"typing-extensions",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://github.com/certbot/certbot"
|
||||
|
||||
[tool.setuptools]
|
||||
package-dir = {"" = "src"}
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
where = ["src"]
|
||||
|
|
@ -1,58 +1,7 @@
|
|||
from setuptools import find_packages
|
||||
from setuptools import setup
|
||||
|
||||
version = '5.0.0.dev0'
|
||||
|
||||
install_requires = [
|
||||
'cryptography>=43.0.0',
|
||||
'josepy>=2.0.0',
|
||||
# PyOpenSSL>=25.0.0 is just needed to satisfy mypy right now so this dependency can probably be
|
||||
# relaxed to >=24.0.0 if needed.
|
||||
'PyOpenSSL>=25.0.0',
|
||||
'pyrfc3339',
|
||||
'requests>=2.25.1',
|
||||
]
|
||||
|
||||
docs_extras = [
|
||||
'Sphinx>=1.0', # autodoc_member_order = 'bysource', autodoc_default_flags
|
||||
'sphinx_rtd_theme',
|
||||
]
|
||||
|
||||
test_extras = [
|
||||
'pytest',
|
||||
'pytest-xdist',
|
||||
'typing-extensions',
|
||||
]
|
||||
|
||||
setup(
|
||||
name='acme',
|
||||
version=version,
|
||||
description='ACME protocol implementation in Python',
|
||||
url='https://github.com/certbot/certbot',
|
||||
author="Certbot Project",
|
||||
author_email='certbot-dev@eff.org',
|
||||
license='Apache License 2.0',
|
||||
python_requires='>=3.10',
|
||||
classifiers=[
|
||||
'Development Status :: 5 - Production/Stable',
|
||||
'Intended Audience :: Developers',
|
||||
'License :: OSI Approved :: Apache Software License',
|
||||
'Programming Language :: Python',
|
||||
'Programming Language :: Python :: 3',
|
||||
'Programming Language :: Python :: 3.10',
|
||||
'Programming Language :: Python :: 3.11',
|
||||
'Programming Language :: Python :: 3.12',
|
||||
'Programming Language :: Python :: 3.13',
|
||||
'Topic :: Internet :: WWW/HTTP',
|
||||
'Topic :: Security',
|
||||
],
|
||||
|
||||
packages=find_packages(where='src'),
|
||||
package_dir={'': 'src'},
|
||||
include_package_data=True,
|
||||
install_requires=install_requires,
|
||||
extras_require={
|
||||
'docs': docs_extras,
|
||||
'test': test_extras,
|
||||
},
|
||||
)
|
||||
|
|
|
|||
52
certbot-apache/pyproject.toml
Normal file
52
certbot-apache/pyproject.toml
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
[build-system]
|
||||
requires = ["setuptools"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "certbot-apache"
|
||||
dynamic = ["version", "dependencies"]
|
||||
description = "Apache plugin for Certbot"
|
||||
readme = "README.rst"
|
||||
license = "Apache-2.0"
|
||||
requires-python = ">=3.10"
|
||||
authors = [
|
||||
{ name = "Certbot Project", email = "certbot-dev@eff.org" },
|
||||
]
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Environment :: Plugins",
|
||||
"Intended Audience :: System Administrators",
|
||||
"Operating System :: POSIX :: Linux",
|
||||
"Programming Language :: Python",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Internet :: WWW/HTTP",
|
||||
"Topic :: Security",
|
||||
"Topic :: System :: Installation/Setup",
|
||||
"Topic :: System :: Networking",
|
||||
"Topic :: System :: Systems Administration",
|
||||
"Topic :: Utilities",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = [
|
||||
"apacheconfig>=0.3.2",
|
||||
]
|
||||
test = [
|
||||
"pytest",
|
||||
]
|
||||
|
||||
[project.entry-points."certbot.plugins"]
|
||||
apache = "certbot_apache._internal.entrypoint:ENTRYPOINT"
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://github.com/certbot/certbot"
|
||||
|
||||
[tool.setuptools]
|
||||
package-dir = {"" = "src"}
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
where = ["src"]
|
||||
|
|
@ -1,4 +1,3 @@
|
|||
from setuptools import find_packages
|
||||
from setuptools import setup
|
||||
|
||||
version = '5.0.0.dev0'
|
||||
|
|
@ -12,54 +11,7 @@ install_requires = [
|
|||
'python-augeas',
|
||||
]
|
||||
|
||||
dev_extras = [
|
||||
'apacheconfig>=0.3.2',
|
||||
]
|
||||
|
||||
test_extras = [
|
||||
'pytest',
|
||||
]
|
||||
|
||||
setup(
|
||||
name='certbot-apache',
|
||||
version=version,
|
||||
description="Apache plugin for Certbot",
|
||||
url='https://github.com/certbot/certbot',
|
||||
author="Certbot Project",
|
||||
author_email='certbot-dev@eff.org',
|
||||
license='Apache License 2.0',
|
||||
python_requires='>=3.10',
|
||||
classifiers=[
|
||||
'Development Status :: 5 - Production/Stable',
|
||||
'Environment :: Plugins',
|
||||
'Intended Audience :: System Administrators',
|
||||
'License :: OSI Approved :: Apache Software License',
|
||||
'Operating System :: POSIX :: Linux',
|
||||
'Programming Language :: Python',
|
||||
'Programming Language :: Python :: 3',
|
||||
'Programming Language :: Python :: 3.10',
|
||||
'Programming Language :: Python :: 3.11',
|
||||
'Programming Language :: Python :: 3.12',
|
||||
'Programming Language :: Python :: 3.13',
|
||||
'Topic :: Internet :: WWW/HTTP',
|
||||
'Topic :: Security',
|
||||
'Topic :: System :: Installation/Setup',
|
||||
'Topic :: System :: Networking',
|
||||
'Topic :: System :: Systems Administration',
|
||||
'Topic :: Utilities',
|
||||
],
|
||||
|
||||
packages=find_packages(where='src'),
|
||||
package_dir={'': 'src'},
|
||||
include_package_data=True,
|
||||
install_requires=install_requires,
|
||||
extras_require={
|
||||
'dev': dev_extras,
|
||||
'test': test_extras,
|
||||
},
|
||||
entry_points={
|
||||
'certbot.plugins': [
|
||||
'apache = certbot_apache._internal.entrypoint:ENTRYPOINT',
|
||||
],
|
||||
},
|
||||
)
|
||||
|
|
|
|||
49
certbot-nginx/pyproject.toml
Normal file
49
certbot-nginx/pyproject.toml
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
[build-system]
|
||||
requires = ["setuptools"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "certbot-nginx"
|
||||
dynamic = ["version", "dependencies"]
|
||||
description = "Nginx plugin for Certbot"
|
||||
readme = "README.rst"
|
||||
license = "Apache-2.0"
|
||||
requires-python = ">=3.10"
|
||||
authors = [
|
||||
{ name = "Certbot Project", email = "certbot-dev@eff.org" },
|
||||
]
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Environment :: Plugins",
|
||||
"Intended Audience :: System Administrators",
|
||||
"Operating System :: POSIX :: Linux",
|
||||
"Programming Language :: Python",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Internet :: WWW/HTTP",
|
||||
"Topic :: Security",
|
||||
"Topic :: System :: Installation/Setup",
|
||||
"Topic :: System :: Networking",
|
||||
"Topic :: System :: Systems Administration",
|
||||
"Topic :: Utilities",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
test = [
|
||||
"pytest",
|
||||
]
|
||||
|
||||
[project.entry-points."certbot.plugins"]
|
||||
nginx = "certbot_nginx._internal.configurator:NginxConfigurator"
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://github.com/certbot/certbot"
|
||||
|
||||
[tool.setuptools]
|
||||
package-dir = {"" = "src"}
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
where = ["src"]
|
||||
|
|
@ -1,4 +1,3 @@
|
|||
from setuptools import find_packages
|
||||
from setuptools import setup
|
||||
|
||||
version = '5.0.0.dev0'
|
||||
|
|
@ -15,49 +14,7 @@ install_requires = [
|
|||
'pyparsing>=2.4.7',
|
||||
]
|
||||
|
||||
test_extras = [
|
||||
'pytest',
|
||||
]
|
||||
|
||||
setup(
|
||||
name='certbot-nginx',
|
||||
version=version,
|
||||
description="Nginx plugin for Certbot",
|
||||
url='https://github.com/certbot/certbot',
|
||||
author="Certbot Project",
|
||||
author_email='certbot-dev@eff.org',
|
||||
license='Apache License 2.0',
|
||||
python_requires='>=3.10',
|
||||
classifiers=[
|
||||
'Development Status :: 5 - Production/Stable',
|
||||
'Environment :: Plugins',
|
||||
'Intended Audience :: System Administrators',
|
||||
'License :: OSI Approved :: Apache Software License',
|
||||
'Operating System :: POSIX :: Linux',
|
||||
'Programming Language :: Python',
|
||||
'Programming Language :: Python :: 3',
|
||||
'Programming Language :: Python :: 3.10',
|
||||
'Programming Language :: Python :: 3.11',
|
||||
'Programming Language :: Python :: 3.12',
|
||||
'Programming Language :: Python :: 3.13',
|
||||
'Topic :: Internet :: WWW/HTTP',
|
||||
'Topic :: Security',
|
||||
'Topic :: System :: Installation/Setup',
|
||||
'Topic :: System :: Networking',
|
||||
'Topic :: System :: Systems Administration',
|
||||
'Topic :: Utilities',
|
||||
],
|
||||
|
||||
packages=find_packages(where='src'),
|
||||
package_dir={'': 'src'},
|
||||
include_package_data=True,
|
||||
install_requires=install_requires,
|
||||
extras_require={
|
||||
'test': test_extras,
|
||||
},
|
||||
entry_points={
|
||||
'certbot.plugins': [
|
||||
'nginx = certbot_nginx._internal.configurator:NginxConfigurator',
|
||||
],
|
||||
},
|
||||
)
|
||||
|
|
|
|||
1
newsfragments/10417.changed
Normal file
1
newsfragments/10417.changed
Normal file
|
|
@ -0,0 +1 @@
|
|||
Migrated most functionality from `setup.py` to `pyproject.toml` for acme, certbot-apache, and certbot-nginx.
|
||||
Loading…
Reference in a new issue