Getting started¶
Development dependencies¶
Working on cryptography
requires the installation of a small number of
development dependencies in addition to the dependencies for
Installation. These are listed in dev-requirements.txt
and they can
be installed in a virtualenv using pip. Once you’ve installed the
dependencies, install cryptography
in editable
mode. For example:
$ # Create a virtualenv and activate it
$ pip install --requirement dev-requirements.txt
$ pip install --editable .
You will also need to install enchant
using your system’s package manager
to check spelling in the documentation.
You are now ready to run the tests and build the documentation.
OpenSSL on OS X¶
You must have installed OpenSSL via Homebrew or MacPorts and must set
CFLAGS
and LDFLAGS
environment variables before installing the
dev-requirements.txt
otherwise pip will fail with include errors.
For example, with Homebrew:
$ env LDFLAGS="-L$(brew --prefix openssl)/lib" \
CFLAGS="-I$(brew --prefix openssl)/include" \
pip install --requirement ./dev-requirements.txt
Alternatively for a static build you can specify
CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1
and ensure LDFLAGS
points to the
absolute path for the OpenSSL libraries before calling pip.
Tip
You will also need to set these values when Building documentation.
Running tests¶
cryptography
unit tests are found in the tests/
directory and are
designed to be run using pytest. pytest will discover the tests
automatically, so all you have to do is:
$ py.test
...
62746 passed in 220.43 seconds
This runs the tests with the default Python interpreter.
You can also verify that the tests pass on other supported Python interpreters. For this we use tox, which will automatically create a virtualenv for each supported Python version and run the tests. For example:
$ tox
...
ERROR: py26: InterpreterNotFound: python2.6
py27: commands succeeded
ERROR: pypy: InterpreterNotFound: pypy
py33: commands succeeded
docs: commands succeeded
pep8: commands succeeded
You may not have all the required Python versions installed, in which case you
will see one or more InterpreterNotFound
errors.
Explicit backend selection¶
While testing you may want to run tests against a subset of the backends that
cryptography supports. Explicit backend selection can be done via the
--backend
flag. This flag should be passed to py.test
with a comma
delimited list of backend names.
$ tox -- --backend=openssl
$ py.test --backend=openssl,commoncrypto
Building documentation¶
cryptography
documentation is stored in the docs/
directory. It is
written in reStructured Text and rendered using Sphinx.
Use tox to build the documentation. For example:
$ tox -e docs
...
docs: commands succeeded
congratulations :)
The HTML documentation index can now be found at
docs/_build/html/index.html
.