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.