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 https://github.com/0xPlaygrounds/subgrounds && 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]'
Alternative to using poe
If you wish not use poe
, you'll have to run the following and checkout the commands listed in the pyproject.toml
under [tool.poe.tasks]
.
This will run <my-command>
inside a virtual environment (poetry shell
will explictly keep you inside one until you run deactivate
)
$ poetry shell
$ <my-command>
$ deactivate
# or
$ poetry run <my-command>
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
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