algorand-python-testing 0.3.0b4__tar.gz → 0.3.0b5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/CHANGELOG.md +18 -0
  2. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/PKG-INFO +1 -1
  3. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/auction/test_contract.py +2 -2
  4. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/marketplace/test_contract.py +3 -3
  5. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/scratch_storage/test_contract.py +1 -1
  6. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/simple_voting/test_contract.py +1 -1
  7. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/zk_whitelist/test_contract.py +2 -2
  8. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/pyproject.toml +1 -1
  9. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/_context_helpers/ledger_context.py +7 -4
  10. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/_context_helpers/txn_context.py +1 -0
  11. algorand_python_testing-0.3.0b5/src/algopy_testing/_mutable.py +65 -0
  12. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/arc4.py +242 -134
  13. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/context.py +0 -11
  14. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/decorators/arc4.py +23 -3
  15. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/enums.py +16 -0
  16. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/models/contract.py +4 -1
  17. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/primitives/uint64.py +0 -3
  18. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/state/box.py +6 -26
  19. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/state/global_state.py +12 -7
  20. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/state/local_state.py +4 -1
  21. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/utils.py +0 -2
  22. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_arc4_method_signature.py +1 -1
  23. algorand_python_testing-0.3.0b5/tests/artifacts/StateMutations/data/Contract.approval.teal +831 -0
  24. algorand_python_testing-0.3.0b5/tests/artifacts/StateMutations/data/Contract.arc32.json +87 -0
  25. algorand_python_testing-0.3.0b5/tests/artifacts/StateMutations/data/Contract.clear.teal +7 -0
  26. algorand_python_testing-0.3.0b5/tests/artifacts/StateMutations/statemutations.py +88 -0
  27. algorand_python_testing-0.3.0b5/tests/state/test_mutations.py +57 -0
  28. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/test_context.py +1 -1
  29. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/test_op.py +6 -6
  30. algorand_python_testing-0.3.0b5/tests/value_generators/__init__.py +0 -0
  31. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.coveragerc +0 -0
  32. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.editorconfig +0 -0
  33. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  34. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  35. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.github/pull_request_template.md +0 -0
  36. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.github/workflows/cd.yaml +0 -0
  37. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.github/workflows/ci.yaml +0 -0
  38. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.github/workflows/gh-pages.yaml +0 -0
  39. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.gitignore +0 -0
  40. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.pre-commit-config.yaml +0 -0
  41. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.vscode/extensions.json +0 -0
  42. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.vscode/launch.json +0 -0
  43. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/.vscode/settings.json +0 -0
  44. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/CONTRIBUTING.md +0 -0
  45. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/LICENSE +0 -0
  46. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/README.md +0 -0
  47. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/docs/Makefile +0 -0
  48. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/docs/_static/custom.css +0 -0
  49. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/docs/conf.py +0 -0
  50. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/docs/coverage.md +0 -0
  51. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/docs/examples.md +0 -0
  52. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/docs/index.md +0 -0
  53. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/docs/make.bat +0 -0
  54. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/docs/usage.md +0 -0
  55. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/README.md +0 -0
  56. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/__init__.py +0 -0
  57. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/auction/__init__.py +0 -0
  58. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/auction/contract.py +0 -0
  59. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/htlc_logicsig/__init__.py +0 -0
  60. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/htlc_logicsig/signature.py +0 -0
  61. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/htlc_logicsig/test_signature.py +0 -0
  62. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/marketplace/__init__.py +0 -0
  63. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/marketplace/contract.py +0 -0
  64. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/proof_of_attendance/__init__.py +0 -0
  65. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/proof_of_attendance/contract.py +0 -0
  66. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/proof_of_attendance/test_contract.py +0 -0
  67. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/scratch_storage/__init__.py +0 -0
  68. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/scratch_storage/contract.py +0 -0
  69. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/simple_voting/__init__.py +0 -0
  70. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/simple_voting/contract.py +0 -0
  71. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/zk_whitelist/__init__.py +0 -0
  72. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/examples/zk_whitelist/contract.py +0 -0
  73. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/scripts/__init__.py +0 -0
  74. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/scripts/check_stubs_cov.py +0 -0
  75. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/scripts/refresh_test_artifacts.py +0 -0
  76. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/scripts/validate_examples.py +0 -0
  77. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy/__init__.py +0 -0
  78. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy/arc4.py +0 -0
  79. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy/gtxn.py +0 -0
  80. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy/itxn.py +0 -0
  81. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy/op.py +0 -0
  82. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy/py.typed +0 -0
  83. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/__init__.py +0 -0
  84. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/_compiled.py +0 -0
  85. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/_context_helpers/__init__.py +0 -0
  86. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/_context_helpers/context_storage.py +0 -0
  87. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/_itxn_loader.py +0 -0
  88. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/_value_generators/__init__.py +0 -0
  89. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/_value_generators/arc4.py +0 -0
  90. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/_value_generators/avm.py +0 -0
  91. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/_value_generators/txn.py +0 -0
  92. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/constants.py +0 -0
  93. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/decorators/__init__.py +0 -0
  94. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/decorators/subroutine.py +0 -0
  95. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/gtxn.py +0 -0
  96. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/itxn.py +0 -0
  97. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/models/__init__.py +0 -0
  98. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/models/account.py +0 -0
  99. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/models/application.py +0 -0
  100. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/models/asset.py +0 -0
  101. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/models/logicsig.py +0 -0
  102. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/models/template_variable.py +0 -0
  103. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/models/txn_fields.py +0 -0
  104. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/models/unsigned_builtins.py +0 -0
  105. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/op/__init__.py +0 -0
  106. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/op/block.py +0 -0
  107. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/op/constants.py +0 -0
  108. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/op/crypto.py +0 -0
  109. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/op/global_values.py +0 -0
  110. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/op/itxn.py +0 -0
  111. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/op/misc.py +0 -0
  112. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/op/pure.py +0 -0
  113. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/op/txn.py +0 -0
  114. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/primitives/__init__.py +0 -0
  115. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/primitives/biguint.py +0 -0
  116. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/primitives/bytes.py +0 -0
  117. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/primitives/string.py +0 -0
  118. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/protocols.py +0 -0
  119. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/py.typed +0 -0
  120. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/state/__init__.py +0 -0
  121. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/state/utils.py +0 -0
  122. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/utilities/__init__.py +0 -0
  123. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/utilities/budget.py +0 -0
  124. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/src/algopy_testing/utilities/log.py +0 -0
  125. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/templates/.macros.j2 +0 -0
  126. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/templates/.release_notes.md.j2 +0 -0
  127. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/templates/CHANGELOG.md.j2 +0 -0
  128. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/__init__.py +0 -0
  129. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/__init__.py +0 -0
  130. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/conftest.py +0 -0
  131. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_abi_call.py +0 -0
  132. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_address.py +0 -0
  133. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_bool.py +0 -0
  134. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_dynamic_array.py +0 -0
  135. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_dynamic_bytes.py +0 -0
  136. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_emit.py +0 -0
  137. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_static_array.py +0 -0
  138. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_string.py +0 -0
  139. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_struct.py +0 -0
  140. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_tuple.py +0 -0
  141. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_ufixednxm.py +0 -0
  142. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/arc4/test_uintn.py +0 -0
  143. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4ABIMethod/__init__.py +0 -0
  144. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4ABIMethod/contract.py +0 -0
  145. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.approval.teal +0 -0
  146. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.arc32.json +0 -0
  147. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.clear.teal +0 -0
  148. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4InnerTxns/__init__.py +0 -0
  149. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4InnerTxns/contract.py +0 -0
  150. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.approval.teal +0 -0
  151. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.arc32.json +0 -0
  152. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.clear.teal +0 -0
  153. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4PrimitiveOps/__init__.py +0 -0
  154. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4PrimitiveOps/contract.py +0 -0
  155. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.approval.teal +0 -0
  156. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc32.json +0 -0
  157. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.clear.teal +0 -0
  158. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/BoxContract/__init__.py +0 -0
  159. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/BoxContract/contract.py +0 -0
  160. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/BoxContract/data/BoxContract.approval.teal +0 -0
  161. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/BoxContract/data/BoxContract.arc32.json +0 -0
  162. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/BoxContract/data/BoxContract.clear.teal +0 -0
  163. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/CryptoOps/__init__.py +0 -0
  164. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/CryptoOps/contract.py +0 -0
  165. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/CryptoOps/data/CryptoOpsContract.approval.teal +0 -0
  166. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/CryptoOps/data/CryptoOpsContract.arc32.json +0 -0
  167. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/CryptoOps/data/CryptoOpsContract.clear.teal +0 -0
  168. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/GlobalStateValidator/__init__.py +0 -0
  169. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/GlobalStateValidator/contract.py +0 -0
  170. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.approval.teal +0 -0
  171. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.arc32.json +0 -0
  172. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.clear.teal +0 -0
  173. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/MiscellaneousOps/__init__.py +0 -0
  174. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/MiscellaneousOps/contract.py +0 -0
  175. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.approval.teal +0 -0
  176. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.arc32.json +0 -0
  177. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.clear.teal +0 -0
  178. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/PrimitiveOps/__init__.py +0 -0
  179. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/PrimitiveOps/contract.py +0 -0
  180. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.approval.teal +0 -0
  181. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.arc32.json +0 -0
  182. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.clear.teal +0 -0
  183. {algorand_python_testing-0.3.0b4/tests/artifacts/StateOps → algorand_python_testing-0.3.0b5/tests/artifacts/StateMutations}/__init__.py +0 -0
  184. {algorand_python_testing-0.3.0b4/tests/artifacts → algorand_python_testing-0.3.0b5/tests/artifacts/StateOps}/__init__.py +0 -0
  185. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/contract.py +0 -0
  186. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/GlobalStateContract.approval.teal +0 -0
  187. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/GlobalStateContract.arc32.json +0 -0
  188. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/GlobalStateContract.clear.teal +0 -0
  189. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/ITxnOpsContract.approval.teal +0 -0
  190. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/ITxnOpsContract.arc32.json +0 -0
  191. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/ITxnOpsContract.clear.teal +0 -0
  192. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/LocalStateContract.approval.teal +0 -0
  193. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/LocalStateContract.arc32.json +0 -0
  194. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/LocalStateContract.clear.teal +0 -0
  195. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAcctParamsGet.approval.teal +0 -0
  196. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAcctParamsGet.arc32.json +0 -0
  197. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAcctParamsGet.clear.teal +0 -0
  198. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.approval.teal +0 -0
  199. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.arc32.json +0 -0
  200. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.clear.teal +0 -0
  201. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppGlobalContract.approval.teal +0 -0
  202. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppGlobalContract.arc32.json +0 -0
  203. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppGlobalContract.clear.teal +0 -0
  204. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppGlobalExContract.approval.teal +0 -0
  205. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppGlobalExContract.arc32.json +0 -0
  206. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppGlobalExContract.clear.teal +0 -0
  207. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppLocalContract.approval.teal +0 -0
  208. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppLocalContract.arc32.json +0 -0
  209. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppLocalContract.clear.teal +0 -0
  210. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppLocalExContract.approval.teal +0 -0
  211. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppLocalExContract.arc32.json +0 -0
  212. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppLocalExContract.clear.teal +0 -0
  213. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppParamsContract.approval.teal +0 -0
  214. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppParamsContract.arc32.json +0 -0
  215. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAppParamsContract.clear.teal +0 -0
  216. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAssetHoldingContract.approval.teal +0 -0
  217. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAssetHoldingContract.arc32.json +0 -0
  218. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAssetHoldingContract.clear.teal +0 -0
  219. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAssetParamsContract.approval.teal +0 -0
  220. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAssetParamsContract.arc32.json +0 -0
  221. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/artifacts/StateOps/data/StateAssetParamsContract.clear.teal +0 -0
  222. {algorand_python_testing-0.3.0b4/tests/contexts → algorand_python_testing-0.3.0b5/tests/artifacts}/__init__.py +0 -0
  223. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/common.py +0 -0
  224. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/conftest.py +0 -0
  225. {algorand_python_testing-0.3.0b4/tests/models → algorand_python_testing-0.3.0b5/tests/contexts}/__init__.py +0 -0
  226. {algorand_python_testing-0.3.0b4/tests/primitives → algorand_python_testing-0.3.0b5/tests/models}/__init__.py +0 -0
  227. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/models/test_asset.py +0 -0
  228. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/models/test_box.py +0 -0
  229. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/models/test_box_map.py +0 -0
  230. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/models/test_box_ref.py +0 -0
  231. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/models/test_uenumerate.py +0 -0
  232. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/models/test_urange.py +0 -0
  233. {algorand_python_testing-0.3.0b4/tests/state → algorand_python_testing-0.3.0b5/tests/primitives}/__init__.py +0 -0
  234. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/primitives/conftest.py +0 -0
  235. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/primitives/test_biguint.py +0 -0
  236. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/primitives/test_bytes.py +0 -0
  237. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/primitives/test_string.py +0 -0
  238. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/primitives/test_uint64.py +0 -0
  239. {algorand_python_testing-0.3.0b4/tests/utilities → algorand_python_testing-0.3.0b5/tests/state}/__init__.py +0 -0
  240. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/state/conftest.py +0 -0
  241. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/state/test_global_state.py +0 -0
  242. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/state/test_local_state.py +0 -0
  243. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/test_miscellaneous_op.py +0 -0
  244. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/util.py +0 -0
  245. {algorand_python_testing-0.3.0b4/tests/value_generators → algorand_python_testing-0.3.0b5/tests/utilities}/__init__.py +0 -0
  246. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/utilities/conftest.py +0 -0
  247. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/utilities/test_log.py +0 -0
  248. {algorand_python_testing-0.3.0b4 → algorand_python_testing-0.3.0b5}/tests/value_generators/test_avm.py +0 -0
