Contributing

The dataClay distributed data store is a BSC project under the BSD License and we happily accept contributions.

If you wish to add a new feature or fix a bug:

  1. Check for open issues or open a new issue to start a discussion around a feature idea or a bug. Issues labeled as Contributor Friendly are ideal for individuals who are not yet familiar with the codebase.

  2. Fork the dataclay repository on Github to start making your changes.

  3. Write a test which shows that the bug was fixed or that the feature works as expected.

  4. Format your changes with Black using the command nox -s format and lint your changes using the command nox -s lint.

  5. Send a pull request and follow up with the maintainer until it gets merged and published.

Setting up your development environment

To set up your development environment, you will need nox installed on your machine:

$ python -m pip install --user --upgrade nox

You wll also need to have docker engine installed for nox to use pytest-docker.

Install dataClay in editable mode with the dev extra requirement:

$ pip install -e .[dev,telemetry]

Note

It is necessary to use the --recurse-submodules option to clone the repository, as it contains submodules that are required for the installation.

Compiling Protocol Buffers

You usually don’t need to compile Protocol Buffers manually. However, you should recompile them in the following cases:

  • You’ve made changes to any of the .proto files.

  • The gRPC or protobuf version used in the project has changed.

To compile the protobuf definitions, run:

$ ./compile_protos.py

This will regenerate the gRPC Python bindings used by dataClay.

Running the tests

When running the test suite, we use external dependencies, multiple interpreters, and code coverage analysis. Our noxfile.py file handles much of this for you:

$ nox