Contributing and developing

Reporting issues

Plyvel uses Github’s issue tracker. See the Plyvel project page on Github.

Obtaining the source code

The Plyvel source code can be found on Github. See the Plyvel project page on Github.

Compiling from source

A simple make suffices to build the Plyvel extension. Note that the setup.py script does not invoke Cython, so that installations using pip install do not need to depend on Cython.

A few remarks about the code:

  • Plyvel is mostly written in Cython. The LevelDB API is described in leveldb.pxd, and subsequently used from Cython.
  • The custom comparator support is written in C++ since it contains a C++ class that extends a LevelDB C++ class. The Python C API is used for the callbacks into Python. This custom class is made available in Cython using comparator.pxd.

Running the tests

Almost all Plyvel code is covered by the unit tests. Plyvel uses pytest and tox for running those tests. Type make test to run the unit tests, or run tox to run the tests against multiple Python versions.

Producing binary packages

To build a non-portable binary package for a single platform:

python setup.py bdist_wheel

See the comments at the top of the Dockerfile for instructions on how to build portable manylinux1 wheels for multiple Python versions that should work on many Linux platforms.

Generating the documentation

The documentation is written in ReStructuredText (reST) format and processed using Sphinx. Type make doc to build the HTML documentation.