Skip to content

Commit 4ea8814

Browse files
committed
chore: updated examples
1 parent 947a893 commit 4ea8814

File tree

4 files changed

+74
-102
lines changed

4 files changed

+74
-102
lines changed

examples/generators/production_python_smart_contract_python/README.md

Lines changed: 30 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,15 @@ This project has been generated using AlgoKit. See below for default getting sta
1414
### Initial Setup
1515

1616
#### 1. Clone the Repository
17-
1817
Start by cloning this repository to your local machine.
1918

2019
#### 2. Install Pre-requisites
21-
2220
Ensure the following pre-requisites are installed and properly configured:
2321

2422
- **Docker**: Required for running a local Algorand network. [Install Docker](https://www.docker.com/).
2523
- **AlgoKit CLI**: Essential for project setup and operations. Install the latest version from [AlgoKit CLI Installation Guide](https://github.com/algorandfoundation/algokit-cli#install). Verify installation with `algokit --version`, expecting `2.0.0` or later.
2624

2725
#### 3. Bootstrap Your Local Environment
28-
2926
Run the following commands within the project folder:
3027

3128
- **Install Poetry**: Required for Python dependency management. [Installation Guide](https://python-poetry.org/docs/#installation). Verify with `poetry -V` to see version `1.2`+.
@@ -36,16 +33,14 @@ Run the following commands within the project folder:
3633
### Development Workflow
3734

3835
#### Terminal
39-
4036
Directly manage and interact with your project using AlgoKit commands:
4137

4238
1. **Build Contracts**: `algokit project run build` compiles all smart contracts. You can also specify a specific contract by passing the name of the contract folder as an extra argument.
43-
For example: `algokit project run build -- hello_world` will only build the `hello_world` contract.
39+
For example: `algokit project run build -- hello_world` will only build the `hello_world` contract.
4440
2. **Deploy**: Use `algokit project deploy localnet` to deploy contracts to the local network. You can also specify a specific contract by passing the name of the contract folder as an extra argument.
45-
For example: `algokit project deploy localnet -- hello_world` will only deploy the `hello_world` contract.
46-
47-
#### VS Code
41+
For example: `algokit project deploy localnet -- hello_world` will only deploy the `hello_world` contract.
4842

43+
#### VS Code
4944
For a seamless experience with breakpoint debugging and other features:
5045

5146
1. **Open Project**: In VS Code, open the repository root.
@@ -55,22 +50,20 @@ For a seamless experience with breakpoint debugging and other features:
5550
- **Windows Users**: Select the Python interpreter at `./.venv/Scripts/python.exe` via `Ctrl/Cmd + Shift + P` > `Python: Select Interpreter` before the first run.
5651

5752
#### JetBrains IDEs
58-
5953
While primarily optimized for VS Code, JetBrains IDEs are supported:
6054

6155
1. **Open Project**: In your JetBrains IDE, open the repository root.
6256
2. **Automatic Setup**: The IDE should configure the Python interpreter and virtual environment.
6357
3. **Debugging**: Use `Shift+F10` or `Ctrl+R` to start debugging. Note: Windows users may encounter issues with pre-launch tasks due to a known bug. See [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task) for workarounds.
6458

6559
## AlgoKit Workspaces and Project Management
66-
6760
This project supports both standalone and monorepo setups through AlgoKit workspaces. Leverage [`algokit project run`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/project/run.md) commands for efficient monorepo project orchestration and management across multiple projects within a workspace.
6861

6962
## AlgoKit Generators
7063

7164
This template provides a set of [algokit generators](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/generate.md) that allow you to further modify the project instantiated from the template to fit your needs, as well as giving you a base to build your own extensions to invoke via the `algokit generate` command.
7265

73-
### Generate Smart Contract
66+
### Generate Smart Contract
7467

7568
By default the template creates a single `HelloWorld` contract under hello_world folder in the `smart_contracts` directory. To add a new contract:
7669

@@ -82,7 +75,7 @@ By default the template creates a single `HelloWorld` contract under hello_world
8275
8376
### Generate '.env' files
8477

85-
By default the template instance does not contain any env files. Using [`algokit project deploy`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/project/deploy.md) against `localnet` | `testnet` | `mainnet` will use default values for `algod` and `indexer` unless overwritten via `.env` or `.env.{target_network}`.
78+
By default the template instance does not contain any env files. Using [`algokit project deploy`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/project/deploy.md) against `localnet` | `testnet` | `mainnet` will use default values for `algod` and `indexer` unless overwritten via `.env` or `.env.{target_network}`.
8679

8780
To generate a new `.env` or `.env.{target_network}` file, run `algokit generate env-file`
8881

@@ -105,44 +98,42 @@ To define custom `algokit project run` commands refer to [documentation](https:/
10598

10699
#### Setting up GitHub for CI/CD workflow and TestNet deployment
107100

108-
1. Every time you have a change to your smart contract, and when you first initialize the project you need to [build the contract](#initial-setup) and then commit the `smart_contracts/artifacts` folder so the [output stability](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/articles/output_stability.md) tests pass
109-
2. Decide what values you want to use for the `allow_update`, `allow_delete` and the `on_schema_break`, `on_update` parameters specified in [`contract.py`](./smart_contracts/hello_world/contract.py).
110-
When deploying to LocalNet these values are both set to allow update and replacement of the app for convenience. But for non-LocalNet networks
111-
the defaults are more conservative.
112-
These default values will allow the smart contract to be deployed initially, but will not allow the app to be updated or deleted if is changed and the build will instead fail.
113-
To help you decide it may be helpful to read the [AlgoKit Utils app deployment documentation](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/docs/capabilities/app-deploy.md) or the [AlgoKit smart contract deployment architecture](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md#upgradeable-and-deletable-contracts).
114-
3. Create a [Github Environment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#creating-an-environment) named `Test`.
115-
Note: If you have a private repository and don't have GitHub Enterprise then Environments won't work and you'll need to convert the GitHub Action to use a different approach. Ignore this step if you picked `Starter` preset.
116-
4. Create or obtain a mnemonic for an Algorand account for use on TestNet to deploy apps, referred to as the `DEPLOYER` account.
117-
5. Store the mnemonic as a [secret](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets) `DEPLOYER_MNEMONIC`
118-
in the Test environment created in step 3.
119-
6. The account used to deploy the smart contract will require enough funds to create the app, and also fund it. There are two approaches available here:
120-
- Either, ensure the account is funded outside of CI/CD.
121-
In Testnet, funds can be obtained by using the [Algorand TestNet dispenser](https://bank.testnet.algorand.network/) and we recommend provisioning 50 ALGOs.
122-
- Or, fund the account as part of the CI/CD process by using a `DISPENSER_MNEMONIC` GitHub Environment secret to point to a separate `DISPENSER` account that you maintain ALGOs in (similarly, you need to provision ALGOs into this account using the [TestNet dispenser](https://bank.testnet.algorand.network/)).
101+
1. Every time you have a change to your smart contract, and when you first initialize the project you need to [build the contract](#initial-setup) and then commit the `smart_contracts/artifacts` folder so the [output stability](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/articles/output_stability.md) tests pass
102+
2. Decide what values you want to use for the `allow_update`, `allow_delete` and the `on_schema_break`, `on_update` parameters specified in [`contract.py`](./smart_contracts/hello_world/contract.py).
103+
When deploying to LocalNet these values are both set to allow update and replacement of the app for convenience. But for non-LocalNet networks
104+
the defaults are more conservative.
105+
These default values will allow the smart contract to be deployed initially, but will not allow the app to be updated or deleted if is changed and the build will instead fail.
106+
To help you decide it may be helpful to read the [AlgoKit Utils app deployment documentation](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/docs/capabilities/app-deploy.md) or the [AlgoKit smart contract deployment architecture](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md#upgradeable-and-deletable-contracts).
107+
3. Create a [Github Environment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#creating-an-environment) named `Test`.
108+
Note: If you have a private repository and don't have GitHub Enterprise then Environments won't work and you'll need to convert the GitHub Action to use a different approach. Ignore this step if you picked `Starter` preset.
109+
4. Create or obtain a mnemonic for an Algorand account for use on TestNet to deploy apps, referred to as the `DEPLOYER` account.
110+
5. Store the mnemonic as a [secret](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets) `DEPLOYER_MNEMONIC`
111+
in the Test environment created in step 3.
112+
6. The account used to deploy the smart contract will require enough funds to create the app, and also fund it. There are two approaches available here:
113+
* Either, ensure the account is funded outside of CI/CD.
114+
In Testnet, funds can be obtained by using the [Algorand TestNet dispenser](https://bank.testnet.algorand.network/) and we recommend provisioning 50 ALGOs.
115+
* Or, fund the account as part of the CI/CD process by using a `DISPENSER_MNEMONIC` GitHub Environment secret to point to a separate `DISPENSER` account that you maintain ALGOs in (similarly, you need to provision ALGOs into this account using the [TestNet dispenser](https://bank.testnet.algorand.network/)).
123116

124117
#### Continuous Integration
125118

126119
For pull requests and pushes to `main` branch against this repository the following checks are automatically performed by GitHub Actions:
127-
128-
- Python dependencies are audited using [pip-audit](https://pypi.org/project/pip-audit/)
129-
- Code formatting is checked using [Black](https://github.com/psf/black)
130-
- Linting is checked using [Ruff](https://github.com/charliermarsh/ruff)
131-
- Types are checked using [mypy](https://mypy-lang.org/)
120+
- Python dependencies are audited using [pip-audit](https://pypi.org/project/pip-audit/)
121+
- Code formatting is checked using [Black](https://github.com/psf/black)
122+
- Linting is checked using [Ruff](https://github.com/charliermarsh/ruff)
123+
- Types are checked using [mypy](https://mypy-lang.org/)
132124
- The base framework for testing is [pytest](https://docs.pytest.org/), and the project includes two separate kinds of tests:
133125
- - `Algorand Python` smart contract unit tests, that are run using [`algorand-python-testing`](https://pypi.org/project/algorand-python-testing/), which are executed in a Python intepreter emulating major AVM behaviour
134126
- - Python `ApplicationClient` tests that are run against `algokit localnet` and test the behaviour in a real network enviornment
135-
- Smart contract artifacts are built
136-
- Smart contract artifacts are checked for [output stability](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/articles/output_stability.md).
137-
- Smart contract is deployed to a AlgoKit LocalNet instance
127+
- Smart contract artifacts are built
128+
- Smart contract artifacts are checked for [output stability](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/articles/output_stability.md).
129+
- Smart contract is deployed to a AlgoKit LocalNet instance
138130

139131
> NOTE: By default smart contract artifacts are compiled with `--debug-level` set to 0, to change this, modify the compiler invocation under `smart_contracts/_helpers/build.py`
140132
141133
#### Continuous Deployment
142134

143135
For pushes to `main` branch, after the above checks pass, the following deployment actions are performed:
144-
145-
- The smart contract(s) are deployed to TestNet using [AlgoNode](https://algonode.io).
136+
- The smart contract(s) are deployed to TestNet using [AlgoNode](https://algonode.io).
146137

147138
> Please note deployment is also performed via `algokit deploy` command which can be invoked both via CI as seen on this project, or locally. For more information on how to use `algokit deploy` please see [AlgoKit documentation](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/deploy.md).
148139
@@ -160,4 +151,5 @@ This project makes use of Algorand Python to build Algorand smart contracts. The
160151
- [pytest](https://docs.pytest.org/): Automated testing.
161152
- [pip-audit](https://pypi.org/project/pip-audit/): Tool for scanning Python environments for packages with known vulnerabilities.
162153
- [pre-commit](https://pre-commit.com/): A framework for managing and maintaining multi-language pre-commit hooks, to enable pre-commit you need to run `pre-commit install` in the root of the repository. This will install the pre-commit hooks and run them against modified files when committing. If any of the hooks fail, the commit will be aborted. To run the hooks on all files, use `pre-commit run --all-files`.
163-
It has also been configured to have a productive dev experience out of the box in [VS Code](https://code.visualstudio.com/), see the [.vscode](./.vscode) folder.
154+
It has also been configured to have a productive dev experience out of the box in [VS Code](https://code.visualstudio.com/), see the [.vscode](./.vscode) folder.
155+

examples/generators/starter_python_smart_contract_python/README.md

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,15 @@ This project has been generated using AlgoKit. See below for default getting sta
1414
### Initial Setup
1515

1616
#### 1. Clone the Repository
17-
1817
Start by cloning this repository to your local machine.
1918

2019
#### 2. Install Pre-requisites
21-
2220
Ensure the following pre-requisites are installed and properly configured:
2321

2422
- **Docker**: Required for running a local Algorand network. [Install Docker](https://www.docker.com/).
2523
- **AlgoKit CLI**: Essential for project setup and operations. Install the latest version from [AlgoKit CLI Installation Guide](https://github.com/algorandfoundation/algokit-cli#install). Verify installation with `algokit --version`, expecting `2.0.0` or later.
2624

2725
#### 3. Bootstrap Your Local Environment
28-
2926
Run the following commands within the project folder:
3027

3128
- **Install Poetry**: Required for Python dependency management. [Installation Guide](https://python-poetry.org/docs/#installation). Verify with `poetry -V` to see version `1.2`+.
@@ -36,16 +33,14 @@ Run the following commands within the project folder:
3633
### Development Workflow
3734

3835
#### Terminal
39-
4036
Directly manage and interact with your project using AlgoKit commands:
4137

4238
1. **Build Contracts**: `algokit project run build` compiles all smart contracts. You can also specify a specific contract by passing the name of the contract folder as an extra argument.
43-
For example: `algokit project run build -- hello_world` will only build the `hello_world` contract.
39+
For example: `algokit project run build -- hello_world` will only build the `hello_world` contract.
4440
2. **Deploy**: Use `algokit project deploy localnet` to deploy contracts to the local network. You can also specify a specific contract by passing the name of the contract folder as an extra argument.
45-
For example: `algokit project deploy localnet -- hello_world` will only deploy the `hello_world` contract.
46-
47-
#### VS Code
41+
For example: `algokit project deploy localnet -- hello_world` will only deploy the `hello_world` contract.
4842

43+
#### VS Code
4944
For a seamless experience with breakpoint debugging and other features:
5045

5146
1. **Open Project**: In VS Code, open the repository root.
@@ -55,22 +50,20 @@ For a seamless experience with breakpoint debugging and other features:
5550
- **Windows Users**: Select the Python interpreter at `./.venv/Scripts/python.exe` via `Ctrl/Cmd + Shift + P` > `Python: Select Interpreter` before the first run.
5651

5752
#### JetBrains IDEs
58-
5953
While primarily optimized for VS Code, JetBrains IDEs are supported:
6054

6155
1. **Open Project**: In your JetBrains IDE, open the repository root.
6256
2. **Automatic Setup**: The IDE should configure the Python interpreter and virtual environment.
6357
3. **Debugging**: Use `Shift+F10` or `Ctrl+R` to start debugging. Note: Windows users may encounter issues with pre-launch tasks due to a known bug. See [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task) for workarounds.
6458

6559
## AlgoKit Workspaces and Project Management
66-
6760
This project supports both standalone and monorepo setups through AlgoKit workspaces. Leverage [`algokit project run`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/project/run.md) commands for efficient monorepo project orchestration and management across multiple projects within a workspace.
6861

6962
## AlgoKit Generators
7063

7164
This template provides a set of [algokit generators](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/generate.md) that allow you to further modify the project instantiated from the template to fit your needs, as well as giving you a base to build your own extensions to invoke via the `algokit generate` command.
7265

73-
### Generate Smart Contract
66+
### Generate Smart Contract
7467

7568
By default the template creates a single `HelloWorld` contract under hello_world folder in the `smart_contracts` directory. To add a new contract:
7669

@@ -82,7 +75,7 @@ By default the template creates a single `HelloWorld` contract under hello_world
8275
8376
### Generate '.env' files
8477

85-
By default the template instance does not contain any env files. Using [`algokit project deploy`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/project/deploy.md) against `localnet` | `testnet` | `mainnet` will use default values for `algod` and `indexer` unless overwritten via `.env` or `.env.{target_network}`.
78+
By default the template instance does not contain any env files. Using [`algokit project deploy`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/project/deploy.md) against `localnet` | `testnet` | `mainnet` will use default values for `algod` and `indexer` unless overwritten via `.env` or `.env.{target_network}`.
8679

8780
To generate a new `.env` or `.env.{target_network}` file, run `algokit generate env-file`
8881

@@ -104,4 +97,5 @@ This project makes use of Algorand Python to build Algorand smart contracts. The
10497
- [Algorand Python](https://github.com/algorandfoundation/puya) - A semantically and syntactically compatible, typed Python language that works with standard Python tooling and allows you to express smart contracts (apps) and smart signatures (logic signatures) for deployment on the Algorand Virtual Machine (AVM); [docs](https://github.com/algorandfoundation/puya), [examples](https://github.com/algorandfoundation/puya/tree/main/examples)
10598
- [AlgoKit Utils](https://github.com/algorandfoundation/algokit-utils-py) - A set of core Algorand utilities that make it easier to build solutions on Algorand.
10699
- [Poetry](https://python-poetry.org/): Python packaging and dependency management.
107-
It has also been configured to have a productive dev experience out of the box in [VS Code](https://code.visualstudio.com/), see the [.vscode](./.vscode) folder.
100+
It has also been configured to have a productive dev experience out of the box in [VS Code](https://code.visualstudio.com/), see the [.vscode](./.vscode) folder.
101+

0 commit comments

Comments
 (0)