applications.app_factory | Algorand Developer Portal

applications.app_factory

Classes

AppFactoryParams
AppFactoryCreateParams Parameters for creating application with bare call.
AppFactoryCreateMethodCallParams Parameters for creating application with method call
AppFactoryCreateMethodCallResult Base class for transaction results.
SendAppFactoryTransactionResult Result of an application transaction.
SendAppUpdateFactoryTransactionResult Result of updating an application.
SendAppCreateFactoryTransactionResult Result of creating a new application.
AppFactoryDeployResult Result from deploying an application via AppFactory
AppFactory ARC-56/ARC-32 app factory that, for a given app spec, allows you to create

Module Contents

class algokit_utils.applications.app_factory.AppFactoryParams

algorand : algokit_utils.algorand.AlgorandClient

app _spec : algokit_utils.applications.app_spec.arc56.Arc56Contract | algokitutils.legacy_v2.application_specification.ApplicationSpecification | str

appname: str | None = None

defaultsender: str | None = None

default _signer : algosdk.atomictransaction_composer.TransactionSigner | None = None

version _: str | None = None

compilationparams: algokit_utils.applications.app_client.AppClientCompilationParams | None = None

class algokit_utils.applications.app_factory.AppFactoryCreateParams

Bases: algokit_utils.applications.app_client.AppClientBareCallCreateParams

Parameters for creating application with bare call.

on _complete : algokitutils.applications.app_client.CreateOnComplete | None = None

Optional on complete action

class algokit_utils.applications.app_factory.AppFactoryCreateMethodCallParams

Bases: algokit_utils.applications.app_client.AppClientMethodCallCreateParams

Parameters for creating application with method call

class algokit_utils.applications.app_factory.AppFactoryCreateMethodCallResult

Bases: algokit_utils.transactions.transaction_sender.SendSingleTransactionResult, GenericABIReturnT

Base class for transaction results.

Represents the result of sending a single transaction.

appid: int_

appaddress: str_

compiledapproval: Any | None = None

compiledclear: Any | None = None

abireturn: ABIReturnT | None = None

class algokit_utils.applications.app_factory.SendAppFactoryTransactionResult

