Skip to content

Contributing

Thank you for your interest in contributing to Multi!

Development Setup

Prerequisites

  • Python 3.9 or higher
  • Git
  • uv (recommended) or pip

Clone the Repository

git clone https://github.com/gabemontague/multi.git
cd multi/multi-cli

Install Dependencies

Using uv (recommended):

uv sync --extra dev

Using pip:

pip install -e ".[dev]"

Verify Setup

# Run the CLI
multi --help

# Run tests
pytest

Development Workflow

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=multi --cov-report=html

# Run specific test file
pytest tests/test_sync.py

# Run tests matching a pattern
pytest -k "test_init"

Code Style

This project uses ruff for linting and formatting.

# Check for issues
ruff check .

# Auto-fix issues
ruff check --fix .

# Format code
ruff format .

Type Checking

The project uses Python type hints. Ensure your code includes appropriate type annotations.

Making Changes

  1. Create a branch for your changes:
git checkout -b feature/your-feature-name
  1. Make your changes following the code style guidelines

  2. Add tests for new functionality

  3. Run the test suite to ensure everything passes:

pytest
ruff check .
  1. Commit your changes with a descriptive message

  2. Push and create a pull request

Pull Request Guidelines

  • Keep PRs focused on a single feature or fix
  • Include tests for new functionality
  • Update documentation if needed
  • Ensure all tests pass
  • Follow the existing code style

Building Documentation

To preview documentation locally:

# Install docs dependencies
uv sync --extra dev

# Serve documentation locally
zensical serve

Then open http://localhost:8000 in your browser.

Reporting Issues

Found a bug or have a feature request? Please open an issue on GitHub.

When reporting bugs, please include:

  • Your Python version
  • Your operating system
  • Steps to reproduce the issue
  • Expected vs actual behavior