Skip to content

AlgoPytest 2.0.0

Latest
Compare
Choose a tag to compare
@DamianB-BitFlipper DamianB-BitFlipper released this 04 Feb 22:55
5cf7a80

[2.0.0] - 2023-02-04

New Features

  • Function application_local_state to read the local state of an account relating to a deployed application
  • Function group_transaction to send group transactions
  • Removed ProgramStore class and replaced it with deploy_smart_contract which the user would call directly in a user-defined fixture to retrieve the smart contract app ID for testing
  • Implemented support for group transactions to hold both Transaction and LogicSigTransaction
  • Support ASA operations with the following transaction operations create_asset, destroy_asset, update_asset, freeze_asset, transfer_asset, opt_in_asset and close_out_asset.
  • Implemented asset related utility functions asset_balance and asset_info.
  • Support multi-signature transaction with the multisig_transaction transaction operation.
  • Implemented a SmartContractAccount entity to hold the address of a smart contract as an AlgoUser.
  • Utilize the KMD to access account private keys of the sandbox.
  • AlgoPytest user entities implement a name field for a more human-friendly debugging and logging experience
  • Implemented a TxnElemsContext context manager which alters all transaction operations to return an unsent transaction object rather than send the transaction.
  • Implemented a TxnIDContext context manager which alters all transaction operations to return the txn_id associated with the sent transaction.
  • Functions create_app and create_compiled_app are int sub-classed context managers that may be used in a with clause or cleaned up manually with delete_app.
  • Function create_asset returns an int sub-classed context manager that can handle clean up within a with clause.

Bug Fixes

  • Removed typing subscripts to be compatible with Python 3.8
  • The application_local_state no longer fails when attempting to read a deleted local field.

Other Changes

  • Inputs which accept PyTEAL directly take the pyteal.Expr and not a function which generates a pyteal.Expr
  • Renamed the group_elem function to a more generic txn_name since this function applies also to smart signatures and multi-signature transactions, not solely group transactions.
  • All transaction operations take all possible parameters, even the less commonly used ones.
  • The AlgoPytest API accepts AlgoUser as a user input anywhere whenever an address is requested.
  • Sped up the AlgoPytest test suite runtime by caching the _initial_funds_account.
  • Altered arguments of smart_signature_transaction to accept transaction tuple
  • Replaced simply print with a proper logging.logger in the transaction_boilerplate decorator.
  • Migrated code to support py-algorand-sdk v2.0.0

Documentation Changes

  • Completed the docstrings for every exported function and class.
  • Introduced the type alias SignerTxnPairT to make the output of transaction operations less confusing.
  • Divided the API documentation into subsections for easier referencing.
  • Expanded list of demo projects in the demos.rst documentation page.
  • Replaced mdash html code in README.md with UTF8 mdash so that sphinx displays it correctly
  • Organize subsection in documentation linking to key Pytest topics essential to AlgoPytest.
  • Removed non-working search and index links at the bottom of the sphinx index page.