Skip to content
Back to top
View this page

# Contributing guidelines

## Questions, feature requests, bug reports, and feedback…

…should all be reported on the Github Issue Tracker .

## Setting up for local development

1. Fork marshmallow-sqlalchemy on Github.

    $ git clone https://github.com/marshmallow-code/marshmallow-sqlalchemy.git
    $ cd marshmallow-sqlalchemy

2. Install uv.

3. Install development requirements.

    $ uv sync

4. (Optional but recommended) Install the pre-commit hooks, which will format and lint your git staged files.

    $ uv run pre-commit install --allow-missing-config

## Pull requests

1. Create a new local branch.

    # For a new feature
    $ git checkout -b name-of-feature dev

    # For a bugfix
    $ git checkout -b fix-something 1.2-line

2. Commit your changes. Write good commit messages.

    $ git commit -m "Detailed commit message"
    $ git push origin name-of-feature

3. Before submitting a pull request, check the following:

- If the pull request adds functionality, it is tested and the docs are updated.

- You’ve added yourself to `AUTHORS.rst`.

4. Submit a pull request to `marshmallow-code:dev` or the appropriate maintenance branch. The CI build must be passing before your pull request is merged.

## Running tests

To run all tests:

    $ uv run pytest

To run formatting and syntax checks:

    $ uv run tox -e lint

(Optional) To run tests in all supported Python versions in their own virtual environments (must have each interpreter installed):

    $ uv run tox

## Documentation

Contributions to the documentation are welcome. Documentation is written in reStructuredText (rST). A quick rST reference can be found here. Builds are powered by Sphinx.

To build and serve the docs in “watch” mode:

    $ uv run tox -e docs-serve

Changes to documentation will automatically trigger a rebuild.