# 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