algokit_utils.applications.app_deployer
algokit_utils.applications.app_deployer
Section titled “algokit_utils.applications.app_deployer”Attributes
Section titled “Attributes”APP_DEPLOY_NOTE_DAPP |
|---|
Classes
Section titled “Classes”AppDeploymentMetaData | Metadata about an application stored in a transaction note during creation. |
|---|---|
ApplicationReference | Information about an Algorand app |
ApplicationMetaData | Complete metadata about a deployed app |
ApplicationLookup | Cache of {py:class}`ApplicationMetaData` for a specific creator |
AppDeployParams | Parameters for deploying an app |
AppDeployResult | The result of a deployment |
AppDeployer | Manages deployment and deployment metadata of applications |
Module Contents
Section titled “Module Contents”APP_DEPLOY_NOTE_DAPP : str = ‘ALGOKIT_DEPLOYER’
Section titled “APP_DEPLOY_NOTE_DAPP : str = ‘ALGOKIT_DEPLOYER’”class AppDeploymentMetaData
Section titled “class AppDeploymentMetaData”Metadata about an application stored in a transaction note during creation.
name : str
Section titled “name : str”version : str
Section titled “version : str”deletable : bool | None
Section titled “deletable : bool | None”updatable : bool | None
Section titled “updatable : bool | None”dictify() → dict[str, str | bool]
Section titled “dictify() → dict[str, str | bool]”class ApplicationReference
Section titled “class ApplicationReference”Information about an Algorand app
app_id : int
Section titled “app_id : int”app_address : str
Section titled “app_address : str”class ApplicationMetaData
Section titled “class ApplicationMetaData”Complete metadata about a deployed app
created_round : int
Section titled “created_round : int”updated_round : int
Section titled “updated_round : int”deleted : bool = False
Section titled “deleted : bool = False”property app_id : int
Section titled “property app_id : int”property app_address : str
Section titled “property app_address : str”property name : str
Section titled “property name : str”property version : str
Section titled “property version : str”property deletable : bool | None
Section titled “property deletable : bool | None”property updatable : bool | None
Section titled “property updatable : bool | None”class ApplicationLookup
Section titled “class ApplicationLookup”Cache of {py:class}`ApplicationMetaData` for a specific creator
Can be used as an argument to {py:class}`AppClient` to reduce the number of calls when deploying multiple apps or discovering multiple app_ids
creator : str
Section titled “creator : str”class AppDeployParams
Section titled “class AppDeployParams”Parameters for deploying an app
The deployment metadata
deploy_time_params : TealTemplateParams | None = None
Section titled “deploy_time_params : TealTemplateParams | None = None”Optional template parameters to use during compilation
on_schema_break : Literal[‘replace’, ‘fail’, ‘append’] | OnSchemaBreak | None = None
Section titled “on_schema_break : Literal[‘replace’, ‘fail’, ‘append’] | OnSchemaBreak | None = None”Optional on schema break action
on_update : Literal[‘update’, ‘replace’, ‘fail’, ‘append’] | OnUpdate | None = None
Section titled “on_update : Literal[‘update’, ‘replace’, ‘fail’, ‘append’] | OnUpdate | None = None”Optional on update action
create_params : AppCreateParams | AppCreateMethodCallParams
Section titled “create_params : AppCreateParams | AppCreateMethodCallParams”The creation parameters
update_params : AppUpdateParams | AppUpdateMethodCallParams
Section titled “update_params : AppUpdateParams | AppUpdateMethodCallParams”The update parameters
delete_params : AppDeleteParams | AppDeleteMethodCallParams
Section titled “delete_params : AppDeleteParams | AppDeleteMethodCallParams”The deletion parameters
existing_deployments : ApplicationLookup | None = None
Section titled “existing_deployments : ApplicationLookup | None = None”Optional existing deployments
ignore_cache : bool = False
Section titled “ignore_cache : bool = False”Whether to ignore the cache
max_fee : int | None = None
Section titled “max_fee : int | None = None”Optional maximum fee
send_params : SendParams | None = None
Section titled “send_params : SendParams | None = None”Optional send parameters
class AppDeployResult
Section titled “class AppDeployResult”The result of a deployment
The application metadata
operation_performed : OperationPerformed
Section titled “operation_performed : OperationPerformed”The operation performed
create_result : SendAppCreateTransactionResult[ABIReturn] | None = None
Section titled “create_result : SendAppCreateTransactionResult[ABIReturn] | None = None”The create result
update_result : SendAppUpdateTransactionResult[ABIReturn] | None = None
Section titled “update_result : SendAppUpdateTransactionResult[ABIReturn] | None = None”The update result
delete_result : SendAppTransactionResult[ABIReturn] | None = None
Section titled “delete_result : SendAppTransactionResult[ABIReturn] | None = None”The delete result
class AppDeployer(app_manager: AppManager, transaction_sender: AlgorandClientTransactionSender, indexer: IndexerClient | None = None)
Section titled “class AppDeployer(app_manager: AppManager, transaction_sender: AlgorandClientTransactionSender, 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
Section titled “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
Section titled “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 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)