algokit_utils.applications.app_deployer¶
Attributes¶
Classes¶
Metadata about an application stored in a transaction note during creation. |
|
Information about an Algorand app |
|
Complete metadata about a deployed app |
|
Cache of {py:class}`ApplicationMetaData` for a specific creator |
|
Parameters for deploying an app |
|
The result of a deployment |
|
Manages deployment and deployment metadata of applications |
Module Contents¶
- algokit_utils.applications.app_deployer.APP_DEPLOY_NOTE_DAPP: str = 'ALGOKIT_DEPLOYER'¶
- class algokit_utils.applications.app_deployer.AppDeploymentMetaData¶
Metadata about an application stored in a transaction note during creation.
- name: str¶
- version: str¶
- deletable: bool | None¶
- updatable: bool | None¶
- dictify() dict[str, str | bool] ¶
- class algokit_utils.applications.app_deployer.ApplicationReference¶
Information about an Algorand app
- app_id: int¶
- app_address: str¶
- class algokit_utils.applications.app_deployer.ApplicationMetaData¶
Complete metadata about a deployed app
- reference: ApplicationReference¶
- deploy_metadata: AppDeploymentMetaData¶
- created_round: int¶
- updated_round: int¶
- deleted: bool = False¶
- property app_id: int¶
- property app_address: str¶
- property name: str¶
- property version: str¶
- property deletable: bool | None¶
- property updatable: bool | None¶
- class algokit_utils.applications.app_deployer.ApplicationLookup¶
Cache of {py:class}`ApplicationMetaData` for a specific creator
Can be used as an argument to {py:class}`ApplicationClient` to reduce the number of calls when deploying multiple apps or discovering multiple app_ids
- creator: str¶
- apps: dict[str, ApplicationMetaData]¶
- class algokit_utils.applications.app_deployer.AppDeployParams¶
Parameters for deploying an app
- metadata: AppDeploymentMetaData¶
The deployment metadata
- deploy_time_params: algokit_utils.models.state.TealTemplateParams | None = None¶
Optional template parameters to use during compilation
- on_schema_break: Literal['replace', 'fail', 'append'] | algokit_utils.applications.enums.OnSchemaBreak | None = None¶
Optional on schema break action
- on_update: Literal['update', 'replace', 'fail', 'append'] | algokit_utils.applications.enums.OnUpdate | None = None¶
Optional on update action
- create_params: algokit_utils.transactions.transaction_composer.AppCreateParams | algokit_utils.transactions.transaction_composer.AppCreateMethodCallParams¶
The creation parameters
- update_params: algokit_utils.transactions.transaction_composer.AppUpdateParams | algokit_utils.transactions.transaction_composer.AppUpdateMethodCallParams¶
The update parameters
- delete_params: algokit_utils.transactions.transaction_composer.AppDeleteParams | algokit_utils.transactions.transaction_composer.AppDeleteMethodCallParams¶
The deletion parameters
- existing_deployments: ApplicationLookup | None = None¶
Optional existing deployments
- ignore_cache: bool = False¶
Whether to ignore the cache
- max_fee: int | None = None¶
Optional maximum fee
- send_params: algokit_utils.models.transaction.SendParams | None = None¶
Optional send parameters
- class algokit_utils.applications.app_deployer.AppDeployResult¶
The result of a deployment
- app: ApplicationMetaData¶
The application metadata
- operation_performed: algokit_utils.applications.enums.OperationPerformed¶
The operation performed
- create_result: algokit_utils.transactions.transaction_sender.SendAppCreateTransactionResult[algokit_utils.applications.abi.ABIReturn] | None = None¶
The create result
- update_result: algokit_utils.transactions.transaction_sender.SendAppUpdateTransactionResult[algokit_utils.applications.abi.ABIReturn] | None = None¶
The update result
- delete_result: algokit_utils.transactions.transaction_sender.SendAppTransactionResult[algokit_utils.applications.abi.ABIReturn] | None = None¶
The delete result
- class algokit_utils.applications.app_deployer.AppDeployer(app_manager: algokit_utils.applications.app_manager.AppManager, transaction_sender: algokit_utils.transactions.transaction_sender.AlgorandClientTransactionSender, indexer: algosdk.v2client.indexer.IndexerClient | None = None)¶
Manages deployment and deployment metadata of applications
- Parameters:
app_manager – The app manager to use
transaction_sender – The transaction sender to use
indexer – The indexer to use
- Example:
>>> deployer = AppDeployer(app_manager, transaction_sender, indexer)
- deploy(deployment: AppDeployParams) AppDeployResult ¶
Idempotently deploy (create if not exists, update if changed) an app against the given name for the given creator account, including deploy-time TEAL template placeholder substitutions (if specified).
To understand the architecture decisions behind this functionality please see https://github.com/algorandfoundation/algokit-cli/blob/main/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md
Note: When using the return from this function be sure to check operation_performed to get access to return properties like transaction, confirmation and delete_result.
Note: if there is a breaking state schema change to an existing app (and on_schema_break is set to ‘replace’) the existing app will be deleted and re-created.
Note: if there is an update (different TEAL code) to an existing app (and on_update is set to ‘replace’) the existing app will be deleted and re-created.
- Parameters:
deployment – The arguments to control the app deployment
- Returns:
The result of the deployment
- Raises:
ValueError – If the app spec format is invalid
- Example:
>>> deployer.deploy(AppDeployParams( ... create_params=AppCreateParams( ... sender='SENDER_ADDRESS', ... approval_program='APPROVAL PROGRAM', ... clear_state_program='CLEAR PROGRAM', ... schema={ ... 'global_byte_slices': 0, ... 'global_ints': 0, ... 'local_byte_slices': 0, ... 'local_ints': 0 ... } ... ), ... update_params=AppUpdateParams( ... sender='SENDER_ADDRESS' ... ), ... delete_params=AppDeleteParams( ... sender='SENDER_ADDRESS' ... ), ... metadata=AppDeploymentMetaData( ... name='my_app', ... version='2.0', ... updatable=False, ... deletable=False ... ), ... on_schema_break=OnSchemaBreak.AppendApp, ... on_update=OnUpdate.AppendApp ... ) ... )
- get_creator_apps_by_name(*, creator_address: str, ignore_cache: bool = False) ApplicationLookup ¶
Returns a lookup of name => app metadata (id, address, …metadata) for all apps created by the given account that have an [ARC-2](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0002.md) AppDeployNote as the transaction note of the app creation transaction.
This function caches the result for the given creator account so that subsequent calls won’t require an indexer lookup.
If the AppManager instance wasn’t created with an indexer client, this function will throw an error.
- Parameters:
creator_address – The address of the account that is the creator of the apps you want to search for
ignore_cache – Whether or not to ignore the cache and force a lookup, default: use the cache
- Returns:
A name-based lookup of the app metadata
- Raises:
ValueError – If the app spec format is invalid
- Example:
>>> result = await deployer.get_creator_apps_by_name(creator)