Algorand Python is a partial implementation of the Python programming language that runs on the AVM. It includes a statically typed framework for development of Algorand smart contracts and logic signatures, with Pythonic interfaces to underlying AVM functionality that works with standard Python tooling.
Algorand Python is compiled for execution on the AVM by PuyaPy, an optimising compiler that ensures the resulting AVM bytecode execution semantics that match the given Python code. PuyaPy produces output that is directly compatible with AlgoKit typed clients to make deployment and calling easy.
Documentation | Language guide
The easiest way to use Algorand Python is to instantiate a template with AlgoKit via:
algokit init -t python
This will give you a full development environment with intellisense, linting, automatic formatting, breakpoint debugging, deployment and CI/CD.
A sample smart contract will be placed under PROJECT_NAME/projects/PROJECT_NAME/smart_contracts/SMART_CONTRACT_NAME/contract.py
(replacing PROJECT_NAME
and SMART_CONTRACT_NAME
with the values you chose during the template wizard.)
Alternatively, if you want to start from scratch you can do the following:
algokit compile py -h
poetry add algorand-python
contract.py
file:
from algopy import ARC4Contract, arc4
class HelloWorldContract(ARC4Contract):
@arc4.abimethod
def hello(self, name: arc4.String) -> arc4.String:
return "Hello, " + name
algokit compile py contract.py
HelloWorldContract.approval.teal
and HelloWorldContract.clear.teal
on the file system!algokit compile py contract.py --output-arc32 --no-output-teal
HelloWorldContract.arc32.json
, which can be generated into a client e.g. using AlgoKit CLI:
algokit generate client HelloWorldContract.arc32.json --output client.py
There are many examples in this repo, here are some of the more useful ones that showcase what is possible.
The compiled output is available under the out/
directory alongside these, e.g. the approval
TEAL for voting
is available at examples/voting/out/VotingRoundApp.approval.teal.