Bases: algokit_utils.transactions.transaction_sender.SendAppTransactionResult [ algokit_utils.applications.abi.Arc56ReturnValueType

Result of an application transaction.

Contains the ABI return value if applicable.

class algokit_utils.applications.app_factory.SendAppUpdateFactoryTransactionResult

Bases: algokit_utils.transactions.transaction_sender.SendAppUpdateTransactionResult [ algokit_utils.applications.abi.Arc56ReturnValueType

Result of updating an application.

Contains the compiled approval and clear programs.

class algokit_utils.applications.app_factory.SendAppCreateFactoryTransactionResult

Bases: algokit_utils.transactions.transaction_sender.SendAppCreateTransactionResult [ algokit_utils.applications.abi.Arc56ReturnValueType

Result of creating a new application.

Contains the app ID and address of the newly created application.

class algokit_utils.applications.app_factory.AppFactoryDeployResult

Result from deploying an application via AppFactory

app : algokit_utils.applications.app_deployer.ApplicationMetaData

The application metadata

operation_performed: algokitutils.applications.app_deployer.OperationPerformed_

The operation performed

createresult: SendAppCreateFactoryTransactionResult | None = None

The create result

updateresult: SendAppUpdateFactoryTransactionResult | None = None

The update result

deleteresult: SendAppFactoryTransactionResult | None = None

The delete result

classmethod from_deploy_result(response: algokit_utils.applications.app_deployer.AppDeployResult, deploy_params: algokit_utils.applications.app_deployer.AppDeployParams, app_spec: algokit_utils.applications.app_spec.arc56.Arc56Contract, app_compilation_data: algokit_utils.applications.app_client.AppClientCompilationResult | None = None) \u2192 typing_extensions.Self

Construct an AppFactoryDeployResult from a deployment result.

class algokit_utils.applications.app_factory.AppFactory(params: AppFactoryParams)

ARC-56/ARC-32 app factory that, for a given app spec, allows you to create and deploy one or more app instances and to create one or more app clients to interact with those (or other) app instances.

factory = AppFactory(AppFactoryParams(

algorand=AlgorandClient.mainnet(),

app_spec=app_spec,

)
)

property appname: str_

The name of the app

property appspec: algokit_utils.applications.app_spec.arc56.Arc56Contract_

The app spec

property algorand _: algokit_utils.algorand.AlgorandClient

The algorand client

property params _: MethodParamsBuilder

Get parameters to create transactions (create and deploy related calls) for the current app.

A good mental model for this is that these parameters represent a deferred transaction creation.

Create a transaction in the future using Algorand Client

create_app_params = app_factory.params.create(

AppFactoryCreateMethodCallParams(

method=’create_method’,

args=[123, ‘hello’]

)
)

# …

algorand.send.app_create_method_call(create_app_params)
Define a nested transaction as an ABI argument

create_app_params = appFactory.params.create(

AppFactoryCreateMethodCallParams(

method=’create_method’,

args=[123, ‘hello’]

)
)

app_client.send.call(

AppClientMethodCallParams(

method=’my_method’,

args=[create_app_params]

)
)

property send _: TransactionSender

Get the transaction sender.

property createtransaction: TransactionCreator

Get the transaction creator.

deploy(*, on_update: algokit_utils.applications.app_deployer.OnUpdate | None = None, on_schema_break: algokit_utils.applications.app_deployer.OnSchemaBreak | None = None, create_params: algokit_utils.applications.app_client.AppClientMethodCallCreateParams | algokit_utils.applications.app_client.AppClientBareCallCreateParams | None = None, update_params: algokit_utils.applications.app_client.AppClientMethodCallParams | algokit_utils.applications.app_client.AppClientBareCallParams | None = None, delete_params: algokit_utils.applications.app_client.AppClientMethodCallParams | algokit_utils.applications.app_client.AppClientBareCallParams | None = None, existing_deployments: algokit_utils.applications.app_deployer.ApplicationLookup | None = None, ignore_cache: bool = False, app_name: str | None = None, send_params: algokit_utils.models.transaction.SendParams | None = None, compilation_params: algokit_utils.applications.app_client.AppClientCompilationParams | None = None) \u2192 tuple[ algokit_utils.applications.app_client.AppClient, AppFactoryDeployResult]

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 operationPerformed to get access to various return properties like transaction, confirmation and deleteResult.

Note: if there is a breaking state schema change to an existing app (and onSchemaBreak 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 onUpdate is set to ‘replace’) the existing app will be deleted and re-created.

app_client, result = factory.deploy({

create_params=AppClientMethodCallCreateParams(

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=AppClientMethodCallParams(

sender='SENDER_ADDRESS'

),

delete_params=AppClientMethodCallParams(

sender='SENDER_ADDRESS'

),

compilation_params=AppClientCompilationParams(

updatable=False,

deletable=False

),

app_name='my_app',

on_schema_break=OnSchemaBreak.AppendApp,

on_update=OnUpdate.AppendApp

})

get_app_client_by_id(app_id: int, app_name: str | None = None, default_sender: str | None = None, default_signer: algosdk.atomic_transaction_composer.TransactionSigner | None = None, approval_source_map: algosdk.source_map.SourceMap | None = None, clear_source_map: algosdk.source_map.SourceMap | None = None) → algokit_utils.applications.app_client.AppClient

Returns a new AppClient client for an app instance of the given ID.

app_client = factory.get_app_client_by_id(app_id=123)

get_app_client_by_creator_and_name(creator_address: str, app_name: str, default_sender: str | None = None, default_signer: algosdk.atomic_transaction_composer.TransactionSigner | None = None, ignore_cache: bool | None = None, app_lookup_cache: algokit_utils.applications.app_deployer.ApplicationLookup | None = None, approval_source_map: algosdk.source_map.SourceMap | None = None, clear_source_map: algosdk.source_map.SourceMap | None = None) → algokit_utils.applications.app_client.AppClient

Returns a new AppClient client, resolving the app by creator address and name using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).

app_client = factory.get_app_client_by_creator_and_name(

creator_address='SENDER_ADDRESS',

app_name='my_app'

)

export_source_maps() → algokit_utils.models.application.AppSourceMaps

import_source_maps(source_maps: algokit_utils.models.application.AppSourceMaps) → None

Import the provided source maps into the factory.

compile(compilation_params: algokit_utils.applications.app_client.AppClientCompilationParams | None = None) → algokit_utils.applications.app_client.AppClientCompilationResult

Compile the app’s TEAL code.

compilation_result = factory.compile()