Development Contributions

We strive to make contributions easy, collaborative, and enjoyable. Follow the steps below to ensure a smooth contribution process.

Submitting Your Contribution through PR

To contribute, follow these steps:
  1. Fork & Clone the repository: Mem0 on GitHub
  2. Create a Feature Branch: Use a dedicated branch for your changes, e.g., feature/my-new-feature
  3. Implement Changes: If adding a feature or fixing a bug, ensure to:
    • Write necessary tests
    • Add documentation, docstrings, and runnable examples
  4. Code Quality Checks:
    • Run linting to catch style issues
    • Ensure all tests pass
  5. Submit a Pull Request ๐Ÿš€
For detailed guidance on pull requests, refer to GitHubโ€™s documentation.

๐Ÿ“ฆ Dependency Management

We use hatch as our package manager. Install it by following the official instructions. โš ๏ธ Do NOT use pip or conda for dependency management. Instead, follow these steps in order:
# 1. Install base dependencies
make install

# 2. Activate virtual environment (this will install deps.)
hatch shell (for default env)
hatch -e dev_py_3_11 shell (for dev_py_3_11) (differences are mentioned in pyproject.toml)

# 3. Install all optional dependencies
make install_all

๐Ÿ› ๏ธ Development Standards

โœ… Pre-commit Hooks

Ensure pre-commit is installed before contributing:
pre-commit install

๐Ÿ” Linting with ruff

Run the linter and fix any reported issues before submitting your PR:
make lint

๐ŸŽจ Code Formatting

To maintain a consistent code style, format your code:
make format

๐Ÿงช Testing with pytest

Run tests to verify functionality before submitting your PR:
make test
๐Ÿ’ก Note: Some dependencies have been removed from the main dependencies to reduce package size. Run make install_all to install necessary dependencies before running tests.

๐Ÿš€ Release Process

Currently, releases are handled manually. We aim for frequent releases, typically when new features or bug fixes are introduced.
Thank you for contributing to Mem0! ๐ŸŽ‰