blob: 4f40767f04be186307f1bec79a4bd91bac73f45a [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/LibreSSL/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, lints, and type-checks Python and Rust, then runs the Python and Rust test suites. This is the canonical command never invoke any test, build, lint, or format Python or Rust tools directly.
Other useful sessions: `nox -e tests`, `nox -e tests-nocoverage`, `nox -e rust`, `nox -e docs`, `nox -e flake`.
To test against different versions of OpenSSL, you can set the `OPENSSL_DIR` environment variable to the path to an OpenSSL/BoringSSL/LibreSSL/AWS-LC installation.
## 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.