[tool.poetry]
name = "certbot-pinner"
version = "0.1.0"
description = "A simple project for pinning Certbot's dependencies using Poetry."
authors = ["Certbot Project"]
license = "Apache License 2.0"

[tool.poetry.dependencies]
# python 3.9.2 is used as a lower bound here because newer versions of
# cryptography dropped support for python 3.9.0 and 3.9.1. see
# https://github.com/pyca/cryptography/pull/12045. when we drop support for
# python 3.9 altogether, this line can be changed to the simpler 'python = "^3.10"'.
python = ">=3.9.2,<4.0"

# Local dependencies
# Any local packages that have dependencies on other local packages must be
# listed below before the package it depends on. For instance, certbot depends
# on acme so certbot must be listed before acme.
certbot-ci = {path = "../../../certbot-ci"}
certbot-compatibility-test = {path = "../../../certbot-compatibility-test"}
certbot-dns-cloudflare = {path = "../../../certbot-dns-cloudflare", extras = ["docs"]}
certbot-dns-digitalocean = {path = "../../../certbot-dns-digitalocean", extras = ["docs"]}
certbot-dns-dnsimple = {path = "../../../certbot-dns-dnsimple", extras = ["docs"]}
certbot-dns-dnsmadeeasy = {path = "../../../certbot-dns-dnsmadeeasy", extras = ["docs"]}
certbot-dns-gehirn = {path = "../../../certbot-dns-gehirn", extras = ["docs"]}
certbot-dns-google = {path = "../../../certbot-dns-google", extras = ["docs"]}
certbot-dns-linode = {path = "../../../certbot-dns-linode", extras = ["docs"]}
certbot-dns-luadns = {path = "../../../certbot-dns-luadns", extras = ["docs"]}
certbot-dns-nsone = {path = "../../../certbot-dns-nsone", extras = ["docs"]}
certbot-dns-ovh = {path = "../../../certbot-dns-ovh", extras = ["docs"]}
certbot-dns-rfc2136 = {path = "../../../certbot-dns-rfc2136", extras = ["docs"]}
certbot-dns-route53 = {path = "../../../certbot-dns-route53", extras = ["docs"]}
certbot-dns-sakuracloud = {path = "../../../certbot-dns-sakuracloud", extras = ["docs"]}
certbot-nginx = {path = "../../../certbot-nginx"}
certbot-apache = {path = "../../../certbot-apache", extras = ["dev"]}
certbot = {path = "../../../certbot", extras = ["all"]}
acme = {path = "../../../acme", extras = ["docs", "test"]}
letstest = {path = "../../../letstest"}

# Extra dependencies
# As of writing this, cython is a build dependency of pyyaml. Since there
# doesn't appear to be a good way to automatically track down and pin build
# dependencies in Python (see
# https://discuss.python.org/t/how-to-pin-build-dependencies/8238), we list it
# as a dependency here to ensure a version of cython is pinned for extra
# stability.
#
# We also pin back cython as is currently required by pyyaml. See
# https://github.com/yaml/pyyaml/pull/702 and
# https://github.com/yaml/pyyaml/issues/601.
cython = "<3.0"
# setuptools-rust is a build dependency of cryptography, and since we don't have
# a great way of pinning build dependencies, we simply list it here to ensure a
# working version. Note: if build dependencies of setuptools-rust break at some
# point, it's probably worth enumerating and pinning them (and recursing to
# THEIR build dependencies) as well.
setuptools-rust = "*"
# pylint often adds new checks that we need to conform our code to when
# upgrading our dependencies. To help control when this needs to be done, we
# pin pylint to a compatible version here.
#
# If this pinning is removed, we may still need to add a lower bound for the
# pylint version. See https://github.com/certbot/certbot/pull/9229.
pylint = "3.3.3"
# mypy often adds new checks that we need to conform our code to when updating
# dependencies. To help control when this needs to be done, we pin mypy to a
# compatible version here.
mypy = "1.9.0"

# Branch 4.x of tox introduces backward incompatibility changes, so require a newer
# version of tox to keep deterministic builds.
tox = ">=4"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
