Skip to main content
Whether you are fixing a bug, adding a feature, improving tests, or updating documentation, this guide walks you through the full workflow from fork to merged pull request.

Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Set up development environment (Setup Guide)
  4. Create a branch for your changes
  5. Make your changes with tests
  6. Submit a pull request

Development Workflow

1

Create a Branch

2

Make Changes

  • Write code following naming conventions
  • Add tests for new functionality
  • Update documentation if needed
3

Run Quality Checks

4

Commit Changes

Follow conventional commit format:
5

Push and Create PR

Then create a Pull Request on GitHub.

Code Style

Python Style

We use Ruff for linting and formatting:

Key Style Rules

  • Line length: 100 characters max
  • Imports: Sorted, grouped (stdlib, third-party, local)
  • Docstrings: Google style
  • Type hints: Required for public APIs

Cython Style

For .pyx files, see Cython Guide.

Testing Requirements

Coverage

  • Minimum 75% code coverage
  • All new features need tests
  • Bug fixes should include regression tests

Test Types

Running Tests

Documentation

When to Update Docs

  • New features → Add to relevant feature doc
  • API changes → Update API reference
  • Breaking changes → Update migration guide

Documentation Style

  • Use clear, concise language
  • Include code examples
  • Link to related documentation

Building Docs

Documentation lives in a separate repo (myspellchecker-docs) and uses Mintlify:

Pull Request Guidelines

PR Title

Use conventional commit format:
  • feat: Add feature description
  • fix: Fix bug description
  • docs: Update documentation

PR Description

Include:
  1. Summary - What does this PR do?
  2. Motivation - Why is this change needed?
  3. Changes - List of changes made
  4. Testing - How was this tested?

PR Template

Review Process

  1. Automated checks run (tests, linting)
  2. Maintainer reviews code
  3. Address feedback
  4. Merge when approved

Issue Guidelines

Bug Reports

Include:
  • Description - What’s the bug?
  • Steps to reproduce - How can we see it?
  • Expected behavior - What should happen?
  • Actual behavior - What happens instead?
  • Environment - Python version, OS, package version

Feature Requests

Include:
  • Description - What feature do you want?
  • Use case - Why do you need it?
  • Proposed solution - How might it work?
  • Alternatives - Other solutions considered?

Types of Contributions

Code Contributions

  • Bug fixes - Fix reported issues
  • Features - Implement new functionality
  • Performance - Optimize existing code
  • Tests - Add test coverage

Non-Code Contributions

  • Documentation - Improve docs
  • Examples - Add usage examples
  • Bug reports - Report issues
  • Feature requests - Suggest improvements
  • Code review - Review PRs

Getting Help

  • Questions - Open a GitHub Discussion
  • Bugs - Open a GitHub Issue
  • Chat - Comment on a relevant GitHub Issue or Discussion

Code of Conduct

Be respectful and inclusive. We follow the Contributor Covenant.

Recognition

Contributors are recognized in:
  • Release notes
  • Project README
Thank you for contributing!

See Also