All implementations within the official Algorand Foundation repository (https://github.com/algorandfoundation/algokit-arc-library) need to be audited and implement a finalised ARC standard. Initial contributions will be from Algorand Foundation only, but for any enquiries about contribution please email [email protected].
The following sections provide details on how the development environment for this library should be setup.
-
Clone this repository:
git clone https://github.com/algorandfoundation/algokit-arc-library
-
Install pre-requisites:
- Install
Python
- Link: The minimum required version is3.10
. It is also recommended to use3.10
for development so dependencies on higher versions are not introduced, and to avoid debugging issues with3.11
(see fabioz/PyDev.Debugger#234 and microsoft/debugpy#939) - Install
Poetry
- Link: The minimum required version is1.2
. - If you're not using PyCharm, then run
poetry install
in the root directory (this should set up.venv
and install all Python dependencies - PyCharm will do this for you on startup)
- Install
-
Install pre-commit hooks (optional but recommended):
pre-commit is configured in this repository, so once
poetry install
has been run, executepre-commit install
inside the virtual-env, and git will ensure formatting, linting, and static typing (viamypy
) is correct when you perform a commit. -
If you update to the latest source code and there are new dependencies you will need to run
poetry install
again
AlgoKit uses Python as a main language and many Python libraries and tools. This section lists all of them with a tiny brief.
- Beaker: Python framework for building Smart Contracts on Algorand using PyTeal.
- Poetry: Python packaging and dependency management.
- Python Semantic Release: Automatic release versioning based on commits
- Black: A Python code formatter.
- Ruff: A python linter
- pip-audit: A tool for scanning dependencies for known vulnerabilities
Each ARC implementation in src
should have a corresponding document in docs/arcs/[name].md
where name is the name of the class in lowercase.
The documentation should contain the following links:
- The ARC specification implemented e.g.
[ARC-9999](https://arc.algorand.foundation/ARCs/arc-9999)
- An Audit report for the implementation e.g.
[Audit](https://link/to/audit.pdf)
There is a simple test that is used to quickly check that contributions meet these requirements.
We are using the Conventional Commits standard for commit messages. This allows us to automatically generate release notes and version numbers. We do this via Python Semantic Release and GitHub actions.