algorand-python-testing 0.6.0b2__tar.gz → 0.6.0b3__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 (307) hide show
  1. algorand_python_testing-0.6.0b3/.github/workflows/ci.yaml +77 -0
  2. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/CHANGELOG.md +8 -0
  3. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/PKG-INFO +2 -1
  4. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/pyproject.toml +25 -5
  5. algorand_python_testing-0.6.0b3/src/_algopy_testing/serialize.py +144 -0
  6. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_tuple.py +15 -0
  7. algorand_python_testing-0.6.0b3/tests/artifacts/Tuples/contract.py +11 -0
  8. algorand_python_testing-0.6.0b3/tests/artifacts/Tuples/data/TuplesContract.approval.teal +42 -0
  9. algorand_python_testing-0.6.0b3/tests/artifacts/Tuples/data/TuplesContract.arc32.json +50 -0
  10. algorand_python_testing-0.6.0b3/tests/artifacts/Tuples/data/TuplesContract.arc56.json +102 -0
  11. algorand_python_testing-0.6.0b3/tests/artifacts/Tuples/data/TuplesContract.clear.teal +7 -0
  12. algorand_python_testing-0.6.0b3/tests/value_generators/__init__.py +0 -0
  13. algorand_python_testing-0.6.0b2/.github/workflows/ci.yaml +0 -47
  14. algorand_python_testing-0.6.0b2/src/_algopy_testing/serialize.py +0 -158
  15. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.coveragerc +0 -0
  16. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.editorconfig +0 -0
  17. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  18. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  19. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.github/dependabot.yml +0 -0
  20. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.github/pull_request_template.md +0 -0
  21. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.github/workflows/cd.yaml +0 -0
  22. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.github/workflows/gh-pages.yaml +0 -0
  23. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.gitignore +0 -0
  24. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.pre-commit-config.yaml +0 -0
  25. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.vscode/extensions.json +0 -0
  26. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.vscode/launch.json +0 -0
  27. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/.vscode/settings.json +0 -0
  28. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/CONTRIBUTING.md +0 -0
  29. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/LICENSE +0 -0
  30. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/README.md +0 -0
  31. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/Makefile +0 -0
  32. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/__init__.py +0 -0
  33. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/_static/custom.css +0 -0
  34. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/algopy.md +0 -0
  35. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/api.md +0 -0
  36. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/conf.py +0 -0
  37. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/coverage.md +0 -0
  38. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/examples.md +0 -0
  39. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/faq.md +0 -0
  40. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/index.md +0 -0
  41. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/make.bat +0 -0
  42. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/testing-guide/arc4-types.md +0 -0
  43. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/testing-guide/avm-types.md +0 -0
  44. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/testing-guide/concepts.md +0 -0
  45. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/testing-guide/contract-testing.md +0 -0
  46. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/testing-guide/index.md +0 -0
  47. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/testing-guide/opcodes.md +0 -0
  48. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/testing-guide/signature-testing.md +0 -0
  49. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/testing-guide/state-management.md +0 -0
  50. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/testing-guide/subroutines.md +0 -0
  51. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/docs/testing-guide/transactions.md +0 -0
  52. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/README.md +0 -0
  53. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/__init__.py +0 -0
  54. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/auction/__init__.py +0 -0
  55. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/auction/contract.py +0 -0
  56. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/auction/test_contract.py +0 -0
  57. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/htlc_logicsig/__init__.py +0 -0
  58. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/htlc_logicsig/signature.py +0 -0
  59. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/htlc_logicsig/test_signature.py +0 -0
  60. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/marketplace/__init__.py +0 -0
  61. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/marketplace/contract.py +0 -0
  62. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/marketplace/test_contract.py +0 -0
  63. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/proof_of_attendance/__init__.py +0 -0
  64. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/proof_of_attendance/contract.py +0 -0
  65. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/proof_of_attendance/test_contract.py +0 -0
  66. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/scratch_storage/__init__.py +0 -0
  67. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/scratch_storage/contract.py +0 -0
  68. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/scratch_storage/test_contract.py +0 -0
  69. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/simple_voting/__init__.py +0 -0
  70. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/simple_voting/contract.py +0 -0
  71. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/simple_voting/test_contract.py +0 -0
  72. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/zk_whitelist/__init__.py +0 -0
  73. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/zk_whitelist/contract.py +0 -0
  74. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/examples/zk_whitelist/test_contract.py +0 -0
  75. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/scripts/__init__.py +0 -0
  76. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/scripts/check_stubs_cov.py +0 -0
  77. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/scripts/refresh_test_artifacts.py +0 -0
  78. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/scripts/validate_examples.py +0 -0
  79. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/__init__.py +0 -0
  80. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/arc4.py +0 -0
  81. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/compiled.py +0 -0
  82. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/constants.py +0 -0
  83. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/context.py +0 -0
  84. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/context_helpers/__init__.py +0 -0
  85. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/context_helpers/context_storage.py +0 -0
  86. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/context_helpers/ledger_context.py +0 -0
  87. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/context_helpers/txn_context.py +0 -0
  88. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/decorators/__init__.py +0 -0
  89. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/decorators/arc4.py +0 -0
  90. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/decorators/subroutine.py +0 -0
  91. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/enums.py +0 -0
  92. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/gtxn.py +0 -0
  93. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/itxn.py +0 -0
  94. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/itxn_loader.py +0 -0
  95. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/models/__init__.py +0 -0
  96. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/models/account.py +0 -0
  97. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/models/application.py +0 -0
  98. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/models/asset.py +0 -0
  99. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/models/contract.py +0 -0
  100. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/models/logicsig.py +0 -0
  101. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/models/template_variable.py +0 -0
  102. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/models/txn_fields.py +0 -0
  103. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/models/unsigned_builtins.py +0 -0
  104. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/mutable.py +0 -0
  105. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/op/__init__.py +0 -0
  106. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/op/block.py +0 -0
  107. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/op/constants.py +0 -0
  108. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/op/crypto.py +0 -0
  109. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/op/global_values.py +0 -0
  110. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/op/itxn.py +0 -0
  111. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/op/misc.py +0 -0
  112. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/op/pure.py +0 -0
  113. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/op/txn.py +0 -0
  114. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/primitives/__init__.py +0 -0
  115. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/primitives/array.py +0 -0
  116. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/primitives/biguint.py +0 -0
  117. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/primitives/bytes.py +0 -0
  118. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/primitives/string.py +0 -0
  119. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/primitives/uint64.py +0 -0
  120. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/protocols.py +0 -0
  121. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/py.typed +0 -0
  122. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/state/__init__.py +0 -0
  123. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/state/box.py +0 -0
  124. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/state/global_state.py +0 -0
  125. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/state/local_state.py +0 -0
  126. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/state/utils.py +0 -0
  127. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/utilities/__init__.py +0 -0
  128. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/utilities/budget.py +0 -0
  129. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/utilities/log.py +0 -0
  130. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/utilities/size_of.py +0 -0
  131. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/utils.py +0 -0
  132. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/value_generators/__init__.py +0 -0
  133. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/value_generators/arc4.py +0 -0
  134. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/value_generators/avm.py +0 -0
  135. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/_algopy_testing/value_generators/txn.py +0 -0
  136. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/algopy/__init__.py +0 -0
  137. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/algopy/arc4.py +0 -0
  138. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/algopy/gtxn.py +0 -0
  139. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/algopy/itxn.py +0 -0
  140. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/algopy/op.py +0 -0
  141. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/algopy/py.typed +0 -0
  142. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/algopy_testing/__init__.py +0 -0
  143. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/src/algopy_testing/py.typed +0 -0
  144. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/templates/.macros.j2 +0 -0
  145. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/templates/.release_notes.md.j2 +0 -0
  146. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/templates/CHANGELOG.md.j2 +0 -0
  147. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/__init__.py +0 -0
  148. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/__init__.py +0 -0
  149. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/conftest.py +0 -0
  150. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_abi_call.py +0 -0
  151. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_address.py +0 -0
  152. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_arc4_method_signature.py +0 -0
  153. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_bool.py +0 -0
  154. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_dynamic_array.py +0 -0
  155. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_dynamic_bytes.py +0 -0
  156. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_emit.py +0 -0
  157. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_static_array.py +0 -0
  158. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_string.py +0 -0
  159. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_struct.py +0 -0
  160. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_ufixednxm.py +0 -0
  161. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/arc4/test_uintn.py +0 -0
  162. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4ABIMethod/__init__.py +0 -0
  163. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4ABIMethod/contract.py +0 -0
  164. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.approval.teal +0 -0
  165. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.arc32.json +0 -0
  166. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.clear.teal +0 -0
  167. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4InnerTxns/__init__.py +0 -0
  168. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4InnerTxns/contract.py +0 -0
  169. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.approval.teal +0 -0
  170. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.arc32.json +0 -0
  171. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.clear.teal +0 -0
  172. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4PrimitiveOps/__init__.py +0 -0
  173. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4PrimitiveOps/contract.py +0 -0
  174. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.approval.teal +0 -0
  175. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc32.json +0 -0
  176. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.clear.teal +0 -0
  177. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/__init__.py +0 -0
  178. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/data/Contract.approval.teal +0 -0
  179. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/data/Contract.arc32.json +0 -0
  180. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/data/Contract.clear.teal +0 -0
  181. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/data/ImmutableArrayContract.approval.teal +0 -0
  182. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/data/ImmutableArrayContract.arc32.json +0 -0
  183. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/data/ImmutableArrayContract.clear.teal +0 -0
  184. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/data/StaticSizeContract.approval.teal +0 -0
  185. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/data/StaticSizeContract.arc32.json +0 -0
  186. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/data/StaticSizeContract.clear.teal +0 -0
  187. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/immutable.py +0 -0
  188. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/static_size.py +0 -0
  189. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Arrays/uint64.py +0 -0
  190. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/BoxContract/__init__.py +0 -0
  191. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/BoxContract/contract.py +0 -0
  192. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/BoxContract/data/BoxContract.approval.teal +0 -0
  193. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/BoxContract/data/BoxContract.arc32.json +0 -0
  194. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/BoxContract/data/BoxContract.clear.teal +0 -0
  195. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Contains/__init__.py +0 -0
  196. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Contains/contract.py +0 -0
  197. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Contains/data/MyContract.approval.teal +0 -0
  198. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/Contains/data/MyContract.clear.teal +0 -0
  199. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CreatedAppAsset/__init__.py +0 -0
  200. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CreatedAppAsset/contract.py +0 -0
  201. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CreatedAppAsset/data/AppCall.approval.teal +0 -0
  202. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CreatedAppAsset/data/AppCall.arc32.json +0 -0
  203. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CreatedAppAsset/data/AppCall.clear.teal +0 -0
  204. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.approval.teal +0 -0
  205. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.arc32.json +0 -0
  206. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.clear.teal +0 -0
  207. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CreatedAppAsset/other.py +0 -0
  208. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CryptoOps/__init__.py +0 -0
  209. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CryptoOps/contract.py +0 -0
  210. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CryptoOps/data/CryptoOpsContract.approval.teal +0 -0
  211. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CryptoOps/data/CryptoOpsContract.arc32.json +0 -0
  212. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/CryptoOps/data/CryptoOpsContract.clear.teal +0 -0
  213. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/GlobalStateValidator/__init__.py +0 -0
  214. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/GlobalStateValidator/contract.py +0 -0
  215. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.approval.teal +0 -0
  216. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.arc32.json +0 -0
  217. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.clear.teal +0 -0
  218. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/MiscellaneousOps/__init__.py +0 -0
  219. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/MiscellaneousOps/contract.py +0 -0
  220. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.approval.teal +0 -0
  221. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.arc32.json +0 -0
  222. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.clear.teal +0 -0
  223. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/PrimitiveOps/__init__.py +0 -0
  224. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/PrimitiveOps/contract.py +0 -0
  225. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.approval.teal +0 -0
  226. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.arc32.json +0 -0
  227. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.clear.teal +0 -0
  228. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateMutations/__init__.py +0 -0
  229. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateMutations/data/Contract.approval.teal +0 -0
  230. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateMutations/data/Contract.arc32.json +0 -0
  231. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateMutations/data/Contract.clear.teal +0 -0
  232. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateMutations/data/StateMutations.approval.teal +0 -0
  233. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateMutations/data/StateMutations.arc32.json +0 -0
  234. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateMutations/data/StateMutations.clear.teal +0 -0
  235. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateMutations/statemutations.py +0 -0
  236. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/__init__.py +0 -0
  237. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/contract.py +0 -0
  238. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/GlobalStateContract.approval.teal +0 -0
  239. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/GlobalStateContract.arc32.json +0 -0
  240. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/GlobalStateContract.clear.teal +0 -0
  241. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/ITxnOpsContract.approval.teal +0 -0
  242. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/ITxnOpsContract.arc32.json +0 -0
  243. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/ITxnOpsContract.clear.teal +0 -0
  244. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/LocalStateContract.approval.teal +0 -0
  245. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/LocalStateContract.arc32.json +0 -0
  246. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/LocalStateContract.clear.teal +0 -0
  247. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAcctParamsGet.approval.teal +0 -0
  248. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAcctParamsGet.arc32.json +0 -0
  249. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAcctParamsGet.clear.teal +0 -0
  250. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.approval.teal +0 -0
  251. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.arc32.json +0 -0
  252. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.clear.teal +0 -0
  253. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppGlobalContract.approval.teal +0 -0
  254. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppGlobalContract.arc32.json +0 -0
  255. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppGlobalContract.clear.teal +0 -0
  256. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppGlobalExContract.approval.teal +0 -0
  257. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppGlobalExContract.arc32.json +0 -0
  258. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppGlobalExContract.clear.teal +0 -0
  259. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppLocalContract.approval.teal +0 -0
  260. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppLocalContract.arc32.json +0 -0
  261. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppLocalContract.clear.teal +0 -0
  262. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppLocalExContract.approval.teal +0 -0
  263. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppLocalExContract.arc32.json +0 -0
  264. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppLocalExContract.clear.teal +0 -0
  265. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppParamsContract.approval.teal +0 -0
  266. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppParamsContract.arc32.json +0 -0
  267. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAppParamsContract.clear.teal +0 -0
  268. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAssetHoldingContract.approval.teal +0 -0
  269. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAssetHoldingContract.arc32.json +0 -0
  270. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAssetHoldingContract.clear.teal +0 -0
  271. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAssetParamsContract.approval.teal +0 -0
  272. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAssetParamsContract.arc32.json +0 -0
  273. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/artifacts/StateOps/data/StateAssetParamsContract.clear.teal +0 -0
  274. {algorand_python_testing-0.6.0b2/tests/artifacts → algorand_python_testing-0.6.0b3/tests/artifacts/Tuples}/__init__.py +0 -0
  275. {algorand_python_testing-0.6.0b2/tests/contexts → algorand_python_testing-0.6.0b3/tests/artifacts}/__init__.py +0 -0
  276. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/common.py +0 -0
  277. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/conftest.py +0 -0
  278. {algorand_python_testing-0.6.0b2/tests/models → algorand_python_testing-0.6.0b3/tests/contexts}/__init__.py +0 -0
  279. {algorand_python_testing-0.6.0b2/tests/primitives → algorand_python_testing-0.6.0b3/tests/models}/__init__.py +0 -0
  280. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/models/test_asset.py +0 -0
  281. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/models/test_box.py +0 -0
  282. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/models/test_box_map.py +0 -0
  283. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/models/test_box_ref.py +0 -0
  284. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/models/test_contract.py +0 -0
  285. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/models/test_uenumerate.py +0 -0
  286. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/models/test_urange.py +0 -0
  287. {algorand_python_testing-0.6.0b2/tests/state → algorand_python_testing-0.6.0b3/tests/primitives}/__init__.py +0 -0
  288. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/primitives/conftest.py +0 -0
  289. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/primitives/test_biguint.py +0 -0
  290. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/primitives/test_bytes.py +0 -0
  291. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/primitives/test_string.py +0 -0
  292. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/primitives/test_uint64.py +0 -0
  293. {algorand_python_testing-0.6.0b2/tests/utilities → algorand_python_testing-0.6.0b3/tests/state}/__init__.py +0 -0
  294. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/state/conftest.py +0 -0
  295. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/state/test_global_state.py +0 -0
  296. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/state/test_local_state.py +0 -0
  297. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/state/test_mutations.py +0 -0
  298. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/test_array.py +0 -0
  299. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/test_context.py +0 -0
  300. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/test_miscellaneous_op.py +0 -0
  301. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/test_op.py +0 -0
  302. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/util.py +0 -0
  303. {algorand_python_testing-0.6.0b2/tests/value_generators → algorand_python_testing-0.6.0b3/tests/utilities}/__init__.py +0 -0
  304. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/utilities/conftest.py +0 -0
  305. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/utilities/test_log.py +0 -0
  306. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/tests/utilities/test_size_of.py +0 -0
  307. {algorand_python_testing-0.6.0b2 → algorand_python_testing-0.6.0b3}/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
