blob: e26b386280a580f42edb1d5d71c928f20495d70f [file] [log] [blame] [edit]
[build-system]
# These requirements must be kept sync with the requirements in
# ./.github/requirements/build-requirements.{in,txt}
requires = [
"maturin>=1.9.4,<2,!=1.11.0",
# Must be kept in sync with `project.dependencies`
"cffi>=1.14; platform_python_implementation != 'PyPy' and python_version == '3.8'",
"cffi>=2.0.0; platform_python_implementation != 'PyPy' and python_version >= '3.9'",
# Used by cffi (which import distutils, and in Python 3.12, distutils has
# been removed from the stdlib, but installing setuptools puts it back) as
# well as our build.rs for the rust/cffi bridge.
"setuptools!=74.0.0,!=74.1.0,!=74.1.1,!=74.1.2",
]
build-backend = "maturin"
[project]
name = "cryptography"
version = "47.0.0.dev1"
authors = [
{ name = "The Python Cryptographic Authority and individual contributors", email = "cryptography-dev@python.org" },
]
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
readme = "README.rst"
license = "Apache-2.0 OR BSD-3-Clause"
license-files = [ "LICENSE", "LICENSE.APACHE", "LICENSE.BSD" ]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Natural Language :: English",
"Operating System :: MacOS :: MacOS X",
"Operating System :: POSIX",
"Operating System :: POSIX :: BSD",
"Operating System :: POSIX :: Linux",
'Operating System :: Microsoft :: Windows',
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"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 :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Programming Language :: Python :: Free Threading :: 3 - Stable",
"Topic :: Security :: Cryptography",
]
requires-python = ">=3.8,!=3.9.0,!=3.9.1"
dependencies = [
# Must be kept in sync with `build-system.requires`
"cffi>=1.14; platform_python_implementation != 'PyPy' and python_version == '3.8'",
"cffi>=2.0.0; platform_python_implementation != 'PyPy' and python_version >= '3.9'",
# Must be kept in sync with ./.github/requirements/build-requirements.{in,txt}
"typing-extensions>=4.13.2; python_version < '3.11'",
]
[project.urls]
homepage = "https://github.com/pyca/cryptography"
documentation = "https://cryptography.io/"
source = "https://github.com/pyca/cryptography/"
issues = "https://github.com/pyca/cryptography/issues"
changelog = "https://cryptography.io/en/latest/changelog/"
[project.optional-dependencies]
ssh = ["bcrypt >=3.1.5"]
# All the following are used for our own testing.
nox = ["nox[uv] >=2024.04.15"]
test = [
"cryptography_vectors",
"pytest >=7.4.0",
"pytest-benchmark >=4.0",
"pytest-cov >=2.10.1",
"pytest-xdist >=3.5.0",
"pretend >=0.7",
"certifi >=2024",
]
test-randomorder = ["pytest-randomly"]
docs = [
"sphinx >=5.3.0",
"sphinx-rtd-theme >=3.0.0",
"sphinx-inline-tabs",
]
docstest = [
"pyenchant >=3",
"readme-renderer >=30.0",
"sphinxcontrib-spelling >=7.3.1",
]
sdist = ["build >=1.0.0"]
# `click` included because its needed to type check `release.py`
pep8test = [
"ruff >=0.11.11",
"mypy >=1.14",
"check-sdist",
"click >=8.0.1",
]
[tool.maturin]
python-source = "src"
python-packages = ["cryptography"]
manifest-path = "src/rust/Cargo.toml"
module-name = "cryptography.hazmat.bindings._rust"
locked = true
sdist-generator = "git"
include = [
"CHANGELOG.rst",
"CONTRIBUTING.rst",
"docs/**/*",
{ path = "src/_cffi_src/**/*.py", format = "sdist" },
{ path = "src/_cffi_src/**/*.c", format = "sdist" },
{ path = "src/_cffi_src/**/*.h", format = "sdist" },
{ path = "Cargo.toml", format = "sdist" },
{ path = "Cargo.lock", format = "sdist" },
{ path = "src/rust/**/Cargo.toml", format = "sdist" },
{ path = "src/rust/**/Cargo.lock", format = "sdist" },
{ path = "src/rust/**/*.rs", format = "sdist" },
"tests/**/*.py",
]
exclude = [
"vectors/**/*",
"target/**/*",
"docs/_build/**/*",
".github/**/*",
".readthedocs.yml",
"ci-constraints-requirements.txt",
"mypy.ini",
]
[tool.pytest.ini_options]
addopts = "-r s --capture=no --strict-markers --benchmark-disable"
console_output_style = "progress-even-when-capture-no"
markers = [
"skip_fips: this test is not executed in FIPS mode",
"supported: parametrized test requiring only_if and skip_message",
]
[tool.mypy]
show_error_codes = true
check_untyped_defs = true
no_implicit_reexport = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_unused_configs = true
strict_equality = true
strict_bytes = true
[[tool.mypy.overrides]]
module = ["pretend"]
ignore_missing_imports = true
[tool.coverage.run]
branch = true
relative_files = true
source = ["cryptography", "tests/"]
[tool.coverage.paths]
source = [
"src/cryptography",
"*.nox/*/lib*/python*/site-packages/cryptography",
"*.nox\\*\\Lib\\site-packages\\cryptography",
"*.nox/pypy/site-packages/cryptography",
]
tests = ["tests/", "*tests\\"]
[tool.coverage.report]
exclude_lines = [
"@abc.abstractmethod",
"@typing.overload",
"if typing.TYPE_CHECKING",
]
[tool.ruff]
line-length = 79
lint.ignore = ['N818']
lint.select = ['E', 'F', 'I', 'N', 'W', 'UP', 'RUF']
[tool.ruff.per-file-target-version]
".github/bin/merge_rust_coverage.py" = "py313"
[tool.ruff.lint.isort]
known-first-party = ["cryptography", "cryptography_vectors", "tests"]
[tool.check-sdist]
git-only = [
"vectors/*",
"release.py",
"ci-constraints-requirements.txt",
".gitattributes",
".gitignore",
]