Getting started =============== Development dependencies ------------------------ Working on ``cryptography`` requires the installation of a small number of development dependencies in addition to the dependencies for :doc:`/installation` (including :ref:`Rust`). These are handled by the use of ``nox``, which can be installed with ``pip``. .. code-block:: console $ # 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``: .. code-block:: console $ nox -e local You can also specify a subset of tests to run as positional arguments: .. code-block:: console $ # 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``: .. code-block:: console $ nox -e docs .. _`Homebrew`: https://brew.sh .. _`MacPorts`: https://www.macports.org .. _`OpenSSL`: https://www.openssl.org .. _`pytest`: https://pypi.org/project/pytest/ .. _`nox`: https://pypi.org/project/nox/ .. _`virtualenv`: https://pypi.org/project/virtualenv/ .. _`pip`: https://pypi.org/project/pip/ .. _`as documented here`: https://docs.rs/openssl/latest/openssl/#automatic .. _`installation instructions`: https://pyenchant.github.io/pyenchant/install.html#installing-the-enchant-c-library