Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a very basic contribution guide #359

Merged
merged 1 commit into from
Nov 29, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Contributing to Puya

Contributions of all kinds are welcome. For new features, please open an issue to discuss first.

## Workflow

[Conventional commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) are used.
Not all commits require a convention, but in general a user-facing change should include at least
one commit with either a `fix:` or `feat:` commit, so that is included in the release notes.
Other conventions such as `docs:` or `test:` are not necessarily required but may be helpful to
see when reviewing.

## Local development tips

`poetry` is used for virtual environment and dependency management.

Dependencies for building docs are in a separate `docs` dependency group, this is only required
if you want to build the documentation locally to see the effects of any edits you made.

`ruff` is used for linting and formatting, `mypy` is used for static analysis. `pre-commit` is
configured, so you will want to either install the hooks with `pre-commit install` or you can run
things manually via `pre-commit run --all-files`.

Testing uses `pytest`. You'll need to have a local `algod` node running for most of the tests
to run, see [algokit-cli](https://github.com/algorandfoundation/algokit-cli).

Part of the tests include checking for no output changes to `examples/` or `test_cases/`. If there
are deliberate changes, you should commit those for the tests to pass.

Additionally, if there are any material changes to the output (ie the generated code), you will
need to run `./scripts/compile_all_examples.py` to ensure the `examples/sizes.txt` file gets
updated.



Loading