starlette/CONTRIBUTING.md

2.9 KiB

Contributing to Starlette

The Starlette team happily welcomes contributions. This document will help you get ready to contribute to Starlette!

To submit new code to the project you'll need to:

  • Fork the repo.
  • Clone your fork on your local computer: git clone https://github.com/<username>/starlette.git.
  • Install Starlette locally and run the tests: ./scripts/install, ./scripts/test.
  • Create a branch for your work, e.g. git checkout -b fix-some-bug.
  • Remember to include tests and documentation updates if applicable.
  • Once ready, push to your remote: git push origin fix-some-bug.
  • Open a Pull Request.

Install

Note: These scripts are currently suited to Linux and macOS, but we would happily take pull requests to help us make them more cross-compatible.

Use the install script to install project dependencies in a virtual environment.

./scripts/install

To use a specific Python executable, use the -p option, e.g.:

./scripts/install -p python3.7

Running the tests

The tests are written using pytest and located in the tests/ directory.

Note: tests should be run before making any changes to the code in order to make sure that everything is running as expected.

We provide a stand-alone test script to run tests in a reliable manner. Run it with:

./scripts/test

By default, tests involving a database are excluded. To include them, set the STARLETTE_TEST_DATABASES environment variable. This should be a comma separated string of database URLs.

# Any of the following are valid for running the database tests...
export STARLETTE_TEST_DATABASES="postgresql://localhost/starlette"
export STARLETTE_TEST_DATABASES="mysql://localhost/starlette_test"
export STARLETTE_TEST_DATABASES="postgresql://localhost/starlette, mysql://localhost/starlette_test"

Linting

We use Black as a code formatter. To run it along with a few other linting tools, we provide a stand-alone linting script:

./scripts/lint

If linting has anything to say about the code, it will format it in-place.

To keep the code style consistent, you should apply linting before committing.

Documentation

The documentation is built with MkDocs, a Markdown-based documentation site generator.

To run the docs site in hot-reload mode (useful when editing the docs), run $ mkdocs serve in the project root directory.

For your information, the docs site configuration is located in the mkdocs.yml file.

Please refer to the MkDocs docs for more usage information, including how to add new pages.