# applications.app_deployer

## Attributes

| [`APP_DEPLOY_NOTE_DAPP`](https://dev.algorand.co/reference/algokit-utils-py/api/applications/app_deployer/#algokit_utils.applications.app_deployer.APP_DEPLOY_NOTE_DAPP) |  |
| --- | --- |

## Classes

| [`AppDeploymentMetaData`](https://dev.algorand.co/reference/algokit-utils-py/api/applications/app_deployer/#algokit_utils.applications.app_deployer.AppDeploymentMetaData) | Metadata about an application stored in a transaction note during creation. |
| --- | --- |
| [`ApplicationReference`](https://dev.algorand.co/reference/algokit-utils-py/api/applications/app_deployer/#algokit_utils.applications.app_deployer.ApplicationReference) | Information about an Algorand app |
| [`ApplicationMetaData`](https://dev.algorand.co/reference/algokit-utils-py/api/applications/app_deployer/#algokit_utils.applications.app_deployer.ApplicationMetaData) | Complete metadata about a deployed app |
| [`ApplicationLookup`](https://dev.algorand.co/reference/algokit-utils-py/api/applications/app_deployer/#algokit_utils.applications.app_deployer.ApplicationLookup) | Cache of {py:class}`ApplicationMetaData` for a specific creator |
| [`AppDeployParams`](https://dev.algorand.co/reference/algokit-utils-py/api/applications/app_deployer/#algokit_utils.applications.app_deployer.AppDeployParams) | Parameters for deploying an app |
| [`AppDeployResult`](https://dev.algorand.co/reference/algokit-utils-py/api/applications/app_deployer/#algokit_utils.applications.app_deployer.AppDeployResult) | The result of a deployment |
| [`AppDeployer`](https://dev.algorand.co/reference/algokit-utils-py/api/applications/app_deployer/#algokit_utils.applications.app_deployer.AppDeployer) | 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 : algokitutils.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).

**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.

- **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://dev.algorand.co/reference/algokit-utils-py/api/applications/app_deployer/%5Bhttps://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0002.md%5D(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)
    ```
