ContributingΒΆ
<!β generated-by: gsd-doc-writer β> # Contributing to Embenx π
Thank you for your interest in contributing to Embenx! We welcome contributions from everyone.
## Development Setup
We use uv for dependency management. To set up your environment for development:
Clone the repository:
`bash git clone https://github.com/adityak74/embenx.git cd embenx `Install development dependencies:
`bash uv sync --all-extras --dev `Install pre-commit hooks:
`bash uv run pre-commit install `
See [GETTING-STARTED.md](GETTING-STARTED.md) for prerequisites and first-run instructions, and [DEVELOPMENT.md](DEVELOPMENT.md) (if available) for more details on local development setup.
## Coding Standards
Contributors must follow these standards:
Linting & Formatting: We use ruff, black, and isort. You can run them manually with uv run ruff check ., uv run black ., and uv run isort ., or use the pre-commit hooks.
Type Hints: Use Python type hints for all new functions and classes.
Commit Messages: We recommend using clear, descriptive commit messages.
CI Enforcement: All PRs must pass the linting and testing steps in GitHub Actions before being merged.
## Test Suites
Embenx has a comprehensive test suite using pytest.
Run all tests:
`bash uv run pytest tests/ `Run a specific test file:
`bash uv run pytest tests/test_core.py `Coverage: To check test coverage, run:
`bash uv run pytest --cov=embenx tests/ `
The test suite covers: - Core Logic: Validation of the agentic memory layer and data structures (test_core.py, test_data.py). - Indexers: Integration and unit tests for each of the 15+ vector backends (test_indexers.py, test_faiss.py, etc.). - CLI: Verification of the embenx CLI tool (test_cli.py). - Advanced Features: Hybrid search, reranking, and multimodal retrieval (test_hybrid.py, test_multimodal.py).
## Pull Request Guidelines
Fork the repository and create a new branch: git checkout -b feat/my-feature.
Implement your changes and add corresponding tests.
Ensure all tests pass and your code is formatted correctly.
Submit a Pull Request to the main branch.
Review: A maintainer will review your PR. Address any feedback as requested.
## Issue Reporting
If you find a bug or have a feature request, please open an issue on GitHub: - Bug reports: Include a clear description, steps to reproduce, and your environment (OS, Python version). - Feature requests: Explain the use case and how the feature would benefit users.
## Release Flow
Embenx uses a structured release process managed by the publish.sh script and bump-my-version.
Version Bump: Maintainers run ./publish.sh [patch|minor|major] to bump the version in pyproject.toml and create a git tag.
Build: The script uses python3 -m build to generate source and wheel distributions.
Test Upload: The package is first uploaded to TestPyPI for verification.
Production Release: After confirmation, the package is uploaded to PyPI using twine.
Maintainers should ensure that the CHANGELOG (if applicable) is updated and all CI checks are passing on main before initiating a release.
β
Built with β€οΈ by the Embenx community.