algorand-python-testing 0.6.0b2__tar.gz → 1.0.0b1__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 (339) hide show
  1. algorand_python_testing-1.0.0b1/.github/workflows/ci.yaml +77 -0
  2. algorand_python_testing-1.0.0b1/CHANGELOG.md +258 -0
  3. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/PKG-INFO +2 -1
  4. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/pyproject.toml +25 -5
  5. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/arc4.py +22 -1
  6. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/models/contract.py +2 -2
  7. algorand_python_testing-1.0.0b1/src/_algopy_testing/serialize.py +151 -0
  8. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/state/box.py +3 -3
  9. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/state/global_state.py +6 -7
  10. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/state/local_state.py +3 -3
  11. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/state/utils.py +10 -2
  12. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_tuple.py +15 -0
  13. algorand_python_testing-1.0.0b1/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.arc56.json +420 -0
  14. algorand_python_testing-1.0.0b1/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.arc56.json +107 -0
  15. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.approval.teal +9 -21
  16. algorand_python_testing-1.0.0b1/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc32.json +1029 -0
  17. algorand_python_testing-1.0.0b1/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc56.json +1586 -0
  18. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/data/Contract.approval.teal +12 -17
  19. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/data/Contract.arc32.json +1 -1
  20. algorand_python_testing-1.0.0b1/tests/artifacts/Arrays/data/Contract.arc56.json +347 -0
  21. algorand_python_testing-1.0.0b1/tests/artifacts/Arrays/data/ImmutableArrayContract.arc56.json +718 -0
  22. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/data/StaticSizeContract.approval.teal +16 -23
  23. algorand_python_testing-1.0.0b1/tests/artifacts/Arrays/data/StaticSizeContract.arc32.json +162 -0
  24. algorand_python_testing-1.0.0b1/tests/artifacts/Arrays/data/StaticSizeContract.arc56.json +274 -0
  25. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/BoxContract/data/BoxContract.approval.teal +4 -12
  26. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/BoxContract/data/BoxContract.arc32.json +1 -1
  27. algorand_python_testing-1.0.0b1/tests/artifacts/BoxContract/data/BoxContract.arc56.json +145 -0
  28. algorand_python_testing-1.0.0b1/tests/artifacts/CreatedAppAsset/data/AppCall.arc56.json +102 -0
  29. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.approval.teal +1 -1
  30. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.arc32.json +1 -1
  31. algorand_python_testing-1.0.0b1/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.arc56.json +189 -0
  32. algorand_python_testing-1.0.0b1/tests/artifacts/CryptoOps/data/CryptoOpsContract.arc56.json +480 -0
  33. algorand_python_testing-1.0.0b1/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.arc56.json +117 -0
  34. algorand_python_testing-1.0.0b1/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.arc56.json +1090 -0
  35. algorand_python_testing-1.0.0b1/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.arc56.json +1740 -0
  36. algorand_python_testing-1.0.0b1/tests/artifacts/StateMutations/data/StateMutations.arc56.json +264 -0
  37. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/contract.py +15 -1
  38. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/GlobalStateContract.approval.teal +320 -175
  39. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/GlobalStateContract.arc32.json +563 -0
  40. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/GlobalStateContract.arc56.json +865 -0
  41. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/ITxnOpsContract.approval.teal +21 -21
  42. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/ITxnOpsContract.arc32.json +1 -1
  43. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/ITxnOpsContract.arc56.json +102 -0
  44. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/LocalStateContract.approval.teal +261 -176
  45. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/LocalStateContract.arc32.json +381 -0
  46. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/LocalStateContract.arc56.json +618 -0
  47. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.approval.teal +12 -8
  48. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.arc32.json +1 -1
  49. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/StateAcctParamsGetContract.arc56.json +512 -0
  50. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppGlobalContract.approval.teal +40 -40
  51. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppGlobalContract.arc32.json +1 -1
  52. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/StateAppGlobalContract.arc56.json +272 -0
  53. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppGlobalExContract.approval.teal +13 -13
  54. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppGlobalExContract.arc32.json +1 -1
  55. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/StateAppGlobalExContract.arc56.json +104 -0
  56. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppLocalContract.approval.teal +51 -51
  57. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppLocalContract.arc32.json +1 -1
  58. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/StateAppLocalContract.arc56.json +350 -0
  59. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppLocalExContract.approval.teal +8 -8
  60. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppLocalExContract.arc32.json +1 -1
  61. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/StateAppLocalExContract.arc56.json +118 -0
  62. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppParamsContract.approval.teal +72 -72
  63. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppParamsContract.arc32.json +1 -1
  64. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/StateAppParamsContract.arc56.json +319 -0
  65. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/StateAssetHoldingContract.arc56.json +138 -0
  66. algorand_python_testing-1.0.0b1/tests/artifacts/StateOps/data/StateAssetParamsContract.arc56.json +394 -0
  67. algorand_python_testing-1.0.0b1/tests/artifacts/Tuples/contract.py +11 -0
  68. algorand_python_testing-1.0.0b1/tests/artifacts/Tuples/data/TuplesContract.approval.teal +42 -0
  69. algorand_python_testing-1.0.0b1/tests/artifacts/Tuples/data/TuplesContract.arc32.json +50 -0
  70. algorand_python_testing-1.0.0b1/tests/artifacts/Tuples/data/TuplesContract.arc56.json +102 -0
  71. algorand_python_testing-1.0.0b1/tests/artifacts/Tuples/data/TuplesContract.clear.teal +7 -0
  72. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/common.py +4 -0
  73. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/models/test_box.py +57 -45
  74. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/models/test_box_map.py +89 -57
  75. algorand_python_testing-1.0.0b1/tests/state/test_global_state.py +310 -0
  76. algorand_python_testing-1.0.0b1/tests/state/test_local_state.py +181 -0
  77. algorand_python_testing-1.0.0b1/tests/value_generators/__init__.py +0 -0
  78. algorand_python_testing-0.6.0b2/.github/workflows/ci.yaml +0 -47
  79. algorand_python_testing-0.6.0b2/CHANGELOG.md +0 -426
  80. algorand_python_testing-0.6.0b2/src/_algopy_testing/serialize.py +0 -158
  81. algorand_python_testing-0.6.0b2/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc32.json +0 -1029
  82. algorand_python_testing-0.6.0b2/tests/artifacts/Arrays/data/StaticSizeContract.arc32.json +0 -162
  83. algorand_python_testing-0.6.0b2/tests/artifacts/StateOps/data/GlobalStateContract.arc32.json +0 -528
  84. algorand_python_testing-0.6.0b2/tests/artifacts/StateOps/data/LocalStateContract.arc32.json +0 -359
  85. algorand_python_testing-0.6.0b2/tests/state/test_global_state.py +0 -133
  86. algorand_python_testing-0.6.0b2/tests/state/test_local_state.py +0 -49
  87. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.coveragerc +0 -0
  88. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.editorconfig +0 -0
  89. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  90. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  91. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.github/dependabot.yml +0 -0
  92. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.github/pull_request_template.md +0 -0
  93. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.github/workflows/cd.yaml +0 -0
  94. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.github/workflows/gh-pages.yaml +0 -0
  95. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.gitignore +0 -0
  96. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.pre-commit-config.yaml +0 -0
  97. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.vscode/extensions.json +0 -0
  98. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.vscode/launch.json +0 -0
  99. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/.vscode/settings.json +0 -0
  100. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/CONTRIBUTING.md +0 -0
  101. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/LICENSE +0 -0
  102. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/README.md +0 -0
  103. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/Makefile +0 -0
  104. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/__init__.py +0 -0
  105. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/_static/custom.css +0 -0
  106. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/algopy.md +0 -0
  107. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/api.md +0 -0
  108. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/conf.py +0 -0
  109. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/coverage.md +0 -0
  110. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/examples.md +0 -0
  111. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/faq.md +0 -0
  112. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/index.md +0 -0
  113. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/make.bat +0 -0
  114. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/testing-guide/arc4-types.md +0 -0
  115. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/testing-guide/avm-types.md +0 -0
  116. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/testing-guide/concepts.md +0 -0
  117. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/testing-guide/contract-testing.md +0 -0
  118. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/testing-guide/index.md +0 -0
  119. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/testing-guide/opcodes.md +0 -0
  120. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/testing-guide/signature-testing.md +0 -0
  121. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/testing-guide/state-management.md +0 -0
  122. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/testing-guide/subroutines.md +0 -0
  123. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/docs/testing-guide/transactions.md +0 -0
  124. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/README.md +0 -0
  125. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/__init__.py +0 -0
  126. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/auction/__init__.py +0 -0
  127. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/auction/contract.py +0 -0
  128. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/auction/test_contract.py +0 -0
  129. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/htlc_logicsig/__init__.py +0 -0
  130. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/htlc_logicsig/signature.py +0 -0
  131. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/htlc_logicsig/test_signature.py +0 -0
  132. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/marketplace/__init__.py +0 -0
  133. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/marketplace/contract.py +0 -0
  134. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/marketplace/test_contract.py +0 -0
  135. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/proof_of_attendance/__init__.py +0 -0
  136. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/proof_of_attendance/contract.py +0 -0
  137. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/proof_of_attendance/test_contract.py +0 -0
  138. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/scratch_storage/__init__.py +0 -0
  139. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/scratch_storage/contract.py +0 -0
  140. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/scratch_storage/test_contract.py +0 -0
  141. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/simple_voting/__init__.py +0 -0
  142. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/simple_voting/contract.py +0 -0
  143. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/simple_voting/test_contract.py +0 -0
  144. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/zk_whitelist/__init__.py +0 -0
  145. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/zk_whitelist/contract.py +0 -0
  146. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/examples/zk_whitelist/test_contract.py +0 -0
  147. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/scripts/__init__.py +0 -0
  148. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/scripts/check_stubs_cov.py +0 -0
  149. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/scripts/refresh_test_artifacts.py +0 -0
  150. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/scripts/validate_examples.py +0 -0
  151. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/__init__.py +0 -0
  152. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/compiled.py +0 -0
  153. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/constants.py +0 -0
  154. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/context.py +0 -0
  155. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/context_helpers/__init__.py +0 -0
  156. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/context_helpers/context_storage.py +0 -0
  157. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/context_helpers/ledger_context.py +0 -0
  158. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/context_helpers/txn_context.py +0 -0
  159. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/decorators/__init__.py +0 -0
  160. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/decorators/arc4.py +0 -0
  161. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/decorators/subroutine.py +0 -0
  162. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/enums.py +0 -0
  163. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/gtxn.py +0 -0
  164. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/itxn.py +0 -0
  165. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/itxn_loader.py +0 -0
  166. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/models/__init__.py +0 -0
  167. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/models/account.py +0 -0
  168. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/models/application.py +0 -0
  169. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/models/asset.py +0 -0
  170. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/models/logicsig.py +0 -0
  171. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/models/template_variable.py +0 -0
  172. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/models/txn_fields.py +0 -0
  173. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/models/unsigned_builtins.py +0 -0
  174. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/mutable.py +0 -0
  175. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/op/__init__.py +0 -0
  176. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/op/block.py +0 -0
  177. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/op/constants.py +0 -0
  178. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/op/crypto.py +0 -0
  179. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/op/global_values.py +0 -0
  180. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/op/itxn.py +0 -0
  181. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/op/misc.py +0 -0
  182. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/op/pure.py +0 -0
  183. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/op/txn.py +0 -0
  184. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/primitives/__init__.py +0 -0
  185. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/primitives/array.py +0 -0
  186. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/primitives/biguint.py +0 -0
  187. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/primitives/bytes.py +0 -0
  188. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/primitives/string.py +0 -0
  189. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/primitives/uint64.py +0 -0
  190. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/protocols.py +0 -0
  191. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/py.typed +0 -0
  192. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/state/__init__.py +0 -0
  193. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/utilities/__init__.py +0 -0
  194. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/utilities/budget.py +0 -0
  195. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/utilities/log.py +0 -0
  196. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/utilities/size_of.py +0 -0
  197. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/utils.py +0 -0
  198. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/value_generators/__init__.py +0 -0
  199. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/value_generators/arc4.py +0 -0
  200. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/value_generators/avm.py +0 -0
  201. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/_algopy_testing/value_generators/txn.py +0 -0
  202. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/algopy/__init__.py +0 -0
  203. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/algopy/arc4.py +0 -0
  204. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/algopy/gtxn.py +0 -0
  205. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/algopy/itxn.py +0 -0
  206. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/algopy/op.py +0 -0
  207. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/algopy/py.typed +0 -0
  208. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/algopy_testing/__init__.py +0 -0
  209. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/src/algopy_testing/py.typed +0 -0
  210. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/templates/.macros.j2 +0 -0
  211. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/templates/.release_notes.md.j2 +0 -0
  212. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/templates/CHANGELOG.md.j2 +0 -0
  213. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/__init__.py +0 -0
  214. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/__init__.py +0 -0
  215. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/conftest.py +0 -0
  216. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_abi_call.py +0 -0
  217. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_address.py +0 -0
  218. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_arc4_method_signature.py +0 -0
  219. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_bool.py +0 -0
  220. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_dynamic_array.py +0 -0
  221. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_dynamic_bytes.py +0 -0
  222. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_emit.py +0 -0
  223. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_static_array.py +0 -0
  224. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_string.py +0 -0
  225. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_struct.py +0 -0
  226. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_ufixednxm.py +0 -0
  227. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/arc4/test_uintn.py +0 -0
  228. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4ABIMethod/__init__.py +0 -0
  229. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4ABIMethod/contract.py +0 -0
  230. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.approval.teal +0 -0
  231. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.arc32.json +0 -0
  232. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.clear.teal +0 -0
  233. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4InnerTxns/__init__.py +0 -0
  234. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4InnerTxns/contract.py +0 -0
  235. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.approval.teal +0 -0
  236. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.arc32.json +0 -0
  237. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.clear.teal +0 -0
  238. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4PrimitiveOps/__init__.py +0 -0
  239. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4PrimitiveOps/contract.py +0 -0
  240. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.clear.teal +0 -0
  241. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/__init__.py +0 -0
  242. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/data/Contract.clear.teal +0 -0
  243. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/data/ImmutableArrayContract.approval.teal +0 -0
  244. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/data/ImmutableArrayContract.arc32.json +0 -0
  245. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/data/ImmutableArrayContract.clear.teal +0 -0
  246. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/data/StaticSizeContract.clear.teal +0 -0
  247. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/immutable.py +0 -0
  248. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/static_size.py +0 -0
  249. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Arrays/uint64.py +0 -0
  250. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/BoxContract/__init__.py +0 -0
  251. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/BoxContract/contract.py +0 -0
  252. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/BoxContract/data/BoxContract.clear.teal +0 -0
  253. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Contains/__init__.py +0 -0
  254. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Contains/contract.py +0 -0
  255. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Contains/data/MyContract.approval.teal +0 -0
  256. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/Contains/data/MyContract.clear.teal +0 -0
  257. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CreatedAppAsset/__init__.py +0 -0
  258. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CreatedAppAsset/contract.py +0 -0
  259. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CreatedAppAsset/data/AppCall.approval.teal +0 -0
  260. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CreatedAppAsset/data/AppCall.arc32.json +0 -0
  261. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CreatedAppAsset/data/AppCall.clear.teal +0 -0
  262. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.clear.teal +0 -0
  263. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CreatedAppAsset/other.py +0 -0
  264. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CryptoOps/__init__.py +0 -0
  265. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CryptoOps/contract.py +0 -0
  266. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CryptoOps/data/CryptoOpsContract.approval.teal +0 -0
  267. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CryptoOps/data/CryptoOpsContract.arc32.json +0 -0
  268. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/CryptoOps/data/CryptoOpsContract.clear.teal +0 -0
  269. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/GlobalStateValidator/__init__.py +0 -0
  270. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/GlobalStateValidator/contract.py +0 -0
  271. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.approval.teal +0 -0
  272. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.arc32.json +0 -0
  273. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.clear.teal +0 -0
  274. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/MiscellaneousOps/__init__.py +0 -0
  275. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/MiscellaneousOps/contract.py +0 -0
  276. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.approval.teal +0 -0
  277. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.arc32.json +0 -0
  278. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.clear.teal +0 -0
  279. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/PrimitiveOps/__init__.py +0 -0
  280. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/PrimitiveOps/contract.py +0 -0
  281. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.approval.teal +0 -0
  282. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.arc32.json +0 -0
  283. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.clear.teal +0 -0
  284. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateMutations/__init__.py +0 -0
  285. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateMutations/data/Contract.approval.teal +0 -0
  286. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateMutations/data/Contract.arc32.json +0 -0
  287. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateMutations/data/Contract.clear.teal +0 -0
  288. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateMutations/data/StateMutations.approval.teal +0 -0
  289. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateMutations/data/StateMutations.arc32.json +0 -0
  290. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateMutations/data/StateMutations.clear.teal +0 -0
  291. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateMutations/statemutations.py +0 -0
  292. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/__init__.py +0 -0
  293. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/GlobalStateContract.clear.teal +0 -0
  294. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/ITxnOpsContract.clear.teal +0 -0
  295. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/LocalStateContract.clear.teal +0 -0
  296. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAcctParamsGet.approval.teal +0 -0
  297. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAcctParamsGet.arc32.json +0 -0
  298. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAcctParamsGet.clear.teal +0 -0
  299. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.clear.teal +0 -0
  300. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppGlobalContract.clear.teal +0 -0
  301. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppGlobalExContract.clear.teal +0 -0
  302. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppLocalContract.clear.teal +0 -0
  303. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppLocalExContract.clear.teal +0 -0
  304. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAppParamsContract.clear.teal +0 -0
  305. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAssetHoldingContract.approval.teal +0 -0
  306. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAssetHoldingContract.arc32.json +0 -0
  307. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAssetHoldingContract.clear.teal +0 -0
  308. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAssetParamsContract.approval.teal +0 -0
  309. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAssetParamsContract.arc32.json +0 -0
  310. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/artifacts/StateOps/data/StateAssetParamsContract.clear.teal +0 -0
  311. {algorand_python_testing-0.6.0b2/tests/artifacts → algorand_python_testing-1.0.0b1/tests/artifacts/Tuples}/__init__.py +0 -0
  312. {algorand_python_testing-0.6.0b2/tests/contexts → algorand_python_testing-1.0.0b1/tests/artifacts}/__init__.py +0 -0
  313. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/conftest.py +0 -0
  314. {algorand_python_testing-0.6.0b2/tests/models → algorand_python_testing-1.0.0b1/tests/contexts}/__init__.py +0 -0
  315. {algorand_python_testing-0.6.0b2/tests/primitives → algorand_python_testing-1.0.0b1/tests/models}/__init__.py +0 -0
  316. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/models/test_asset.py +0 -0
  317. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/models/test_box_ref.py +0 -0
  318. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/models/test_contract.py +0 -0
  319. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/models/test_uenumerate.py +0 -0
  320. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/models/test_urange.py +0 -0
  321. {algorand_python_testing-0.6.0b2/tests/state → algorand_python_testing-1.0.0b1/tests/primitives}/__init__.py +0 -0
  322. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/primitives/conftest.py +0 -0
  323. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/primitives/test_biguint.py +0 -0
  324. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/primitives/test_bytes.py +0 -0
  325. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/primitives/test_string.py +0 -0
  326. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/primitives/test_uint64.py +0 -0
  327. {algorand_python_testing-0.6.0b2/tests/utilities → algorand_python_testing-1.0.0b1/tests/state}/__init__.py +0 -0
  328. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/state/conftest.py +0 -0
  329. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/state/test_mutations.py +0 -0
  330. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/test_array.py +0 -0
  331. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/test_context.py +0 -0
  332. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/test_miscellaneous_op.py +0 -0
  333. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/test_op.py +0 -0
  334. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/util.py +0 -0
  335. {algorand_python_testing-0.6.0b2/tests/value_generators → algorand_python_testing-1.0.0b1/tests/utilities}/__init__.py +0 -0
  336. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/utilities/conftest.py +0 -0
  337. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/utilities/test_log.py +0 -0
  338. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/utilities/test_size_of.py +0 -0
  339. {algorand_python_testing-0.6.0b2 → algorand_python_testing-1.0.0b1}/tests/value_generators/test_avm.py +0 -0
