Getting started

Development dependencies

Working on cryptography requires the installation of a small number of development dependencies in addition to the dependencies for Installation (including Rust). These are handled by the use of nox, which can be installed with pip.

$ # Create a virtualenv and activate it
$ # Set up your cryptography build environment
$ pip install nox
$ nox -e local

OpenSSL on macOS

You must have installed OpenSSL (via Homebrew or MacPorts) before invoking nox or else pip will fail to compile.

Running tests

cryptography unit tests are found in the tests/ directory and are designed to be run using pytest. nox automatically invokes pytest and other required checks for cryptography:

$ nox -e local

You can also specify a subset of tests to run as positional arguments:

$ # run the whole x509 testsuite, plus the fernet tests
$ nox -e local -- tests/x509/ tests/test_fernet.py

Building the docs

Building the docs on non-Windows platforms requires manually installing the C library libenchant (installation instructions). The docs can be built using nox:

$ nox -e docs