@@ -1,4 +1,22 @@
1
1
  # CHANGELOG
2
+ ## v0.3.0-beta.5 (2024-08-21)
3
+
4
+ ### Fix
5
+
6
+ * ensure mutable types (ARC4 tuple, array and structs) have their changes propagated back to container-like types (global/local state, boxes, ARC4 mutable types) (#14) ([`1f1f2ea`](https://github.com/algorandfoundation/algorand-python-testing/commit/1f1f2ea43a2f4f906cbcd5709b8e86b5c1f2bc63))
7
+
8
+ * fix: add default __eq__ implementation for ARC4 types
9
+
10
+ * fix: ensure mutable types (ARC4 tuple, array and structs) have their changes propagated back to container-like types (global/local state, boxes, ARC4 mutable types)
11
+
12
+ * feat: add __str__ and __repr__ implementations for ARC4 types
13
+
14
+ * refactor: make ARC4 type_info private
15
+
16
+ * refactor: make ARC4 struct inherit _ABIEncoded
17
+
18
+ * refactor: removing get_app_for_contract; expanding get_app; parsing on_complete
19
+
2
20
  ## v0.3.0-beta.4 (2024-08-21)
3
21
 
4
22
  ### Feature
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: algorand-python-testing
3
- Version: 0.3.0b4
3
+ Version: 0.3.0b5
4
4
  Summary: Algorand Python testing library
5
5
  Project-URL: Documentation, https://github.com/algorandfoundation/puya/tree/main/algopy_testing#README.md
6
6
  Project-URL: Issues, https://github.com/algorandfoundation/puya/issues
@@ -26,7 +26,7 @@ def test_opt_into_asset(context: AlgopyTestContext) -> None:
26
26
  assert contract.asa.id == asset.id
27
27
  inner_txn = context.txn.last_group.last_itxn.asset_transfer
28
28
  assert (
29
- inner_txn.asset_receiver == context.get_app_for_contract(contract).address
29
+ inner_txn.asset_receiver == context.ledger.get_app(contract).address
30
30
  ), "Asset receiver does not match"
31
31
  assert inner_txn.xfer_asset == asset, "Transferred asset does not match"
32
32
 
@@ -36,7 +36,7 @@ def test_start_auction(
36
36
  ) -> None:
37
37
  # Arrange
38
38
  contract = AuctionContract()
39
- app = context.get_app_for_contract(contract)
39
+ app = context.ledger.get_app(contract)
40
40
  latest_timestamp = context.any.uint64(1, 1000)
41
41
  starting_price = context.any.uint64()
42
42
  auction_duration = context.any.uint64(100, 1000)
@@ -41,7 +41,7 @@ def test_first_deposit(
41
41
  test_nonce: arc4.UInt64,
42
42
  ) -> None:
43
43
  # Arrange
44
- test_app = context.get_app_for_contract(contract)
44
+ test_app = context.ledger.get_app(contract)
45
45
 
46
46
  # Act
47
47
  contract.first_deposit(
@@ -74,7 +74,7 @@ def test_deposit(
74
74
  test_nonce: arc4.UInt64,
75
75
  ) -> None:
76
76
  # Arrange
77
- test_app = context.get_app_for_contract(contract)
77
+ test_app = context.ledger.get_app(contract)
78
78
  listing_key = ListingKey(
79
79
  owner=arc4.Address(str(context.default_sender)),
80
80
  asset=arc4.UInt64(test_asset.id),
@@ -225,7 +225,7 @@ def test_bid(
225
225
  test_nonce: arc4.UInt64,
226
226
  ) -> None:
227
227
  # Arrange
228
- app = context.get_app_for_contract(contract)
228
+ app = context.ledger.get_app(contract)
229
229
  owner = arc4.Address(str(context.default_sender))
230
230
  initial_price = context.any.arc4.uint64(max_value=int(10e6))
231
231
  initial_deposit = context.any.arc4.uint64(max_value=int(1e6))
@@ -35,7 +35,7 @@ def test_simple_contract(context: AlgopyTestContext) -> None:
35
35
  with context.txn.create_group(
36
36
  gtxns=[
37
37
  context.any.txn.application_call(
38
- app_id=context.get_app_for_contract(contract), scratch_space=[0, 5, b"Hello World"]
38
+ app_id=context.ledger.get_app(contract), scratch_space=[0, 5, b"Hello World"]
39
39
  )
40
40
  ]
41
41
  ):
@@ -36,7 +36,7 @@ def test_vote(context: AlgopyTestContext) -> None:
36
36
  gtxns=[
37
37
  context.any.txn.application_call(
38
38
  sender=voter,
39
- app_id=context.get_app_for_contract(contract),
39
+ app_id=context.ledger.get_app(contract),
40
40
  app_args=[algopy.Bytes(b"vote"), voter.bytes],
41
41
  ),
42
42
  context.any.txn.payment(
@@ -71,7 +71,7 @@ def test_add_address_to_whitelist_invalid_proof(
71
71
  @pytest.mark.usefixtures("context")
72
72
  def test_is_on_whitelist(context: AlgopyTestContext, contract: ZkWhitelistContract) -> None:
73
73
  # Arrange
74
- dummy_account = context.any.account(opted_apps=[context.get_app_for_contract(contract)])
74
+ dummy_account = context.any.account(opted_apps=[context.ledger.get_app(contract)])
75
75
  contract.whitelist[dummy_account] = True
76
76
 
77
77
  # Act
@@ -84,7 +84,7 @@ def test_is_on_whitelist(context: AlgopyTestContext, contract: ZkWhitelistContra
84
84
  @pytest.mark.usefixtures("context")
85
85
  def test_is_not_on_whitelist(context: AlgopyTestContext, contract: ZkWhitelistContract) -> None:
86
86
  # Arrange
87
- dummy_account = context.any.account(opted_apps=[context.get_app_for_contract(contract)])
87
+ dummy_account = context.any.account(opted_apps=[context.ledger.get_app(contract)])
88
88
  contract.whitelist[dummy_account] = False
89
89
 
90
90
  # Act
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "algorand-python-testing"
7
- version = "0.3.0-beta.4"
7
+ version = "0.3.0-beta.5"
8
8
  description = 'Algorand Python testing library'
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -138,18 +138,21 @@ class LedgerContext:
138
138
  raise ValueError("Asset not found in testing context!")
139
139
  self.asset_data[asset_id].update(asset_fields)
140
140
 
141
- def get_app(self, app: algopy.UInt64 | int) -> algopy.Application:
142
- """Get an application by ID.
141
+ def get_app(
142
+ self, app_id: algopy.Contract | algopy.Application | algopy.UInt64 | int
143
+ ) -> algopy.Application:
144
+ """Get an application by ID, contract or app reference.
143
145
 
144
146
  Args:
145
- app (algopy.UInt64 | int): The application ID.
147
+ app_id (algopy.Contract | algopy.UInt64 | int): The application ID. If not provided as
148
+ int, auto extracts id from contract or app reference.
146
149
 
147
150
  Returns:
148
151
  algopy.Application: The application object.
149
152
  """
150
153
  import algopy
151
154
 
152
- app_data = self._get_app_data(app)
155
+ app_data = self._get_app_data(app_id)
153
156
  return algopy.Application(app_data.app_id)
154
157
 
155
158
  def app_exists(self, app: algopy.UInt64 | int) -> bool:
@@ -118,6 +118,7 @@ class TransactionContext:
118
118
  app_id=app_id,
119
119
  arc4_signature=arc4_metadata.arc4_signature,
120
120
  args=ordered_args,
121
+ allow_actions=arc4_metadata.allow_actions or [OnCompleteAction.NoOp],
121
122
  )
122
123
  # Handle bare methods
123
124
  else:
@@ -0,0 +1,65 @@
1
+ from __future__ import annotations
2
+
3
+ import copy
4
+ import typing
5
+
6
+ if typing.TYPE_CHECKING:
7
+ from collections.abc import Callable
8
+
9
+ TKey = typing.TypeVar("TKey")
10
+ TItem = typing.TypeVar("TItem")
11
+
12
+
13
+ class MutableBytes:
14
+ """Helper class to ensure mutable algopy types (currently ARC4 array, tuple and
15
+ structs) cascade their changes to parent container types (global/local state, boxes,
16
+ ARC4 array, tuple and structs)"""
17
+
18
+ def __init__(self) -> None:
19
+ # callback to call once when _value is modified
20
+ self._on_mutate: Callable[[typing.Any], None] | None = None
21
+
22
+ @property
23
+ def _value(self) -> bytes:
24
+ return self.__value
25
+
26
+ @_value.setter
27
+ def _value(self, value: bytes) -> None:
28
+ self.__value = value
29
+ if self._on_mutate:
30
+ self._on_mutate(self)
31
+ self._on_mutate = None
32
+
33
+ def copy(self) -> typing.Self:
34
+ # when copying a value discard the _on_mutate callback
35
+ clone = copy.deepcopy(self)
36
+ clone._on_mutate = None
37
+ return clone
38
+
39
+
40
+ def set_item_on_mutate(container: object, index: object, value: TItem) -> TItem:
41
+ """Used to update a container-like type when an item is modified."""
42
+
43
+ def callback(new_value: TItem) -> None:
44
+ container[index] = new_value # type: ignore[index]
45
+
46
+ return add_mutable_callback(callback, value)
47
+
48
+
49
+ def set_attr_on_mutate(parent: object, name: str, value: TItem) -> TItem:
50
+ """Used to update an object-like type when an attr is modified."""
51
+
52
+ def callback(new_value: TItem) -> None:
53
+ setattr(parent, name, new_value)
54
+
55
+ return add_mutable_callback(callback, value)
56
+
57
+
58
+ def add_mutable_callback(on_mutate: Callable[[typing.Any], None], value: TItem) -> TItem:
59
+ """Add on_mutate callback to value, if value is mutable.
60
+
61
+ Returns value to simplify usage
62
+ """
63
+ if isinstance(value, MutableBytes):
64
+ value._on_mutate = on_mutate
65
+ return value