We value and encourage community contributions. To get started, please follow these guidelines:
Please read and follow our Code of Conduct.
Engagement starts with an Issue where conversations and debates can occur around bugs and feature requests:
- β Do search for a similar or existing Issue prior to submitting a new one.
- β Do not use Issues for personal support. Use Discussions or StackOverflow instead.
- β Do not side-track or derail Issue threads. Stick to the topic, please.
- β Do not post comments using just "+1", "++" or "π". Use Reactions instead.
A bug is an error, flaw, or fault associated with any part of the project:
- β Do search for a similar or existing Issue prior to submitting a new one.
- β Do describe the bug concisely. Avoid adding extraneous code, logs, or screenshots.
- β Do attach a minimal test or example to demonstrate the bug.
A feature request is an improvement or new capability associated with any part of the project:
- β Do search for a similar or existing Issue prior to submitting a new one.
- β Do provide sufficient motivation and use case(s) for the feature.
- β Do not submit multiple unrelated requests within one request.
TIP: Engage as much as possible within an Issue before proceeding with contributions.
A vulnerability is a security-related risk associated with any part of the project or its dependencies:
- β Do refer to our Security Policy for more information.
- β Do report vulnerabilities via this link.
- β Do not report any Issues or mention vulnerabilities in public Discussions for discretionary purposes.
develop- Default branch for all feature development and Pull Requests.main- Stable branch for all periodic releases.
- Python (>= 3.8)
pipfor package management. Usepip install -r requirements/all.txtto install dependencies.- Optional: Set up your environment using
conda,virtualenv, or another method. Refer to Python virtual environments for guidance.
- Fork the repository and create a branch from
develop. - Clone the forked repo, checkout your branch, and install the dependencies with
pip install -r requirements/all.txt. - Run tests using
pytestto ensure everything is working correctly.
When contributing, please note the following key files and directories: βββ docker β βββ Dockerfile βββ docs β βββ index.rst β βββ ... βββ requirements β βββ all.txt β βββ ... βββ spockflow β βββ components β β βββ scorecard β β βββ tree β β βββ dtable β βββ inference β βββ ... βββ core.py βββ exceptions.py βββ nodes.py βββ tests β βββ test_example.py β βββ ...
docker- Contains all files related to Docker images.docs- Documentation files.requirements- Directory containing.txtfiles for different optional requirements.spockflow/components- Contains all components for the Hamilton DAG, including:scorecard- For scorecards.tree- For decision trees.dtable- For decision tables.
spockflow/inference- Files needed to serve the module as a live endpoint.core.py- Contains code to inject components into the Hamilton DAG.exceptions.py- Base for exceptions produced by various components.nodes.py- Core module for all components.tests- Contains unit tests for the project.
- β Do follow PEP 8 for naming conventions.
- β Do use descriptive names for files and modules.
- β
Do name Python classes in
CamelCaseand functions insnake_case.
- β Do adhere to PEP 8 style guidelines.
- β
Do use
blackfor automatic code formatting.
- β
Do write tests using
pytest. - β Do ensure all tests pass before submitting a Pull Request.
- β
Do ensure your branch is up to date with the
developbranch. - β
Do ensure there are no conflicts with the
developbranch. - β
Do make sure all tests pass and code is formatted using
black. - β Do provide a clear description of the changes and the purpose of the Pull Request.
TIP: Make sure to review the existing codebase and follow the conventions used throughout the project.
Thank you for contributing! We appreciate your efforts to improve the project.