We actively encourage contributions. Feel free to open an issue to discuss changes or open a pull request if you want to make changes to our Github.


This project uses poetry >= 1.2 to manage it's dependencies. Please checkout the official instructions to setup poetry on your system.

$ git clone && cd subgrounds
$ poetry install
# or
$ poetry install --all-extras

We also use a poetry plugin called poethepoet to aid in managing our frequently run tasks.

$ poetry self add 'poethepoet[poetry_plugin]'


We use pytest to ensure our code doesn't regress in behavior with fixes and new features. Make sure to continously run tests alongside writing new ones as you add more features to the codebase.

$ poe test

Code Style#

We use black and ruff to maintain our code style.

  • Black provides us an opinionated set of style conventions which helps keep the code consistent.

  • Ruff is a bleeding edge flake8 replacement which helps us lint our code efficiently and effectively.

This library also leverages python typing via the pyright project. We leverage the type-safety via the official Python VSCode Extension.

All PRs should be type-checked and adhere to the black and ruff style conventions.

$ poe format
$ poe check