Thank you for your interest in contributing to Encypher Core! This document provides guidelines and instructions for contributing to this project.
By participating in this project, you agree to abide by our Code of Conduct. Please be respectful and considerate of others.
If you find a bug, please create an issue with the following information:
- A clear, descriptive title
- A detailed description of the issue
- Steps to reproduce the bug
- Expected behavior
- Actual behavior
- Any relevant logs or screenshots
- Your environment (OS, Python version, package version)
We welcome suggestions for enhancements! Please create an issue with:
- A clear, descriptive title
- A detailed description of the enhancement
- The motivation for the enhancement
- Any examples or use cases
- Fork the repository
- Create a new branch for your feature or bugfix
- Make your changes
- Add or update tests as necessary
- Update documentation as necessary
- Submit a pull request
- Follow the existing code style
- Include tests for new features or bug fixes
- Update documentation for any changes
- Keep pull requests focused on a single change
- Reference any related issues in your PR description
-
Clone the repository:
git clone https://github.com/yourusername/encypher-ai.git cd encypher-ai -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install development dependencies:
uv pip install -e ".[dev]" -
Set up pre-commit hooks:
pre-commit install
-
Run tests:
pytest
We follow PEP 8 style guidelines with Black as our code formatter. All code must pass Black formatting checks before being merged.
We use pre-commit hooks to automatically format code and check for issues before committing. The hooks will:
- Format code with Black (including Jupyter notebooks)
- Sort imports with isort
- Check for common issues with flake8 and ruff
- Perform type checking with mypy
After installing the pre-commit hooks (step 4 in Development Setup), they will run automatically on each commit.
You can also run the formatting tools manually:
# Format all Python files
black encypher
# Format Python files including Jupyter notebooks
black --jupyter encypher
# Sort imports
isort encypher
# Run all pre-commit hooks on all files
pre-commit run --all-filesPlease write tests for any new features or bug fixes. We use pytest for testing.
# Run all tests
pytest
# Run tests with coverage
pytest --cov=encypherPlease update documentation for any changes. We use docstrings for function and class documentation.
We use Semantic Versioning. Please ensure that your changes are compatible with the versioning scheme.
By contributing to this project, you agree that your contributions will be licensed under the project's license.
If you have any questions, please feel free to create an issue or contact the maintainers.
Thank you for your contributions!