If you are interested in contributing to the project, we welcome and thank you. We want to make PyTEAL the best and easiest way to build on Algorand Virtual Machine.
We appreciate your willingness to help us.
Pull Requests (PR) are the best way to propose your PyTEAL utils.
We actively welcome and support community proposals to grow PyTEAL utils, let's do it in a clean, organized, tested and well documented way:
- Fork this repo and create your branch from
main
, please name itutil/...
- Each PyTEAL utils
subpackage
must have its own folder insidepytealutils
. - New PyTEAL utils must be tested. Please follow
pytest
best practices. - Unit Tests: add specific unit-tests as
*_test.py
in the samesubpackage
folder! - E2E Tests: add end-to-end tests as
*_test.py
in the tests folder. - Verify coding style consistency with
pre-commit run --all-files
before submitting your PR! - Ensure all your specifc unit-tests or end-to-end pass!
- Make sure your code lints.
- New PyTEAL utils must be documented. Examples are useful too. Get inspired!
- Issue your PR!
The Sandbox repository has to either be available at ../sandbox
or set via ALGORAND_SANBOX_DIR
.
(.venv) pytest
How many times you already found your self copying&pasting the same helper functions and classes from different projects? We want to avoid this!
To ensure homogeneous and repeatable tests please use common helpers from utils.py. Growing and maintaining common helpers avoid code repetition and fragmentation for those general utilities like: instantiate an Algod client, create and fund an Accout in Sandbox, etc.
Unless your test really needs ad-hoc helpers, the best practice is using common helpers.
Do you think a really useful helper for everybody is missing? Please consider filing an issue providing:
- Helper function/class name
- Helper function/class short description
- Optional: implementation draft/proposal
Want to suggest a new PyTEAL utils to the community? Please consider filing an issue providing:
- PyTEAL utils name
- PyTEAL utils short description
- Optional: implementation draft/proposal
We recommand the contributing code following PEP 8 -- Style Guide for Python Code.
We rely on pre-commit and hooks running recommended validators. Refer to pre-commit-config.yaml
, make sure to have the hook activated when commiting to this repository.
By contributing, you agree that your contributions will be licensed under its MIT License.