certbot/certbot/setup.py

105 lines
3.1 KiB
Python

import codecs
import os
import re
from setuptools import setup
def read_file(filename, encoding='utf8'):
"""Read unicode from given file."""
with codecs.open(filename, encoding=encoding) as fd:
return fd.read()
here = os.path.abspath(os.path.dirname(__file__))
# read version number (and other metadata) from package init
init_fn = os.path.join(here, 'src', 'certbot', '__init__.py')
meta = dict(re.findall(r"""__([a-z]+)__ = '([^']+)""", read_file(init_fn)))
version = meta['version']
# This package relies on PyOpenSSL and requests, however, it isn't specified
# here to avoid masking the more specific request requirements in acme. See
# https://github.com/pypa/pip/issues/988 for more info.
install_requires = [
# We specify the minimum acme version as the current Certbot version for
# simplicity. See https://github.com/certbot/certbot/issues/8761 for more
# info.
f'acme>={version}',
'ConfigArgParse>=1.5.3',
'configobj>=5.0.6',
'cryptography>=43.0.0',
'distro>=1.7.0',
'importlib_metadata>=8.6.1; python_version < "3.10"',
'josepy>=2.0.0',
'parsedatetime>=2.6',
'pyrfc3339',
# This dependency needs to be added using environment markers to avoid its
# installation on Linux.
'pywin32>=300 ; sys_platform == "win32"',
]
extras_require = {
"dev": [
"apacheconfig>=0.3.2",
"build",
"ipdb",
# allows us to use newer urllib3 https://github.com/python-poetry/poetry-plugin-export/issues/183
"poetry-plugin-export>=1.9.0",
# poetry 1.2.0+ is required for it to pin pip, setuptools, and wheel. See
# https://github.com/python-poetry/poetry/issues/1584.
"poetry>=1.2.0",
"towncrier",
"twine",
],
"docs": [
# If you have Sphinx<1.5.1, you need docutils<0.13.1
# https://github.com/sphinx-doc/sphinx/issues/3212
"Sphinx>=1.2", # Annotation support
"sphinx_rtd_theme",
],
# Tools like pip, wheel, and tox are listed here to ensure they are properly
# pinned and installed during automated testing.
"test": [
"coverage",
"mypy",
"pip",
"pylint",
"pytest",
"pytest-cov>=4.1.0", # https://github.com/pytest-dev/pytest-cov/pull/558
"pytest-xdist",
"ruff",
"setuptools",
"tox",
"types-httplib2",
"types-pyRFC3339",
"types-pywin32",
"types-requests",
"types-setuptools",
"uv",
"wheel",
],
"apache": [
# If a user installs `certbot[apache]`, we want to include the shim
f'certbot-apache>={version}',
'python-augeas',
],
"nginx": [
# If a user installs `certbot[nginx]`, we want to include the shim
f'certbot-nginx>={version}',
# 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',
'pyparsing>=3.0.0',
],
"all": [
"certbot[dev,docs,test,apache,nginx]"
],
}
setup(
install_requires=install_requires,
extras_require=extras_require,
)