@@ -1,4 +1,12 @@
1
1
  # CHANGELOG
2
+ ## v0.6.0-beta.3 (2025-05-16)
3
+
4
+ ### Bug fixes
5
+
6
+ * fixes type checking of tuples with primitive types ([`e971ad6`](https://github.com/algorandfoundation/algorand-python-testing/commit/e971ad6b125f269cd0874c09d58d8962f7622f8d))
7
+
8
+ Adds checks to ensure that type validation applies to classes only.
9
+
2
10
  ## v0.6.0-beta.2 (2025-05-15)
3
11
 
4
12
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algorand-python-testing
3
- Version: 0.6.0b2
3
+ Version: 0.6.0b3
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 = "0.6.0-beta.3"
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
@@ -0,0 +1,144 @@
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 deserialize_from_bytes(typ: type[_T], bites: bytes) -> _T:
140
+ serializer = get_native_to_arc4_serializer(typ)
141
+ arc4_value = serializer.arc4_type.from_bytes(bites)
142
+ native_value = serializer.arc4_to_native(arc4_value)
143
+ assert isinstance(native_value, typ)
144
+ return native_value
@@ -2,8 +2,10 @@ import typing
2
2
 
3
3
  import pytest
4
4
  from _algopy_testing import arc4
5
+ from algopy_testing import AlgopyTestContext, algopy_testing_context
5
6
  from algosdk import abi
6
7
 
8
+ from tests.artifacts.Tuples.contract import TuplesContract
7
9
  from tests.util import int_to_bytes
8
10
 
9
11
  _abi_string = "hello"
@@ -15,6 +17,14 @@ _arc4_string = arc4.String("hello")
15
17
  _arc4_uint8 = arc4.UInt8(42)
16
18
  _arc4_bool = arc4.Bool(True)
17
19
 
20
+
21
+ # New fixture
22
+ @pytest.fixture()
23
+ def context() -> typing.Generator[AlgopyTestContext, None, None]:
24
+ with algopy_testing_context() as ctx:
25
+ yield ctx
26
+
27
+
18
28
  _test_data = [
19
29
  (
20
30
  abi.ABIType.from_string("(uint8,bool,bool)"),
@@ -279,3 +289,8 @@ def _compare_abi_and_arc4_values(
279
289
  assert arc4_value.native == abi_value
280
290
  else:
281
291
  assert arc4_value.bytes == int_to_bytes(abi_value, len(arc4_value.bytes))
292
+
293
+
294
+ def test_tuple_return_with_primitive_type(context: AlgopyTestContext) -> None: # noqa: ARG001
295
+ contract = TuplesContract()
296
+ contract.test_tuple_with_primitive_type()
@@ -0,0 +1,11 @@
1
+ from algopy import (
2
+ ARC4Contract,
3
+ UInt64,
4
+ arc4,
5
+ )
6
+
7
+
8
+ class TuplesContract(ARC4Contract, avm_version=11):
9
+ @arc4.abimethod()
10
+ def test_tuple_with_primitive_type(self) -> tuple[UInt64, bool]:
11
+ return (UInt64(0), True)
@@ -0,0 +1,42 @@
1
+ #pragma version 11
2
+ #pragma typetrack false
3
+
4
+ // algopy.arc4.ARC4Contract.approval_program() -> uint64:
5
+ main:
6
+ // tests/artifacts/Tuples/contract.py:8
7
+ // class TuplesContract(ARC4Contract, avm_version=11):
8
+ txn NumAppArgs
9
+ bz main_bare_routing@6
10
+ pushbytes 0x7229d79a // method "test_tuple_with_primitive_type()(uint64,bool)"
11
+ txna ApplicationArgs 0
12
+ match main_test_tuple_with_primitive_type_route@3
13
+
14
+ main_after_if_else@10:
15
+ // tests/artifacts/Tuples/contract.py:8
16
+ // class TuplesContract(ARC4Contract, avm_version=11):
17
+ pushint 0 // 0
18
+ return
19
+
20
+ main_test_tuple_with_primitive_type_route@3:
21
+ // tests/artifacts/Tuples/contract.py:9
22
+ // @arc4.abimethod()
23
+ txn OnCompletion
24
+ !
25
+ assert // OnCompletion is not NoOp
26
+ txn ApplicationID
27
+ assert // can only call when not creating
28
+ pushbytes 0x151f7c75000000000000000080
29
+ log
30
+ pushint 1 // 1
31
+ return
32
+
33
+ main_bare_routing@6:
34
+ // tests/artifacts/Tuples/contract.py:8
35
+ // class TuplesContract(ARC4Contract, avm_version=11):
36
+ txn OnCompletion
37
+ bnz main_after_if_else@10
38
+ txn ApplicationID
39
+ !
40
+ assert // can only call when creating
41
+ pushint 1 // 1
42
+ return
@@ -0,0 +1,50 @@
1
+ {
2
+ "hints": {
3
+ "test_tuple_with_primitive_type()(uint64,bool)": {
4
+ "call_config": {
5
+ "no_op": "CALL"
6
+ }
7
+ }
8
+ },
9
+ "source": {
10
+ "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9UdXBsZXMvY29udHJhY3QucHk6OAogICAgLy8gY2xhc3MgVHVwbGVzQ29udHJhY3QoQVJDNENvbnRyYWN0LCBhdm1fdmVyc2lvbj0xMSk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdANgogICAgcHVzaGJ5dGVzIDB4NzIyOWQ3OWEgLy8gbWV0aG9kICJ0ZXN0X3R1cGxlX3dpdGhfcHJpbWl0aXZlX3R5cGUoKSh1aW50NjQsYm9vbCkiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3Rlc3RfdHVwbGVfd2l0aF9wcmltaXRpdmVfdHlwZV9yb3V0ZUAzCgptYWluX2FmdGVyX2lmX2Vsc2VAMTA6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvVHVwbGVzL2NvbnRyYWN0LnB5OjgKICAgIC8vIGNsYXNzIFR1cGxlc0NvbnRyYWN0KEFSQzRDb250cmFjdCwgYXZtX3ZlcnNpb249MTEpOgogICAgcHVzaGludCAwIC8vIDAKICAgIHJldHVybgoKbWFpbl90ZXN0X3R1cGxlX3dpdGhfcHJpbWl0aXZlX3R5cGVfcm91dGVAMzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9UdXBsZXMvY29udHJhY3QucHk6OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUwMDAwMDAwMDAwMDAwMDAwODAKICAgIGxvZwogICAgcHVzaGludCAxIC8vIDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdANjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9UdXBsZXMvY29udHJhY3QucHk6OAogICAgLy8gY2xhc3MgVHVwbGVzQ29udHJhY3QoQVJDNENvbnRyYWN0LCBhdm1fdmVyc2lvbj0xMSk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDEwCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBjcmVhdGluZwogICAgcHVzaGludCAxIC8vIDEKICAgIHJldHVybgo=",
11
+ "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K"
12
+ },
13
+ "state": {
14
+ "global": {
15
+ "num_byte_slices": 0,
16
+ "num_uints": 0
17
+ },
18
+ "local": {
19
+ "num_byte_slices": 0,
20
+ "num_uints": 0
21
+ }
22
+ },
23
+ "schema": {
24
+ "global": {
25
+ "declared": {},
26
+ "reserved": {}
27
+ },
28
+ "local": {
29
+ "declared": {},
30
+ "reserved": {}
31
+ }
32
+ },
33
+ "contract": {
34
+ "name": "TuplesContract",
35
+ "methods": [
36
+ {
37
+ "name": "test_tuple_with_primitive_type",
38
+ "args": [],
39
+ "readonly": false,
40
+ "returns": {
41
+ "type": "(uint64,bool)"
42
+ }
43
+ }
44
+ ],
45
+ "networks": {}
46
+ },
47
+ "bare_call_config": {
48
+ "no_op": "CREATE"
49
+ }
50
+ }
@@ -0,0 +1,102 @@
1
+ {
2
+ "name": "TuplesContract",
3
+ "structs": {},
4
+ "methods": [
5
+ {
6
+ "name": "test_tuple_with_primitive_type",
7
+ "args": [],
8
+ "returns": {
9
+ "type": "(uint64,bool)"
10
+ },
11
+ "actions": {
12
+ "create": [],
13
+ "call": [
14
+ "NoOp"
15
+ ]
16
+ },
17
+ "readonly": false,
18
+ "events": [],
19
+ "recommendations": {}
20
+ }
21
+ ],
22
+ "arcs": [
23
+ 22,
24
+ 28
25
+ ],
26
+ "networks": {},
27
+ "state": {
28
+ "schema": {
29
+ "global": {
30
+ "ints": 0,
31
+ "bytes": 0
32
+ },
33
+ "local": {
34
+ "ints": 0,
35
+ "bytes": 0
36
+ }
37
+ },
38
+ "keys": {
39
+ "global": {},
40
+ "local": {},
41
+ "box": {}
42
+ },
43
+ "maps": {
44
+ "global": {},
45
+ "local": {},
46
+ "box": {}
47
+ }
48
+ },
49
+ "bareActions": {
50
+ "create": [
51
+ "NoOp"
52
+ ],
53
+ "call": []
54
+ },
55
+ "sourceInfo": {
56
+ "approval": {
57
+ "sourceInfo": [
58
+ {
59
+ "pc": [
60
+ 25
61
+ ],
62
+ "errorMessage": "OnCompletion is not NoOp"
63
+ },
64
+ {
65
+ "pc": [
66
+ 56
67
+ ],
68
+ "errorMessage": "can only call when creating"
69
+ },
70
+ {
71
+ "pc": [
72
+ 28
73
+ ],
74
+ "errorMessage": "can only call when not creating"
75
+ }
76
+ ],
77
+ "pcOffsetMethod": "none"
78
+ },
79
+ "clear": {
80
+ "sourceInfo": [],
81
+ "pcOffsetMethod": "none"
82
+ }
83
+ },
84
+ "source": {
85
+ "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9UdXBsZXMvY29udHJhY3QucHk6OAogICAgLy8gY2xhc3MgVHVwbGVzQ29udHJhY3QoQVJDNENvbnRyYWN0LCBhdm1fdmVyc2lvbj0xMSk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdANgogICAgcHVzaGJ5dGVzIDB4NzIyOWQ3OWEgLy8gbWV0aG9kICJ0ZXN0X3R1cGxlX3dpdGhfcHJpbWl0aXZlX3R5cGUoKSh1aW50NjQsYm9vbCkiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3Rlc3RfdHVwbGVfd2l0aF9wcmltaXRpdmVfdHlwZV9yb3V0ZUAzCgptYWluX2FmdGVyX2lmX2Vsc2VAMTA6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvVHVwbGVzL2NvbnRyYWN0LnB5OjgKICAgIC8vIGNsYXNzIFR1cGxlc0NvbnRyYWN0KEFSQzRDb250cmFjdCwgYXZtX3ZlcnNpb249MTEpOgogICAgcHVzaGludCAwIC8vIDAKICAgIHJldHVybgoKbWFpbl90ZXN0X3R1cGxlX3dpdGhfcHJpbWl0aXZlX3R5cGVfcm91dGVAMzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9UdXBsZXMvY29udHJhY3QucHk6OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUwMDAwMDAwMDAwMDAwMDAwODAKICAgIGxvZwogICAgcHVzaGludCAxIC8vIDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdANjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9UdXBsZXMvY29udHJhY3QucHk6OAogICAgLy8gY2xhc3MgVHVwbGVzQ29udHJhY3QoQVJDNENvbnRyYWN0LCBhdm1fdmVyc2lvbj0xMSk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDEwCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBjcmVhdGluZwogICAgcHVzaGludCAxIC8vIDEKICAgIHJldHVybgo=",
86
+ "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K"
87
+ },
88
+ "byteCode": {
89
+ "approval": "CzEbQQAqgARyKdeaNhoAjgEAA4EAQzEZFEQxGESADRUffHUAAAAAAAAAAICwgQFDMRlA/94xGBREgQFD",
90
+ "clear": "C4EBQw=="
91
+ },
92
+ "compilerInfo": {
93
+ "compiler": "puya",
94
+ "compilerVersion": {
95
+ "major": 4,
96
+ "minor": 8,
97
+ "patch": 1
98
+ }
99
+ },
100
+ "events": [],
101
+ "templateVariables": {}
102
+ }
@@ -0,0 +1,7 @@
1
+ #pragma version 11
2
+ #pragma typetrack false
3
+
4
+ // algopy.arc4.ARC4Contract.clear_state_program() -> uint64:
5
+ main:
6
+ pushint 1 // 1
7
+ return
@@ -1,47 +0,0 @@
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: Run tests (codebase)
41
- run: hatch run tests
42
-
43
- - name: Run tests (examples)
44
- run: hatch run examples:tests
45
-
46
- - name: Check doctests
47
- run: hatch run docs:test