@@ -0,0 +1,77 @@
1
+ name: Check Python Code (algopy_testing)
2
+
3
+ on:
4
+ workflow_call:
5
+ pull_request:
6
+ schedule:
7
+ - cron: "0 8 * * 1" # Each monday 8 AM UTC
8
+
9
+ jobs:
10
+ check-python:
11
+ runs-on: "ubuntu-latest"
12
+ steps:
13
+ - name: Checkout source code
14
+ uses: actions/checkout@v4
15
+
16
+ - name: Set up Python 3.12
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.12"
20
+ cache: "pip"
21
+
22
+ - name: Install hatch
23
+ run: pip install hatch
24
+
25
+ - name: Start LocalNet
26
+ run: pipx install algokit && algokit localnet start
27
+
28
+ - name: Check pre-commits
29
+ run: hatch run check
30
+
31
+ - name: Check pre-commits (examples)
32
+ run: hatch run examples:check
33
+
34
+ - name: Validate examples folder
35
+ run: hatch run validate_examples
36
+
37
+ - name: Check wheels can be built
38
+ run: hatch build
39
+
40
+ - name: Check doctests
41
+ run: hatch run docs:test
42
+
43
+ test-python-matrix:
44
+ runs-on: "ubuntu-latest"
45
+ strategy:
46
+ matrix:
47
+ python-version: ["3.12", "3.13"]
48
+ steps:
49
+ - name: Checkout source code
50
+ uses: actions/checkout@v4
51
+
52
+ - name: Set up Python ${{ matrix.python-version }}
53
+ uses: actions/setup-python@v5
54
+ with:
55
+ python-version: ${{ matrix.python-version }}
56
+ cache: "pip"
57
+
58
+ - name: Install hatch
59
+ run: pip install hatch
60
+
61
+ - name: Start LocalNet
62
+ run: pipx install algokit && algokit localnet start
63
+
64
+ - name: Run tests with Python ${{ matrix.python-version }}
65
+ run: hatch run test.py${{ matrix.python-version }}:ci
66
+
67
+ - name: Run examples tests with Python ${{ matrix.python-version }}
68
+ run: hatch run examples.py${{ matrix.python-version }}:tests
69
+
70
+ - name: Upload coverage artifacts
71
+ uses: actions/upload-artifact@v4
72
+ if: ${{ matrix.python-version == '3.13' }}
73
+ with:
74
+ name: coverage-reports
75
+ path: |
76
+ ./coverage.xml
77
+ retention-days: 14
@@ -0,0 +1,258 @@
1
+ # CHANGELOG
2
+ ## v1.0.0-beta.1 (2025-07-16)
3
+
4
+ ### Features
5
+
6
+ * support storing tuples in state ([`911cd3c`](https://github.com/algorandfoundation/algorand-python-testing/commit/911cd3cb54f69f8fdded5c677f32c1969e8827bf))
7
+
8
+ ## v0.6.0-beta.3 (2025-05-16)
9
+
10
+ ### Bug fixes
11
+
12
+ * fixes type checking of tuples with primitive types ([`e971ad6`](https://github.com/algorandfoundation/algorand-python-testing/commit/e971ad6b125f269cd0874c09d58d8962f7622f8d))
13
+
14
+ Adds checks to ensure that type validation applies to classes only.
15
+
16
+ ## v0.6.0-beta.2 (2025-05-15)
17
+
18
+ ### Features
19
+
20
+ * add stubs for box create function ([`1fe6fe5`](https://github.com/algorandfoundation/algorand-python-testing/commit/1fe6fe55358630a6abea2f69406821cb6031a4d5))
21
+
22
+ ## v0.6.0-beta.1 (2025-05-09)
23
+
24
+ ### Features
25
+
26
+ * add stub implementation of algopy.size_of function for calculating static storage size of types ([`98e6816`](https://github.com/algorandfoundation/algorand-python-testing/commit/98e6816a48f1cff206f2c99d1384af1855d352c2))
27
+
28
+ ### Bug fixes
29
+
30
+ * ensure size_of is exported from algopy module ([`01c055a`](https://github.com/algorandfoundation/algorand-python-testing/commit/01c055a4d2bd1fe17324bd91f7a83810900baa4e))
31
+
32
+ ### Documentation
33
+
34
+ * include size_of in coverage doc ([`2c73646`](https://github.com/algorandfoundation/algorand-python-testing/commit/2c7364626357844437fd80b6039c112a87b277bb))
35
+
36
+ ## v0.5.0 (2025-02-20)
37
+
38
+ ### Features
39
+
40
+ * accept abi method reference as a parameter to arc4_signature method ([`a1cb365`](https://github.com/algorandfoundation/algorand-python-testing/commit/a1cb365f2be1eb1965d9b86a5193498772131412))
41
+
42
+ ## v0.5.0-beta.1 (2025-02-19)
43
+
44
+ ### Features
45
+
46
+ * support `algopy.Array` and `algopy.ImmutableArray` from algorand-python 2.7 ([`fd8d19f`](https://github.com/algorandfoundation/algorand-python-testing/commit/fd8d19f25b9f8e0a48f58ae8f45e4d546b965f83))
47
+
48
+ * support mocking new `algopy.op` functions `falcon_verify`, `mimc`, `online_stake`, `sumhash512` and `VoterParamsGet` ([`83ddcbb`](https://github.com/algorandfoundation/algorand-python-testing/commit/83ddcbb8f83f72a5e0bc247c14e250c55496febf))
49
+
50
+ * update `algopy.op.Block` with fields added in AVM 11 ([`90d857d`](https://github.com/algorandfoundation/algorand-python-testing/commit/90d857d248d7b1b5a4b3791ccb0e10c20c478325))
51
+
52
+ * update `algopy.op.AcctParamsGet` with fields added in AVM 11 ([`059b669`](https://github.com/algorandfoundation/algorand-python-testing/commit/059b6690441e99a709fc47691bcb0e4f2453cd26))
53
+
54
+ * add `avm_version` to `algopy.Contract` class options ([`fc53b0f`](https://github.com/algorandfoundation/algorand-python-testing/commit/fc53b0fda5f0d22b6dbb99abf1ba024284fa52a4))
55
+
56
+ * update `algopy.op.Global` with fields added in AVM 11 ([`0cc9807`](https://github.com/algorandfoundation/algorand-python-testing/commit/0cc9807bbfc7084d54425c40889065ae2fd7d856))
57
+
58
+ * add `algopy.arc4.Struct._replace` introduced in algorand-python 2.5.0 ([`75d6847`](https://github.com/algorandfoundation/algorand-python-testing/commit/75d6847b80498d637c7f0b0e3915afd7af6f132c))
59
+
60
+ * add inline option to subroutine decorator ([`2cc15b3`](https://github.com/algorandfoundation/algorand-python-testing/commit/2cc15b3dc706eb8585b9658bf67b38da215e2e38))
61
+
62
+ ### Bug fixes
63
+
64
+ * add missing mappings for `algopy.op.Txn` members ([`fddfe6f`](https://github.com/algorandfoundation/algorand-python-testing/commit/fddfe6f7ff9d6d4e0434f65e19dd0b0cf2aef6bd))
65
+
66
+ * include `ARC4Contract` in `algopy.arc4` namespace ([`f19d46f`](https://github.com/algorandfoundation/algorand-python-testing/commit/f19d46f5663c9fbe4e9b2e8c3bd1e2f7ddc89c3a))
67
+
68
+ * update `algopy.CompiledContract` and `algopy.CompiledLogicSig` to be NamedTuples ([`84be408`](https://github.com/algorandfoundation/algorand-python-testing/commit/84be4082348e3d89b40a65a69b599594a5531828))
69
+
70
+ * added missing __contains__ implementation for `algopy.Bytes` ([`8b2efa2`](https://github.com/algorandfoundation/algorand-python-testing/commit/8b2efa20b37e3043ac6a228d6706da4203373a7e))
71
+
72
+ ### Documentation
73
+
74
+ * fix doctest example for `algopy.EllipticCurve` ([`7d0bb0d`](https://github.com/algorandfoundation/algorand-python-testing/commit/7d0bb0dfe9a5ea2d67b130fa300fb80cef52fda5))
75
+
76
+ ## v0.4.1 (2024-09-03)
77
+
78
+ ## v0.4.1-beta.1 (2024-09-03)
79
+
80
+ ### Bug fixes
81
+
82
+ * ability to pass kw_only flag to dataclass when defining struct subclass ([`24bcf9d`](https://github.com/algorandfoundation/algorand-python-testing/commit/24bcf9d8af34eb2675ddf85ce9d71802f82f2d6a))
83
+
84
+ * ability to pass kw_only flag to dataclass when defining struct subclass ([`24bcf9d`](https://github.com/algorandfoundation/algorand-python-testing/commit/24bcf9d8af34eb2675ddf85ce9d71802f82f2d6a))
85
+
86
+ ## v0.4.0 (2024-08-27)
87
+
88
+ ## v0.4.0-beta.2 (2024-08-27)
89
+
90
+ ## v0.4.0-beta.1 (2024-08-27)
91
+
92
+ ### Features
93
+
94
+ * add support for frozen on asset holdings, including a new ledger function `update_asset_holdings` for setting asset holding balances and frozen states ([`d777ca0`](https://github.com/algorandfoundation/algorand-python-testing/commit/d777ca0a318a8ade7a20363c9ce77fe8a8bf5d68))
95
+
96
+ * expand accepted types when interacting with accounts, applications and assets ([`f448a97`](https://github.com/algorandfoundation/algorand-python-testing/commit/f448a97cb154c9f90ecf42c599b240f12928af20))
97
+
98
+ wip
99
+
100
+ * replaced `account_exists` with `account_is_funded` as the later is more useful ([`4d08690`](https://github.com/algorandfoundation/algorand-python-testing/commit/4d086903eb93a70ce1d485cdd7b12d8472ef16db))
101
+
102
+ ### Bug fixes
103
+
104
+ * use correct type for Globals.caller_application_id ([`a30d85a`](https://github.com/algorandfoundation/algorand-python-testing/commit/a30d85a4416dfc2c5d901f3ace2265384ef60c01))
105
+
106
+ * do not allow specifying `address` for applications, it is derived from the app_id ([`00fe1bc`](https://github.com/algorandfoundation/algorand-python-testing/commit/00fe1bc8ea247dcc36b01154db36b984b151e396))
107
+
108
+ * do not treat asset and application ids as possible foreign array indexes ([`94a989f`](https://github.com/algorandfoundation/algorand-python-testing/commit/94a989f77169da2ae437c629cd5f4d8a872263f6))
109
+
110
+ * removed incorrect deduction in `algopy.op.balance` ([`76e67c5`](https://github.com/algorandfoundation/algorand-python-testing/commit/76e67c5e3dd1cda388a2a948d452ba89805add6a))
111
+
112
+ * ensure all comparable types return `NotImplemented` when a comparison is not possible ([`b055fa6`](https://github.com/algorandfoundation/algorand-python-testing/commit/b055fa68531e0b7923773ec10c2097a3d64b9dbe))
113
+
114
+ * `arc4_prefix` annotated to also accept `algopy.Bytes` ([`40328ca`](https://github.com/algorandfoundation/algorand-python-testing/commit/40328ca3701b3e255193e206e8a7b1bdb441a346))
115
+
116
+ ### Documentation
117
+
118
+ * include usage of `algopy_testing_context` in README.md quick start ([`4702f60`](https://github.com/algorandfoundation/algorand-python-testing/commit/4702f60cfe7d09956a5ae6dbdcd72da29fdda808))
119
+
120
+ ## v0.3.0 (2024-08-22)
121
+
122
+ ## v0.3.0-beta.10 (2024-08-22)
123
+
124
+ ### Documentation
125
+
126
+ * refining docs ([`b714783`](https://github.com/algorandfoundation/algorand-python-testing/commit/b714783b4cf15d31f91dc1c776d304bd2eb9a154))
127
+
128
+ * note on future refinement ([`b714783`](https://github.com/algorandfoundation/algorand-python-testing/commit/b714783b4cf15d31f91dc1c776d304bd2eb9a154))
129
+
130
+ * further refining the api section ([`b714783`](https://github.com/algorandfoundation/algorand-python-testing/commit/b714783b4cf15d31f91dc1c776d304bd2eb9a154))
131
+
132
+ ## v0.3.0-beta.9 (2024-08-22)
133
+
134
+ ### Bug fixes
135
+
136
+ * Make Global.latest_timestamp constant for a transaction ([`51c2817`](https://github.com/algorandfoundation/algorand-python-testing/commit/51c2817c262d686996e2aa4d639d259409dc8d43))
137
+
138
+ ## v0.3.0-beta.8 (2024-08-22)
139
+
140
+ ### Features
141
+
142
+ * include ARC4 results in log, and handle > 15 ARC4 arguments ([`fd83ee8`](https://github.com/algorandfoundation/algorand-python-testing/commit/fd83ee8525a393d4a1a66f20acdb661906d84b51))
143
+
144
+ ## v0.3.0-beta.7 (2024-08-21)
145
+
146
+ ## v0.3.0-beta.6 (2024-08-21)
147
+
148
+ ### Documentation
149
+
150
+ * documentation for initial stable release of `algorand-python-testing` ([`9d97d0d`](https://github.com/algorandfoundation/algorand-python-testing/commit/9d97d0de5ff9897e642ec3f11a186f2fb95375bb))
151
+
152
+ docs: wip
153
+
154
+ * refining docs (wip) ([`9d97d0d`](https://github.com/algorandfoundation/algorand-python-testing/commit/9d97d0de5ff9897e642ec3f11a186f2fb95375bb))
155
+
156
+ * revamping docs with latest features ([`9d97d0d`](https://github.com/algorandfoundation/algorand-python-testing/commit/9d97d0de5ff9897e642ec3f11a186f2fb95375bb))
157
+
158
+ * minor consistency with main readme; patching doctests ([`9d97d0d`](https://github.com/algorandfoundation/algorand-python-testing/commit/9d97d0de5ff9897e642ec3f11a186f2fb95375bb))
159
+
160
+ * removing the box from examples ([`9d97d0d`](https://github.com/algorandfoundation/algorand-python-testing/commit/9d97d0de5ff9897e642ec3f11a186f2fb95375bb))
161
+
162
+ * refine op codes section ([`9d97d0d`](https://github.com/algorandfoundation/algorand-python-testing/commit/9d97d0de5ff9897e642ec3f11a186f2fb95375bb))
163
+
164
+ * addressing docs pr comments ([`9d97d0d`](https://github.com/algorandfoundation/algorand-python-testing/commit/9d97d0de5ff9897e642ec3f11a186f2fb95375bb))
165
+
166
+ ## v0.3.0-beta.5 (2024-08-21)
167
+
168
+ ### Features
169
+
170
+ * add __str__ and __repr__ implementations for ARC4 types ([`1f1f2ea`](https://github.com/algorandfoundation/algorand-python-testing/commit/1f1f2ea43a2f4f906cbcd5709b8e86b5c1f2bc63))
171
+
172
+ ### Bug fixes
173
+
174
+ * ensure mutable types (ARC4 tuple, array and structs) have their changes propagated back to container-like types (global/local state, boxes, ARC4 mutable types) ([`1f1f2ea`](https://github.com/algorandfoundation/algorand-python-testing/commit/1f1f2ea43a2f4f906cbcd5709b8e86b5c1f2bc63))
175
+
176
+ * add default __eq__ implementation for ARC4 types ([`1f1f2ea`](https://github.com/algorandfoundation/algorand-python-testing/commit/1f1f2ea43a2f4f906cbcd5709b8e86b5c1f2bc63))
177
+
178
+ * ensure mutable types (ARC4 tuple, array and structs) have their changes propagated back to container-like types (global/local state, boxes, ARC4 mutable types) ([`1f1f2ea`](https://github.com/algorandfoundation/algorand-python-testing/commit/1f1f2ea43a2f4f906cbcd5709b8e86b5c1f2bc63))
179
+
180
+ ## v0.3.0-beta.4 (2024-08-21)
181
+
182
+ ### Features
183
+
184
+ * rename txn_op_fields to active_txn_overrides to better reflect purpose, add additional checks to ensure crate_group parameters are used correctly ([`973fc28`](https://github.com/algorandfoundation/algorand-python-testing/commit/973fc288836d09ba4657642c980ca9f916d38823))
185
+
186
+ ### Bug fixes
187
+
188
+ * fix equality implementation for Account, to allow comparison with arc4.Address ([`6ec2dd4`](https://github.com/algorandfoundation/algorand-python-testing/commit/6ec2dd4f2b4119987a5ea7c3c670bdd554c4fe30))
189
+
190
+ * ensure new Account's have field defaults populated ([`54432b0`](https://github.com/algorandfoundation/algorand-python-testing/commit/54432b03cef13008b16fab84dcc250824e2e2da1))
191
+
192
+ * ensure Global.current_application* properties match AVM ([`ae84ae2`](https://github.com/algorandfoundation/algorand-python-testing/commit/ae84ae27e49ef977babe7abb10d8994446d6b5f7))
193
+
194
+ * when generating app/asset id's skip any that might already be reserved ([`0bb5eba`](https://github.com/algorandfoundation/algorand-python-testing/commit/0bb5eba3ec75ffdb16cfbac5b3c4837f64f8a58a))
195
+
196
+ ### Documentation
197
+
198
+ * integrating pydoclint; formatting docs; removing docs from stub implementation ([`d729bf9`](https://github.com/algorandfoundation/algorand-python-testing/commit/d729bf9b70ef885cd1b2ef705c4f5e2582d853ab))
199
+
200
+ ## v0.3.0-beta.3 (2024-08-16)
201
+
202
+ ## v0.3.0-beta.2 (2024-08-16)
203
+
204
+ ### Features
205
+
206
+ * implement gaid op ([`71801f0`](https://github.com/algorandfoundation/algorand-python-testing/commit/71801f01e49b683d81fa46d2ddb1c8aaf38b89f2))
207
+
208
+ ### Bug fixes
209
+
210
+ * added mock implementations for new algopy functions, add util for raising consistent mockable method errors ([`71801f0`](https://github.com/algorandfoundation/algorand-python-testing/commit/71801f01e49b683d81fa46d2ddb1c8aaf38b89f2))
211
+
212
+ ## v0.3.0-beta.1 (2024-08-14)
213
+
214
+ ### Features
215
+
216
+ * deferred app calls, modular test context, refined access to value generators, numerous fixes/improvements ([`85dd58a`](https://github.com/algorandfoundation/algorand-python-testing/commit/85dd58a60f56a0737de84dcb549c01ca5a7a2851))
217
+
218
+ * work in progress on asset, application related state ops ([`85dd58a`](https://github.com/algorandfoundation/algorand-python-testing/commit/85dd58a60f56a0737de84dcb549c01ca5a7a2851))
219
+
220
+ * extra tests and implementation wrappers around AppLocal ([`85dd58a`](https://github.com/algorandfoundation/algorand-python-testing/commit/85dd58a60f56a0737de84dcb549c01ca5a7a2851))
221
+
222
+ chore: wip
223
+
224
+ * adding acctparamsget; extra tests; pr comments ([`85dd58a`](https://github.com/algorandfoundation/algorand-python-testing/commit/85dd58a60f56a0737de84dcb549c01ca5a7a2851))
225
+
226
+ * add arc4factory ([`85dd58a`](https://github.com/algorandfoundation/algorand-python-testing/commit/85dd58a60f56a0737de84dcb549c01ca5a7a2851))
227
+
228
+ * continue with txn_group_for and add a test ([`85dd58a`](https://github.com/algorandfoundation/algorand-python-testing/commit/85dd58a60f56a0737de84dcb549c01ca5a7a2851))
229
+
230
+ ### Bug fixes
231
+
232
+ * handle populating foreign arrays correctly for abi method calls ([`85dd58a`](https://github.com/algorandfoundation/algorand-python-testing/commit/85dd58a60f56a0737de84dcb549c01ca5a7a2851))
233
+
234
+ ### Documentation
235
+
236
+ * adding pep257 formatter; using reST docstrings style for context.py ([`85dd58a`](https://github.com/algorandfoundation/algorand-python-testing/commit/85dd58a60f56a0737de84dcb549c01ca5a7a2851))
237
+
238
+ ## v0.2.2-beta.5 (2024-07-30)
239
+
240
+ ### Documentation
241
+
242
+ * patch urls in README.md ([`eddf612`](https://github.com/algorandfoundation/algorand-python-testing/commit/eddf612b177a2acddf15d58be3f375e99fb6564b))
243
+
244
+ * patching old namespace name in readme ([`eddf612`](https://github.com/algorandfoundation/algorand-python-testing/commit/eddf612b177a2acddf15d58be3f375e99fb6564b))
245
+
246
+ ## v0.2.2-beta.4 (2024-07-25)
247
+
248
+ ## v0.2.2-beta.3 (2024-07-25)
249
+
250
+ ## v0.2.2-beta.2 (2024-07-25)
251
+
252
+ ## v0.2.2-beta.1 (2024-07-24)
253
+
254
+ ## v0.2.1 (2024-07-10)
255
+
256
+ ### Bug fixes
257
+
258
+ * patching helper scripts; adding pre-commit; bumping compiler version ([`8d43492`](https://github.com/algorandfoundation/algorand-python-testing/commit/8d43492adfeb53fd2824f0ea812a9c30bf6bb339))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algorand-python-testing
3
- Version: 0.6.0b2
3
+ Version: 1.0.0b1
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
@@ -12,6 +12,7 @@ Classifier: Development Status :: 4 - Beta
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Programming Language :: Python
14
14
  Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
15
16
  Classifier: Topic :: Software Development :: Testing
16
17
  Requires-Python: >=3.12
17
18
  Requires-Dist: algorand-python>=2.0
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "algorand-python-testing"
7
- version = "0.6.0-beta.2"
7
+ version = "1.0.0-beta.1"
8
8
  description = 'Algorand Python testing library'
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -18,6 +18,7 @@ classifiers = [
18
18
  "Topic :: Software Development :: Testing",
19
19
  "Programming Language :: Python",
20
20
  "Programming Language :: Python :: 3.12",
21
+ "Programming Language :: Python :: 3.13",
21
22
  ]
22
23
  dependencies = [
23
24
  # ==========================================================================
@@ -43,9 +44,6 @@ allow-direct-references = true
43
44
  [tool.hatch.build.targets.wheel]
44
45
  packages = ["src/algopy", 'src/algopy_testing', 'src/_algopy_testing']
45
46
 
46
- [[tool.hatch.envs.all.matrix]]
47
- python = ["3.12"]
48
-
49
47
  # default dev environment
50
48
  [tool.hatch.envs.default]
51
49
  type = "virtual"
@@ -121,9 +119,29 @@ path = ".venv.cicd"
121
119
  dependencies = [
122
120
  "python-semantic-release>=9.8.5",
123
121
  ]
122
+
124
123
  [tool.hatch.envs.cicd.scripts]
125
124
  clean_dist = "rm -rf dist"
126
125
 
126
+ # Testing environment with matrix
127
+ [tool.hatch.envs.test]
128
+ dependencies = [
129
+ "pytest>=7.4",
130
+ "pytest-mock>=3.10.0",
131
+ "pytest-xdist[psutil]>=3.3",
132
+ "pytest-cov>=4.1.0",
133
+ "py-algorand-sdk>=2.4.0",
134
+ "algokit-utils>=3.0.0",
135
+ "puyapy>=3.0",
136
+ ]
137
+
138
+ [tool.hatch.envs.test.scripts]
139
+ run = "pytest --cov=src --cov-report=xml {args}"
140
+ ci = "pytest --cov=src --cov-report=xml --cov-report=term"
141
+
142
+ [[tool.hatch.envs.test.matrix]]
143
+ python = ["3.12", "3.13"]
144
+
127
145
  # docs environment
128
146
  [tool.hatch.envs.docs]
129
147
  path = ".venv.docs"
@@ -159,7 +177,6 @@ dev = "hatch run docs:test && sphinx-autobuild docs docs/_build"
159
177
  [tool.hatch.envs.examples]
160
178
  type = "virtual"
161
179
  path = ".venv.examples"
162
- python = "3.12"
163
180
  dev-mode = true
164
181
  skip-install = false
165
182
  post-install-commands = [
@@ -188,6 +205,9 @@ check = [
188
205
  "hatch run mypy examples",
189
206
  ]
190
207
 
208
+ [[tool.hatch.envs.examples.matrix]]
209
+ python = ["3.12", "3.13"]
210
+
191
211
  # tool configurations
192
212
  [tool.black]
193
213
  line-length = 99
@@ -742,7 +742,9 @@ class Address(StaticArray[Byte, typing.Literal[32]]):
742
742
 
743
743
 
744
744
  class _DynamicArrayTypeInfo(_TypeInfo):
745
- def __init__(self, item_type: _TypeInfo):
745
+ _subclass_type: Callable[[], type] | None
746
+
747
+ def __init__(self, item_type: _TypeInfo) -> None:
746
748
  self.item_type = item_type
747
749
 
748
750
  @property
@@ -888,9 +890,20 @@ class DynamicArray( # TODO: inherit from StaticArray?
888
890
  return f"{_arc4_type_repr(type(self))}({', '.join(items)})"
889
891
 
890
892
 
893
+ class _DynamicBytesTypeInfo(_DynamicArrayTypeInfo):
894
+ def __init__(self) -> None:
895
+ super().__init__(Byte._type_info)
896
+
897
+ @property
898
+ def typ(self) -> type:
899
+ return DynamicBytes
900
+
901
+
891
902
  class DynamicBytes(DynamicArray[Byte]):
892
903
  """A variable sized array of bytes."""
893
904
 
905
+ _type_info: _DynamicBytesTypeInfo = _DynamicBytesTypeInfo()
906
+
894
907
  @typing.overload
895
908
  def __init__(self, *values: Byte | UInt8 | int): ...
896
909
 
@@ -996,6 +1009,12 @@ class Tuple(
996
1009
  )
997
1010
  self._value = _encode(items)
998
1011
 
1012
+ def __bool__(self) -> bool:
1013
+ try:
1014
+ return bool(self.native)
1015
+ except ValueError:
1016
+ return False
1017
+
999
1018
  def __len__(self) -> int:
1000
1019
  return len(self.native)
1001
1020
 
@@ -1103,6 +1122,8 @@ class Struct(MutableBytes, _ABIEncoded, metaclass=_StructMeta): # type: ignore[
1103
1122
  def from_bytes(cls, value: algopy.Bytes | bytes, /) -> typing.Self:
1104
1123
  tuple_type = _tuple_type_from_struct(cls)
1105
1124
  tuple_value = tuple_type.from_bytes(value)
1125
+ if not tuple_value:
1126
+ return typing.cast(typing.Self, tuple_value)
1106
1127
  return cls(*tuple_value.native)
1107
1128
 
1108
1129
  @property
@@ -201,12 +201,12 @@ def _get_state_totals(contract: Contract, cls_state_totals: StateTotals) -> _Sta
201
201
 
202
202
  global_bytes = global_uints = local_bytes = local_uints = 0
203
203
  for type_ in get_global_states(contract).values():
204
- if issubclass(type_, UInt64 | UInt64Backed | bool):
204
+ if isinstance(type_, type) and issubclass(type_, UInt64 | UInt64Backed | bool):
205
205
  global_uints += 1
206
206
  else:
207
207
  global_bytes += 1
208
208
  for type_ in get_local_states(contract).values():
209
- if issubclass(type_, UInt64 | UInt64Backed | bool):
209
+ if isinstance(type_, type) and issubclass(type_, UInt64 | UInt64Backed | bool):
210
210
  local_uints += 1
211
211
  else:
212
212
  local_bytes += 1
@@ -0,0 +1,151 @@
1
+ import dataclasses
2
+ import functools
3
+ import inspect
4
+ import typing
5
+ from collections.abc import Callable, Sequence
6
+
7
+ from _algopy_testing.primitives.uint64 import UInt64
8
+
9
+ if typing.TYPE_CHECKING:
10
+ from _algopy_testing.arc4 import _ABIEncoded
11
+
12
+
13
+ _T = typing.TypeVar("_T")
14
+ _U = typing.TypeVar("_U")
15
+
16
+
17
+ @dataclasses.dataclass(frozen=True)
18
+ class _Serializer(typing.Generic[_T, _U]):
19
+ arc4_type: type[_U]
20
+ native_to_arc4: Callable[[_T], _U]
21
+ arc4_to_native: Callable[[_U], _T]
22
+
23
+
24
+ def identity(i: _T) -> _T:
25
+ return i
26
+
27
+
28
+ def get_native_to_arc4_serializer(typ: type) -> _Serializer[typing.Any, typing.Any]:
29
+ from _algopy_testing import arc4
30
+ from _algopy_testing.primitives import ImmutableArray
31
+ from _algopy_testing.protocols import UInt64Backed
32
+
33
+ origin_type = typing.get_origin(typ)
34
+ if origin_type is tuple:
35
+ return _get_tuple_serializer(typing.get_args(typ))
36
+ elif isinstance(typ, type):
37
+ if issubclass(typ, arc4._ABIEncoded):
38
+ return _Serializer(arc4_type=typ, native_to_arc4=identity, arc4_to_native=identity)
39
+ for native_type, simple_arc4_type in _simple_native_to_arc4_type_map().items():
40
+ if issubclass(typ, native_type):
41
+ return _Serializer(
42
+ arc4_type=simple_arc4_type,
43
+ native_to_arc4=simple_arc4_type,
44
+ arc4_to_native=lambda n: n.native,
45
+ )
46
+ if issubclass(typ, UInt64Backed):
47
+ return _Serializer(
48
+ arc4_type=arc4.UInt64,
49
+ native_to_arc4=lambda n: arc4.UInt64(n.int_),
50
+ arc4_to_native=lambda a: typ.from_int(a.native),
51
+ )
52
+ if typing.NamedTuple in getattr(typ, "__orig_bases__", []):
53
+ tuple_fields = tuple(inspect.get_annotations(typ).values())
54
+ if any(isinstance(f, str) for f in tuple_fields):
55
+ raise TypeError("string annotations in typing.NamedTuple fields are not supported")
56
+ return _get_tuple_serializer(tuple_fields)
57
+ if issubclass(typ, ImmutableArray):
58
+ native_element_type = typ._element_type
59
+ element_serializer = get_native_to_arc4_serializer(native_element_type)
60
+ arc4_element_type = element_serializer.arc4_type
61
+ arc4_type = arc4.DynamicArray[arc4_element_type] # type: ignore[valid-type]
62
+ return _Serializer(
63
+ arc4_type=arc4_type,
64
+ native_to_arc4=lambda arr: arc4_type(
65
+ *(element_serializer.native_to_arc4(e) for e in arr)
66
+ ),
67
+ arc4_to_native=lambda arr: typ(
68
+ *(element_serializer.arc4_to_native(e) for e in arr)
69
+ ),
70
+ )
71
+ raise TypeError(f"unserializable type: {typ}")
72
+
73
+
74
+ @functools.cache
75
+ def _simple_native_to_arc4_type_map() -> dict[type, type]:
76
+ from _algopy_testing import arc4
77
+ from _algopy_testing.models import Account
78
+ from _algopy_testing.primitives import BigUInt, Bytes, String
79
+
80
+ return {
81
+ bool: arc4.Bool,
82
+ UInt64: arc4.UInt64,
83
+ BigUInt: arc4.UInt512,
84
+ Account: arc4.Address,
85
+ Bytes: arc4.DynamicBytes,
86
+ String: arc4.String,
87
+ }
88
+
89
+
90
+ def _get_tuple_serializer(item_types: tuple[type, ...]) -> _Serializer[typing.Any, typing.Any]:
91
+ from _algopy_testing import arc4
92
+
93
+ serializers = [get_native_to_arc4_serializer(i) for i in item_types]
94
+
95
+ def _items_to_arc4(items: Sequence[object]) -> tuple[object, ...]:
96
+ result = []
97
+ for item, serializer in zip(items, serializers, strict=True):
98
+ result.append(serializer.native_to_arc4(item))
99
+ return tuple(result)
100
+
101
+ def _items_to_native(items: Sequence[object]) -> tuple[object, ...]:
102
+ result = []
103
+ for item, serializer in zip(items, serializers, strict=True):
104
+ result.append(serializer.arc4_to_native(item))
105
+ return tuple(result)
106
+
107
+ return _Serializer(
108
+ arc4_type=arc4.Tuple[*(s.arc4_type for s in serializers)], # type: ignore[misc]
109
+ native_to_arc4=lambda t: arc4.Tuple(_items_to_arc4(t)),
110
+ arc4_to_native=lambda t: _items_to_native(t),
111
+ )
112
+
113
+
114
+ def serialize_to_bytes(value: object) -> bytes:
115
+ return native_to_arc4(value).bytes.value
116
+
117
+
118
+ def type_of(value: object) -> type:
119
+ """Returns the type of value, this will also ensure the type is fully parametrized
120
+ if it is a generic type."""
121
+ # get fully parametrized tuples
122
+ if isinstance(value, tuple) and type(value) is tuple:
123
+ return tuple[*(type_of(i) for i in value)] # type: ignore[misc, no-any-return]
124
+ else:
125
+ return type(value)
126
+
127
+
128
+ def native_to_arc4(value: object) -> "_ABIEncoded":
129
+ from _algopy_testing import arc4
130
+
131
+ src_type = type_of(value)
132
+
133
+ serializer = get_native_to_arc4_serializer(src_type)
134
+ arc4_value = serializer.native_to_arc4(value)
135
+ assert isinstance(arc4_value, arc4._ABIEncoded)
136
+ return arc4_value
137
+
138
+
139
+ def compare_type(value_type: type, typ: type) -> bool:
140
+ if typing.NamedTuple in getattr(typ, "__orig_bases__", []):
141
+ tuple_fields: Sequence[type] = list(inspect.get_annotations(typ).values())
142
+ typ = tuple[*tuple_fields] # type: ignore[valid-type]
143
+ return value_type == typ
144
+
145
+
146
+ def deserialize_from_bytes(typ: type[_T], bites: bytes) -> _T:
147
+ serializer = get_native_to_arc4_serializer(typ)
148
+ arc4_value = serializer.arc4_type.from_bytes(bites)
149
+ native_value = serializer.arc4_to_native(arc4_value)
150
+ assert compare_type(type_of(native_value), typ) or isinstance(native_value, typ)
151
+ return native_value # type: ignore[no-any-return]
@@ -322,9 +322,9 @@ class BoxMap(typing.Generic[_TKey, _TValue]):
322
322
  def maybe(self, key: _TKey) -> tuple[_TValue, bool]:
323
323
  key_bytes = self._full_key(key)
324
324
  box_exists = lazy_context.ledger.box_exists(self.app_id, key_bytes)
325
- if not box_exists:
326
- return self._value_type(), False
327
- box_content_bytes = lazy_context.ledger.get_box(self.app_id, key_bytes)
325
+ box_content_bytes = (
326
+ b"" if not box_exists else lazy_context.ledger.get_box(self.app_id, key_bytes)
327
+ )
328
328
  box_content = cast_from_bytes(self._value_type, box_content_bytes)
329
329
  return box_content, box_exists
330
330