diff --git a/.gitattributes b/.gitattributes
index 7d07d70c..6313b56c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1 @@
-* text=lf
+* text=auto eol=lf
diff --git a/.github/workflows/check-python.yaml b/.github/workflows/check-python.yaml
index 4d31c950..4958c23c 100644
--- a/.github/workflows/check-python.yaml
+++ b/.github/workflows/check-python.yaml
@@ -45,7 +45,7 @@ jobs:
shell: bash
run: |
set -o pipefail
- poetry run pytest --junitxml=pytest-junit.xml
+ poetry run pytest --junitxml=pytest-junit.xml -n auto
- name: Check generated templates have been reviewed
shell: bash
diff --git a/.gitignore b/.gitignore
index 426dfccb..5d337899 100644
--- a/.gitignore
+++ b/.gitignore
@@ -156,8 +156,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/copier.yaml b/copier.yaml
index d11af106..2ccf0859 100644
--- a/copier.yaml
+++ b/copier.yaml
@@ -1,152 +1,158 @@
-_subdirectory: template_content
-_templates_suffix: ".jinja"
-
-# questions
-# project_name should never get prompted, AlgoKit should always pass it by convention
-project_name:
- type: str
- help: Name for this project.
- placeholder: "algorand-app"
-
-preset_name:
- type: str
- help: Name of the preset to use. Starter is optimal for simpler projects, Production is optimal for more complex projects that require CI/CD and other features.
- choices:
- Starter: "starter"
- Production: "production"
- default: "starter"
-
-contract_name:
- type: str
- help: Name of the default smart contract app.
- placeholder: "hello_world"
- default: "hello_world"
- validator: >-
- {% if not (contract_name | regex_search('^[a-z]+(?:_[a-z]+)*$')) %}
- contract_name must be formatted in snake case.
- {% endif %}
-
-author_name:
- type: str
- help: Package author name
- placeholder: "Your Name"
-
-author_email:
- type: str
- help: Package author email
- placeholder: "your@email.tld"
-
-ide_vscode:
- type: bool
- help: Do you want to add VSCode configuration?
- default: yes
-
-deployment_language:
- type: str
- help: What programming language do you want to use for your contract deployment code?
- choices:
- Python: "python"
- TypeScript: "typescript"
- default: "python"
-
-python_linter:
- type: str
- help: Do you want to use a Python linter?
- when: "{{ preset_name == 'production' }}"
- choices:
- Ruff: "ruff"
- Flake8: "flake8"
- No thanks: "none"
- default: |-
- {% if preset_name == 'production' -%}
- ruff
- {%- else -%}
- none
- {%- endif %}
-
-use_python_black:
- type: bool
- help: Do you want to use a Python formatter (via Black)?
- default: yes
-
-use_python_mypy:
- type: bool
- when: "{{ preset_name == 'production' }}"
- help: Do you want to use a Python type checker (via mypy)?
- default: |-
- {% if preset_name == 'production' -%}
- yes
- {%- else -%}
- no
- {%- endif %}
-
-use_python_pytest:
- type: bool
- help: Do you want to include unit tests (via pytest)?
- default: yes
-
-use_python_pip_audit:
- type: bool
- when: "{{ preset_name == 'production' }}"
- help: Do you want to include Python dependency vulnerability scanning (via pip-audit)?
- default: yes
-
-use_github_actions:
- type: bool
- when: "{{ preset_name == 'production' }}"
- help: Do you want to include Github Actions workflows for build and testnet deployment?
- default: |-
- {% if preset_name == 'production' -%}
- yes
- {%- else -%}
- no
- {%- endif %}
-
-use_pre_commit:
- type: bool
- when: "{{ preset_name == 'production' }}"
- help: Do you want to include pre-commit for linting, type checking and formatting?
- default: |-
- {% if preset_name == 'production' -%}
- yes
- {%- else -%}
- no
- {%- endif %}
-
-use_dispenser:
- type: bool
- when: "{{ preset_name == 'production' }}"
- help: Do you want to fund your deployment account using an optional dispenser account?
- default: no
-
-# The following should never get prompted; algokit should always pass these values through by convention
-
-algod_token:
- type: str
- help: Default Algod Token
- default: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-
-algod_server:
- type: str
- help: Default Algod server
- default: "http://localhost"
-
-algod_port:
- type: int
- help: Default Algod port
- default: 4001
-
-indexer_token:
- type: str
- help: Default Indexer token
- default: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-
-indexer_server:
- type: str
- help: Default Indexer server
- default: "http://localhost"
-
-indexer_port:
- type: int
- help: Default Indexer port
- default: 8980
+_subdirectory: template_content
+_templates_suffix: ".jinja"
+
+# questions
+# project_name should never get prompted, AlgoKit should always pass it by convention
+project_name:
+ type: str
+ help: Name for this project.
+ placeholder: "algorand-app"
+
+preset_name:
+ type: str
+ help: Name of the preset to use. Starter is optimal for simpler projects, Production is optimal for more complex projects that require CI/CD and other features.
+ choices:
+ Starter: "starter"
+ Production: "production"
+ default: "starter"
+
+contract_name:
+ type: str
+ help: Name of the default smart contract app.
+ placeholder: "hello_world"
+ default: "hello_world"
+ validator: >-
+ {% if not (contract_name | regex_search('^[a-z]+(?:_[a-z]+)*$')) %}
+ contract_name must be formatted in snake case.
+ {% endif %}
+
+author_name:
+ type: str
+ help: Package author name
+ placeholder: "Your Name"
+
+author_email:
+ type: str
+ help: Package author email
+ placeholder: "your@email.tld"
+
+ide_vscode:
+ type: bool
+ help: Do you want to add VSCode configuration?
+ default: yes
+
+ide_jetbrains:
+ type: bool
+ help: Do you want to add JetBrains configuration (primarily optimized for PyCharm CE)?
+ when: "{{ ide_vscode == false }}"
+ default: no
+
+deployment_language:
+ type: str
+ help: What programming language do you want to use for your contract deployment code?
+ choices:
+ Python: "python"
+ TypeScript: "typescript"
+ default: "python"
+
+python_linter:
+ type: str
+ help: Do you want to use a Python linter?
+ when: "{{ preset_name == 'production' }}"
+ choices:
+ Ruff: "ruff"
+ Flake8: "flake8"
+ No thanks: "none"
+ default: |-
+ {% if preset_name == 'production' -%}
+ ruff
+ {%- else -%}
+ none
+ {%- endif %}
+
+use_python_black:
+ type: bool
+ help: Do you want to use a Python formatter (via Black)?
+ default: yes
+
+use_python_mypy:
+ type: bool
+ when: "{{ preset_name == 'production' }}"
+ help: Do you want to use a Python type checker (via mypy)?
+ default: |-
+ {% if preset_name == 'production' -%}
+ yes
+ {%- else -%}
+ no
+ {%- endif %}
+
+use_python_pytest:
+ type: bool
+ help: Do you want to include unit tests (via pytest)?
+ default: yes
+
+use_python_pip_audit:
+ type: bool
+ when: "{{ preset_name == 'production' }}"
+ help: Do you want to include Python dependency vulnerability scanning (via pip-audit)?
+ default: yes
+
+use_github_actions:
+ type: bool
+ when: "{{ preset_name == 'production' }}"
+ help: Do you want to include Github Actions workflows for build and testnet deployment?
+ default: |-
+ {% if preset_name == 'production' -%}
+ yes
+ {%- else -%}
+ no
+ {%- endif %}
+
+use_pre_commit:
+ type: bool
+ when: "{{ preset_name == 'production' }}"
+ help: Do you want to include pre-commit for linting, type checking and formatting?
+ default: |-
+ {% if preset_name == 'production' -%}
+ yes
+ {%- else -%}
+ no
+ {%- endif %}
+
+use_dispenser:
+ type: bool
+ when: "{{ preset_name == 'production' }}"
+ help: Do you want to fund your deployment account using an optional dispenser account?
+ default: no
+
+# The following should never get prompted; algokit should always pass these values through by convention
+
+algod_token:
+ type: str
+ help: Default Algod Token
+ default: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+algod_server:
+ type: str
+ help: Default Algod server
+ default: "http://localhost"
+
+algod_port:
+ type: int
+ help: Default Algod port
+ default: 4001
+
+indexer_token:
+ type: str
+ help: Default Indexer token
+ default: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+indexer_server:
+ type: str
+ help: Default Indexer server
+ default: "http://localhost"
+
+indexer_port:
+ type: int
+ help: Default Indexer port
+ default: 8980
diff --git a/poetry.lock b/poetry.lock
index 6b370242..c52a408d 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,10 +1,9 @@
-# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
[[package]]
name = "aiohttp"
version = "3.8.4"
description = "Async http client/server framework (asyncio)"
-category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -113,7 +112,6 @@ speedups = ["Brotli", "aiodns", "cchardet"]
name = "aiosignal"
version = "1.3.1"
description = "aiosignal: a list of registered asynchronous callbacks"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -128,7 +126,6 @@ frozenlist = ">=1.1.0"
name = "algokit-utils"
version = "1.3.0"
description = "Utilities for Algorand development for use by AlgoKit"
-category = "main"
optional = false
python-versions = ">=3.10,<4.0"
files = [
@@ -142,7 +139,6 @@ py-algorand-sdk = ">=2.2.0,<3.0.0"
name = "async-timeout"
version = "4.0.2"
description = "Timeout context manager for asyncio programs"
-category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -154,7 +150,6 @@ files = [
name = "attrs"
version = "23.1.0"
description = "Classes Without Boilerplate"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -173,7 +168,6 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte
name = "beaker-pyteal"
version = "1.0.1"
description = "A Framework for building PyTeal Applications"
-category = "main"
optional = false
python-versions = ">=3.10,<4.0"
files = [
@@ -189,7 +183,6 @@ pyteal = ">=0.24,<0.25"
name = "black"
version = "22.12.0"
description = "The uncompromising code formatter."
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -225,7 +218,6 @@ uvloop = ["uvloop (>=0.15.2)"]
name = "cffi"
version = "1.15.1"
description = "Foreign Function Interface for Python calling C code."
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -302,7 +294,6 @@ pycparser = "*"
name = "cfgv"
version = "3.3.1"
description = "Validate configuration and produce human readable error messages."
-category = "dev"
optional = false
python-versions = ">=3.6.1"
files = [
@@ -314,7 +305,6 @@ files = [
name = "charset-normalizer"
version = "3.1.0"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
-category = "dev"
optional = false
python-versions = ">=3.7.0"
files = [
@@ -399,7 +389,6 @@ files = [
name = "click"
version = "8.1.3"
description = "Composable command line interface toolkit"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -414,7 +403,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
-category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
@@ -426,7 +414,6 @@ files = [
name = "distlib"
version = "0.3.6"
description = "Distribution utilities"
-category = "dev"
optional = false
python-versions = "*"
files = [
@@ -438,7 +425,6 @@ files = [
name = "docstring-parser"
version = "0.14.1"
description = "Parse Python docstrings in reST, Google and Numpydoc format"
-category = "main"
optional = false
python-versions = ">=3.6,<4.0"
files = [
@@ -450,7 +436,6 @@ files = [
name = "exceptiongroup"
version = "1.1.1"
description = "Backport of PEP 654 (exception groups)"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -461,11 +446,24 @@ files = [
[package.extras]
test = ["pytest (>=6)"]
+[[package]]
+name = "execnet"
+version = "2.0.2"
+description = "execnet: rapid multi-Python deployment"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "execnet-2.0.2-py3-none-any.whl", hash = "sha256:88256416ae766bc9e8895c76a87928c0012183da3cc4fc18016e6f050e025f41"},
+ {file = "execnet-2.0.2.tar.gz", hash = "sha256:cc59bc4423742fd71ad227122eb0dd44db51efb3dc4095b45ac9a08c770096af"},
+]
+
+[package.extras]
+testing = ["hatch", "pre-commit", "pytest", "tox"]
+
[[package]]
name = "executing"
version = "1.2.0"
description = "Get the currently executing AST node of a frame, and other information"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -480,7 +478,6 @@ tests = ["asttokens", "littleutils", "pytest", "rich"]
name = "filelock"
version = "3.12.2"
description = "A platform independent file lock."
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -496,7 +493,6 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "p
name = "flake8"
version = "6.0.0"
description = "the modular source code checker: pep8 pyflakes and co"
-category = "dev"
optional = false
python-versions = ">=3.8.1"
files = [
@@ -513,7 +509,6 @@ pyflakes = ">=3.0.0,<3.1.0"
name = "frozenlist"
version = "1.3.3"
description = "A list-like structure which implements collections.abc.MutableSequence"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -597,7 +592,6 @@ files = [
name = "identify"
version = "2.5.24"
description = "File identification library for Python"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -612,7 +606,6 @@ license = ["ukkonen"]
name = "idna"
version = "3.4"
description = "Internationalized Domain Names in Applications (IDNA)"
-category = "dev"
optional = false
python-versions = ">=3.5"
files = [
@@ -624,7 +617,6 @@ files = [
name = "iniconfig"
version = "2.0.0"
description = "brain-dead simple config-ini parsing"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -636,7 +628,6 @@ files = [
name = "mccabe"
version = "0.7.0"
description = "McCabe checker, plugin for flake8"
-category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -648,7 +639,6 @@ files = [
name = "msgpack"
version = "1.0.5"
description = "MessagePack serializer"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -721,7 +711,6 @@ files = [
name = "multidict"
version = "6.0.4"
description = "multidict implementation"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -805,7 +794,6 @@ files = [
name = "mypy"
version = "1.4.0"
description = "Optional static typing for Python"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -852,7 +840,6 @@ reports = ["lxml"]
name = "mypy-extensions"
version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker."
-category = "dev"
optional = false
python-versions = ">=3.5"
files = [
@@ -864,7 +851,6 @@ files = [
name = "nodeenv"
version = "1.8.0"
description = "Node.js virtual environment builder"
-category = "dev"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
files = [
@@ -879,7 +865,6 @@ setuptools = "*"
name = "packaging"
version = "23.1"
description = "Core utilities for Python packages"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -891,7 +876,6 @@ files = [
name = "pathspec"
version = "0.11.1"
description = "Utility library for gitignore style pattern matching of file paths."
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -903,7 +887,6 @@ files = [
name = "platformdirs"
version = "3.6.0"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -919,7 +902,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-
name = "pluggy"
version = "1.0.0"
description = "plugin and hook calling mechanisms for python"
-category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -935,7 +917,6 @@ testing = ["pytest", "pytest-benchmark"]
name = "pre-commit"
version = "3.3.3"
description = "A framework for managing and maintaining multi-language pre-commit hooks."
-category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@@ -954,7 +935,6 @@ virtualenv = ">=20.10.0"
name = "py-algorand-sdk"
version = "2.3.0"
description = "Algorand SDK in Python"
-category = "main"
optional = false
python-versions = ">=3.8"
files = [
@@ -971,7 +951,6 @@ pynacl = ">=1.4.0,<2"
name = "pycodestyle"
version = "2.10.0"
description = "Python style guide checker"
-category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -983,7 +962,6 @@ files = [
name = "pycparser"
version = "2.21"
description = "C parser in Python"
-category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -995,7 +973,6 @@ files = [
name = "pycryptodomex"
version = "3.18.0"
description = "Cryptographic library for Python"
-category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -1037,7 +1014,6 @@ files = [
name = "pyflakes"
version = "3.0.1"
description = "passive checker of Python programs"
-category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -1049,7 +1025,6 @@ files = [
name = "pynacl"
version = "1.5.0"
description = "Python binding to the Networking and Cryptography (NaCl) library"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -1076,7 +1051,6 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"]
name = "pyteal"
version = "0.24.1"
description = "Algorand Smart Contracts in Python"
-category = "main"
optional = false
python-versions = ">=3.10"
files = [
@@ -1095,7 +1069,6 @@ tabulate = ">=0.9.0,<0.10.0"
name = "pytest"
version = "7.3.2"
description = "pytest: simple powerful testing with Python"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1114,11 +1087,30 @@ tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
[package.extras]
testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
+[[package]]
+name = "pytest-xdist"
+version = "3.3.1"
+description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pytest-xdist-3.3.1.tar.gz", hash = "sha256:d5ee0520eb1b7bcca50a60a518ab7a7707992812c578198f8b44fdfac78e8c93"},
+ {file = "pytest_xdist-3.3.1-py3-none-any.whl", hash = "sha256:ff9daa7793569e6a68544850fd3927cd257cc03a7ef76c95e86915355e82b5f2"},
+]
+
+[package.dependencies]
+execnet = ">=1.1"
+pytest = ">=6.2.0"
+
+[package.extras]
+psutil = ["psutil (>=3.0)"]
+setproctitle = ["setproctitle"]
+testing = ["filelock"]
+
[[package]]
name = "python-dotenv"
version = "1.0.0"
description = "Read key-value pairs from a .env file and set them as environment variables"
-category = "main"
optional = false
python-versions = ">=3.8"
files = [
@@ -1133,7 +1125,6 @@ cli = ["click (>=5.0)"]
name = "pyyaml"
version = "6.0"
description = "YAML parser and emitter for Python"
-category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -1183,7 +1174,6 @@ files = [
name = "ruff"
version = "0.0.273"
description = "An extremely fast Python linter, written in Rust."
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1210,7 +1200,6 @@ files = [
name = "semantic-version"
version = "2.10.0"
description = "A library implementing the 'SemVer' scheme."
-category = "main"
optional = false
python-versions = ">=2.7"
files = [
@@ -1226,7 +1215,6 @@ doc = ["Sphinx", "sphinx-rtd-theme"]
name = "setuptools"
version = "68.0.0"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1243,7 +1231,6 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (
name = "tabulate"
version = "0.9.0"
description = "Pretty-print tabular data"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1258,7 +1245,6 @@ widechars = ["wcwidth"]
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1270,7 +1256,6 @@ files = [
name = "types-pyyaml"
version = "6.0.12.10"
description = "Typing stubs for PyYAML"
-category = "dev"
optional = false
python-versions = "*"
files = [
@@ -1282,7 +1267,6 @@ files = [
name = "typing-extensions"
version = "4.6.3"
description = "Backported and Experimental Type Hints for Python 3.7+"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1294,7 +1278,6 @@ files = [
name = "virtualenv"
version = "20.23.1"
description = "Virtual Python Environment builder"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1315,7 +1298,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess
name = "yarl"
version = "1.9.2"
description = "Yet another URL library"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1402,4 +1384,4 @@ multidict = ">=4.0"
[metadata]
lock-version = "2.0"
python-versions = "^3.10"
-content-hash = "2a74fb8a61a445a98517edd4fb697cec6b61a9a0c4b10853dadfa7d433640ba3"
+content-hash = "464c52c347db4dc0d66c2b549410f605b124addd80c30234dae6caed12881d93"
diff --git a/pyproject.toml b/pyproject.toml
index 7a6ad356..7551f236 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -19,6 +19,7 @@ pytest = "^7.2.2"
mypy = "^1.1.1"
pre-commit = "^3.2.1"
types-pyyaml = "^6.0.12.9"
+pytest-xdist = "^3.3.1"
[build-system]
requires = ["poetry-core"]
diff --git a/template_content/.gitignore.jinja b/template_content/.gitignore.jinja
index 0dbe8edb..832924c3 100644
--- a/template_content/.gitignore.jinja
+++ b/template_content/.gitignore.jinja
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/template_content/README.md.jinja b/template_content/README.md.jinja
index 83dac749..7c92ff0e 100644
--- a/template_content/README.md.jinja
+++ b/template_content/README.md.jinja
@@ -28,10 +28,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/template_content/pyproject.toml.jinja b/template_content/pyproject.toml.jinja
index dd02d619..998870b3 100644
--- a/template_content/pyproject.toml.jinja
+++ b/template_content/pyproject.toml.jinja
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/template_content/{% if ide_jetbrains %}.idea{% endif %}/externalDependencies.xml b/template_content/{% if ide_jetbrains %}.idea{% endif %}/externalDependencies.xml
new file mode 100644
index 00000000..03ecbed8
--- /dev/null
+++ b/template_content/{% if ide_jetbrains %}.idea{% endif %}/externalDependencies.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Build_Beaker_application.xml.jinja b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Build_Beaker_application.xml.jinja
new file mode 100644
index 00000000..d4b88412
--- /dev/null
+++ b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Build_Beaker_application.xml.jinja
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Build_Beaker_application____LocalNet.xml.jinja b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Build_Beaker_application____LocalNet.xml.jinja
new file mode 100644
index 00000000..a2b0f2ac
--- /dev/null
+++ b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Build_Beaker_application____LocalNet.xml.jinja
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Reset_AlgoKit_LocalNet.xml b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Reset_AlgoKit_LocalNet.xml
new file mode 100644
index 00000000..7f1236a4
--- /dev/null
+++ b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Reset_AlgoKit_LocalNet.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Start_AlgoKit_LocalNet.xml b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Start_AlgoKit_LocalNet.xml
new file mode 100644
index 00000000..f699a7ac
--- /dev/null
+++ b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Start_AlgoKit_LocalNet.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Stop_AlgoKit_LocalNet.xml b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Stop_AlgoKit_LocalNet.xml
new file mode 100644
index 00000000..e510cbce
--- /dev/null
+++ b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/Stop_AlgoKit_LocalNet.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'python' %}Build___Deploy_Beaker_application.xml{% endif %}.jinja b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'python' %}Build___Deploy_Beaker_application.xml{% endif %}.jinja
new file mode 100644
index 00000000..ad46e786
--- /dev/null
+++ b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'python' %}Build___Deploy_Beaker_application.xml{% endif %}.jinja
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'python' %}Deploy_Built_Beaker_application.xml{% endif %}.jinja b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'python' %}Deploy_Built_Beaker_application.xml{% endif %}.jinja
new file mode 100644
index 00000000..ac77102c
--- /dev/null
+++ b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'python' %}Deploy_Built_Beaker_application.xml{% endif %}.jinja
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'typescript' %}Build___Deploy_Beaker_application.xml{% endif %}.jinja b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'typescript' %}Build___Deploy_Beaker_application.xml{% endif %}.jinja
new file mode 100644
index 00000000..44d3796e
--- /dev/null
+++ b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'typescript' %}Build___Deploy_Beaker_application.xml{% endif %}.jinja
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'typescript' %}Deploy_Built_Beaker_application.xml{% endif %}.jinja b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'typescript' %}Deploy_Built_Beaker_application.xml{% endif %}.jinja
new file mode 100644
index 00000000..b8842d94
--- /dev/null
+++ b/template_content/{% if ide_jetbrains %}.idea{% endif %}/runConfigurations/{% if deployment_language == 'typescript' %}Deploy_Built_Beaker_application.xml{% endif %}.jinja
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_templates.py b/tests/test_templates.py
index 5d049da6..0771ec24 100644
--- a/tests/test_templates.py
+++ b/tests/test_templates.py
@@ -138,6 +138,22 @@ def run_init(
# Remove .algokit generators folder to avoid polluting the git history
shutil.rmtree(copy_to / ".algokit", ignore_errors=True)
+ # Check if .idea folder exists and if so modify os specific SDK_HOME path
+ idea_folder = copy_to / ".idea"
+ if idea_folder.exists():
+ # Iterate over all files in .idea/runConfigurations
+ for file in (idea_folder / "runConfigurations").iterdir():
+ # Read the file content
+ content = file.read_text()
+ # Replace the line containing SDK_HOME
+ content = re.sub(
+ r'',
+ '',
+ content,
+ )
+ # Write the modified content back to the file
+ file.write_text(content)
+
return result
@@ -163,6 +179,9 @@ def get_questions_from_copier_yaml(
"indexer_token",
"indexer_server",
"indexer_port",
+ "use_python_pip_audit",
+ "use_dispenser",
+ "use_pre_commit",
}
ignored_keys.update(DEFAULT_PARAMETERS)
@@ -186,7 +205,6 @@ def get_questions_from_copier_yaml(
@pytest.mark.parametrize(("question_name", "answer"), get_questions_from_copier_yaml())
def test_parameters(working_dir: Path, question_name: str, answer: str | bool) -> None:
response = run_init_kwargs(working_dir, **{question_name: answer})
-
assert response.returncode == 0, response.stdout
diff --git a/tests_generated/test_default_parameters/.copier-answers.yml b/tests_generated/test_default_parameters/.copier-answers.yml
index 6c0f98ad..b758fdcf 100644
--- a/tests_generated/test_default_parameters/.copier-answers.yml
+++ b/tests_generated/test_default_parameters/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_default_parameters/.gitignore b/tests_generated/test_default_parameters/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_default_parameters/.gitignore
+++ b/tests_generated/test_default_parameters/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_default_parameters/README.md b/tests_generated/test_default_parameters/README.md
index eb034b63..41c3c5f9 100644
--- a/tests_generated/test_default_parameters/README.md
+++ b/tests_generated/test_default_parameters/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_default_parameters/pyproject.toml b/tests_generated/test_default_parameters/pyproject.toml
index de7f6e03..8261d5d1 100644
--- a/tests_generated/test_default_parameters/pyproject.toml
+++ b/tests_generated/test_default_parameters/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_deployment_language-python/.copier-answers.yml b/tests_generated/test_deployment_language-python/.copier-answers.yml
index d43edf8f..6331c0ef 100644
--- a/tests_generated/test_deployment_language-python/.copier-answers.yml
+++ b/tests_generated/test_deployment_language-python/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_deployment_language-python/.gitignore b/tests_generated/test_deployment_language-python/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_deployment_language-python/.gitignore
+++ b/tests_generated/test_deployment_language-python/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_deployment_language-python/README.md b/tests_generated/test_deployment_language-python/README.md
index 93e128bb..0f4a1144 100644
--- a/tests_generated/test_deployment_language-python/README.md
+++ b/tests_generated/test_deployment_language-python/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_deployment_language-python/pyproject.toml b/tests_generated/test_deployment_language-python/pyproject.toml
index 6c4c7d3a..213a92b7 100644
--- a/tests_generated/test_deployment_language-python/pyproject.toml
+++ b/tests_generated/test_deployment_language-python/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_deployment_language-typescript/.copier-answers.yml b/tests_generated/test_deployment_language-typescript/.copier-answers.yml
index 18447286..acd1e8a7 100644
--- a/tests_generated/test_deployment_language-typescript/.copier-answers.yml
+++ b/tests_generated/test_deployment_language-typescript/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: typescript
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_deployment_language-typescript/.gitignore b/tests_generated/test_deployment_language-typescript/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_deployment_language-typescript/.gitignore
+++ b/tests_generated/test_deployment_language-typescript/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_deployment_language-typescript/README.md b/tests_generated/test_deployment_language-typescript/README.md
index b54d5d83..8567f793 100644
--- a/tests_generated/test_deployment_language-typescript/README.md
+++ b/tests_generated/test_deployment_language-typescript/README.md
@@ -27,10 +27,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_deployment_language-typescript/pyproject.toml b/tests_generated/test_deployment_language-typescript/pyproject.toml
index 62cb8f9e..ff6dff4b 100644
--- a/tests_generated/test_deployment_language-typescript/pyproject.toml
+++ b/tests_generated/test_deployment_language-typescript/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_dispenser-False/.algokit.toml b/tests_generated/test_ide_jetbrains-False/.algokit.toml
similarity index 100%
rename from tests_generated/test_use_dispenser-False/.algokit.toml
rename to tests_generated/test_ide_jetbrains-False/.algokit.toml
diff --git a/tests_generated/test_use_pre_commit-False/.copier-answers.yml b/tests_generated/test_ide_jetbrains-False/.copier-answers.yml
similarity index 91%
rename from tests_generated/test_use_pre_commit-False/.copier-answers.yml
rename to tests_generated/test_ide_jetbrains-False/.copier-answers.yml
index d8ec8978..4823003f 100644
--- a/tests_generated/test_use_pre_commit-False/.copier-answers.yml
+++ b/tests_generated/test_ide_jetbrains-False/.copier-answers.yml
@@ -8,12 +8,13 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
indexer_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
preset_name: starter
-project_name: test_use_pre_commit-False
+project_name: test_ide_jetbrains-False
python_linter: none
use_dispenser: false
use_github_actions: false
diff --git a/tests_generated/test_use_dispenser-False/.editorconfig b/tests_generated/test_ide_jetbrains-False/.editorconfig
similarity index 100%
rename from tests_generated/test_use_dispenser-False/.editorconfig
rename to tests_generated/test_ide_jetbrains-False/.editorconfig
diff --git a/tests_generated/test_use_dispenser-False/.env.localnet.template b/tests_generated/test_ide_jetbrains-False/.env.localnet.template
similarity index 100%
rename from tests_generated/test_use_dispenser-False/.env.localnet.template
rename to tests_generated/test_ide_jetbrains-False/.env.localnet.template
diff --git a/tests_generated/test_use_dispenser-False/.env.template b/tests_generated/test_ide_jetbrains-False/.env.template
similarity index 100%
rename from tests_generated/test_use_dispenser-False/.env.template
rename to tests_generated/test_ide_jetbrains-False/.env.template
diff --git a/tests_generated/test_use_dispenser-False/.env.testnet.template b/tests_generated/test_ide_jetbrains-False/.env.testnet.template
similarity index 100%
rename from tests_generated/test_use_dispenser-False/.env.testnet.template
rename to tests_generated/test_ide_jetbrains-False/.env.testnet.template
diff --git a/tests_generated/test_use_dispenser-False/.gitattributes b/tests_generated/test_ide_jetbrains-False/.gitattributes
similarity index 100%
rename from tests_generated/test_use_dispenser-False/.gitattributes
rename to tests_generated/test_ide_jetbrains-False/.gitattributes
diff --git a/tests_generated/test_use_dispenser-True/.gitignore b/tests_generated/test_ide_jetbrains-False/.gitignore
similarity index 98%
rename from tests_generated/test_use_dispenser-True/.gitignore
rename to tests_generated/test_ide_jetbrains-False/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_use_dispenser-True/.gitignore
+++ b/tests_generated/test_ide_jetbrains-False/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_use_dispenser-False/.vscode/extensions.json b/tests_generated/test_ide_jetbrains-False/.vscode/extensions.json
similarity index 100%
rename from tests_generated/test_use_dispenser-False/.vscode/extensions.json
rename to tests_generated/test_ide_jetbrains-False/.vscode/extensions.json
diff --git a/tests_generated/test_use_dispenser-False/.vscode/launch.json b/tests_generated/test_ide_jetbrains-False/.vscode/launch.json
similarity index 100%
rename from tests_generated/test_use_dispenser-False/.vscode/launch.json
rename to tests_generated/test_ide_jetbrains-False/.vscode/launch.json
diff --git a/tests_generated/test_use_dispenser-False/.vscode/settings.json b/tests_generated/test_ide_jetbrains-False/.vscode/settings.json
similarity index 100%
rename from tests_generated/test_use_dispenser-False/.vscode/settings.json
rename to tests_generated/test_ide_jetbrains-False/.vscode/settings.json
diff --git a/tests_generated/test_use_dispenser-False/.vscode/tasks.json b/tests_generated/test_ide_jetbrains-False/.vscode/tasks.json
similarity index 100%
rename from tests_generated/test_use_dispenser-False/.vscode/tasks.json
rename to tests_generated/test_ide_jetbrains-False/.vscode/tasks.json
diff --git a/tests_generated/test_use_python_pip_audit-True/README.md b/tests_generated/test_ide_jetbrains-False/README.md
similarity index 88%
rename from tests_generated/test_use_python_pip_audit-True/README.md
rename to tests_generated/test_ide_jetbrains-False/README.md
index 7219f470..45f616ba 100644
--- a/tests_generated/test_use_python_pip_audit-True/README.md
+++ b/tests_generated/test_ide_jetbrains-False/README.md
@@ -1,4 +1,4 @@
-# test_use_python_pip_audit-True
+# test_ide_jetbrains-False
This project has been generated using AlgoKit. See below for default getting started instructions.
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_use_dispenser-False/poetry.toml b/tests_generated/test_ide_jetbrains-False/poetry.toml
similarity index 100%
rename from tests_generated/test_use_dispenser-False/poetry.toml
rename to tests_generated/test_ide_jetbrains-False/poetry.toml
diff --git a/tests_generated/test_use_pre_commit-False/pyproject.toml b/tests_generated/test_ide_jetbrains-False/pyproject.toml
similarity index 84%
rename from tests_generated/test_use_pre_commit-False/pyproject.toml
rename to tests_generated/test_ide_jetbrains-False/pyproject.toml
index 2d04ac6e..b7550c04 100644
--- a/tests_generated/test_use_pre_commit-False/pyproject.toml
+++ b/tests_generated/test_ide_jetbrains-False/pyproject.toml
@@ -1,5 +1,5 @@
[tool.poetry]
-name = "test_use_pre_commit-False"
+name = "test_ide_jetbrains-False"
version = "0.1.0"
description = "Algorand smart contracts"
authors = ["None "]
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_dispenser-False/smart_contracts/README.md b/tests_generated/test_ide_jetbrains-False/smart_contracts/README.md
similarity index 100%
rename from tests_generated/test_use_dispenser-False/smart_contracts/README.md
rename to tests_generated/test_ide_jetbrains-False/smart_contracts/README.md
diff --git a/tests_generated/test_use_dispenser-False/smart_contracts/__init__.py b/tests_generated/test_ide_jetbrains-False/smart_contracts/__init__.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/smart_contracts/__init__.py
rename to tests_generated/test_ide_jetbrains-False/smart_contracts/__init__.py
diff --git a/tests_generated/test_use_dispenser-False/smart_contracts/__main__.py b/tests_generated/test_ide_jetbrains-False/smart_contracts/__main__.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/smart_contracts/__main__.py
rename to tests_generated/test_ide_jetbrains-False/smart_contracts/__main__.py
diff --git a/tests_generated/test_use_dispenser-False/smart_contracts/config.py b/tests_generated/test_ide_jetbrains-False/smart_contracts/config.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/smart_contracts/config.py
rename to tests_generated/test_ide_jetbrains-False/smart_contracts/config.py
diff --git a/tests_generated/test_use_dispenser-False/smart_contracts/hello_world/contract.py b/tests_generated/test_ide_jetbrains-False/smart_contracts/hello_world/contract.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/smart_contracts/hello_world/contract.py
rename to tests_generated/test_ide_jetbrains-False/smart_contracts/hello_world/contract.py
diff --git a/tests_generated/test_use_dispenser-False/smart_contracts/hello_world/deploy_config.py b/tests_generated/test_ide_jetbrains-False/smart_contracts/hello_world/deploy_config.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/smart_contracts/hello_world/deploy_config.py
rename to tests_generated/test_ide_jetbrains-False/smart_contracts/hello_world/deploy_config.py
diff --git a/tests_generated/test_use_dispenser-False/smart_contracts/helpers/__init__.py b/tests_generated/test_ide_jetbrains-False/smart_contracts/helpers/__init__.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/smart_contracts/helpers/__init__.py
rename to tests_generated/test_ide_jetbrains-False/smart_contracts/helpers/__init__.py
diff --git a/tests_generated/test_use_dispenser-False/smart_contracts/helpers/build.py b/tests_generated/test_ide_jetbrains-False/smart_contracts/helpers/build.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/smart_contracts/helpers/build.py
rename to tests_generated/test_ide_jetbrains-False/smart_contracts/helpers/build.py
diff --git a/tests_generated/test_use_dispenser-False/smart_contracts/helpers/deploy.py b/tests_generated/test_ide_jetbrains-False/smart_contracts/helpers/deploy.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/smart_contracts/helpers/deploy.py
rename to tests_generated/test_ide_jetbrains-False/smart_contracts/helpers/deploy.py
diff --git a/tests_generated/test_use_dispenser-False/tests/__init__.py b/tests_generated/test_ide_jetbrains-False/tests/__init__.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/tests/__init__.py
rename to tests_generated/test_ide_jetbrains-False/tests/__init__.py
diff --git a/tests_generated/test_use_dispenser-False/tests/conftest.py b/tests_generated/test_ide_jetbrains-False/tests/conftest.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/tests/conftest.py
rename to tests_generated/test_ide_jetbrains-False/tests/conftest.py
diff --git a/tests_generated/test_use_dispenser-False/tests/hello_world_test.py b/tests_generated/test_ide_jetbrains-False/tests/hello_world_test.py
similarity index 100%
rename from tests_generated/test_use_dispenser-False/tests/hello_world_test.py
rename to tests_generated/test_ide_jetbrains-False/tests/hello_world_test.py
diff --git a/tests_generated/test_use_pre_commit-False/.algokit.toml b/tests_generated/test_ide_jetbrains-True/.algokit.toml
similarity index 100%
rename from tests_generated/test_use_pre_commit-False/.algokit.toml
rename to tests_generated/test_ide_jetbrains-True/.algokit.toml
diff --git a/tests_generated/test_use_dispenser-False/.copier-answers.yml b/tests_generated/test_ide_jetbrains-True/.copier-answers.yml
similarity index 92%
rename from tests_generated/test_use_dispenser-False/.copier-answers.yml
rename to tests_generated/test_ide_jetbrains-True/.copier-answers.yml
index fe43803e..0b0e8abf 100644
--- a/tests_generated/test_use_dispenser-False/.copier-answers.yml
+++ b/tests_generated/test_ide_jetbrains-True/.copier-answers.yml
@@ -8,12 +8,13 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: true
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
indexer_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
preset_name: starter
-project_name: test_use_dispenser-False
+project_name: test_ide_jetbrains-True
python_linter: none
use_dispenser: false
use_github_actions: false
diff --git a/tests_generated/test_use_dispenser-True/.editorconfig b/tests_generated/test_ide_jetbrains-True/.editorconfig
similarity index 100%
rename from tests_generated/test_use_dispenser-True/.editorconfig
rename to tests_generated/test_ide_jetbrains-True/.editorconfig
diff --git a/tests_generated/test_use_dispenser-True/.env.localnet.template b/tests_generated/test_ide_jetbrains-True/.env.localnet.template
similarity index 100%
rename from tests_generated/test_use_dispenser-True/.env.localnet.template
rename to tests_generated/test_ide_jetbrains-True/.env.localnet.template
diff --git a/tests_generated/test_use_dispenser-True/.env.template b/tests_generated/test_ide_jetbrains-True/.env.template
similarity index 100%
rename from tests_generated/test_use_dispenser-True/.env.template
rename to tests_generated/test_ide_jetbrains-True/.env.template
diff --git a/tests_generated/test_use_dispenser-True/.env.testnet.template b/tests_generated/test_ide_jetbrains-True/.env.testnet.template
similarity index 100%
rename from tests_generated/test_use_dispenser-True/.env.testnet.template
rename to tests_generated/test_ide_jetbrains-True/.env.testnet.template
diff --git a/tests_generated/test_use_dispenser-True/.gitattributes b/tests_generated/test_ide_jetbrains-True/.gitattributes
similarity index 100%
rename from tests_generated/test_use_dispenser-True/.gitattributes
rename to tests_generated/test_ide_jetbrains-True/.gitattributes
diff --git a/tests_generated/test_use_dispenser-False/.gitignore b/tests_generated/test_ide_jetbrains-True/.gitignore
similarity index 98%
rename from tests_generated/test_use_dispenser-False/.gitignore
rename to tests_generated/test_ide_jetbrains-True/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_use_dispenser-False/.gitignore
+++ b/tests_generated/test_ide_jetbrains-True/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Build_Beaker_application.xml b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Build_Beaker_application.xml
new file mode 100644
index 00000000..080f9195
--- /dev/null
+++ b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Build_Beaker_application.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Build_Beaker_application____LocalNet.xml b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Build_Beaker_application____LocalNet.xml
new file mode 100644
index 00000000..f78fac9c
--- /dev/null
+++ b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Build_Beaker_application____LocalNet.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Build___Deploy_Beaker_application.xml b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Build___Deploy_Beaker_application.xml
new file mode 100644
index 00000000..d95f2c51
--- /dev/null
+++ b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Build___Deploy_Beaker_application.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Deploy_Built_Beaker_application.xml b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Deploy_Built_Beaker_application.xml
new file mode 100644
index 00000000..c2d7413d
--- /dev/null
+++ b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Deploy_Built_Beaker_application.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Reset_AlgoKit_LocalNet.xml b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Reset_AlgoKit_LocalNet.xml
new file mode 100644
index 00000000..7f1236a4
--- /dev/null
+++ b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Reset_AlgoKit_LocalNet.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Start_AlgoKit_LocalNet.xml b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Start_AlgoKit_LocalNet.xml
new file mode 100644
index 00000000..f699a7ac
--- /dev/null
+++ b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Start_AlgoKit_LocalNet.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Stop_AlgoKit_LocalNet.xml b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Stop_AlgoKit_LocalNet.xml
new file mode 100644
index 00000000..e510cbce
--- /dev/null
+++ b/tests_generated/test_ide_jetbrains-True/.idea/runConfigurations/Stop_AlgoKit_LocalNet.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests_generated/test_use_dispenser-True/.vscode/extensions.json b/tests_generated/test_ide_jetbrains-True/.vscode/extensions.json
similarity index 100%
rename from tests_generated/test_use_dispenser-True/.vscode/extensions.json
rename to tests_generated/test_ide_jetbrains-True/.vscode/extensions.json
diff --git a/tests_generated/test_use_dispenser-True/.vscode/launch.json b/tests_generated/test_ide_jetbrains-True/.vscode/launch.json
similarity index 100%
rename from tests_generated/test_use_dispenser-True/.vscode/launch.json
rename to tests_generated/test_ide_jetbrains-True/.vscode/launch.json
diff --git a/tests_generated/test_use_dispenser-True/.vscode/settings.json b/tests_generated/test_ide_jetbrains-True/.vscode/settings.json
similarity index 100%
rename from tests_generated/test_use_dispenser-True/.vscode/settings.json
rename to tests_generated/test_ide_jetbrains-True/.vscode/settings.json
diff --git a/tests_generated/test_use_dispenser-True/.vscode/tasks.json b/tests_generated/test_ide_jetbrains-True/.vscode/tasks.json
similarity index 100%
rename from tests_generated/test_use_dispenser-True/.vscode/tasks.json
rename to tests_generated/test_ide_jetbrains-True/.vscode/tasks.json
diff --git a/tests_generated/test_use_pre_commit-False/README.md b/tests_generated/test_ide_jetbrains-True/README.md
similarity index 88%
rename from tests_generated/test_use_pre_commit-False/README.md
rename to tests_generated/test_ide_jetbrains-True/README.md
index 3a3959ba..fea3e9f0 100644
--- a/tests_generated/test_use_pre_commit-False/README.md
+++ b/tests_generated/test_ide_jetbrains-True/README.md
@@ -1,4 +1,4 @@
-# test_use_pre_commit-False
+# test_ide_jetbrains-True
This project has been generated using AlgoKit. See below for default getting started instructions.
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_use_dispenser-True/poetry.toml b/tests_generated/test_ide_jetbrains-True/poetry.toml
similarity index 100%
rename from tests_generated/test_use_dispenser-True/poetry.toml
rename to tests_generated/test_ide_jetbrains-True/poetry.toml
diff --git a/tests_generated/test_use_dispenser-True/pyproject.toml b/tests_generated/test_ide_jetbrains-True/pyproject.toml
similarity index 84%
rename from tests_generated/test_use_dispenser-True/pyproject.toml
rename to tests_generated/test_ide_jetbrains-True/pyproject.toml
index 9483971e..5c863e96 100644
--- a/tests_generated/test_use_dispenser-True/pyproject.toml
+++ b/tests_generated/test_ide_jetbrains-True/pyproject.toml
@@ -1,5 +1,5 @@
[tool.poetry]
-name = "test_use_dispenser-True"
+name = "test_ide_jetbrains-True"
version = "0.1.0"
description = "Algorand smart contracts"
authors = ["None "]
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_dispenser-True/smart_contracts/README.md b/tests_generated/test_ide_jetbrains-True/smart_contracts/README.md
similarity index 100%
rename from tests_generated/test_use_dispenser-True/smart_contracts/README.md
rename to tests_generated/test_ide_jetbrains-True/smart_contracts/README.md
diff --git a/tests_generated/test_use_dispenser-True/smart_contracts/__init__.py b/tests_generated/test_ide_jetbrains-True/smart_contracts/__init__.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/smart_contracts/__init__.py
rename to tests_generated/test_ide_jetbrains-True/smart_contracts/__init__.py
diff --git a/tests_generated/test_use_dispenser-True/smart_contracts/__main__.py b/tests_generated/test_ide_jetbrains-True/smart_contracts/__main__.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/smart_contracts/__main__.py
rename to tests_generated/test_ide_jetbrains-True/smart_contracts/__main__.py
diff --git a/tests_generated/test_use_dispenser-True/smart_contracts/config.py b/tests_generated/test_ide_jetbrains-True/smart_contracts/config.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/smart_contracts/config.py
rename to tests_generated/test_ide_jetbrains-True/smart_contracts/config.py
diff --git a/tests_generated/test_use_dispenser-True/smart_contracts/hello_world/contract.py b/tests_generated/test_ide_jetbrains-True/smart_contracts/hello_world/contract.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/smart_contracts/hello_world/contract.py
rename to tests_generated/test_ide_jetbrains-True/smart_contracts/hello_world/contract.py
diff --git a/tests_generated/test_use_dispenser-True/smart_contracts/hello_world/deploy_config.py b/tests_generated/test_ide_jetbrains-True/smart_contracts/hello_world/deploy_config.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/smart_contracts/hello_world/deploy_config.py
rename to tests_generated/test_ide_jetbrains-True/smart_contracts/hello_world/deploy_config.py
diff --git a/tests_generated/test_use_dispenser-True/smart_contracts/helpers/__init__.py b/tests_generated/test_ide_jetbrains-True/smart_contracts/helpers/__init__.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/smart_contracts/helpers/__init__.py
rename to tests_generated/test_ide_jetbrains-True/smart_contracts/helpers/__init__.py
diff --git a/tests_generated/test_use_dispenser-True/smart_contracts/helpers/build.py b/tests_generated/test_ide_jetbrains-True/smart_contracts/helpers/build.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/smart_contracts/helpers/build.py
rename to tests_generated/test_ide_jetbrains-True/smart_contracts/helpers/build.py
diff --git a/tests_generated/test_use_dispenser-True/smart_contracts/helpers/deploy.py b/tests_generated/test_ide_jetbrains-True/smart_contracts/helpers/deploy.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/smart_contracts/helpers/deploy.py
rename to tests_generated/test_ide_jetbrains-True/smart_contracts/helpers/deploy.py
diff --git a/tests_generated/test_use_dispenser-True/tests/__init__.py b/tests_generated/test_ide_jetbrains-True/tests/__init__.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/tests/__init__.py
rename to tests_generated/test_ide_jetbrains-True/tests/__init__.py
diff --git a/tests_generated/test_use_dispenser-True/tests/conftest.py b/tests_generated/test_ide_jetbrains-True/tests/conftest.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/tests/conftest.py
rename to tests_generated/test_ide_jetbrains-True/tests/conftest.py
diff --git a/tests_generated/test_use_dispenser-True/tests/hello_world_test.py b/tests_generated/test_ide_jetbrains-True/tests/hello_world_test.py
similarity index 100%
rename from tests_generated/test_use_dispenser-True/tests/hello_world_test.py
rename to tests_generated/test_ide_jetbrains-True/tests/hello_world_test.py
diff --git a/tests_generated/test_ide_vscode-False/.copier-answers.yml b/tests_generated/test_ide_vscode-False/.copier-answers.yml
index 2c6a5fcc..a6c4bee3 100644
--- a/tests_generated/test_ide_vscode-False/.copier-answers.yml
+++ b/tests_generated/test_ide_vscode-False/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: false
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_ide_vscode-False/.gitignore b/tests_generated/test_ide_vscode-False/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_ide_vscode-False/.gitignore
+++ b/tests_generated/test_ide_vscode-False/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_ide_vscode-False/README.md b/tests_generated/test_ide_vscode-False/README.md
index 23616fcd..ca6a6187 100644
--- a/tests_generated/test_ide_vscode-False/README.md
+++ b/tests_generated/test_ide_vscode-False/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_ide_vscode-False/pyproject.toml b/tests_generated/test_ide_vscode-False/pyproject.toml
index aafea108..decb76c8 100644
--- a/tests_generated/test_ide_vscode-False/pyproject.toml
+++ b/tests_generated/test_ide_vscode-False/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_ide_vscode-True/.copier-answers.yml b/tests_generated/test_ide_vscode-True/.copier-answers.yml
index 23b36664..82294835 100644
--- a/tests_generated/test_ide_vscode-True/.copier-answers.yml
+++ b/tests_generated/test_ide_vscode-True/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_ide_vscode-True/.gitignore b/tests_generated/test_ide_vscode-True/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_ide_vscode-True/.gitignore
+++ b/tests_generated/test_ide_vscode-True/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_ide_vscode-True/README.md b/tests_generated/test_ide_vscode-True/README.md
index a7f6eb0b..cf1e9154 100644
--- a/tests_generated/test_ide_vscode-True/README.md
+++ b/tests_generated/test_ide_vscode-True/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_ide_vscode-True/pyproject.toml b/tests_generated/test_ide_vscode-True/pyproject.toml
index 4a317894..1a046049 100644
--- a/tests_generated/test_ide_vscode-True/pyproject.toml
+++ b/tests_generated/test_ide_vscode-True/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_preset_name-production/.copier-answers.yml b/tests_generated/test_preset_name-production/.copier-answers.yml
index 2925fe04..bc0439ed 100644
--- a/tests_generated/test_preset_name-production/.copier-answers.yml
+++ b/tests_generated/test_preset_name-production/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_preset_name-production/.gitignore b/tests_generated/test_preset_name-production/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_preset_name-production/.gitignore
+++ b/tests_generated/test_preset_name-production/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_preset_name-production/README.md b/tests_generated/test_preset_name-production/README.md
index 4730bb46..3eec6b08 100644
--- a/tests_generated/test_preset_name-production/README.md
+++ b/tests_generated/test_preset_name-production/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_preset_name-production/pyproject.toml b/tests_generated/test_preset_name-production/pyproject.toml
index 5a45ea36..0f67e096 100644
--- a/tests_generated/test_preset_name-production/pyproject.toml
+++ b/tests_generated/test_preset_name-production/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_preset_name-starter/.copier-answers.yml b/tests_generated/test_preset_name-starter/.copier-answers.yml
index e1a3e5fa..eef8f6c0 100644
--- a/tests_generated/test_preset_name-starter/.copier-answers.yml
+++ b/tests_generated/test_preset_name-starter/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_preset_name-starter/.gitignore b/tests_generated/test_preset_name-starter/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_preset_name-starter/.gitignore
+++ b/tests_generated/test_preset_name-starter/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_preset_name-starter/README.md b/tests_generated/test_preset_name-starter/README.md
index 0e018e57..623294b0 100644
--- a/tests_generated/test_preset_name-starter/README.md
+++ b/tests_generated/test_preset_name-starter/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_preset_name-starter/pyproject.toml b/tests_generated/test_preset_name-starter/pyproject.toml
index 09b8b56f..18c5fc29 100644
--- a/tests_generated/test_preset_name-starter/pyproject.toml
+++ b/tests_generated/test_preset_name-starter/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_python_linter-flake8/.copier-answers.yml b/tests_generated/test_python_linter-flake8/.copier-answers.yml
index dc64cebb..f0e681b5 100644
--- a/tests_generated/test_python_linter-flake8/.copier-answers.yml
+++ b/tests_generated/test_python_linter-flake8/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_python_linter-flake8/.gitignore b/tests_generated/test_python_linter-flake8/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_python_linter-flake8/.gitignore
+++ b/tests_generated/test_python_linter-flake8/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_python_linter-flake8/README.md b/tests_generated/test_python_linter-flake8/README.md
index e458e042..069f4963 100644
--- a/tests_generated/test_python_linter-flake8/README.md
+++ b/tests_generated/test_python_linter-flake8/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_python_linter-flake8/pyproject.toml b/tests_generated/test_python_linter-flake8/pyproject.toml
index dd442c6f..7668dea1 100644
--- a/tests_generated/test_python_linter-flake8/pyproject.toml
+++ b/tests_generated/test_python_linter-flake8/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_python_linter-none/.copier-answers.yml b/tests_generated/test_python_linter-none/.copier-answers.yml
index a8007fe7..984c2ca2 100644
--- a/tests_generated/test_python_linter-none/.copier-answers.yml
+++ b/tests_generated/test_python_linter-none/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_python_linter-none/.gitignore b/tests_generated/test_python_linter-none/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_python_linter-none/.gitignore
+++ b/tests_generated/test_python_linter-none/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_python_linter-none/README.md b/tests_generated/test_python_linter-none/README.md
index f569db4b..505fab8a 100644
--- a/tests_generated/test_python_linter-none/README.md
+++ b/tests_generated/test_python_linter-none/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_python_linter-none/pyproject.toml b/tests_generated/test_python_linter-none/pyproject.toml
index 8fd1a153..9a41e3cf 100644
--- a/tests_generated/test_python_linter-none/pyproject.toml
+++ b/tests_generated/test_python_linter-none/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_python_linter-ruff/.copier-answers.yml b/tests_generated/test_python_linter-ruff/.copier-answers.yml
index 8d6e066d..7cc3f702 100644
--- a/tests_generated/test_python_linter-ruff/.copier-answers.yml
+++ b/tests_generated/test_python_linter-ruff/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_python_linter-ruff/.gitignore b/tests_generated/test_python_linter-ruff/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_python_linter-ruff/.gitignore
+++ b/tests_generated/test_python_linter-ruff/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_python_linter-ruff/README.md b/tests_generated/test_python_linter-ruff/README.md
index c338bbdb..cd8e366d 100644
--- a/tests_generated/test_python_linter-ruff/README.md
+++ b/tests_generated/test_python_linter-ruff/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_python_linter-ruff/pyproject.toml b/tests_generated/test_python_linter-ruff/pyproject.toml
index 571d71a0..f3d05212 100644
--- a/tests_generated/test_python_linter-ruff/pyproject.toml
+++ b/tests_generated/test_python_linter-ruff/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_smart_contract_generator_default_production_preset_python/.copier-answers.yml b/tests_generated/test_smart_contract_generator_default_production_preset_python/.copier-answers.yml
index a8e008fb..0ced1dc7 100644
--- a/tests_generated/test_smart_contract_generator_default_production_preset_python/.copier-answers.yml
+++ b/tests_generated/test_smart_contract_generator_default_production_preset_python/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_smart_contract_generator_default_production_preset_python/.gitignore b/tests_generated/test_smart_contract_generator_default_production_preset_python/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_smart_contract_generator_default_production_preset_python/.gitignore
+++ b/tests_generated/test_smart_contract_generator_default_production_preset_python/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_smart_contract_generator_default_production_preset_python/README.md b/tests_generated/test_smart_contract_generator_default_production_preset_python/README.md
index 9813fa3a..d8adb51d 100644
--- a/tests_generated/test_smart_contract_generator_default_production_preset_python/README.md
+++ b/tests_generated/test_smart_contract_generator_default_production_preset_python/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_smart_contract_generator_default_production_preset_python/pyproject.toml b/tests_generated/test_smart_contract_generator_default_production_preset_python/pyproject.toml
index 0f3f8e65..38e973d0 100644
--- a/tests_generated/test_smart_contract_generator_default_production_preset_python/pyproject.toml
+++ b/tests_generated/test_smart_contract_generator_default_production_preset_python/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_smart_contract_generator_default_production_preset_typescript/.copier-answers.yml b/tests_generated/test_smart_contract_generator_default_production_preset_typescript/.copier-answers.yml
index 803705b1..e4973bc2 100644
--- a/tests_generated/test_smart_contract_generator_default_production_preset_typescript/.copier-answers.yml
+++ b/tests_generated/test_smart_contract_generator_default_production_preset_typescript/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: typescript
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_smart_contract_generator_default_production_preset_typescript/.gitignore b/tests_generated/test_smart_contract_generator_default_production_preset_typescript/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_smart_contract_generator_default_production_preset_typescript/.gitignore
+++ b/tests_generated/test_smart_contract_generator_default_production_preset_typescript/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_smart_contract_generator_default_production_preset_typescript/README.md b/tests_generated/test_smart_contract_generator_default_production_preset_typescript/README.md
index 15d34b63..103f832e 100644
--- a/tests_generated/test_smart_contract_generator_default_production_preset_typescript/README.md
+++ b/tests_generated/test_smart_contract_generator_default_production_preset_typescript/README.md
@@ -27,10 +27,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_smart_contract_generator_default_production_preset_typescript/pyproject.toml b/tests_generated/test_smart_contract_generator_default_production_preset_typescript/pyproject.toml
index 62eaaf78..0cbb5dea 100644
--- a/tests_generated/test_smart_contract_generator_default_production_preset_typescript/pyproject.toml
+++ b/tests_generated/test_smart_contract_generator_default_production_preset_typescript/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_smart_contract_generator_default_starter_preset_python/.copier-answers.yml b/tests_generated/test_smart_contract_generator_default_starter_preset_python/.copier-answers.yml
index b571edec..9d26c2cb 100644
--- a/tests_generated/test_smart_contract_generator_default_starter_preset_python/.copier-answers.yml
+++ b/tests_generated/test_smart_contract_generator_default_starter_preset_python/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_smart_contract_generator_default_starter_preset_python/.gitignore b/tests_generated/test_smart_contract_generator_default_starter_preset_python/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_smart_contract_generator_default_starter_preset_python/.gitignore
+++ b/tests_generated/test_smart_contract_generator_default_starter_preset_python/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_smart_contract_generator_default_starter_preset_python/README.md b/tests_generated/test_smart_contract_generator_default_starter_preset_python/README.md
index fc91fcbd..3ad2bb14 100644
--- a/tests_generated/test_smart_contract_generator_default_starter_preset_python/README.md
+++ b/tests_generated/test_smart_contract_generator_default_starter_preset_python/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_smart_contract_generator_default_starter_preset_python/pyproject.toml b/tests_generated/test_smart_contract_generator_default_starter_preset_python/pyproject.toml
index bdfdc525..44aa5513 100644
--- a/tests_generated/test_smart_contract_generator_default_starter_preset_python/pyproject.toml
+++ b/tests_generated/test_smart_contract_generator_default_starter_preset_python/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/.copier-answers.yml b/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/.copier-answers.yml
index 3d37db08..f6b34a40 100644
--- a/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/.copier-answers.yml
+++ b/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: typescript
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/.gitignore b/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/.gitignore
+++ b/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/README.md b/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/README.md
index 6f4d1cc8..e09c50ad 100644
--- a/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/README.md
+++ b/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/README.md
@@ -27,10 +27,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/pyproject.toml b/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/pyproject.toml
index ad5a10b6..b4a48eeb 100644
--- a/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/pyproject.toml
+++ b/tests_generated/test_smart_contract_generator_default_starter_preset_typescript/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_dispenser-False/README.md b/tests_generated/test_use_dispenser-False/README.md
deleted file mode 100644
index 75574fa3..00000000
--- a/tests_generated/test_use_dispenser-False/README.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# test_use_dispenser-False
-
-This project has been generated using AlgoKit. See below for default getting started instructions.
-
-# Setup
-
-### Initial setup
-
-1. Clone this repository locally
-2. Install pre-requisites:
- - Make sure to have [Docker](https://www.docker.com/) installed and running on your machine.
- - Install `AlgoKit` - [Link](https://github.com/algorandfoundation/algokit-cli#install): The minimum required version is `1.1`. Ensure you can execute `algokit --version` and get `1.1` or later.
- - Bootstrap your local environment; run `algokit bootstrap all` within this folder, which will:
- - Install `Poetry` - [Link](https://python-poetry.org/docs/#installation): The minimum required version is `1.2`. Ensure you can execute `poetry -V` and get `1.2`+
- - Run `poetry install` in the root directory, which will set up a `.venv` folder with a Python virtual environment and also install all Python dependencies
- - Copy `.env.template` to `.env`
- - Run `algokit localnet start` to start a local Algorand network in Docker. If you are using VS Code launch configurations provided by the template, this will be done automatically for you.
-3. Open the project and start debugging / developing via:
- - VS Code
- 1. Open the repository root in VS Code
- 2. Install recommended extensions
- 3. Hit F5 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
- > **Note**
- > If using Windows: Before running for the first time you will need to select the Python Interpreter.
- 1. Open the command palette (Ctrl/Cmd + Shift + P)
- 2. Search for `Python: Select Interpreter`
- 3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
- 1. Open the repository root in the IDE
- 2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
- - Other
- 1. Open the repository root in your text editor of choice
- 2. In a terminal run `poetry shell`
- 3. Run `python -m smart_contracts` through your debugger of choice
-
-### Subsequently
-
-1. If you update to the latest source code and there are new dependencies you will need to run `algokit bootstrap all` again
-2. Follow step 3 above
-
-> For guidance on `smart_contracts` folder and adding new contracts to the project please see [README](smart_contracts/README.md) on the respective folder.
-
-# Tools
-
-This project makes use of Python to build Algorand smart contracts. The following tools are in use:
-
-- [Algorand](https://www.algorand.com/) - Layer 1 Blockchain; [Developer portal](https://developer.algorand.org/), [Why Algorand?](https://developer.algorand.org/docs/get-started/basics/why_algorand/)
-- [AlgoKit](https://github.com/algorandfoundation/algokit-cli) - One-stop shop tool for developers building on the Algorand network; [docs](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/algokit.md), [intro tutorial](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/tutorials/intro.md)
-- [Beaker](https://github.com/algorand-devrel/beaker) - Smart contract development framework for PyTeal; [docs](https://beaker.algo.xyz), [examples](https://github.com/algorand-devrel/beaker/tree/master/examples)
-- [PyTEAL](https://github.com/algorand/pyteal) - Python language binding for Algorand smart contracts; [docs](https://pyteal.readthedocs.io/en/stable/)
-- [AlgoKit Utils](https://github.com/algorandfoundation/algokit-utils-py) - A set of core Algorand utilities that make it easier to build solutions on Algorand.
-- [Poetry](https://python-poetry.org/): Python packaging and dependency management.- [Black](https://github.com/psf/black): A Python code formatter.
-- [pytest](https://docs.pytest.org/): Automated testing.
-- [pip-audit](https://pypi.org/project/pip-audit/): Tool for scanning Python environments for packages with known vulnerabilities.
-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.
-
diff --git a/tests_generated/test_use_dispenser-False/pyproject.toml b/tests_generated/test_use_dispenser-False/pyproject.toml
deleted file mode 100644
index 9a8b858a..00000000
--- a/tests_generated/test_use_dispenser-False/pyproject.toml
+++ /dev/null
@@ -1,26 +0,0 @@
-[tool.poetry]
-name = "test_use_dispenser-False"
-version = "0.1.0"
-description = "Algorand smart contracts"
-authors = ["None "]
-readme = "README.md"
-
-[tool.poetry.dependencies]
-python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
-python-dotenv = "^1.0.0"
-
-[tool.poetry.group.dev.dependencies]
-black = {extras = ["d"], version = "*"}
-pytest = "*"
-pytest-cov = "*"
-pip-audit = "*"
-
-[build-system]
-requires = ["poetry-core"]
-build-backend = "poetry.core.masonry.api"
-
-
-[tool.pytest.ini_options]
-pythonpath = ["smart_contracts", "tests"]
diff --git a/tests_generated/test_use_dispenser-True/.algokit.toml b/tests_generated/test_use_dispenser-True/.algokit.toml
deleted file mode 100644
index 38d4b7d5..00000000
--- a/tests_generated/test_use_dispenser-True/.algokit.toml
+++ /dev/null
@@ -1,16 +0,0 @@
-[algokit]
-min_version = "v1.4.0"
-
-[deploy]
-command = "poetry run python -m smart_contracts deploy"
-environment_secrets = [
- "DEPLOYER_MNEMONIC",
- "DISPENSER_MNEMONIC",
-]
-
-[deploy.localnet]
-environment_secrets = []
-
-[generate.smart_contract]
-description = "Adds new smart contract to existing project"
-path = ".algokit/generators/create_contract"
diff --git a/tests_generated/test_use_dispenser-True/.copier-answers.yml b/tests_generated/test_use_dispenser-True/.copier-answers.yml
deleted file mode 100644
index 796a9ee7..00000000
--- a/tests_generated/test_use_dispenser-True/.copier-answers.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
-_commit:
-_src_path:
-algod_port: 4001
-algod_server: http://localhost
-algod_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-author_email: None
-author_name: None
-contract_name: hello_world
-deployment_language: python
-ide_vscode: true
-indexer_port: 8980
-indexer_server: http://localhost
-indexer_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-preset_name: starter
-project_name: test_use_dispenser-True
-python_linter: none
-use_dispenser: true
-use_github_actions: false
-use_pre_commit: false
-use_python_black: true
-use_python_mypy: false
-use_python_pip_audit: true
-use_python_pytest: true
-
diff --git a/tests_generated/test_use_dispenser-True/README.md b/tests_generated/test_use_dispenser-True/README.md
deleted file mode 100644
index 22d1f76d..00000000
--- a/tests_generated/test_use_dispenser-True/README.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# test_use_dispenser-True
-
-This project has been generated using AlgoKit. See below for default getting started instructions.
-
-# Setup
-
-### Initial setup
-
-1. Clone this repository locally
-2. Install pre-requisites:
- - Make sure to have [Docker](https://www.docker.com/) installed and running on your machine.
- - Install `AlgoKit` - [Link](https://github.com/algorandfoundation/algokit-cli#install): The minimum required version is `1.1`. Ensure you can execute `algokit --version` and get `1.1` or later.
- - Bootstrap your local environment; run `algokit bootstrap all` within this folder, which will:
- - Install `Poetry` - [Link](https://python-poetry.org/docs/#installation): The minimum required version is `1.2`. Ensure you can execute `poetry -V` and get `1.2`+
- - Run `poetry install` in the root directory, which will set up a `.venv` folder with a Python virtual environment and also install all Python dependencies
- - Copy `.env.template` to `.env`
- - Run `algokit localnet start` to start a local Algorand network in Docker. If you are using VS Code launch configurations provided by the template, this will be done automatically for you.
-3. Open the project and start debugging / developing via:
- - VS Code
- 1. Open the repository root in VS Code
- 2. Install recommended extensions
- 3. Hit F5 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
- > **Note**
- > If using Windows: Before running for the first time you will need to select the Python Interpreter.
- 1. Open the command palette (Ctrl/Cmd + Shift + P)
- 2. Search for `Python: Select Interpreter`
- 3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
- 1. Open the repository root in the IDE
- 2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
- - Other
- 1. Open the repository root in your text editor of choice
- 2. In a terminal run `poetry shell`
- 3. Run `python -m smart_contracts` through your debugger of choice
-
-### Subsequently
-
-1. If you update to the latest source code and there are new dependencies you will need to run `algokit bootstrap all` again
-2. Follow step 3 above
-
-> For guidance on `smart_contracts` folder and adding new contracts to the project please see [README](smart_contracts/README.md) on the respective folder.
-
-# Tools
-
-This project makes use of Python to build Algorand smart contracts. The following tools are in use:
-
-- [Algorand](https://www.algorand.com/) - Layer 1 Blockchain; [Developer portal](https://developer.algorand.org/), [Why Algorand?](https://developer.algorand.org/docs/get-started/basics/why_algorand/)
-- [AlgoKit](https://github.com/algorandfoundation/algokit-cli) - One-stop shop tool for developers building on the Algorand network; [docs](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/algokit.md), [intro tutorial](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/tutorials/intro.md)
-- [Beaker](https://github.com/algorand-devrel/beaker) - Smart contract development framework for PyTeal; [docs](https://beaker.algo.xyz), [examples](https://github.com/algorand-devrel/beaker/tree/master/examples)
-- [PyTEAL](https://github.com/algorand/pyteal) - Python language binding for Algorand smart contracts; [docs](https://pyteal.readthedocs.io/en/stable/)
-- [AlgoKit Utils](https://github.com/algorandfoundation/algokit-utils-py) - A set of core Algorand utilities that make it easier to build solutions on Algorand.
-- [Poetry](https://python-poetry.org/): Python packaging and dependency management.- [Black](https://github.com/psf/black): A Python code formatter.
-- [pytest](https://docs.pytest.org/): Automated testing.
-- [pip-audit](https://pypi.org/project/pip-audit/): Tool for scanning Python environments for packages with known vulnerabilities.
-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.
-
diff --git a/tests_generated/test_use_github_actions-False/.copier-answers.yml b/tests_generated/test_use_github_actions-False/.copier-answers.yml
index 7758ea12..fc2c4733 100644
--- a/tests_generated/test_use_github_actions-False/.copier-answers.yml
+++ b/tests_generated/test_use_github_actions-False/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_use_github_actions-False/.gitignore b/tests_generated/test_use_github_actions-False/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_use_github_actions-False/.gitignore
+++ b/tests_generated/test_use_github_actions-False/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_use_github_actions-False/README.md b/tests_generated/test_use_github_actions-False/README.md
index 4c8b64c7..28d7d9c9 100644
--- a/tests_generated/test_use_github_actions-False/README.md
+++ b/tests_generated/test_use_github_actions-False/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_use_github_actions-False/pyproject.toml b/tests_generated/test_use_github_actions-False/pyproject.toml
index fccf6200..58f6fee7 100644
--- a/tests_generated/test_use_github_actions-False/pyproject.toml
+++ b/tests_generated/test_use_github_actions-False/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_github_actions-True/.copier-answers.yml b/tests_generated/test_use_github_actions-True/.copier-answers.yml
index fd4eb5e7..fa5651d1 100644
--- a/tests_generated/test_use_github_actions-True/.copier-answers.yml
+++ b/tests_generated/test_use_github_actions-True/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_use_github_actions-True/.gitignore b/tests_generated/test_use_github_actions-True/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_use_github_actions-True/.gitignore
+++ b/tests_generated/test_use_github_actions-True/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_use_github_actions-True/README.md b/tests_generated/test_use_github_actions-True/README.md
index b8e9d3e1..3732e0fa 100644
--- a/tests_generated/test_use_github_actions-True/README.md
+++ b/tests_generated/test_use_github_actions-True/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_use_github_actions-True/pyproject.toml b/tests_generated/test_use_github_actions-True/pyproject.toml
index bd59aceb..fb3ee582 100644
--- a/tests_generated/test_use_github_actions-True/pyproject.toml
+++ b/tests_generated/test_use_github_actions-True/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_pre_commit-False/.editorconfig b/tests_generated/test_use_pre_commit-False/.editorconfig
deleted file mode 100644
index e2fda344..00000000
--- a/tests_generated/test_use_pre_commit-False/.editorconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-root=true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-
-[*.py]
-indent_size = 4
diff --git a/tests_generated/test_use_pre_commit-False/.env.localnet.template b/tests_generated/test_use_pre_commit-False/.env.localnet.template
deleted file mode 100644
index fcbf442d..00000000
--- a/tests_generated/test_use_pre_commit-False/.env.localnet.template
+++ /dev/null
@@ -1,7 +0,0 @@
-# this file should contain environment variables specific to algokit localnet
-ALGOD_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-ALGOD_SERVER=http://localhost
-ALGOD_PORT=4001
-INDEXER_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-INDEXER_SERVER=http://localhost
-INDEXER_PORT=8980
diff --git a/tests_generated/test_use_pre_commit-False/.env.template b/tests_generated/test_use_pre_commit-False/.env.template
deleted file mode 100644
index 184b3934..00000000
--- a/tests_generated/test_use_pre_commit-False/.env.template
+++ /dev/null
@@ -1 +0,0 @@
-# this file should contain environment variables common to all environments/networks
diff --git a/tests_generated/test_use_pre_commit-False/.env.testnet.template b/tests_generated/test_use_pre_commit-False/.env.testnet.template
deleted file mode 100644
index eeea43d7..00000000
--- a/tests_generated/test_use_pre_commit-False/.env.testnet.template
+++ /dev/null
@@ -1,3 +0,0 @@
-# this file contains algorand network settings for interacting with testnet via algonode
-ALGOD_SERVER=https://testnet-api.algonode.cloud
-INDEXER_SERVER=https://testnet-idx.algonode.cloud
diff --git a/tests_generated/test_use_pre_commit-False/.gitattributes b/tests_generated/test_use_pre_commit-False/.gitattributes
deleted file mode 100644
index 6313b56c..00000000
--- a/tests_generated/test_use_pre_commit-False/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text=auto eol=lf
diff --git a/tests_generated/test_use_pre_commit-False/.gitignore b/tests_generated/test_use_pre_commit-False/.gitignore
deleted file mode 100644
index 0dbe8edb..00000000
--- a/tests_generated/test_use_pre_commit-False/.gitignore
+++ /dev/null
@@ -1,172 +0,0 @@
-# Byte-compiled / optimized / DLL files
-__pycache__/
-*.py[cod]
-*$py.class
-
-# C extensions
-*.so
-
-# Distribution / packaging
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-share/python-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-MANIFEST
-
-# PyInstaller
-# Usually these files are written by a python script from a template
-# before PyInstaller builds the exe, so as to inject date/other infos into it.
-*.manifest
-*.spec
-
-# Installer logs
-pip-log.txt
-pip-delete-this-directory.txt
-
-# Unit test / coverage reports
-htmlcov/
-.tox/
-.nox/
-.coverage
-.coverage.*
-.cache
-nosetests.xml
-coverage.xml
-*.cover
-*.py,cover
-.hypothesis/
-.pytest_cache/
-cover/
-
-# Translations
-*.mo
-*.pot
-
-# Django stuff:
-*.log
-local_settings.py
-db.sqlite3
-db.sqlite3-journal
-
-# Flask stuff:
-instance/
-.webassets-cache
-
-# Scrapy stuff:
-.scrapy
-
-# Sphinx documentation
-docs/_build/
-
-# PyBuilder
-.pybuilder/
-target/
-
-# Jupyter Notebook
-.ipynb_checkpoints
-
-# IPython
-profile_default/
-ipython_config.py
-
-# pyenv
-# For a library or package, you might want to ignore these files since the code is
-# intended to run in multiple environments; otherwise, check them in:
-# .python-version
-
-# pipenv
-# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
-# However, in case of collaboration, if having platform-specific dependencies or dependencies
-# having no cross-platform support, pipenv may install dependencies that don't work, or not
-# install all needed dependencies.
-#Pipfile.lock
-
-# poetry
-# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
-# This is especially recommended for binary packages to ensure reproducibility, and is more
-# commonly ignored for libraries.
-# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
-#poetry.lock
-
-# pdm
-# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
-#pdm.lock
-# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
-# in version control.
-# https://pdm.fming.dev/#use-with-ide
-.pdm.toml
-
-# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
-__pypackages__/
-
-# Celery stuff
-celerybeat-schedule
-celerybeat.pid
-
-# SageMath parsed files
-*.sage.py
-
-# Environments
-.env
-.venv
-env/
-.env.*
-!.env.*.template
-!.env.template
-venv/
-ENV/
-env.bak/
-venv.bak/
-
-# Spyder project settings
-.spyderproject
-.spyproject
-
-# Rope project settings
-.ropeproject
-
-# mkdocs documentation
-/site
-
-# mypy
-.mypy_cache/
-.dmypy.json
-dmypy.json
-
-# Pyre type checker
-.pyre/
-
-# pytype static type analyzer
-.pytype/
-
-# Ruff (linter)
-.ruff_cache/
-
-# Cython debug symbols
-cython_debug/
-
-# PyCharm
-.idea/
-!.idea/runConfigurations
-
-# macOS
-.DS_Store
-
-# Received approval test files
-*.received.*
-
-# NPM
-node_modules
diff --git a/tests_generated/test_use_pre_commit-False/.vscode/extensions.json b/tests_generated/test_use_pre_commit-False/.vscode/extensions.json
deleted file mode 100644
index 78fafc41..00000000
--- a/tests_generated/test_use_pre_commit-False/.vscode/extensions.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "recommendations": [
- "ms-python.python",
- "bungcip.better-toml",
- "editorconfig.editorconfig"
- ]
-}
diff --git a/tests_generated/test_use_pre_commit-False/.vscode/launch.json b/tests_generated/test_use_pre_commit-False/.vscode/launch.json
deleted file mode 100644
index 8a39d265..00000000
--- a/tests_generated/test_use_pre_commit-False/.vscode/launch.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Build & Deploy Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "cwd": "${workspaceFolder}",
- "preLaunchTask": "Start AlgoKit LocalNet",
- "envFile": "${workspaceFolder}/.env.localnet"
- },
- {
- "name": "Deploy Built Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "args": ["deploy"],
- "cwd": "${workspaceFolder}",
- "envFile": "${workspaceFolder}/.env.localnet"
- },
- {
- "name": "Build Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "args": ["build"],
- "cwd": "${workspaceFolder}"
- }
- ]
-}
diff --git a/tests_generated/test_use_pre_commit-False/.vscode/settings.json b/tests_generated/test_use_pre_commit-False/.vscode/settings.json
deleted file mode 100644
index cee77726..00000000
--- a/tests_generated/test_use_pre_commit-False/.vscode/settings.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- // General - see also /.editorconfig
- "editor.formatOnSave": true,
- "files.exclude": {
- "**/.git": true,
- "**/.DS_Store": true,
- "**/Thumbs.db": true,
- ".mypy_cache": true,
- ".pytest_cache": true,
- ".ruff_cache": true,
- "**/__pycache__": true,
- ".idea": true
- },
-
- // Python
- "python.analysis.extraPaths": ["${workspaceFolder}/smart_contracts"],
- "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
- "[python]": {
- "editor.codeActionsOnSave": {
- "source.fixAll": true,
- // Prevent default import sorting from running; Ruff will sort imports for us anyway
- "source.organizeImports": false
- },
- "editor.defaultFormatter": null
- },
- "python.testing.pytestEnabled": true,
- "python.formatting.provider": "black",
-
- // On Windows, if execution policy is set to Signed (default) then it won't be able to activate the venv
- // so instead let's set it to RemoteSigned for VS Code terminal
- "terminal.integrated.shellArgs.windows": ["-ExecutionPolicy", "RemoteSigned"],
-}
diff --git a/tests_generated/test_use_pre_commit-False/.vscode/tasks.json b/tests_generated/test_use_pre_commit-False/.vscode/tasks.json
deleted file mode 100644
index fe7889ae..00000000
--- a/tests_generated/test_use_pre_commit-False/.vscode/tasks.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "Build Beaker application",
- "command": "${workspaceFolder}/.venv/bin/python",
- "windows": {
- "command": "${workspaceFolder}/.venv/Scripts/python.exe"
- },
- "args": ["-m", "smart_contracts", "build"],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "problemMatcher": []
- },
- {
- "label": "Build Beaker application (+ LocalNet)",
- "command": "${workspaceFolder}/.venv/bin/python",
- "windows": {
- "command": "${workspaceFolder}/.venv/Scripts/python.exe"
- },
- "args": ["-m", "smart_contracts", "build"],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "dependsOn": "Start AlgoKit LocalNet",
- "problemMatcher": []
- },
- {
- "label": "Start AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "start"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Stop AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "stop"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Reset AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "reset"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- }
- ]
-}
diff --git a/tests_generated/test_use_pre_commit-False/poetry.toml b/tests_generated/test_use_pre_commit-False/poetry.toml
deleted file mode 100644
index ab1033bd..00000000
--- a/tests_generated/test_use_pre_commit-False/poetry.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[virtualenvs]
-in-project = true
diff --git a/tests_generated/test_use_pre_commit-False/smart_contracts/README.md b/tests_generated/test_use_pre_commit-False/smart_contracts/README.md
deleted file mode 100644
index 0f64fe3d..00000000
--- a/tests_generated/test_use_pre_commit-False/smart_contracts/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-## How to add new smart contracts?
-
-By the default the template creates a single `HelloWorld` contract under hello_world folder in the `smart_contracts` directory. To add a new contract:
-
-1. From the root of the repository execute `algokit generate smart-contract`. This will create a new starter smart contract and deployment configuration file under `{your_contract_name}` subfolder under `smart_contracts` directory.
-2. Each contract potentially has different creation parameters and deployment steps. Hence, you need to define your deployment logic in `deploy_config.py`file.
-3. `config.py` file will automatically build all contracts under `smart_contracts` directory. If you want to build specific contracts manually, modify the default code provided by the template in `config.py` file.
-
-> Please note, above is just a suggested convention tailored for the base configuration and structure of this template. Default code supplied by the template in `config.py` and `index.ts` (if using ts clients) files are tailored for the suggested convention. You are free to modify the structure and naming conventions as you see fit.
diff --git a/tests_generated/test_use_pre_commit-False/smart_contracts/__init__.py b/tests_generated/test_use_pre_commit-False/smart_contracts/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_pre_commit-False/smart_contracts/__main__.py b/tests_generated/test_use_pre_commit-False/smart_contracts/__main__.py
deleted file mode 100644
index 3ef8a27d..00000000
--- a/tests_generated/test_use_pre_commit-False/smart_contracts/__main__.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import logging
-import sys
-from pathlib import Path
-
-from dotenv import load_dotenv
-
-from smart_contracts.config import contracts
-from smart_contracts.helpers.build import build
-from smart_contracts.helpers.deploy import deploy
-
-logging.basicConfig(
- level=logging.DEBUG, format="%(asctime)s %(levelname)-10s: %(message)s"
-)
-logger = logging.getLogger(__name__)
-logger.info("Loading .env")
-load_dotenv()
-root_path = Path(__file__).parent
-
-
-def main(action: str) -> None:
- artifact_path = root_path / "artifacts"
- match action:
- case "build":
- for contract in contracts:
- logger.info(f"Building app {contract.app.name}")
- build(artifact_path / contract.app.name, contract.app)
- case "deploy":
- for contract in contracts:
- logger.info(f"Deploying app {contract.app.name}")
- app_spec_path = artifact_path / contract.app.name / "application.json"
- if contract.deploy:
- deploy(app_spec_path, contract.deploy)
- case "all":
- for contract in contracts:
- logger.info(f"Building app {contract.app.name}")
- app_spec_path = build(artifact_path / contract.app.name, contract.app)
- logger.info(f"Deploying {contract.app.name}")
- if contract.deploy:
- deploy(app_spec_path, contract.deploy)
-
-
-if __name__ == "__main__":
- if len(sys.argv) > 1:
- main(sys.argv[1])
- else:
- main("all")
diff --git a/tests_generated/test_use_pre_commit-False/smart_contracts/config.py b/tests_generated/test_use_pre_commit-False/smart_contracts/config.py
deleted file mode 100644
index 8cefdd67..00000000
--- a/tests_generated/test_use_pre_commit-False/smart_contracts/config.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import dataclasses
-import importlib
-from collections.abc import Callable
-from pathlib import Path
-
-from algokit_utils import Account, ApplicationSpecification
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-from beaker import Application
-
-
-@dataclasses.dataclass
-class SmartContract:
- app: Application
- deploy: Callable[
- [AlgodClient, IndexerClient, ApplicationSpecification, Account], None
- ] | None = None
-
-
-def import_contract(folder: Path) -> Application:
- """Imports the contract from a folder if it exists."""
- try:
- contract_module = importlib.import_module(
- f"{folder.parent.name}.{folder.name}.contract"
- )
- return contract_module.app
- except ImportError as e:
- raise Exception(f"Contract not found in {folder}") from e
-
-
-def import_deploy_if_exists(
- folder: Path,
-) -> (
- Callable[[AlgodClient, IndexerClient, ApplicationSpecification, Account], None]
- | None
-):
- """Imports the deploy function from a folder if it exists."""
- try:
- deploy_module = importlib.import_module(
- f"{folder.parent.name}.{folder.name}.deploy_config"
- )
- return deploy_module.deploy
- except ImportError:
- return None
-
-
-def has_contract_file(directory: Path) -> bool:
- """Checks whether the directory contains contract.py file."""
- return (directory / "contract.py").exists()
-
-
-# define contracts to build and/or deploy
-base_dir = Path("smart_contracts")
-contracts = [
- SmartContract(app=import_contract(folder), deploy=import_deploy_if_exists(folder))
- for folder in base_dir.iterdir()
- if folder.is_dir() and has_contract_file(folder)
-]
-
-## Comment the above and uncomment the below and define contracts manually if you want to build and specify them
-## manually otherwise the above code will always include all contracts under contract.py file for any subdirectory
-## in the smart_contracts directory. Optionally it will also grab the deploy function from deploy_config.py if it exists.
-
-# contracts = []
diff --git a/tests_generated/test_use_pre_commit-False/smart_contracts/hello_world/contract.py b/tests_generated/test_use_pre_commit-False/smart_contracts/hello_world/contract.py
deleted file mode 100644
index 5ed8de06..00000000
--- a/tests_generated/test_use_pre_commit-False/smart_contracts/hello_world/contract.py
+++ /dev/null
@@ -1,10 +0,0 @@
-import beaker
-import pyteal as pt
-
-
-app = beaker.Application("hello_world")
-
-
-@app.external
-def hello(name: pt.abi.String, *, output: pt.abi.String) -> pt.Expr:
- return output.set(pt.Concat(pt.Bytes("Hello, "), name.get()))
diff --git a/tests_generated/test_use_pre_commit-False/smart_contracts/hello_world/deploy_config.py b/tests_generated/test_use_pre_commit-False/smart_contracts/hello_world/deploy_config.py
deleted file mode 100644
index 4afdc60e..00000000
--- a/tests_generated/test_use_pre_commit-False/smart_contracts/hello_world/deploy_config.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import logging
-
-import algokit_utils
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-
-logger = logging.getLogger(__name__)
-
-
-# define deployment behaviour based on supplied app spec
-def deploy(
- algod_client: AlgodClient,
- indexer_client: IndexerClient,
- app_spec: algokit_utils.ApplicationSpecification,
- deployer: algokit_utils.Account,
-) -> None:
- from smart_contracts.artifacts.hello_world.client import (
- HelloWorldClient,
- )
-
- app_client = HelloWorldClient(
- algod_client,
- creator=deployer,
- indexer_client=indexer_client,
- )
- app_client.deploy(
- on_schema_break=algokit_utils.OnSchemaBreak.AppendApp,
- on_update=algokit_utils.OnUpdate.AppendApp,
- )
-
- name = "world"
- response = app_client.hello(name=name)
- logger.info(
- f"Called hello on {app_spec.contract.name} ({app_client.app_id}) "
- f"with name={name}, received: {response.return_value}"
- )
diff --git a/tests_generated/test_use_pre_commit-False/smart_contracts/helpers/__init__.py b/tests_generated/test_use_pre_commit-False/smart_contracts/helpers/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_pre_commit-False/smart_contracts/helpers/build.py b/tests_generated/test_use_pre_commit-False/smart_contracts/helpers/build.py
deleted file mode 100644
index 201e5d66..00000000
--- a/tests_generated/test_use_pre_commit-False/smart_contracts/helpers/build.py
+++ /dev/null
@@ -1,43 +0,0 @@
-import logging
-import subprocess
-from pathlib import Path
-from shutil import rmtree
-
-import beaker
-
-logger = logging.getLogger(__name__)
-deployment_extension = "py"
-
-
-def build(output_dir: Path, app: beaker.Application) -> Path:
- output_dir = output_dir.resolve()
- if output_dir.exists():
- rmtree(output_dir)
- output_dir.mkdir(exist_ok=True, parents=True)
- logger.info(f"Exporting {app.name} to {output_dir}")
- specification = app.build()
- specification.export(output_dir)
-
- result = subprocess.run(
- [
- "algokit",
- "generate",
- "client",
- output_dir / "application.json",
- "--output",
- output_dir / f"client.{deployment_extension}",
- ],
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT,
- text=True,
- )
- if result.returncode:
- if "No such command" in result.stdout:
- raise Exception(
- "Could not generate typed client, requires AlgoKit 1.1 or "
- "later. Please update AlgoKit"
- )
- else:
- raise Exception(f"Could not generate typed client:\n{result.stdout}")
-
- return output_dir / "application.json"
diff --git a/tests_generated/test_use_pre_commit-False/smart_contracts/helpers/deploy.py b/tests_generated/test_use_pre_commit-False/smart_contracts/helpers/deploy.py
deleted file mode 100644
index 08367a3a..00000000
--- a/tests_generated/test_use_pre_commit-False/smart_contracts/helpers/deploy.py
+++ /dev/null
@@ -1,50 +0,0 @@
-import logging
-from collections.abc import Callable
-from pathlib import Path
-
-from algokit_utils import (
- Account,
- ApplicationSpecification,
- EnsureBalanceParameters,
- ensure_funded,
- get_account,
- get_algod_client,
- get_indexer_client,
-)
-from algosdk.util import algos_to_microalgos
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-
-logger = logging.getLogger(__name__)
-
-
-def deploy(
- app_spec_path: Path,
- deploy_callback: Callable[
- [AlgodClient, IndexerClient, ApplicationSpecification, Account], None
- ],
- deployer_initial_funds: int = 2,
-) -> None:
- # get clients
- # by default client configuration is loaded from environment variables
- algod_client = get_algod_client()
- indexer_client = get_indexer_client()
-
- # get app spec
- app_spec = ApplicationSpecification.from_json(app_spec_path.read_text())
-
- # get deployer account by name
- deployer = get_account(algod_client, "DEPLOYER", fund_with_algos=0)
-
- minimum_funds_micro_algos = algos_to_microalgos(deployer_initial_funds)
- ensure_funded(
- algod_client,
- EnsureBalanceParameters(
- account_to_fund=deployer,
- min_spending_balance_micro_algos=minimum_funds_micro_algos,
- min_funding_increment_micro_algos=minimum_funds_micro_algos,
- ),
- )
-
- # use provided callback to deploy the app
- deploy_callback(algod_client, indexer_client, app_spec, deployer)
diff --git a/tests_generated/test_use_pre_commit-False/tests/__init__.py b/tests_generated/test_use_pre_commit-False/tests/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_pre_commit-False/tests/conftest.py b/tests_generated/test_use_pre_commit-False/tests/conftest.py
deleted file mode 100644
index 06a89eb0..00000000
--- a/tests_generated/test_use_pre_commit-False/tests/conftest.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from pathlib import Path
-
-import pytest
-from algokit_utils import (
- get_algod_client,
- is_localnet,
-)
-from algosdk.v2client.algod import AlgodClient
-from dotenv import load_dotenv
-
-
-@pytest.fixture(autouse=True, scope="session")
-def environment_fixture() -> None:
- env_path = Path(__file__).parent.parent / ".env.localnet"
- load_dotenv(env_path)
-
-
-@pytest.fixture(scope="session")
-def algod_client() -> AlgodClient:
- client = get_algod_client()
-
- # you can remove this assertion to test on other networks,
- # included here to prevent accidentally running against other networks
- assert is_localnet(client)
- return client
diff --git a/tests_generated/test_use_pre_commit-False/tests/hello_world_test.py b/tests_generated/test_use_pre_commit-False/tests/hello_world_test.py
deleted file mode 100644
index 50fd3324..00000000
--- a/tests_generated/test_use_pre_commit-False/tests/hello_world_test.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import pytest
-from algokit_utils import (
- ApplicationClient,
- ApplicationSpecification,
- get_localnet_default_account,
-)
-from algosdk.v2client.algod import AlgodClient
-
-from smart_contracts.hello_world import contract as hello_world_contract
-
-
-@pytest.fixture(scope="session")
-def hello_world_app_spec(algod_client: AlgodClient) -> ApplicationSpecification:
- return hello_world_contract.app.build(algod_client)
-
-
-@pytest.fixture(scope="session")
-def hello_world_client(
- algod_client: AlgodClient, hello_world_app_spec: ApplicationSpecification
-) -> ApplicationClient:
- client = ApplicationClient(
- algod_client,
- app_spec=hello_world_app_spec,
- signer=get_localnet_default_account(algod_client),
- )
- client.create()
- return client
-
-
-def test_says_hello(hello_world_client: ApplicationClient) -> None:
- result = hello_world_client.call(hello_world_contract.hello, name="World")
-
- assert result.return_value == "Hello, World"
diff --git a/tests_generated/test_use_pre_commit-True/.algokit.toml b/tests_generated/test_use_pre_commit-True/.algokit.toml
deleted file mode 100644
index 6ffa3b4c..00000000
--- a/tests_generated/test_use_pre_commit-True/.algokit.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-[algokit]
-min_version = "v1.4.0"
-
-[deploy]
-command = "poetry run python -m smart_contracts deploy"
-environment_secrets = [
- "DEPLOYER_MNEMONIC",
-]
-
-[deploy.localnet]
-environment_secrets = []
-
-[generate.smart_contract]
-description = "Adds new smart contract to existing project"
-path = ".algokit/generators/create_contract"
diff --git a/tests_generated/test_use_pre_commit-True/.copier-answers.yml b/tests_generated/test_use_pre_commit-True/.copier-answers.yml
deleted file mode 100644
index 6064b032..00000000
--- a/tests_generated/test_use_pre_commit-True/.copier-answers.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
-_commit:
-_src_path:
-algod_port: 4001
-algod_server: http://localhost
-algod_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-author_email: None
-author_name: None
-contract_name: hello_world
-deployment_language: python
-ide_vscode: true
-indexer_port: 8980
-indexer_server: http://localhost
-indexer_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-preset_name: starter
-project_name: test_use_pre_commit-True
-python_linter: none
-use_dispenser: false
-use_github_actions: false
-use_pre_commit: true
-use_python_black: true
-use_python_mypy: false
-use_python_pip_audit: true
-use_python_pytest: true
-
diff --git a/tests_generated/test_use_pre_commit-True/.editorconfig b/tests_generated/test_use_pre_commit-True/.editorconfig
deleted file mode 100644
index e2fda344..00000000
--- a/tests_generated/test_use_pre_commit-True/.editorconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-root=true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-
-[*.py]
-indent_size = 4
diff --git a/tests_generated/test_use_pre_commit-True/.env.localnet.template b/tests_generated/test_use_pre_commit-True/.env.localnet.template
deleted file mode 100644
index fcbf442d..00000000
--- a/tests_generated/test_use_pre_commit-True/.env.localnet.template
+++ /dev/null
@@ -1,7 +0,0 @@
-# this file should contain environment variables specific to algokit localnet
-ALGOD_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-ALGOD_SERVER=http://localhost
-ALGOD_PORT=4001
-INDEXER_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-INDEXER_SERVER=http://localhost
-INDEXER_PORT=8980
diff --git a/tests_generated/test_use_pre_commit-True/.env.template b/tests_generated/test_use_pre_commit-True/.env.template
deleted file mode 100644
index 184b3934..00000000
--- a/tests_generated/test_use_pre_commit-True/.env.template
+++ /dev/null
@@ -1 +0,0 @@
-# this file should contain environment variables common to all environments/networks
diff --git a/tests_generated/test_use_pre_commit-True/.env.testnet.template b/tests_generated/test_use_pre_commit-True/.env.testnet.template
deleted file mode 100644
index eeea43d7..00000000
--- a/tests_generated/test_use_pre_commit-True/.env.testnet.template
+++ /dev/null
@@ -1,3 +0,0 @@
-# this file contains algorand network settings for interacting with testnet via algonode
-ALGOD_SERVER=https://testnet-api.algonode.cloud
-INDEXER_SERVER=https://testnet-idx.algonode.cloud
diff --git a/tests_generated/test_use_pre_commit-True/.gitattributes b/tests_generated/test_use_pre_commit-True/.gitattributes
deleted file mode 100644
index 6313b56c..00000000
--- a/tests_generated/test_use_pre_commit-True/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text=auto eol=lf
diff --git a/tests_generated/test_use_pre_commit-True/.gitignore b/tests_generated/test_use_pre_commit-True/.gitignore
deleted file mode 100644
index 0dbe8edb..00000000
--- a/tests_generated/test_use_pre_commit-True/.gitignore
+++ /dev/null
@@ -1,172 +0,0 @@
-# Byte-compiled / optimized / DLL files
-__pycache__/
-*.py[cod]
-*$py.class
-
-# C extensions
-*.so
-
-# Distribution / packaging
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-share/python-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-MANIFEST
-
-# PyInstaller
-# Usually these files are written by a python script from a template
-# before PyInstaller builds the exe, so as to inject date/other infos into it.
-*.manifest
-*.spec
-
-# Installer logs
-pip-log.txt
-pip-delete-this-directory.txt
-
-# Unit test / coverage reports
-htmlcov/
-.tox/
-.nox/
-.coverage
-.coverage.*
-.cache
-nosetests.xml
-coverage.xml
-*.cover
-*.py,cover
-.hypothesis/
-.pytest_cache/
-cover/
-
-# Translations
-*.mo
-*.pot
-
-# Django stuff:
-*.log
-local_settings.py
-db.sqlite3
-db.sqlite3-journal
-
-# Flask stuff:
-instance/
-.webassets-cache
-
-# Scrapy stuff:
-.scrapy
-
-# Sphinx documentation
-docs/_build/
-
-# PyBuilder
-.pybuilder/
-target/
-
-# Jupyter Notebook
-.ipynb_checkpoints
-
-# IPython
-profile_default/
-ipython_config.py
-
-# pyenv
-# For a library or package, you might want to ignore these files since the code is
-# intended to run in multiple environments; otherwise, check them in:
-# .python-version
-
-# pipenv
-# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
-# However, in case of collaboration, if having platform-specific dependencies or dependencies
-# having no cross-platform support, pipenv may install dependencies that don't work, or not
-# install all needed dependencies.
-#Pipfile.lock
-
-# poetry
-# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
-# This is especially recommended for binary packages to ensure reproducibility, and is more
-# commonly ignored for libraries.
-# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
-#poetry.lock
-
-# pdm
-# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
-#pdm.lock
-# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
-# in version control.
-# https://pdm.fming.dev/#use-with-ide
-.pdm.toml
-
-# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
-__pypackages__/
-
-# Celery stuff
-celerybeat-schedule
-celerybeat.pid
-
-# SageMath parsed files
-*.sage.py
-
-# Environments
-.env
-.venv
-env/
-.env.*
-!.env.*.template
-!.env.template
-venv/
-ENV/
-env.bak/
-venv.bak/
-
-# Spyder project settings
-.spyderproject
-.spyproject
-
-# Rope project settings
-.ropeproject
-
-# mkdocs documentation
-/site
-
-# mypy
-.mypy_cache/
-.dmypy.json
-dmypy.json
-
-# Pyre type checker
-.pyre/
-
-# pytype static type analyzer
-.pytype/
-
-# Ruff (linter)
-.ruff_cache/
-
-# Cython debug symbols
-cython_debug/
-
-# PyCharm
-.idea/
-!.idea/runConfigurations
-
-# macOS
-.DS_Store
-
-# Received approval test files
-*.received.*
-
-# NPM
-node_modules
diff --git a/tests_generated/test_use_pre_commit-True/.pre-commit-config.yaml b/tests_generated/test_use_pre_commit-True/.pre-commit-config.yaml
deleted file mode 100644
index 74644630..00000000
--- a/tests_generated/test_use_pre_commit-True/.pre-commit-config.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-repos:
- - repo: local
- hooks:
-
- - id: black
- name: black
- description: "Black: The uncompromising Python code formatter"
- entry: poetry run black
- language: system
- minimum_pre_commit_version: 2.9.2
- require_serial: true
- types_or: [ python, pyi ]
-
-
-
diff --git a/tests_generated/test_use_pre_commit-True/.vscode/extensions.json b/tests_generated/test_use_pre_commit-True/.vscode/extensions.json
deleted file mode 100644
index 78fafc41..00000000
--- a/tests_generated/test_use_pre_commit-True/.vscode/extensions.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "recommendations": [
- "ms-python.python",
- "bungcip.better-toml",
- "editorconfig.editorconfig"
- ]
-}
diff --git a/tests_generated/test_use_pre_commit-True/.vscode/launch.json b/tests_generated/test_use_pre_commit-True/.vscode/launch.json
deleted file mode 100644
index 8a39d265..00000000
--- a/tests_generated/test_use_pre_commit-True/.vscode/launch.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Build & Deploy Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "cwd": "${workspaceFolder}",
- "preLaunchTask": "Start AlgoKit LocalNet",
- "envFile": "${workspaceFolder}/.env.localnet"
- },
- {
- "name": "Deploy Built Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "args": ["deploy"],
- "cwd": "${workspaceFolder}",
- "envFile": "${workspaceFolder}/.env.localnet"
- },
- {
- "name": "Build Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "args": ["build"],
- "cwd": "${workspaceFolder}"
- }
- ]
-}
diff --git a/tests_generated/test_use_pre_commit-True/.vscode/settings.json b/tests_generated/test_use_pre_commit-True/.vscode/settings.json
deleted file mode 100644
index cee77726..00000000
--- a/tests_generated/test_use_pre_commit-True/.vscode/settings.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- // General - see also /.editorconfig
- "editor.formatOnSave": true,
- "files.exclude": {
- "**/.git": true,
- "**/.DS_Store": true,
- "**/Thumbs.db": true,
- ".mypy_cache": true,
- ".pytest_cache": true,
- ".ruff_cache": true,
- "**/__pycache__": true,
- ".idea": true
- },
-
- // Python
- "python.analysis.extraPaths": ["${workspaceFolder}/smart_contracts"],
- "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
- "[python]": {
- "editor.codeActionsOnSave": {
- "source.fixAll": true,
- // Prevent default import sorting from running; Ruff will sort imports for us anyway
- "source.organizeImports": false
- },
- "editor.defaultFormatter": null
- },
- "python.testing.pytestEnabled": true,
- "python.formatting.provider": "black",
-
- // On Windows, if execution policy is set to Signed (default) then it won't be able to activate the venv
- // so instead let's set it to RemoteSigned for VS Code terminal
- "terminal.integrated.shellArgs.windows": ["-ExecutionPolicy", "RemoteSigned"],
-}
diff --git a/tests_generated/test_use_pre_commit-True/.vscode/tasks.json b/tests_generated/test_use_pre_commit-True/.vscode/tasks.json
deleted file mode 100644
index fe7889ae..00000000
--- a/tests_generated/test_use_pre_commit-True/.vscode/tasks.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "Build Beaker application",
- "command": "${workspaceFolder}/.venv/bin/python",
- "windows": {
- "command": "${workspaceFolder}/.venv/Scripts/python.exe"
- },
- "args": ["-m", "smart_contracts", "build"],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "problemMatcher": []
- },
- {
- "label": "Build Beaker application (+ LocalNet)",
- "command": "${workspaceFolder}/.venv/bin/python",
- "windows": {
- "command": "${workspaceFolder}/.venv/Scripts/python.exe"
- },
- "args": ["-m", "smart_contracts", "build"],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "dependsOn": "Start AlgoKit LocalNet",
- "problemMatcher": []
- },
- {
- "label": "Start AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "start"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Stop AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "stop"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Reset AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "reset"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- }
- ]
-}
diff --git a/tests_generated/test_use_pre_commit-True/README.md b/tests_generated/test_use_pre_commit-True/README.md
deleted file mode 100644
index 9235af7f..00000000
--- a/tests_generated/test_use_pre_commit-True/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# test_use_pre_commit-True
-
-This project has been generated using AlgoKit. See below for default getting started instructions.
-
-# Setup
-
-### Initial setup
-
-1. Clone this repository locally
-2. Install pre-requisites:
- - Make sure to have [Docker](https://www.docker.com/) installed and running on your machine.
- - Install `AlgoKit` - [Link](https://github.com/algorandfoundation/algokit-cli#install): The minimum required version is `1.1`. Ensure you can execute `algokit --version` and get `1.1` or later.
- - Bootstrap your local environment; run `algokit bootstrap all` within this folder, which will:
- - Install `Poetry` - [Link](https://python-poetry.org/docs/#installation): The minimum required version is `1.2`. Ensure you can execute `poetry -V` and get `1.2`+
- - Run `poetry install` in the root directory, which will set up a `.venv` folder with a Python virtual environment and also install all Python dependencies
- - Copy `.env.template` to `.env`
- - Run `algokit localnet start` to start a local Algorand network in Docker. If you are using VS Code launch configurations provided by the template, this will be done automatically for you.
-3. Open the project and start debugging / developing via:
- - VS Code
- 1. Open the repository root in VS Code
- 2. Install recommended extensions
- 3. Hit F5 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
- > **Note**
- > If using Windows: Before running for the first time you will need to select the Python Interpreter.
- 1. Open the command palette (Ctrl/Cmd + Shift + P)
- 2. Search for `Python: Select Interpreter`
- 3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
- 1. Open the repository root in the IDE
- 2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
- - Other
- 1. Open the repository root in your text editor of choice
- 2. In a terminal run `poetry shell`
- 3. Run `python -m smart_contracts` through your debugger of choice
-
-### Subsequently
-
-1. If you update to the latest source code and there are new dependencies you will need to run `algokit bootstrap all` again
-2. Follow step 3 above
-
-> For guidance on `smart_contracts` folder and adding new contracts to the project please see [README](smart_contracts/README.md) on the respective folder.
-
-# Tools
-
-This project makes use of Python to build Algorand smart contracts. The following tools are in use:
-
-- [Algorand](https://www.algorand.com/) - Layer 1 Blockchain; [Developer portal](https://developer.algorand.org/), [Why Algorand?](https://developer.algorand.org/docs/get-started/basics/why_algorand/)
-- [AlgoKit](https://github.com/algorandfoundation/algokit-cli) - One-stop shop tool for developers building on the Algorand network; [docs](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/algokit.md), [intro tutorial](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/tutorials/intro.md)
-- [Beaker](https://github.com/algorand-devrel/beaker) - Smart contract development framework for PyTeal; [docs](https://beaker.algo.xyz), [examples](https://github.com/algorand-devrel/beaker/tree/master/examples)
-- [PyTEAL](https://github.com/algorand/pyteal) - Python language binding for Algorand smart contracts; [docs](https://pyteal.readthedocs.io/en/stable/)
-- [AlgoKit Utils](https://github.com/algorandfoundation/algokit-utils-py) - A set of core Algorand utilities that make it easier to build solutions on Algorand.
-- [Poetry](https://python-poetry.org/): Python packaging and dependency management.- [Black](https://github.com/psf/black): A Python code formatter.
-- [pytest](https://docs.pytest.org/): Automated testing.
-- [pip-audit](https://pypi.org/project/pip-audit/): Tool for scanning Python environments for packages with known vulnerabilities.
- - [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`.
-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.
-
diff --git a/tests_generated/test_use_pre_commit-True/poetry.toml b/tests_generated/test_use_pre_commit-True/poetry.toml
deleted file mode 100644
index ab1033bd..00000000
--- a/tests_generated/test_use_pre_commit-True/poetry.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[virtualenvs]
-in-project = true
diff --git a/tests_generated/test_use_pre_commit-True/pyproject.toml b/tests_generated/test_use_pre_commit-True/pyproject.toml
deleted file mode 100644
index a33a8dae..00000000
--- a/tests_generated/test_use_pre_commit-True/pyproject.toml
+++ /dev/null
@@ -1,27 +0,0 @@
-[tool.poetry]
-name = "test_use_pre_commit-True"
-version = "0.1.0"
-description = "Algorand smart contracts"
-authors = ["None "]
-readme = "README.md"
-
-[tool.poetry.dependencies]
-python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
-python-dotenv = "^1.0.0"
-
-[tool.poetry.group.dev.dependencies]
-black = {extras = ["d"], version = "*"}
-pytest = "*"
-pytest-cov = "*"
-pip-audit = "*"
-pre-commit = "*"
-
-[build-system]
-requires = ["poetry-core"]
-build-backend = "poetry.core.masonry.api"
-
-
-[tool.pytest.ini_options]
-pythonpath = ["smart_contracts", "tests"]
diff --git a/tests_generated/test_use_pre_commit-True/smart_contracts/README.md b/tests_generated/test_use_pre_commit-True/smart_contracts/README.md
deleted file mode 100644
index 0f64fe3d..00000000
--- a/tests_generated/test_use_pre_commit-True/smart_contracts/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-## How to add new smart contracts?
-
-By the default the template creates a single `HelloWorld` contract under hello_world folder in the `smart_contracts` directory. To add a new contract:
-
-1. From the root of the repository execute `algokit generate smart-contract`. This will create a new starter smart contract and deployment configuration file under `{your_contract_name}` subfolder under `smart_contracts` directory.
-2. Each contract potentially has different creation parameters and deployment steps. Hence, you need to define your deployment logic in `deploy_config.py`file.
-3. `config.py` file will automatically build all contracts under `smart_contracts` directory. If you want to build specific contracts manually, modify the default code provided by the template in `config.py` file.
-
-> Please note, above is just a suggested convention tailored for the base configuration and structure of this template. Default code supplied by the template in `config.py` and `index.ts` (if using ts clients) files are tailored for the suggested convention. You are free to modify the structure and naming conventions as you see fit.
diff --git a/tests_generated/test_use_pre_commit-True/smart_contracts/__init__.py b/tests_generated/test_use_pre_commit-True/smart_contracts/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_pre_commit-True/smart_contracts/__main__.py b/tests_generated/test_use_pre_commit-True/smart_contracts/__main__.py
deleted file mode 100644
index 3ef8a27d..00000000
--- a/tests_generated/test_use_pre_commit-True/smart_contracts/__main__.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import logging
-import sys
-from pathlib import Path
-
-from dotenv import load_dotenv
-
-from smart_contracts.config import contracts
-from smart_contracts.helpers.build import build
-from smart_contracts.helpers.deploy import deploy
-
-logging.basicConfig(
- level=logging.DEBUG, format="%(asctime)s %(levelname)-10s: %(message)s"
-)
-logger = logging.getLogger(__name__)
-logger.info("Loading .env")
-load_dotenv()
-root_path = Path(__file__).parent
-
-
-def main(action: str) -> None:
- artifact_path = root_path / "artifacts"
- match action:
- case "build":
- for contract in contracts:
- logger.info(f"Building app {contract.app.name}")
- build(artifact_path / contract.app.name, contract.app)
- case "deploy":
- for contract in contracts:
- logger.info(f"Deploying app {contract.app.name}")
- app_spec_path = artifact_path / contract.app.name / "application.json"
- if contract.deploy:
- deploy(app_spec_path, contract.deploy)
- case "all":
- for contract in contracts:
- logger.info(f"Building app {contract.app.name}")
- app_spec_path = build(artifact_path / contract.app.name, contract.app)
- logger.info(f"Deploying {contract.app.name}")
- if contract.deploy:
- deploy(app_spec_path, contract.deploy)
-
-
-if __name__ == "__main__":
- if len(sys.argv) > 1:
- main(sys.argv[1])
- else:
- main("all")
diff --git a/tests_generated/test_use_pre_commit-True/smart_contracts/config.py b/tests_generated/test_use_pre_commit-True/smart_contracts/config.py
deleted file mode 100644
index 8cefdd67..00000000
--- a/tests_generated/test_use_pre_commit-True/smart_contracts/config.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import dataclasses
-import importlib
-from collections.abc import Callable
-from pathlib import Path
-
-from algokit_utils import Account, ApplicationSpecification
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-from beaker import Application
-
-
-@dataclasses.dataclass
-class SmartContract:
- app: Application
- deploy: Callable[
- [AlgodClient, IndexerClient, ApplicationSpecification, Account], None
- ] | None = None
-
-
-def import_contract(folder: Path) -> Application:
- """Imports the contract from a folder if it exists."""
- try:
- contract_module = importlib.import_module(
- f"{folder.parent.name}.{folder.name}.contract"
- )
- return contract_module.app
- except ImportError as e:
- raise Exception(f"Contract not found in {folder}") from e
-
-
-def import_deploy_if_exists(
- folder: Path,
-) -> (
- Callable[[AlgodClient, IndexerClient, ApplicationSpecification, Account], None]
- | None
-):
- """Imports the deploy function from a folder if it exists."""
- try:
- deploy_module = importlib.import_module(
- f"{folder.parent.name}.{folder.name}.deploy_config"
- )
- return deploy_module.deploy
- except ImportError:
- return None
-
-
-def has_contract_file(directory: Path) -> bool:
- """Checks whether the directory contains contract.py file."""
- return (directory / "contract.py").exists()
-
-
-# define contracts to build and/or deploy
-base_dir = Path("smart_contracts")
-contracts = [
- SmartContract(app=import_contract(folder), deploy=import_deploy_if_exists(folder))
- for folder in base_dir.iterdir()
- if folder.is_dir() and has_contract_file(folder)
-]
-
-## Comment the above and uncomment the below and define contracts manually if you want to build and specify them
-## manually otherwise the above code will always include all contracts under contract.py file for any subdirectory
-## in the smart_contracts directory. Optionally it will also grab the deploy function from deploy_config.py if it exists.
-
-# contracts = []
diff --git a/tests_generated/test_use_pre_commit-True/smart_contracts/hello_world/contract.py b/tests_generated/test_use_pre_commit-True/smart_contracts/hello_world/contract.py
deleted file mode 100644
index 5ed8de06..00000000
--- a/tests_generated/test_use_pre_commit-True/smart_contracts/hello_world/contract.py
+++ /dev/null
@@ -1,10 +0,0 @@
-import beaker
-import pyteal as pt
-
-
-app = beaker.Application("hello_world")
-
-
-@app.external
-def hello(name: pt.abi.String, *, output: pt.abi.String) -> pt.Expr:
- return output.set(pt.Concat(pt.Bytes("Hello, "), name.get()))
diff --git a/tests_generated/test_use_pre_commit-True/smart_contracts/hello_world/deploy_config.py b/tests_generated/test_use_pre_commit-True/smart_contracts/hello_world/deploy_config.py
deleted file mode 100644
index 4afdc60e..00000000
--- a/tests_generated/test_use_pre_commit-True/smart_contracts/hello_world/deploy_config.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import logging
-
-import algokit_utils
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-
-logger = logging.getLogger(__name__)
-
-
-# define deployment behaviour based on supplied app spec
-def deploy(
- algod_client: AlgodClient,
- indexer_client: IndexerClient,
- app_spec: algokit_utils.ApplicationSpecification,
- deployer: algokit_utils.Account,
-) -> None:
- from smart_contracts.artifacts.hello_world.client import (
- HelloWorldClient,
- )
-
- app_client = HelloWorldClient(
- algod_client,
- creator=deployer,
- indexer_client=indexer_client,
- )
- app_client.deploy(
- on_schema_break=algokit_utils.OnSchemaBreak.AppendApp,
- on_update=algokit_utils.OnUpdate.AppendApp,
- )
-
- name = "world"
- response = app_client.hello(name=name)
- logger.info(
- f"Called hello on {app_spec.contract.name} ({app_client.app_id}) "
- f"with name={name}, received: {response.return_value}"
- )
diff --git a/tests_generated/test_use_pre_commit-True/smart_contracts/helpers/__init__.py b/tests_generated/test_use_pre_commit-True/smart_contracts/helpers/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_pre_commit-True/smart_contracts/helpers/build.py b/tests_generated/test_use_pre_commit-True/smart_contracts/helpers/build.py
deleted file mode 100644
index 201e5d66..00000000
--- a/tests_generated/test_use_pre_commit-True/smart_contracts/helpers/build.py
+++ /dev/null
@@ -1,43 +0,0 @@
-import logging
-import subprocess
-from pathlib import Path
-from shutil import rmtree
-
-import beaker
-
-logger = logging.getLogger(__name__)
-deployment_extension = "py"
-
-
-def build(output_dir: Path, app: beaker.Application) -> Path:
- output_dir = output_dir.resolve()
- if output_dir.exists():
- rmtree(output_dir)
- output_dir.mkdir(exist_ok=True, parents=True)
- logger.info(f"Exporting {app.name} to {output_dir}")
- specification = app.build()
- specification.export(output_dir)
-
- result = subprocess.run(
- [
- "algokit",
- "generate",
- "client",
- output_dir / "application.json",
- "--output",
- output_dir / f"client.{deployment_extension}",
- ],
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT,
- text=True,
- )
- if result.returncode:
- if "No such command" in result.stdout:
- raise Exception(
- "Could not generate typed client, requires AlgoKit 1.1 or "
- "later. Please update AlgoKit"
- )
- else:
- raise Exception(f"Could not generate typed client:\n{result.stdout}")
-
- return output_dir / "application.json"
diff --git a/tests_generated/test_use_pre_commit-True/smart_contracts/helpers/deploy.py b/tests_generated/test_use_pre_commit-True/smart_contracts/helpers/deploy.py
deleted file mode 100644
index 08367a3a..00000000
--- a/tests_generated/test_use_pre_commit-True/smart_contracts/helpers/deploy.py
+++ /dev/null
@@ -1,50 +0,0 @@
-import logging
-from collections.abc import Callable
-from pathlib import Path
-
-from algokit_utils import (
- Account,
- ApplicationSpecification,
- EnsureBalanceParameters,
- ensure_funded,
- get_account,
- get_algod_client,
- get_indexer_client,
-)
-from algosdk.util import algos_to_microalgos
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-
-logger = logging.getLogger(__name__)
-
-
-def deploy(
- app_spec_path: Path,
- deploy_callback: Callable[
- [AlgodClient, IndexerClient, ApplicationSpecification, Account], None
- ],
- deployer_initial_funds: int = 2,
-) -> None:
- # get clients
- # by default client configuration is loaded from environment variables
- algod_client = get_algod_client()
- indexer_client = get_indexer_client()
-
- # get app spec
- app_spec = ApplicationSpecification.from_json(app_spec_path.read_text())
-
- # get deployer account by name
- deployer = get_account(algod_client, "DEPLOYER", fund_with_algos=0)
-
- minimum_funds_micro_algos = algos_to_microalgos(deployer_initial_funds)
- ensure_funded(
- algod_client,
- EnsureBalanceParameters(
- account_to_fund=deployer,
- min_spending_balance_micro_algos=minimum_funds_micro_algos,
- min_funding_increment_micro_algos=minimum_funds_micro_algos,
- ),
- )
-
- # use provided callback to deploy the app
- deploy_callback(algod_client, indexer_client, app_spec, deployer)
diff --git a/tests_generated/test_use_pre_commit-True/tests/__init__.py b/tests_generated/test_use_pre_commit-True/tests/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_pre_commit-True/tests/conftest.py b/tests_generated/test_use_pre_commit-True/tests/conftest.py
deleted file mode 100644
index 06a89eb0..00000000
--- a/tests_generated/test_use_pre_commit-True/tests/conftest.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from pathlib import Path
-
-import pytest
-from algokit_utils import (
- get_algod_client,
- is_localnet,
-)
-from algosdk.v2client.algod import AlgodClient
-from dotenv import load_dotenv
-
-
-@pytest.fixture(autouse=True, scope="session")
-def environment_fixture() -> None:
- env_path = Path(__file__).parent.parent / ".env.localnet"
- load_dotenv(env_path)
-
-
-@pytest.fixture(scope="session")
-def algod_client() -> AlgodClient:
- client = get_algod_client()
-
- # you can remove this assertion to test on other networks,
- # included here to prevent accidentally running against other networks
- assert is_localnet(client)
- return client
diff --git a/tests_generated/test_use_pre_commit-True/tests/hello_world_test.py b/tests_generated/test_use_pre_commit-True/tests/hello_world_test.py
deleted file mode 100644
index 50fd3324..00000000
--- a/tests_generated/test_use_pre_commit-True/tests/hello_world_test.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import pytest
-from algokit_utils import (
- ApplicationClient,
- ApplicationSpecification,
- get_localnet_default_account,
-)
-from algosdk.v2client.algod import AlgodClient
-
-from smart_contracts.hello_world import contract as hello_world_contract
-
-
-@pytest.fixture(scope="session")
-def hello_world_app_spec(algod_client: AlgodClient) -> ApplicationSpecification:
- return hello_world_contract.app.build(algod_client)
-
-
-@pytest.fixture(scope="session")
-def hello_world_client(
- algod_client: AlgodClient, hello_world_app_spec: ApplicationSpecification
-) -> ApplicationClient:
- client = ApplicationClient(
- algod_client,
- app_spec=hello_world_app_spec,
- signer=get_localnet_default_account(algod_client),
- )
- client.create()
- return client
-
-
-def test_says_hello(hello_world_client: ApplicationClient) -> None:
- result = hello_world_client.call(hello_world_contract.hello, name="World")
-
- assert result.return_value == "Hello, World"
diff --git a/tests_generated/test_use_python_black-False/.copier-answers.yml b/tests_generated/test_use_python_black-False/.copier-answers.yml
index 7c8512c3..38e92ffb 100644
--- a/tests_generated/test_use_python_black-False/.copier-answers.yml
+++ b/tests_generated/test_use_python_black-False/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_use_python_black-False/.gitignore b/tests_generated/test_use_python_black-False/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_use_python_black-False/.gitignore
+++ b/tests_generated/test_use_python_black-False/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_use_python_black-False/README.md b/tests_generated/test_use_python_black-False/README.md
index e279418c..8633efab 100644
--- a/tests_generated/test_use_python_black-False/README.md
+++ b/tests_generated/test_use_python_black-False/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_use_python_black-False/pyproject.toml b/tests_generated/test_use_python_black-False/pyproject.toml
index 23f0128c..07a3d166 100644
--- a/tests_generated/test_use_python_black-False/pyproject.toml
+++ b/tests_generated/test_use_python_black-False/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_python_black-True/.copier-answers.yml b/tests_generated/test_use_python_black-True/.copier-answers.yml
index 675d1daa..e0f8340b 100644
--- a/tests_generated/test_use_python_black-True/.copier-answers.yml
+++ b/tests_generated/test_use_python_black-True/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_use_python_black-True/.gitignore b/tests_generated/test_use_python_black-True/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_use_python_black-True/.gitignore
+++ b/tests_generated/test_use_python_black-True/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_use_python_black-True/README.md b/tests_generated/test_use_python_black-True/README.md
index cf6dff3a..4455fec2 100644
--- a/tests_generated/test_use_python_black-True/README.md
+++ b/tests_generated/test_use_python_black-True/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_use_python_black-True/pyproject.toml b/tests_generated/test_use_python_black-True/pyproject.toml
index 6da8b4b1..2e666f9a 100644
--- a/tests_generated/test_use_python_black-True/pyproject.toml
+++ b/tests_generated/test_use_python_black-True/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_python_mypy-False/.copier-answers.yml b/tests_generated/test_use_python_mypy-False/.copier-answers.yml
index db014705..fbeddea8 100644
--- a/tests_generated/test_use_python_mypy-False/.copier-answers.yml
+++ b/tests_generated/test_use_python_mypy-False/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_use_python_mypy-False/.gitignore b/tests_generated/test_use_python_mypy-False/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_use_python_mypy-False/.gitignore
+++ b/tests_generated/test_use_python_mypy-False/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_use_python_mypy-False/README.md b/tests_generated/test_use_python_mypy-False/README.md
index 6d7aaaed..ad83b07c 100644
--- a/tests_generated/test_use_python_mypy-False/README.md
+++ b/tests_generated/test_use_python_mypy-False/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_use_python_mypy-False/pyproject.toml b/tests_generated/test_use_python_mypy-False/pyproject.toml
index ad232dec..0f019b64 100644
--- a/tests_generated/test_use_python_mypy-False/pyproject.toml
+++ b/tests_generated/test_use_python_mypy-False/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_python_mypy-True/.copier-answers.yml b/tests_generated/test_use_python_mypy-True/.copier-answers.yml
index 9b954d77..a3d8c03e 100644
--- a/tests_generated/test_use_python_mypy-True/.copier-answers.yml
+++ b/tests_generated/test_use_python_mypy-True/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_use_python_mypy-True/.gitignore b/tests_generated/test_use_python_mypy-True/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_use_python_mypy-True/.gitignore
+++ b/tests_generated/test_use_python_mypy-True/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_use_python_mypy-True/README.md b/tests_generated/test_use_python_mypy-True/README.md
index 20ef2ec2..1555e7dd 100644
--- a/tests_generated/test_use_python_mypy-True/README.md
+++ b/tests_generated/test_use_python_mypy-True/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_use_python_mypy-True/pyproject.toml b/tests_generated/test_use_python_mypy-True/pyproject.toml
index 5960d182..3a197cf1 100644
--- a/tests_generated/test_use_python_mypy-True/pyproject.toml
+++ b/tests_generated/test_use_python_mypy-True/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_python_pip_audit-False/.algokit.toml b/tests_generated/test_use_python_pip_audit-False/.algokit.toml
deleted file mode 100644
index 6ffa3b4c..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.algokit.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-[algokit]
-min_version = "v1.4.0"
-
-[deploy]
-command = "poetry run python -m smart_contracts deploy"
-environment_secrets = [
- "DEPLOYER_MNEMONIC",
-]
-
-[deploy.localnet]
-environment_secrets = []
-
-[generate.smart_contract]
-description = "Adds new smart contract to existing project"
-path = ".algokit/generators/create_contract"
diff --git a/tests_generated/test_use_python_pip_audit-False/.copier-answers.yml b/tests_generated/test_use_python_pip_audit-False/.copier-answers.yml
deleted file mode 100644
index 861809a5..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.copier-answers.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
-_commit:
-_src_path:
-algod_port: 4001
-algod_server: http://localhost
-algod_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-author_email: None
-author_name: None
-contract_name: hello_world
-deployment_language: python
-ide_vscode: true
-indexer_port: 8980
-indexer_server: http://localhost
-indexer_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-preset_name: starter
-project_name: test_use_python_pip_audit-False
-python_linter: none
-use_dispenser: false
-use_github_actions: false
-use_pre_commit: false
-use_python_black: true
-use_python_mypy: false
-use_python_pip_audit: false
-use_python_pytest: true
-
diff --git a/tests_generated/test_use_python_pip_audit-False/.editorconfig b/tests_generated/test_use_python_pip_audit-False/.editorconfig
deleted file mode 100644
index e2fda344..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.editorconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-root=true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-
-[*.py]
-indent_size = 4
diff --git a/tests_generated/test_use_python_pip_audit-False/.env.localnet.template b/tests_generated/test_use_python_pip_audit-False/.env.localnet.template
deleted file mode 100644
index fcbf442d..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.env.localnet.template
+++ /dev/null
@@ -1,7 +0,0 @@
-# this file should contain environment variables specific to algokit localnet
-ALGOD_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-ALGOD_SERVER=http://localhost
-ALGOD_PORT=4001
-INDEXER_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-INDEXER_SERVER=http://localhost
-INDEXER_PORT=8980
diff --git a/tests_generated/test_use_python_pip_audit-False/.env.template b/tests_generated/test_use_python_pip_audit-False/.env.template
deleted file mode 100644
index 184b3934..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.env.template
+++ /dev/null
@@ -1 +0,0 @@
-# this file should contain environment variables common to all environments/networks
diff --git a/tests_generated/test_use_python_pip_audit-False/.env.testnet.template b/tests_generated/test_use_python_pip_audit-False/.env.testnet.template
deleted file mode 100644
index eeea43d7..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.env.testnet.template
+++ /dev/null
@@ -1,3 +0,0 @@
-# this file contains algorand network settings for interacting with testnet via algonode
-ALGOD_SERVER=https://testnet-api.algonode.cloud
-INDEXER_SERVER=https://testnet-idx.algonode.cloud
diff --git a/tests_generated/test_use_python_pip_audit-False/.gitattributes b/tests_generated/test_use_python_pip_audit-False/.gitattributes
deleted file mode 100644
index 6313b56c..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text=auto eol=lf
diff --git a/tests_generated/test_use_python_pip_audit-False/.gitignore b/tests_generated/test_use_python_pip_audit-False/.gitignore
deleted file mode 100644
index 0dbe8edb..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.gitignore
+++ /dev/null
@@ -1,172 +0,0 @@
-# Byte-compiled / optimized / DLL files
-__pycache__/
-*.py[cod]
-*$py.class
-
-# C extensions
-*.so
-
-# Distribution / packaging
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-share/python-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-MANIFEST
-
-# PyInstaller
-# Usually these files are written by a python script from a template
-# before PyInstaller builds the exe, so as to inject date/other infos into it.
-*.manifest
-*.spec
-
-# Installer logs
-pip-log.txt
-pip-delete-this-directory.txt
-
-# Unit test / coverage reports
-htmlcov/
-.tox/
-.nox/
-.coverage
-.coverage.*
-.cache
-nosetests.xml
-coverage.xml
-*.cover
-*.py,cover
-.hypothesis/
-.pytest_cache/
-cover/
-
-# Translations
-*.mo
-*.pot
-
-# Django stuff:
-*.log
-local_settings.py
-db.sqlite3
-db.sqlite3-journal
-
-# Flask stuff:
-instance/
-.webassets-cache
-
-# Scrapy stuff:
-.scrapy
-
-# Sphinx documentation
-docs/_build/
-
-# PyBuilder
-.pybuilder/
-target/
-
-# Jupyter Notebook
-.ipynb_checkpoints
-
-# IPython
-profile_default/
-ipython_config.py
-
-# pyenv
-# For a library or package, you might want to ignore these files since the code is
-# intended to run in multiple environments; otherwise, check them in:
-# .python-version
-
-# pipenv
-# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
-# However, in case of collaboration, if having platform-specific dependencies or dependencies
-# having no cross-platform support, pipenv may install dependencies that don't work, or not
-# install all needed dependencies.
-#Pipfile.lock
-
-# poetry
-# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
-# This is especially recommended for binary packages to ensure reproducibility, and is more
-# commonly ignored for libraries.
-# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
-#poetry.lock
-
-# pdm
-# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
-#pdm.lock
-# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
-# in version control.
-# https://pdm.fming.dev/#use-with-ide
-.pdm.toml
-
-# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
-__pypackages__/
-
-# Celery stuff
-celerybeat-schedule
-celerybeat.pid
-
-# SageMath parsed files
-*.sage.py
-
-# Environments
-.env
-.venv
-env/
-.env.*
-!.env.*.template
-!.env.template
-venv/
-ENV/
-env.bak/
-venv.bak/
-
-# Spyder project settings
-.spyderproject
-.spyproject
-
-# Rope project settings
-.ropeproject
-
-# mkdocs documentation
-/site
-
-# mypy
-.mypy_cache/
-.dmypy.json
-dmypy.json
-
-# Pyre type checker
-.pyre/
-
-# pytype static type analyzer
-.pytype/
-
-# Ruff (linter)
-.ruff_cache/
-
-# Cython debug symbols
-cython_debug/
-
-# PyCharm
-.idea/
-!.idea/runConfigurations
-
-# macOS
-.DS_Store
-
-# Received approval test files
-*.received.*
-
-# NPM
-node_modules
diff --git a/tests_generated/test_use_python_pip_audit-False/.vscode/extensions.json b/tests_generated/test_use_python_pip_audit-False/.vscode/extensions.json
deleted file mode 100644
index 78fafc41..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.vscode/extensions.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "recommendations": [
- "ms-python.python",
- "bungcip.better-toml",
- "editorconfig.editorconfig"
- ]
-}
diff --git a/tests_generated/test_use_python_pip_audit-False/.vscode/launch.json b/tests_generated/test_use_python_pip_audit-False/.vscode/launch.json
deleted file mode 100644
index 8a39d265..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.vscode/launch.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Build & Deploy Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "cwd": "${workspaceFolder}",
- "preLaunchTask": "Start AlgoKit LocalNet",
- "envFile": "${workspaceFolder}/.env.localnet"
- },
- {
- "name": "Deploy Built Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "args": ["deploy"],
- "cwd": "${workspaceFolder}",
- "envFile": "${workspaceFolder}/.env.localnet"
- },
- {
- "name": "Build Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "args": ["build"],
- "cwd": "${workspaceFolder}"
- }
- ]
-}
diff --git a/tests_generated/test_use_python_pip_audit-False/.vscode/settings.json b/tests_generated/test_use_python_pip_audit-False/.vscode/settings.json
deleted file mode 100644
index cee77726..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.vscode/settings.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- // General - see also /.editorconfig
- "editor.formatOnSave": true,
- "files.exclude": {
- "**/.git": true,
- "**/.DS_Store": true,
- "**/Thumbs.db": true,
- ".mypy_cache": true,
- ".pytest_cache": true,
- ".ruff_cache": true,
- "**/__pycache__": true,
- ".idea": true
- },
-
- // Python
- "python.analysis.extraPaths": ["${workspaceFolder}/smart_contracts"],
- "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
- "[python]": {
- "editor.codeActionsOnSave": {
- "source.fixAll": true,
- // Prevent default import sorting from running; Ruff will sort imports for us anyway
- "source.organizeImports": false
- },
- "editor.defaultFormatter": null
- },
- "python.testing.pytestEnabled": true,
- "python.formatting.provider": "black",
-
- // On Windows, if execution policy is set to Signed (default) then it won't be able to activate the venv
- // so instead let's set it to RemoteSigned for VS Code terminal
- "terminal.integrated.shellArgs.windows": ["-ExecutionPolicy", "RemoteSigned"],
-}
diff --git a/tests_generated/test_use_python_pip_audit-False/.vscode/tasks.json b/tests_generated/test_use_python_pip_audit-False/.vscode/tasks.json
deleted file mode 100644
index fe7889ae..00000000
--- a/tests_generated/test_use_python_pip_audit-False/.vscode/tasks.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "Build Beaker application",
- "command": "${workspaceFolder}/.venv/bin/python",
- "windows": {
- "command": "${workspaceFolder}/.venv/Scripts/python.exe"
- },
- "args": ["-m", "smart_contracts", "build"],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "problemMatcher": []
- },
- {
- "label": "Build Beaker application (+ LocalNet)",
- "command": "${workspaceFolder}/.venv/bin/python",
- "windows": {
- "command": "${workspaceFolder}/.venv/Scripts/python.exe"
- },
- "args": ["-m", "smart_contracts", "build"],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "dependsOn": "Start AlgoKit LocalNet",
- "problemMatcher": []
- },
- {
- "label": "Start AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "start"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Stop AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "stop"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Reset AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "reset"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- }
- ]
-}
diff --git a/tests_generated/test_use_python_pip_audit-False/README.md b/tests_generated/test_use_python_pip_audit-False/README.md
deleted file mode 100644
index c4a42057..00000000
--- a/tests_generated/test_use_python_pip_audit-False/README.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# test_use_python_pip_audit-False
-
-This project has been generated using AlgoKit. See below for default getting started instructions.
-
-# Setup
-
-### Initial setup
-
-1. Clone this repository locally
-2. Install pre-requisites:
- - Make sure to have [Docker](https://www.docker.com/) installed and running on your machine.
- - Install `AlgoKit` - [Link](https://github.com/algorandfoundation/algokit-cli#install): The minimum required version is `1.1`. Ensure you can execute `algokit --version` and get `1.1` or later.
- - Bootstrap your local environment; run `algokit bootstrap all` within this folder, which will:
- - Install `Poetry` - [Link](https://python-poetry.org/docs/#installation): The minimum required version is `1.2`. Ensure you can execute `poetry -V` and get `1.2`+
- - Run `poetry install` in the root directory, which will set up a `.venv` folder with a Python virtual environment and also install all Python dependencies
- - Copy `.env.template` to `.env`
- - Run `algokit localnet start` to start a local Algorand network in Docker. If you are using VS Code launch configurations provided by the template, this will be done automatically for you.
-3. Open the project and start debugging / developing via:
- - VS Code
- 1. Open the repository root in VS Code
- 2. Install recommended extensions
- 3. Hit F5 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
- > **Note**
- > If using Windows: Before running for the first time you will need to select the Python Interpreter.
- 1. Open the command palette (Ctrl/Cmd + Shift + P)
- 2. Search for `Python: Select Interpreter`
- 3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
- 1. Open the repository root in the IDE
- 2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
- - Other
- 1. Open the repository root in your text editor of choice
- 2. In a terminal run `poetry shell`
- 3. Run `python -m smart_contracts` through your debugger of choice
-
-### Subsequently
-
-1. If you update to the latest source code and there are new dependencies you will need to run `algokit bootstrap all` again
-2. Follow step 3 above
-
-> For guidance on `smart_contracts` folder and adding new contracts to the project please see [README](smart_contracts/README.md) on the respective folder.
-
-# Tools
-
-This project makes use of Python to build Algorand smart contracts. The following tools are in use:
-
-- [Algorand](https://www.algorand.com/) - Layer 1 Blockchain; [Developer portal](https://developer.algorand.org/), [Why Algorand?](https://developer.algorand.org/docs/get-started/basics/why_algorand/)
-- [AlgoKit](https://github.com/algorandfoundation/algokit-cli) - One-stop shop tool for developers building on the Algorand network; [docs](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/algokit.md), [intro tutorial](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/tutorials/intro.md)
-- [Beaker](https://github.com/algorand-devrel/beaker) - Smart contract development framework for PyTeal; [docs](https://beaker.algo.xyz), [examples](https://github.com/algorand-devrel/beaker/tree/master/examples)
-- [PyTEAL](https://github.com/algorand/pyteal) - Python language binding for Algorand smart contracts; [docs](https://pyteal.readthedocs.io/en/stable/)
-- [AlgoKit Utils](https://github.com/algorandfoundation/algokit-utils-py) - A set of core Algorand utilities that make it easier to build solutions on Algorand.
-- [Poetry](https://python-poetry.org/): Python packaging and dependency management.- [Black](https://github.com/psf/black): A Python code formatter.
-- [pytest](https://docs.pytest.org/): Automated testing.
-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.
-
diff --git a/tests_generated/test_use_python_pip_audit-False/poetry.toml b/tests_generated/test_use_python_pip_audit-False/poetry.toml
deleted file mode 100644
index ab1033bd..00000000
--- a/tests_generated/test_use_python_pip_audit-False/poetry.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[virtualenvs]
-in-project = true
diff --git a/tests_generated/test_use_python_pip_audit-False/pyproject.toml b/tests_generated/test_use_python_pip_audit-False/pyproject.toml
deleted file mode 100644
index 49558013..00000000
--- a/tests_generated/test_use_python_pip_audit-False/pyproject.toml
+++ /dev/null
@@ -1,25 +0,0 @@
-[tool.poetry]
-name = "test_use_python_pip_audit-False"
-version = "0.1.0"
-description = "Algorand smart contracts"
-authors = ["None "]
-readme = "README.md"
-
-[tool.poetry.dependencies]
-python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
-python-dotenv = "^1.0.0"
-
-[tool.poetry.group.dev.dependencies]
-black = {extras = ["d"], version = "*"}
-pytest = "*"
-pytest-cov = "*"
-
-[build-system]
-requires = ["poetry-core"]
-build-backend = "poetry.core.masonry.api"
-
-
-[tool.pytest.ini_options]
-pythonpath = ["smart_contracts", "tests"]
diff --git a/tests_generated/test_use_python_pip_audit-False/smart_contracts/README.md b/tests_generated/test_use_python_pip_audit-False/smart_contracts/README.md
deleted file mode 100644
index 0f64fe3d..00000000
--- a/tests_generated/test_use_python_pip_audit-False/smart_contracts/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-## How to add new smart contracts?
-
-By the default the template creates a single `HelloWorld` contract under hello_world folder in the `smart_contracts` directory. To add a new contract:
-
-1. From the root of the repository execute `algokit generate smart-contract`. This will create a new starter smart contract and deployment configuration file under `{your_contract_name}` subfolder under `smart_contracts` directory.
-2. Each contract potentially has different creation parameters and deployment steps. Hence, you need to define your deployment logic in `deploy_config.py`file.
-3. `config.py` file will automatically build all contracts under `smart_contracts` directory. If you want to build specific contracts manually, modify the default code provided by the template in `config.py` file.
-
-> Please note, above is just a suggested convention tailored for the base configuration and structure of this template. Default code supplied by the template in `config.py` and `index.ts` (if using ts clients) files are tailored for the suggested convention. You are free to modify the structure and naming conventions as you see fit.
diff --git a/tests_generated/test_use_python_pip_audit-False/smart_contracts/__init__.py b/tests_generated/test_use_python_pip_audit-False/smart_contracts/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_python_pip_audit-False/smart_contracts/__main__.py b/tests_generated/test_use_python_pip_audit-False/smart_contracts/__main__.py
deleted file mode 100644
index 3ef8a27d..00000000
--- a/tests_generated/test_use_python_pip_audit-False/smart_contracts/__main__.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import logging
-import sys
-from pathlib import Path
-
-from dotenv import load_dotenv
-
-from smart_contracts.config import contracts
-from smart_contracts.helpers.build import build
-from smart_contracts.helpers.deploy import deploy
-
-logging.basicConfig(
- level=logging.DEBUG, format="%(asctime)s %(levelname)-10s: %(message)s"
-)
-logger = logging.getLogger(__name__)
-logger.info("Loading .env")
-load_dotenv()
-root_path = Path(__file__).parent
-
-
-def main(action: str) -> None:
- artifact_path = root_path / "artifacts"
- match action:
- case "build":
- for contract in contracts:
- logger.info(f"Building app {contract.app.name}")
- build(artifact_path / contract.app.name, contract.app)
- case "deploy":
- for contract in contracts:
- logger.info(f"Deploying app {contract.app.name}")
- app_spec_path = artifact_path / contract.app.name / "application.json"
- if contract.deploy:
- deploy(app_spec_path, contract.deploy)
- case "all":
- for contract in contracts:
- logger.info(f"Building app {contract.app.name}")
- app_spec_path = build(artifact_path / contract.app.name, contract.app)
- logger.info(f"Deploying {contract.app.name}")
- if contract.deploy:
- deploy(app_spec_path, contract.deploy)
-
-
-if __name__ == "__main__":
- if len(sys.argv) > 1:
- main(sys.argv[1])
- else:
- main("all")
diff --git a/tests_generated/test_use_python_pip_audit-False/smart_contracts/config.py b/tests_generated/test_use_python_pip_audit-False/smart_contracts/config.py
deleted file mode 100644
index 8cefdd67..00000000
--- a/tests_generated/test_use_python_pip_audit-False/smart_contracts/config.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import dataclasses
-import importlib
-from collections.abc import Callable
-from pathlib import Path
-
-from algokit_utils import Account, ApplicationSpecification
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-from beaker import Application
-
-
-@dataclasses.dataclass
-class SmartContract:
- app: Application
- deploy: Callable[
- [AlgodClient, IndexerClient, ApplicationSpecification, Account], None
- ] | None = None
-
-
-def import_contract(folder: Path) -> Application:
- """Imports the contract from a folder if it exists."""
- try:
- contract_module = importlib.import_module(
- f"{folder.parent.name}.{folder.name}.contract"
- )
- return contract_module.app
- except ImportError as e:
- raise Exception(f"Contract not found in {folder}") from e
-
-
-def import_deploy_if_exists(
- folder: Path,
-) -> (
- Callable[[AlgodClient, IndexerClient, ApplicationSpecification, Account], None]
- | None
-):
- """Imports the deploy function from a folder if it exists."""
- try:
- deploy_module = importlib.import_module(
- f"{folder.parent.name}.{folder.name}.deploy_config"
- )
- return deploy_module.deploy
- except ImportError:
- return None
-
-
-def has_contract_file(directory: Path) -> bool:
- """Checks whether the directory contains contract.py file."""
- return (directory / "contract.py").exists()
-
-
-# define contracts to build and/or deploy
-base_dir = Path("smart_contracts")
-contracts = [
- SmartContract(app=import_contract(folder), deploy=import_deploy_if_exists(folder))
- for folder in base_dir.iterdir()
- if folder.is_dir() and has_contract_file(folder)
-]
-
-## Comment the above and uncomment the below and define contracts manually if you want to build and specify them
-## manually otherwise the above code will always include all contracts under contract.py file for any subdirectory
-## in the smart_contracts directory. Optionally it will also grab the deploy function from deploy_config.py if it exists.
-
-# contracts = []
diff --git a/tests_generated/test_use_python_pip_audit-False/smart_contracts/hello_world/contract.py b/tests_generated/test_use_python_pip_audit-False/smart_contracts/hello_world/contract.py
deleted file mode 100644
index 5ed8de06..00000000
--- a/tests_generated/test_use_python_pip_audit-False/smart_contracts/hello_world/contract.py
+++ /dev/null
@@ -1,10 +0,0 @@
-import beaker
-import pyteal as pt
-
-
-app = beaker.Application("hello_world")
-
-
-@app.external
-def hello(name: pt.abi.String, *, output: pt.abi.String) -> pt.Expr:
- return output.set(pt.Concat(pt.Bytes("Hello, "), name.get()))
diff --git a/tests_generated/test_use_python_pip_audit-False/smart_contracts/hello_world/deploy_config.py b/tests_generated/test_use_python_pip_audit-False/smart_contracts/hello_world/deploy_config.py
deleted file mode 100644
index 4afdc60e..00000000
--- a/tests_generated/test_use_python_pip_audit-False/smart_contracts/hello_world/deploy_config.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import logging
-
-import algokit_utils
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-
-logger = logging.getLogger(__name__)
-
-
-# define deployment behaviour based on supplied app spec
-def deploy(
- algod_client: AlgodClient,
- indexer_client: IndexerClient,
- app_spec: algokit_utils.ApplicationSpecification,
- deployer: algokit_utils.Account,
-) -> None:
- from smart_contracts.artifacts.hello_world.client import (
- HelloWorldClient,
- )
-
- app_client = HelloWorldClient(
- algod_client,
- creator=deployer,
- indexer_client=indexer_client,
- )
- app_client.deploy(
- on_schema_break=algokit_utils.OnSchemaBreak.AppendApp,
- on_update=algokit_utils.OnUpdate.AppendApp,
- )
-
- name = "world"
- response = app_client.hello(name=name)
- logger.info(
- f"Called hello on {app_spec.contract.name} ({app_client.app_id}) "
- f"with name={name}, received: {response.return_value}"
- )
diff --git a/tests_generated/test_use_python_pip_audit-False/smart_contracts/helpers/__init__.py b/tests_generated/test_use_python_pip_audit-False/smart_contracts/helpers/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_python_pip_audit-False/smart_contracts/helpers/build.py b/tests_generated/test_use_python_pip_audit-False/smart_contracts/helpers/build.py
deleted file mode 100644
index 201e5d66..00000000
--- a/tests_generated/test_use_python_pip_audit-False/smart_contracts/helpers/build.py
+++ /dev/null
@@ -1,43 +0,0 @@
-import logging
-import subprocess
-from pathlib import Path
-from shutil import rmtree
-
-import beaker
-
-logger = logging.getLogger(__name__)
-deployment_extension = "py"
-
-
-def build(output_dir: Path, app: beaker.Application) -> Path:
- output_dir = output_dir.resolve()
- if output_dir.exists():
- rmtree(output_dir)
- output_dir.mkdir(exist_ok=True, parents=True)
- logger.info(f"Exporting {app.name} to {output_dir}")
- specification = app.build()
- specification.export(output_dir)
-
- result = subprocess.run(
- [
- "algokit",
- "generate",
- "client",
- output_dir / "application.json",
- "--output",
- output_dir / f"client.{deployment_extension}",
- ],
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT,
- text=True,
- )
- if result.returncode:
- if "No such command" in result.stdout:
- raise Exception(
- "Could not generate typed client, requires AlgoKit 1.1 or "
- "later. Please update AlgoKit"
- )
- else:
- raise Exception(f"Could not generate typed client:\n{result.stdout}")
-
- return output_dir / "application.json"
diff --git a/tests_generated/test_use_python_pip_audit-False/smart_contracts/helpers/deploy.py b/tests_generated/test_use_python_pip_audit-False/smart_contracts/helpers/deploy.py
deleted file mode 100644
index 08367a3a..00000000
--- a/tests_generated/test_use_python_pip_audit-False/smart_contracts/helpers/deploy.py
+++ /dev/null
@@ -1,50 +0,0 @@
-import logging
-from collections.abc import Callable
-from pathlib import Path
-
-from algokit_utils import (
- Account,
- ApplicationSpecification,
- EnsureBalanceParameters,
- ensure_funded,
- get_account,
- get_algod_client,
- get_indexer_client,
-)
-from algosdk.util import algos_to_microalgos
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-
-logger = logging.getLogger(__name__)
-
-
-def deploy(
- app_spec_path: Path,
- deploy_callback: Callable[
- [AlgodClient, IndexerClient, ApplicationSpecification, Account], None
- ],
- deployer_initial_funds: int = 2,
-) -> None:
- # get clients
- # by default client configuration is loaded from environment variables
- algod_client = get_algod_client()
- indexer_client = get_indexer_client()
-
- # get app spec
- app_spec = ApplicationSpecification.from_json(app_spec_path.read_text())
-
- # get deployer account by name
- deployer = get_account(algod_client, "DEPLOYER", fund_with_algos=0)
-
- minimum_funds_micro_algos = algos_to_microalgos(deployer_initial_funds)
- ensure_funded(
- algod_client,
- EnsureBalanceParameters(
- account_to_fund=deployer,
- min_spending_balance_micro_algos=minimum_funds_micro_algos,
- min_funding_increment_micro_algos=minimum_funds_micro_algos,
- ),
- )
-
- # use provided callback to deploy the app
- deploy_callback(algod_client, indexer_client, app_spec, deployer)
diff --git a/tests_generated/test_use_python_pip_audit-False/tests/__init__.py b/tests_generated/test_use_python_pip_audit-False/tests/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_python_pip_audit-False/tests/conftest.py b/tests_generated/test_use_python_pip_audit-False/tests/conftest.py
deleted file mode 100644
index 06a89eb0..00000000
--- a/tests_generated/test_use_python_pip_audit-False/tests/conftest.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from pathlib import Path
-
-import pytest
-from algokit_utils import (
- get_algod_client,
- is_localnet,
-)
-from algosdk.v2client.algod import AlgodClient
-from dotenv import load_dotenv
-
-
-@pytest.fixture(autouse=True, scope="session")
-def environment_fixture() -> None:
- env_path = Path(__file__).parent.parent / ".env.localnet"
- load_dotenv(env_path)
-
-
-@pytest.fixture(scope="session")
-def algod_client() -> AlgodClient:
- client = get_algod_client()
-
- # you can remove this assertion to test on other networks,
- # included here to prevent accidentally running against other networks
- assert is_localnet(client)
- return client
diff --git a/tests_generated/test_use_python_pip_audit-False/tests/hello_world_test.py b/tests_generated/test_use_python_pip_audit-False/tests/hello_world_test.py
deleted file mode 100644
index 50fd3324..00000000
--- a/tests_generated/test_use_python_pip_audit-False/tests/hello_world_test.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import pytest
-from algokit_utils import (
- ApplicationClient,
- ApplicationSpecification,
- get_localnet_default_account,
-)
-from algosdk.v2client.algod import AlgodClient
-
-from smart_contracts.hello_world import contract as hello_world_contract
-
-
-@pytest.fixture(scope="session")
-def hello_world_app_spec(algod_client: AlgodClient) -> ApplicationSpecification:
- return hello_world_contract.app.build(algod_client)
-
-
-@pytest.fixture(scope="session")
-def hello_world_client(
- algod_client: AlgodClient, hello_world_app_spec: ApplicationSpecification
-) -> ApplicationClient:
- client = ApplicationClient(
- algod_client,
- app_spec=hello_world_app_spec,
- signer=get_localnet_default_account(algod_client),
- )
- client.create()
- return client
-
-
-def test_says_hello(hello_world_client: ApplicationClient) -> None:
- result = hello_world_client.call(hello_world_contract.hello, name="World")
-
- assert result.return_value == "Hello, World"
diff --git a/tests_generated/test_use_python_pip_audit-True/.algokit.toml b/tests_generated/test_use_python_pip_audit-True/.algokit.toml
deleted file mode 100644
index 6ffa3b4c..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.algokit.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-[algokit]
-min_version = "v1.4.0"
-
-[deploy]
-command = "poetry run python -m smart_contracts deploy"
-environment_secrets = [
- "DEPLOYER_MNEMONIC",
-]
-
-[deploy.localnet]
-environment_secrets = []
-
-[generate.smart_contract]
-description = "Adds new smart contract to existing project"
-path = ".algokit/generators/create_contract"
diff --git a/tests_generated/test_use_python_pip_audit-True/.copier-answers.yml b/tests_generated/test_use_python_pip_audit-True/.copier-answers.yml
deleted file mode 100644
index b3424559..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.copier-answers.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
-_commit:
-_src_path:
-algod_port: 4001
-algod_server: http://localhost
-algod_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-author_email: None
-author_name: None
-contract_name: hello_world
-deployment_language: python
-ide_vscode: true
-indexer_port: 8980
-indexer_server: http://localhost
-indexer_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-preset_name: starter
-project_name: test_use_python_pip_audit-True
-python_linter: none
-use_dispenser: false
-use_github_actions: false
-use_pre_commit: false
-use_python_black: true
-use_python_mypy: false
-use_python_pip_audit: true
-use_python_pytest: true
-
diff --git a/tests_generated/test_use_python_pip_audit-True/.editorconfig b/tests_generated/test_use_python_pip_audit-True/.editorconfig
deleted file mode 100644
index e2fda344..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.editorconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-root=true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-
-[*.py]
-indent_size = 4
diff --git a/tests_generated/test_use_python_pip_audit-True/.env.localnet.template b/tests_generated/test_use_python_pip_audit-True/.env.localnet.template
deleted file mode 100644
index fcbf442d..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.env.localnet.template
+++ /dev/null
@@ -1,7 +0,0 @@
-# this file should contain environment variables specific to algokit localnet
-ALGOD_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-ALGOD_SERVER=http://localhost
-ALGOD_PORT=4001
-INDEXER_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-INDEXER_SERVER=http://localhost
-INDEXER_PORT=8980
diff --git a/tests_generated/test_use_python_pip_audit-True/.env.template b/tests_generated/test_use_python_pip_audit-True/.env.template
deleted file mode 100644
index 184b3934..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.env.template
+++ /dev/null
@@ -1 +0,0 @@
-# this file should contain environment variables common to all environments/networks
diff --git a/tests_generated/test_use_python_pip_audit-True/.env.testnet.template b/tests_generated/test_use_python_pip_audit-True/.env.testnet.template
deleted file mode 100644
index eeea43d7..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.env.testnet.template
+++ /dev/null
@@ -1,3 +0,0 @@
-# this file contains algorand network settings for interacting with testnet via algonode
-ALGOD_SERVER=https://testnet-api.algonode.cloud
-INDEXER_SERVER=https://testnet-idx.algonode.cloud
diff --git a/tests_generated/test_use_python_pip_audit-True/.gitattributes b/tests_generated/test_use_python_pip_audit-True/.gitattributes
deleted file mode 100644
index 6313b56c..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text=auto eol=lf
diff --git a/tests_generated/test_use_python_pip_audit-True/.gitignore b/tests_generated/test_use_python_pip_audit-True/.gitignore
deleted file mode 100644
index 0dbe8edb..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.gitignore
+++ /dev/null
@@ -1,172 +0,0 @@
-# Byte-compiled / optimized / DLL files
-__pycache__/
-*.py[cod]
-*$py.class
-
-# C extensions
-*.so
-
-# Distribution / packaging
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-share/python-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-MANIFEST
-
-# PyInstaller
-# Usually these files are written by a python script from a template
-# before PyInstaller builds the exe, so as to inject date/other infos into it.
-*.manifest
-*.spec
-
-# Installer logs
-pip-log.txt
-pip-delete-this-directory.txt
-
-# Unit test / coverage reports
-htmlcov/
-.tox/
-.nox/
-.coverage
-.coverage.*
-.cache
-nosetests.xml
-coverage.xml
-*.cover
-*.py,cover
-.hypothesis/
-.pytest_cache/
-cover/
-
-# Translations
-*.mo
-*.pot
-
-# Django stuff:
-*.log
-local_settings.py
-db.sqlite3
-db.sqlite3-journal
-
-# Flask stuff:
-instance/
-.webassets-cache
-
-# Scrapy stuff:
-.scrapy
-
-# Sphinx documentation
-docs/_build/
-
-# PyBuilder
-.pybuilder/
-target/
-
-# Jupyter Notebook
-.ipynb_checkpoints
-
-# IPython
-profile_default/
-ipython_config.py
-
-# pyenv
-# For a library or package, you might want to ignore these files since the code is
-# intended to run in multiple environments; otherwise, check them in:
-# .python-version
-
-# pipenv
-# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
-# However, in case of collaboration, if having platform-specific dependencies or dependencies
-# having no cross-platform support, pipenv may install dependencies that don't work, or not
-# install all needed dependencies.
-#Pipfile.lock
-
-# poetry
-# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
-# This is especially recommended for binary packages to ensure reproducibility, and is more
-# commonly ignored for libraries.
-# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
-#poetry.lock
-
-# pdm
-# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
-#pdm.lock
-# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
-# in version control.
-# https://pdm.fming.dev/#use-with-ide
-.pdm.toml
-
-# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
-__pypackages__/
-
-# Celery stuff
-celerybeat-schedule
-celerybeat.pid
-
-# SageMath parsed files
-*.sage.py
-
-# Environments
-.env
-.venv
-env/
-.env.*
-!.env.*.template
-!.env.template
-venv/
-ENV/
-env.bak/
-venv.bak/
-
-# Spyder project settings
-.spyderproject
-.spyproject
-
-# Rope project settings
-.ropeproject
-
-# mkdocs documentation
-/site
-
-# mypy
-.mypy_cache/
-.dmypy.json
-dmypy.json
-
-# Pyre type checker
-.pyre/
-
-# pytype static type analyzer
-.pytype/
-
-# Ruff (linter)
-.ruff_cache/
-
-# Cython debug symbols
-cython_debug/
-
-# PyCharm
-.idea/
-!.idea/runConfigurations
-
-# macOS
-.DS_Store
-
-# Received approval test files
-*.received.*
-
-# NPM
-node_modules
diff --git a/tests_generated/test_use_python_pip_audit-True/.vscode/extensions.json b/tests_generated/test_use_python_pip_audit-True/.vscode/extensions.json
deleted file mode 100644
index 78fafc41..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.vscode/extensions.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "recommendations": [
- "ms-python.python",
- "bungcip.better-toml",
- "editorconfig.editorconfig"
- ]
-}
diff --git a/tests_generated/test_use_python_pip_audit-True/.vscode/launch.json b/tests_generated/test_use_python_pip_audit-True/.vscode/launch.json
deleted file mode 100644
index 8a39d265..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.vscode/launch.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Build & Deploy Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "cwd": "${workspaceFolder}",
- "preLaunchTask": "Start AlgoKit LocalNet",
- "envFile": "${workspaceFolder}/.env.localnet"
- },
- {
- "name": "Deploy Built Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "args": ["deploy"],
- "cwd": "${workspaceFolder}",
- "envFile": "${workspaceFolder}/.env.localnet"
- },
- {
- "name": "Build Beaker application",
- "type": "python",
- "request": "launch",
- "module": "smart_contracts",
- "args": ["build"],
- "cwd": "${workspaceFolder}"
- }
- ]
-}
diff --git a/tests_generated/test_use_python_pip_audit-True/.vscode/settings.json b/tests_generated/test_use_python_pip_audit-True/.vscode/settings.json
deleted file mode 100644
index cee77726..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.vscode/settings.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- // General - see also /.editorconfig
- "editor.formatOnSave": true,
- "files.exclude": {
- "**/.git": true,
- "**/.DS_Store": true,
- "**/Thumbs.db": true,
- ".mypy_cache": true,
- ".pytest_cache": true,
- ".ruff_cache": true,
- "**/__pycache__": true,
- ".idea": true
- },
-
- // Python
- "python.analysis.extraPaths": ["${workspaceFolder}/smart_contracts"],
- "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
- "[python]": {
- "editor.codeActionsOnSave": {
- "source.fixAll": true,
- // Prevent default import sorting from running; Ruff will sort imports for us anyway
- "source.organizeImports": false
- },
- "editor.defaultFormatter": null
- },
- "python.testing.pytestEnabled": true,
- "python.formatting.provider": "black",
-
- // On Windows, if execution policy is set to Signed (default) then it won't be able to activate the venv
- // so instead let's set it to RemoteSigned for VS Code terminal
- "terminal.integrated.shellArgs.windows": ["-ExecutionPolicy", "RemoteSigned"],
-}
diff --git a/tests_generated/test_use_python_pip_audit-True/.vscode/tasks.json b/tests_generated/test_use_python_pip_audit-True/.vscode/tasks.json
deleted file mode 100644
index fe7889ae..00000000
--- a/tests_generated/test_use_python_pip_audit-True/.vscode/tasks.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "Build Beaker application",
- "command": "${workspaceFolder}/.venv/bin/python",
- "windows": {
- "command": "${workspaceFolder}/.venv/Scripts/python.exe"
- },
- "args": ["-m", "smart_contracts", "build"],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "problemMatcher": []
- },
- {
- "label": "Build Beaker application (+ LocalNet)",
- "command": "${workspaceFolder}/.venv/bin/python",
- "windows": {
- "command": "${workspaceFolder}/.venv/Scripts/python.exe"
- },
- "args": ["-m", "smart_contracts", "build"],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "dependsOn": "Start AlgoKit LocalNet",
- "problemMatcher": []
- },
- {
- "label": "Start AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "start"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Stop AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "stop"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Reset AlgoKit LocalNet",
- "command": "algokit",
- "args": ["localnet", "reset"],
- "type": "shell",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- }
- ]
-}
diff --git a/tests_generated/test_use_python_pip_audit-True/poetry.toml b/tests_generated/test_use_python_pip_audit-True/poetry.toml
deleted file mode 100644
index ab1033bd..00000000
--- a/tests_generated/test_use_python_pip_audit-True/poetry.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[virtualenvs]
-in-project = true
diff --git a/tests_generated/test_use_python_pip_audit-True/pyproject.toml b/tests_generated/test_use_python_pip_audit-True/pyproject.toml
deleted file mode 100644
index 9e06d077..00000000
--- a/tests_generated/test_use_python_pip_audit-True/pyproject.toml
+++ /dev/null
@@ -1,26 +0,0 @@
-[tool.poetry]
-name = "test_use_python_pip_audit-True"
-version = "0.1.0"
-description = "Algorand smart contracts"
-authors = ["None "]
-readme = "README.md"
-
-[tool.poetry.dependencies]
-python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
-python-dotenv = "^1.0.0"
-
-[tool.poetry.group.dev.dependencies]
-black = {extras = ["d"], version = "*"}
-pytest = "*"
-pytest-cov = "*"
-pip-audit = "*"
-
-[build-system]
-requires = ["poetry-core"]
-build-backend = "poetry.core.masonry.api"
-
-
-[tool.pytest.ini_options]
-pythonpath = ["smart_contracts", "tests"]
diff --git a/tests_generated/test_use_python_pip_audit-True/smart_contracts/README.md b/tests_generated/test_use_python_pip_audit-True/smart_contracts/README.md
deleted file mode 100644
index 0f64fe3d..00000000
--- a/tests_generated/test_use_python_pip_audit-True/smart_contracts/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-## How to add new smart contracts?
-
-By the default the template creates a single `HelloWorld` contract under hello_world folder in the `smart_contracts` directory. To add a new contract:
-
-1. From the root of the repository execute `algokit generate smart-contract`. This will create a new starter smart contract and deployment configuration file under `{your_contract_name}` subfolder under `smart_contracts` directory.
-2. Each contract potentially has different creation parameters and deployment steps. Hence, you need to define your deployment logic in `deploy_config.py`file.
-3. `config.py` file will automatically build all contracts under `smart_contracts` directory. If you want to build specific contracts manually, modify the default code provided by the template in `config.py` file.
-
-> Please note, above is just a suggested convention tailored for the base configuration and structure of this template. Default code supplied by the template in `config.py` and `index.ts` (if using ts clients) files are tailored for the suggested convention. You are free to modify the structure and naming conventions as you see fit.
diff --git a/tests_generated/test_use_python_pip_audit-True/smart_contracts/__init__.py b/tests_generated/test_use_python_pip_audit-True/smart_contracts/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_python_pip_audit-True/smart_contracts/__main__.py b/tests_generated/test_use_python_pip_audit-True/smart_contracts/__main__.py
deleted file mode 100644
index 3ef8a27d..00000000
--- a/tests_generated/test_use_python_pip_audit-True/smart_contracts/__main__.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import logging
-import sys
-from pathlib import Path
-
-from dotenv import load_dotenv
-
-from smart_contracts.config import contracts
-from smart_contracts.helpers.build import build
-from smart_contracts.helpers.deploy import deploy
-
-logging.basicConfig(
- level=logging.DEBUG, format="%(asctime)s %(levelname)-10s: %(message)s"
-)
-logger = logging.getLogger(__name__)
-logger.info("Loading .env")
-load_dotenv()
-root_path = Path(__file__).parent
-
-
-def main(action: str) -> None:
- artifact_path = root_path / "artifacts"
- match action:
- case "build":
- for contract in contracts:
- logger.info(f"Building app {contract.app.name}")
- build(artifact_path / contract.app.name, contract.app)
- case "deploy":
- for contract in contracts:
- logger.info(f"Deploying app {contract.app.name}")
- app_spec_path = artifact_path / contract.app.name / "application.json"
- if contract.deploy:
- deploy(app_spec_path, contract.deploy)
- case "all":
- for contract in contracts:
- logger.info(f"Building app {contract.app.name}")
- app_spec_path = build(artifact_path / contract.app.name, contract.app)
- logger.info(f"Deploying {contract.app.name}")
- if contract.deploy:
- deploy(app_spec_path, contract.deploy)
-
-
-if __name__ == "__main__":
- if len(sys.argv) > 1:
- main(sys.argv[1])
- else:
- main("all")
diff --git a/tests_generated/test_use_python_pip_audit-True/smart_contracts/config.py b/tests_generated/test_use_python_pip_audit-True/smart_contracts/config.py
deleted file mode 100644
index 8cefdd67..00000000
--- a/tests_generated/test_use_python_pip_audit-True/smart_contracts/config.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import dataclasses
-import importlib
-from collections.abc import Callable
-from pathlib import Path
-
-from algokit_utils import Account, ApplicationSpecification
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-from beaker import Application
-
-
-@dataclasses.dataclass
-class SmartContract:
- app: Application
- deploy: Callable[
- [AlgodClient, IndexerClient, ApplicationSpecification, Account], None
- ] | None = None
-
-
-def import_contract(folder: Path) -> Application:
- """Imports the contract from a folder if it exists."""
- try:
- contract_module = importlib.import_module(
- f"{folder.parent.name}.{folder.name}.contract"
- )
- return contract_module.app
- except ImportError as e:
- raise Exception(f"Contract not found in {folder}") from e
-
-
-def import_deploy_if_exists(
- folder: Path,
-) -> (
- Callable[[AlgodClient, IndexerClient, ApplicationSpecification, Account], None]
- | None
-):
- """Imports the deploy function from a folder if it exists."""
- try:
- deploy_module = importlib.import_module(
- f"{folder.parent.name}.{folder.name}.deploy_config"
- )
- return deploy_module.deploy
- except ImportError:
- return None
-
-
-def has_contract_file(directory: Path) -> bool:
- """Checks whether the directory contains contract.py file."""
- return (directory / "contract.py").exists()
-
-
-# define contracts to build and/or deploy
-base_dir = Path("smart_contracts")
-contracts = [
- SmartContract(app=import_contract(folder), deploy=import_deploy_if_exists(folder))
- for folder in base_dir.iterdir()
- if folder.is_dir() and has_contract_file(folder)
-]
-
-## Comment the above and uncomment the below and define contracts manually if you want to build and specify them
-## manually otherwise the above code will always include all contracts under contract.py file for any subdirectory
-## in the smart_contracts directory. Optionally it will also grab the deploy function from deploy_config.py if it exists.
-
-# contracts = []
diff --git a/tests_generated/test_use_python_pip_audit-True/smart_contracts/hello_world/contract.py b/tests_generated/test_use_python_pip_audit-True/smart_contracts/hello_world/contract.py
deleted file mode 100644
index 5ed8de06..00000000
--- a/tests_generated/test_use_python_pip_audit-True/smart_contracts/hello_world/contract.py
+++ /dev/null
@@ -1,10 +0,0 @@
-import beaker
-import pyteal as pt
-
-
-app = beaker.Application("hello_world")
-
-
-@app.external
-def hello(name: pt.abi.String, *, output: pt.abi.String) -> pt.Expr:
- return output.set(pt.Concat(pt.Bytes("Hello, "), name.get()))
diff --git a/tests_generated/test_use_python_pip_audit-True/smart_contracts/hello_world/deploy_config.py b/tests_generated/test_use_python_pip_audit-True/smart_contracts/hello_world/deploy_config.py
deleted file mode 100644
index 4afdc60e..00000000
--- a/tests_generated/test_use_python_pip_audit-True/smart_contracts/hello_world/deploy_config.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import logging
-
-import algokit_utils
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-
-logger = logging.getLogger(__name__)
-
-
-# define deployment behaviour based on supplied app spec
-def deploy(
- algod_client: AlgodClient,
- indexer_client: IndexerClient,
- app_spec: algokit_utils.ApplicationSpecification,
- deployer: algokit_utils.Account,
-) -> None:
- from smart_contracts.artifacts.hello_world.client import (
- HelloWorldClient,
- )
-
- app_client = HelloWorldClient(
- algod_client,
- creator=deployer,
- indexer_client=indexer_client,
- )
- app_client.deploy(
- on_schema_break=algokit_utils.OnSchemaBreak.AppendApp,
- on_update=algokit_utils.OnUpdate.AppendApp,
- )
-
- name = "world"
- response = app_client.hello(name=name)
- logger.info(
- f"Called hello on {app_spec.contract.name} ({app_client.app_id}) "
- f"with name={name}, received: {response.return_value}"
- )
diff --git a/tests_generated/test_use_python_pip_audit-True/smart_contracts/helpers/__init__.py b/tests_generated/test_use_python_pip_audit-True/smart_contracts/helpers/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_python_pip_audit-True/smart_contracts/helpers/build.py b/tests_generated/test_use_python_pip_audit-True/smart_contracts/helpers/build.py
deleted file mode 100644
index 201e5d66..00000000
--- a/tests_generated/test_use_python_pip_audit-True/smart_contracts/helpers/build.py
+++ /dev/null
@@ -1,43 +0,0 @@
-import logging
-import subprocess
-from pathlib import Path
-from shutil import rmtree
-
-import beaker
-
-logger = logging.getLogger(__name__)
-deployment_extension = "py"
-
-
-def build(output_dir: Path, app: beaker.Application) -> Path:
- output_dir = output_dir.resolve()
- if output_dir.exists():
- rmtree(output_dir)
- output_dir.mkdir(exist_ok=True, parents=True)
- logger.info(f"Exporting {app.name} to {output_dir}")
- specification = app.build()
- specification.export(output_dir)
-
- result = subprocess.run(
- [
- "algokit",
- "generate",
- "client",
- output_dir / "application.json",
- "--output",
- output_dir / f"client.{deployment_extension}",
- ],
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT,
- text=True,
- )
- if result.returncode:
- if "No such command" in result.stdout:
- raise Exception(
- "Could not generate typed client, requires AlgoKit 1.1 or "
- "later. Please update AlgoKit"
- )
- else:
- raise Exception(f"Could not generate typed client:\n{result.stdout}")
-
- return output_dir / "application.json"
diff --git a/tests_generated/test_use_python_pip_audit-True/smart_contracts/helpers/deploy.py b/tests_generated/test_use_python_pip_audit-True/smart_contracts/helpers/deploy.py
deleted file mode 100644
index 08367a3a..00000000
--- a/tests_generated/test_use_python_pip_audit-True/smart_contracts/helpers/deploy.py
+++ /dev/null
@@ -1,50 +0,0 @@
-import logging
-from collections.abc import Callable
-from pathlib import Path
-
-from algokit_utils import (
- Account,
- ApplicationSpecification,
- EnsureBalanceParameters,
- ensure_funded,
- get_account,
- get_algod_client,
- get_indexer_client,
-)
-from algosdk.util import algos_to_microalgos
-from algosdk.v2client.algod import AlgodClient
-from algosdk.v2client.indexer import IndexerClient
-
-logger = logging.getLogger(__name__)
-
-
-def deploy(
- app_spec_path: Path,
- deploy_callback: Callable[
- [AlgodClient, IndexerClient, ApplicationSpecification, Account], None
- ],
- deployer_initial_funds: int = 2,
-) -> None:
- # get clients
- # by default client configuration is loaded from environment variables
- algod_client = get_algod_client()
- indexer_client = get_indexer_client()
-
- # get app spec
- app_spec = ApplicationSpecification.from_json(app_spec_path.read_text())
-
- # get deployer account by name
- deployer = get_account(algod_client, "DEPLOYER", fund_with_algos=0)
-
- minimum_funds_micro_algos = algos_to_microalgos(deployer_initial_funds)
- ensure_funded(
- algod_client,
- EnsureBalanceParameters(
- account_to_fund=deployer,
- min_spending_balance_micro_algos=minimum_funds_micro_algos,
- min_funding_increment_micro_algos=minimum_funds_micro_algos,
- ),
- )
-
- # use provided callback to deploy the app
- deploy_callback(algod_client, indexer_client, app_spec, deployer)
diff --git a/tests_generated/test_use_python_pip_audit-True/tests/__init__.py b/tests_generated/test_use_python_pip_audit-True/tests/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests_generated/test_use_python_pip_audit-True/tests/conftest.py b/tests_generated/test_use_python_pip_audit-True/tests/conftest.py
deleted file mode 100644
index 06a89eb0..00000000
--- a/tests_generated/test_use_python_pip_audit-True/tests/conftest.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from pathlib import Path
-
-import pytest
-from algokit_utils import (
- get_algod_client,
- is_localnet,
-)
-from algosdk.v2client.algod import AlgodClient
-from dotenv import load_dotenv
-
-
-@pytest.fixture(autouse=True, scope="session")
-def environment_fixture() -> None:
- env_path = Path(__file__).parent.parent / ".env.localnet"
- load_dotenv(env_path)
-
-
-@pytest.fixture(scope="session")
-def algod_client() -> AlgodClient:
- client = get_algod_client()
-
- # you can remove this assertion to test on other networks,
- # included here to prevent accidentally running against other networks
- assert is_localnet(client)
- return client
diff --git a/tests_generated/test_use_python_pip_audit-True/tests/hello_world_test.py b/tests_generated/test_use_python_pip_audit-True/tests/hello_world_test.py
deleted file mode 100644
index 50fd3324..00000000
--- a/tests_generated/test_use_python_pip_audit-True/tests/hello_world_test.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import pytest
-from algokit_utils import (
- ApplicationClient,
- ApplicationSpecification,
- get_localnet_default_account,
-)
-from algosdk.v2client.algod import AlgodClient
-
-from smart_contracts.hello_world import contract as hello_world_contract
-
-
-@pytest.fixture(scope="session")
-def hello_world_app_spec(algod_client: AlgodClient) -> ApplicationSpecification:
- return hello_world_contract.app.build(algod_client)
-
-
-@pytest.fixture(scope="session")
-def hello_world_client(
- algod_client: AlgodClient, hello_world_app_spec: ApplicationSpecification
-) -> ApplicationClient:
- client = ApplicationClient(
- algod_client,
- app_spec=hello_world_app_spec,
- signer=get_localnet_default_account(algod_client),
- )
- client.create()
- return client
-
-
-def test_says_hello(hello_world_client: ApplicationClient) -> None:
- result = hello_world_client.call(hello_world_contract.hello, name="World")
-
- assert result.return_value == "Hello, World"
diff --git a/tests_generated/test_use_python_pytest-False/.copier-answers.yml b/tests_generated/test_use_python_pytest-False/.copier-answers.yml
index 40e91de8..42902ca7 100644
--- a/tests_generated/test_use_python_pytest-False/.copier-answers.yml
+++ b/tests_generated/test_use_python_pytest-False/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_use_python_pytest-False/.gitignore b/tests_generated/test_use_python_pytest-False/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_use_python_pytest-False/.gitignore
+++ b/tests_generated/test_use_python_pytest-False/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_use_python_pytest-False/README.md b/tests_generated/test_use_python_pytest-False/README.md
index a462ecff..9e172887 100644
--- a/tests_generated/test_use_python_pytest-False/README.md
+++ b/tests_generated/test_use_python_pytest-False/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_use_python_pytest-False/pyproject.toml b/tests_generated/test_use_python_pytest-False/pyproject.toml
index fcf0a27a..6984e54a 100644
--- a/tests_generated/test_use_python_pytest-False/pyproject.toml
+++ b/tests_generated/test_use_python_pytest-False/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]
diff --git a/tests_generated/test_use_python_pytest-True/.copier-answers.yml b/tests_generated/test_use_python_pytest-True/.copier-answers.yml
index e02aa0aa..751966ee 100644
--- a/tests_generated/test_use_python_pytest-True/.copier-answers.yml
+++ b/tests_generated/test_use_python_pytest-True/.copier-answers.yml
@@ -8,6 +8,7 @@ author_email: None
author_name: None
contract_name: hello_world
deployment_language: python
+ide_jetbrains: false
ide_vscode: true
indexer_port: 8980
indexer_server: http://localhost
diff --git a/tests_generated/test_use_python_pytest-True/.gitignore b/tests_generated/test_use_python_pytest-True/.gitignore
index 0dbe8edb..832924c3 100644
--- a/tests_generated/test_use_python_pytest-True/.gitignore
+++ b/tests_generated/test_use_python_pytest-True/.gitignore
@@ -159,8 +159,10 @@ dmypy.json
cython_debug/
# PyCharm
-.idea/
-!.idea/runConfigurations
+.idea
+!.idea/
+.idea/*
+!.idea/runConfigurations/
# macOS
.DS_Store
diff --git a/tests_generated/test_use_python_pytest-True/README.md b/tests_generated/test_use_python_pytest-True/README.md
index 4f64eb0c..b9ba1a73 100644
--- a/tests_generated/test_use_python_pytest-True/README.md
+++ b/tests_generated/test_use_python_pytest-True/README.md
@@ -25,10 +25,10 @@ This project has been generated using AlgoKit. See below for default getting sta
1. Open the command palette (Ctrl/Cmd + Shift + P)
2. Search for `Python: Select Interpreter`
3. Select `./.venv/Scripts/python.exe`
- - IDEA (e.g. PyCharm)
+ - JetBrains IDEs (please note, this setup is primarily optimized for PyCharm Community Edition)
1. Open the repository root in the IDE
2. It should automatically detect it's a Poetry project and set up a Python interpreter and virtual environment.
- 3. Hit Shift+F9 (or whatever you have debug mapped to) and it should start running with breakpoint debugging.
+ 3. Hit Shift+F10|Ctrl+R (or whatever you have debug mapped to) and it should start running with breakpoint debugging. Please note, JetBrains IDEs on Windows have a known bug that in some cases may prevent executing shell scripts as pre-launch tasks, for workarounds refer to [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task).
- Other
1. Open the repository root in your text editor of choice
2. In a terminal run `poetry shell`
diff --git a/tests_generated/test_use_python_pytest-True/pyproject.toml b/tests_generated/test_use_python_pytest-True/pyproject.toml
index fc486640..fbca8d65 100644
--- a/tests_generated/test_use_python_pytest-True/pyproject.toml
+++ b/tests_generated/test_use_python_pytest-True/pyproject.toml
@@ -7,8 +7,8 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
-beaker-pyteal = "^1.0.0"
-algokit-utils = "^1.3"
+beaker-pyteal = "^1.1.1"
+algokit-utils = "^2.0.1"
python-dotenv = "^1.0.0"
[tool.poetry.group.dev.dependencies]