blob: 44c7c6b065f5da6f8477843073c815d81e76fd46 [file] [view] [edit]
# cryptography
Hybrid Python + Rust project. The Python package lives in `src/cryptography/`; the Rust extension (PyO3) lives in `src/rust/`. CFFI bindings to OpenSSL/BoringSSL/AWS-LC are generated from `src/_cffi_src/`. Test vectors live in `vectors/` (an installable sub-package).
## Running tests
Use `nox -e local` to run the full local check: it formats and lints Python (`ruff`) and Rust (`cargo fmt`/`check`/`clippy`), type-checks with `mypy`, then runs the pytest suite and `cargo test`. This is the canonical command never invoke `pytest` or `cargo test` directly.
Other useful sessions: `nox -e tests`, `nox -e tests-nocoverage`, `nox -e rust`, `nox -e docs`, `nox -e flake`.
## Package management
Use `uv`, not `pip`, for any Python package installation or environment management. `noxfile.py` already sets `default_venv_backend = "uv"`.
## Changelog
User-visible changes go in `CHANGELOG.rst` under the unreleased section.