algorand-python-testing 0.3.0b6__tar.gz → 0.3.0b8__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 (276) hide show
  1. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/CHANGELOG.md +8 -0
  2. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/PKG-INFO +1 -1
  3. algorand_python_testing-0.3.0b8/docs/api.md +31 -0
  4. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/conf.py +5 -1
  5. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/coverage.md +1 -4
  6. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/testing-guide/arc4-types.md +0 -1
  7. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/testing-guide/avm-types.md +0 -1
  8. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/testing-guide/opcodes.md +23 -28
  9. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/testing-guide/signature-testing.md +0 -1
  10. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/testing-guide/state-management.md +0 -1
  11. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/testing-guide/transactions.md +2 -2
  12. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/zk_whitelist/test_contract.py +1 -2
  13. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/pyproject.toml +9 -10
  14. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/__init__.py +14 -15
  15. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/arc4.py +20 -38
  16. algorand_python_testing-0.3.0b6/src/algopy_testing/_compiled.py → algorand_python_testing-0.3.0b8/src/_algopy_testing/compiled.py +1 -1
  17. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/context.py +2 -2
  18. algorand_python_testing-0.3.0b8/src/_algopy_testing/context_helpers/__init__.py +13 -0
  19. {algorand_python_testing-0.3.0b6/src/algopy_testing/_context_helpers → algorand_python_testing-0.3.0b8/src/_algopy_testing/context_helpers}/context_storage.py +14 -9
  20. {algorand_python_testing-0.3.0b6/src/algopy_testing/_context_helpers → algorand_python_testing-0.3.0b8/src/_algopy_testing/context_helpers}/ledger_context.py +12 -12
  21. {algorand_python_testing-0.3.0b6/src/algopy_testing/_context_helpers → algorand_python_testing-0.3.0b8/src/_algopy_testing/context_helpers}/txn_context.py +41 -31
  22. algorand_python_testing-0.3.0b8/src/_algopy_testing/decorators/__init__.py +8 -0
  23. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/decorators/arc4.py +61 -57
  24. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/enums.py +1 -1
  25. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/gtxn.py +7 -7
  26. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/itxn.py +5 -5
  27. algorand_python_testing-0.3.0b6/src/algopy_testing/_itxn_loader.py → algorand_python_testing-0.3.0b8/src/_algopy_testing/itxn_loader.py +2 -2
  28. algorand_python_testing-0.3.0b8/src/_algopy_testing/models/__init__.py +21 -0
  29. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/models/account.py +6 -6
  30. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/models/application.py +5 -5
  31. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/models/asset.py +3 -3
  32. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/models/contract.py +43 -44
  33. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/models/template_variable.py +1 -1
  34. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/models/txn_fields.py +8 -8
  35. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/models/unsigned_builtins.py +1 -1
  36. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/op/__init__.py +7 -7
  37. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/op/block.py +3 -3
  38. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/op/crypto.py +5 -5
  39. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/op/global_values.py +3 -3
  40. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/op/itxn.py +2 -2
  41. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/op/misc.py +7 -7
  42. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/op/pure.py +3 -3
  43. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/op/txn.py +2 -2
  44. algorand_python_testing-0.3.0b8/src/_algopy_testing/primitives/__init__.py +6 -0
  45. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/primitives/biguint.py +5 -5
  46. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/primitives/bytes.py +3 -3
  47. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/primitives/string.py +3 -3
  48. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/primitives/uint64.py +2 -2
  49. algorand_python_testing-0.3.0b8/src/_algopy_testing/state/__init__.py +5 -0
  50. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/state/box.py +29 -25
  51. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/state/global_state.py +4 -4
  52. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/state/local_state.py +5 -5
  53. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/state/utils.py +6 -7
  54. algorand_python_testing-0.3.0b8/src/_algopy_testing/utilities/__init__.py +4 -0
  55. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/utilities/budget.py +1 -1
  56. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/utilities/log.py +6 -6
  57. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/utils.py +13 -28
  58. {algorand_python_testing-0.3.0b6/src/algopy_testing/_value_generators → algorand_python_testing-0.3.0b8/src/_algopy_testing/value_generators}/arc4.py +3 -3
  59. {algorand_python_testing-0.3.0b6/src/algopy_testing/_value_generators → algorand_python_testing-0.3.0b8/src/_algopy_testing/value_generators}/avm.py +20 -21
  60. {algorand_python_testing-0.3.0b6/src/algopy_testing/_value_generators → algorand_python_testing-0.3.0b8/src/_algopy_testing/value_generators}/txn.py +5 -5
  61. algorand_python_testing-0.3.0b8/src/algopy/__init__.py +62 -0
  62. algorand_python_testing-0.3.0b8/src/algopy/arc4.py +5 -0
  63. algorand_python_testing-0.3.0b8/src/algopy/gtxn.py +1 -0
  64. algorand_python_testing-0.3.0b8/src/algopy/itxn.py +1 -0
  65. algorand_python_testing-0.3.0b8/src/algopy/op.py +1 -0
  66. algorand_python_testing-0.3.0b8/src/algopy_testing/__init__.py +25 -0
  67. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_abi_call.py +2 -2
  68. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_address.py +3 -3
  69. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_arc4_method_signature.py +13 -13
  70. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_bool.py +2 -2
  71. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_dynamic_array.py +1 -1
  72. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_dynamic_bytes.py +1 -1
  73. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_emit.py +2 -2
  74. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_static_array.py +1 -1
  75. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_string.py +2 -2
  76. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_struct.py +1 -1
  77. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_tuple.py +1 -1
  78. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_ufixednxm.py +3 -3
  79. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/test_uintn.py +3 -3
  80. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/models/test_asset.py +2 -2
  81. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/models/test_box.py +27 -27
  82. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/models/test_box_map.py +12 -13
  83. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/models/test_box_ref.py +11 -12
  84. algorand_python_testing-0.3.0b8/tests/models/test_contract.py +108 -0
  85. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/models/test_uenumerate.py +2 -2
  86. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/models/test_urange.py +2 -2
  87. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/primitives/test_biguint.py +3 -3
  88. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/primitives/test_bytes.py +2 -2
  89. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/primitives/test_string.py +1 -1
  90. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/primitives/test_uint64.py +1 -1
  91. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/state/test_global_state.py +5 -5
  92. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/state/test_local_state.py +3 -3
  93. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/state/test_mutations.py +4 -4
  94. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/test_context.py +6 -6
  95. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/test_miscellaneous_op.py +1 -1
  96. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/test_op.py +44 -49
  97. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/utilities/test_log.py +3 -3
  98. algorand_python_testing-0.3.0b8/tests/value_generators/__init__.py +0 -0
  99. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/value_generators/test_avm.py +5 -5
  100. algorand_python_testing-0.3.0b6/docs/api.md +0 -14
  101. algorand_python_testing-0.3.0b6/src/algopy/__init__.py +0 -62
  102. algorand_python_testing-0.3.0b6/src/algopy/arc4.py +0 -5
  103. algorand_python_testing-0.3.0b6/src/algopy/gtxn.py +0 -1
  104. algorand_python_testing-0.3.0b6/src/algopy/itxn.py +0 -1
  105. algorand_python_testing-0.3.0b6/src/algopy/op.py +0 -1
  106. algorand_python_testing-0.3.0b6/src/algopy_testing/_context_helpers/__init__.py +0 -13
  107. algorand_python_testing-0.3.0b6/src/algopy_testing/decorators/__init__.py +0 -8
  108. algorand_python_testing-0.3.0b6/src/algopy_testing/models/__init__.py +0 -21
  109. algorand_python_testing-0.3.0b6/src/algopy_testing/primitives/__init__.py +0 -6
  110. algorand_python_testing-0.3.0b6/src/algopy_testing/state/__init__.py +0 -5
  111. algorand_python_testing-0.3.0b6/src/algopy_testing/utilities/__init__.py +0 -4
  112. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.coveragerc +0 -0
  113. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.editorconfig +0 -0
  114. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  115. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  116. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.github/pull_request_template.md +0 -0
  117. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.github/workflows/cd.yaml +0 -0
  118. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.github/workflows/ci.yaml +0 -0
  119. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.github/workflows/gh-pages.yaml +0 -0
  120. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.gitignore +0 -0
  121. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.pre-commit-config.yaml +0 -0
  122. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.vscode/extensions.json +0 -0
  123. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.vscode/launch.json +0 -0
  124. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/.vscode/settings.json +0 -0
  125. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/CONTRIBUTING.md +0 -0
  126. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/LICENSE +0 -0
  127. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/README.md +0 -0
  128. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/Makefile +0 -0
  129. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/__init__.py +0 -0
  130. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/_static/custom.css +0 -0
  131. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/algopy.md +0 -0
  132. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/examples.md +0 -0
  133. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/glossary.md +0 -0
  134. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/index.md +0 -0
  135. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/make.bat +0 -0
  136. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/testing-guide/concepts.md +0 -0
  137. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/testing-guide/contract-testing.md +0 -0
  138. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/testing-guide/index.md +0 -0
  139. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/docs/testing-guide/subroutines.md +0 -0
  140. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/README.md +0 -0
  141. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/__init__.py +0 -0
  142. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/auction/__init__.py +0 -0
  143. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/auction/contract.py +0 -0
  144. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/auction/test_contract.py +0 -0
  145. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/htlc_logicsig/__init__.py +0 -0
  146. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/htlc_logicsig/signature.py +0 -0
  147. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/htlc_logicsig/test_signature.py +0 -0
  148. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/marketplace/__init__.py +0 -0
  149. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/marketplace/contract.py +0 -0
  150. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/marketplace/test_contract.py +0 -0
  151. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/proof_of_attendance/__init__.py +0 -0
  152. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/proof_of_attendance/contract.py +0 -0
  153. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/proof_of_attendance/test_contract.py +0 -0
  154. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/scratch_storage/__init__.py +0 -0
  155. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/scratch_storage/contract.py +0 -0
  156. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/scratch_storage/test_contract.py +0 -0
  157. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/simple_voting/__init__.py +0 -0
  158. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/simple_voting/contract.py +0 -0
  159. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/simple_voting/test_contract.py +0 -0
  160. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/zk_whitelist/__init__.py +0 -0
  161. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/examples/zk_whitelist/contract.py +0 -0
  162. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/scripts/__init__.py +0 -0
  163. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/scripts/check_stubs_cov.py +0 -0
  164. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/scripts/refresh_test_artifacts.py +0 -0
  165. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/scripts/validate_examples.py +0 -0
  166. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/constants.py +0 -0
  167. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/decorators/subroutine.py +0 -0
  168. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/models/logicsig.py +0 -0
  169. /algorand_python_testing-0.3.0b6/src/algopy_testing/_mutable.py → /algorand_python_testing-0.3.0b8/src/_algopy_testing/mutable.py +0 -0
  170. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/op/constants.py +0 -0
  171. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/_algopy_testing}/protocols.py +0 -0
  172. {algorand_python_testing-0.3.0b6/src/algopy → algorand_python_testing-0.3.0b8/src/_algopy_testing}/py.typed +0 -0
  173. {algorand_python_testing-0.3.0b6/src/algopy_testing/_value_generators → algorand_python_testing-0.3.0b8/src/_algopy_testing/value_generators}/__init__.py +0 -0
  174. {algorand_python_testing-0.3.0b6/src/algopy_testing → algorand_python_testing-0.3.0b8/src/algopy}/py.typed +0 -0
  175. /algorand_python_testing-0.3.0b6/tests/__init__.py → /algorand_python_testing-0.3.0b8/src/algopy_testing/py.typed +0 -0
  176. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/templates/.macros.j2 +0 -0
  177. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/templates/.release_notes.md.j2 +0 -0
  178. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/templates/CHANGELOG.md.j2 +0 -0
  179. {algorand_python_testing-0.3.0b6/tests/arc4 → algorand_python_testing-0.3.0b8/tests}/__init__.py +0 -0
  180. {algorand_python_testing-0.3.0b6/tests/artifacts/Arc4ABIMethod → algorand_python_testing-0.3.0b8/tests/arc4}/__init__.py +0 -0
  181. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/arc4/conftest.py +0 -0
  182. {algorand_python_testing-0.3.0b6/tests/artifacts/Arc4InnerTxns → algorand_python_testing-0.3.0b8/tests/artifacts/Arc4ABIMethod}/__init__.py +0 -0
  183. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4ABIMethod/contract.py +0 -0
  184. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.approval.teal +0 -0
  185. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.arc32.json +0 -0
  186. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.clear.teal +0 -0
  187. {algorand_python_testing-0.3.0b6/tests/artifacts/Arc4PrimitiveOps → algorand_python_testing-0.3.0b8/tests/artifacts/Arc4InnerTxns}/__init__.py +0 -0
  188. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4InnerTxns/contract.py +0 -0
  189. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.approval.teal +0 -0
  190. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.arc32.json +0 -0
  191. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.clear.teal +0 -0
  192. {algorand_python_testing-0.3.0b6/tests/artifacts/BoxContract → algorand_python_testing-0.3.0b8/tests/artifacts/Arc4PrimitiveOps}/__init__.py +0 -0
  193. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4PrimitiveOps/contract.py +0 -0
  194. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.approval.teal +0 -0
  195. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc32.json +0 -0
  196. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.clear.teal +0 -0
  197. {algorand_python_testing-0.3.0b6/tests/artifacts/CryptoOps → algorand_python_testing-0.3.0b8/tests/artifacts/BoxContract}/__init__.py +0 -0
  198. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/BoxContract/contract.py +0 -0
  199. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/BoxContract/data/BoxContract.approval.teal +0 -0
  200. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/BoxContract/data/BoxContract.arc32.json +0 -0
  201. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/BoxContract/data/BoxContract.clear.teal +0 -0
  202. {algorand_python_testing-0.3.0b6/tests/artifacts/GlobalStateValidator → algorand_python_testing-0.3.0b8/tests/artifacts/CryptoOps}/__init__.py +0 -0
  203. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/CryptoOps/contract.py +0 -0
  204. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/CryptoOps/data/CryptoOpsContract.approval.teal +0 -0
  205. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/CryptoOps/data/CryptoOpsContract.arc32.json +0 -0
  206. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/CryptoOps/data/CryptoOpsContract.clear.teal +0 -0
  207. {algorand_python_testing-0.3.0b6/tests/artifacts/MiscellaneousOps → algorand_python_testing-0.3.0b8/tests/artifacts/GlobalStateValidator}/__init__.py +0 -0
  208. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/GlobalStateValidator/contract.py +0 -0
  209. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.approval.teal +0 -0
  210. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.arc32.json +0 -0
  211. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.clear.teal +0 -0
  212. {algorand_python_testing-0.3.0b6/tests/artifacts/PrimitiveOps → algorand_python_testing-0.3.0b8/tests/artifacts/MiscellaneousOps}/__init__.py +0 -0
  213. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/MiscellaneousOps/contract.py +0 -0
  214. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.approval.teal +0 -0
  215. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.arc32.json +0 -0
  216. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.clear.teal +0 -0
  217. {algorand_python_testing-0.3.0b6/tests/artifacts/StateMutations → algorand_python_testing-0.3.0b8/tests/artifacts/PrimitiveOps}/__init__.py +0 -0
  218. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/PrimitiveOps/contract.py +0 -0
  219. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.approval.teal +0 -0
  220. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.arc32.json +0 -0
  221. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.clear.teal +0 -0
  222. {algorand_python_testing-0.3.0b6/tests/artifacts/StateOps → algorand_python_testing-0.3.0b8/tests/artifacts/StateMutations}/__init__.py +0 -0
  223. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateMutations/data/Contract.approval.teal +0 -0
  224. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateMutations/data/Contract.arc32.json +0 -0
  225. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateMutations/data/Contract.clear.teal +0 -0
  226. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateMutations/statemutations.py +0 -0
  227. {algorand_python_testing-0.3.0b6/tests/artifacts → algorand_python_testing-0.3.0b8/tests/artifacts/StateOps}/__init__.py +0 -0
  228. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/contract.py +0 -0
  229. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/GlobalStateContract.approval.teal +0 -0
  230. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/GlobalStateContract.arc32.json +0 -0
  231. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/GlobalStateContract.clear.teal +0 -0
  232. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/ITxnOpsContract.approval.teal +0 -0
  233. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/ITxnOpsContract.arc32.json +0 -0
  234. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/ITxnOpsContract.clear.teal +0 -0
  235. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/LocalStateContract.approval.teal +0 -0
  236. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/LocalStateContract.arc32.json +0 -0
  237. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/LocalStateContract.clear.teal +0 -0
  238. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGet.approval.teal +0 -0
  239. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGet.arc32.json +0 -0
  240. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGet.clear.teal +0 -0
  241. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.approval.teal +0 -0
  242. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.arc32.json +0 -0
  243. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.clear.teal +0 -0
  244. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppGlobalContract.approval.teal +0 -0
  245. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppGlobalContract.arc32.json +0 -0
  246. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppGlobalContract.clear.teal +0 -0
  247. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppGlobalExContract.approval.teal +0 -0
  248. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppGlobalExContract.arc32.json +0 -0
  249. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppGlobalExContract.clear.teal +0 -0
  250. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppLocalContract.approval.teal +0 -0
  251. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppLocalContract.arc32.json +0 -0
  252. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppLocalContract.clear.teal +0 -0
  253. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppLocalExContract.approval.teal +0 -0
  254. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppLocalExContract.arc32.json +0 -0
  255. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppLocalExContract.clear.teal +0 -0
  256. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppParamsContract.approval.teal +0 -0
  257. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppParamsContract.arc32.json +0 -0
  258. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAppParamsContract.clear.teal +0 -0
  259. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAssetHoldingContract.approval.teal +0 -0
  260. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAssetHoldingContract.arc32.json +0 -0
  261. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAssetHoldingContract.clear.teal +0 -0
  262. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAssetParamsContract.approval.teal +0 -0
  263. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAssetParamsContract.arc32.json +0 -0
  264. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/artifacts/StateOps/data/StateAssetParamsContract.clear.teal +0 -0
  265. {algorand_python_testing-0.3.0b6/tests/contexts → algorand_python_testing-0.3.0b8/tests/artifacts}/__init__.py +0 -0
  266. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/common.py +0 -0
  267. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/conftest.py +0 -0
  268. {algorand_python_testing-0.3.0b6/tests/models → algorand_python_testing-0.3.0b8/tests/contexts}/__init__.py +0 -0
  269. {algorand_python_testing-0.3.0b6/tests/primitives → algorand_python_testing-0.3.0b8/tests/models}/__init__.py +0 -0
  270. {algorand_python_testing-0.3.0b6/tests/state → algorand_python_testing-0.3.0b8/tests/primitives}/__init__.py +0 -0
  271. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/primitives/conftest.py +0 -0
  272. {algorand_python_testing-0.3.0b6/tests/utilities → algorand_python_testing-0.3.0b8/tests/state}/__init__.py +0 -0
  273. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/state/conftest.py +0 -0
  274. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/util.py +0 -0
  275. {algorand_python_testing-0.3.0b6/tests/value_generators → algorand_python_testing-0.3.0b8/tests/utilities}/__init__.py +0 -0
  276. {algorand_python_testing-0.3.0b6 → algorand_python_testing-0.3.0b8}/tests/utilities/conftest.py +0 -0
@@ -1,4 +1,12 @@
1
1
  # CHANGELOG
2
+ ## v0.3.0-beta.8 (2024-08-22)
3
+
4
+ ### Feature
5
+
6
+ * include ARC4 results in log, and handle > 15 ARC4 arguments (#18) ([`fd83ee8`](https://github.com/algorandfoundation/algorand-python-testing/commit/fd83ee8525a393d4a1a66f20acdb661906d84b51))
7
+
8
+ ## v0.3.0-beta.7 (2024-08-21)
9
+
2
10
  ## v0.3.0-beta.6 (2024-08-21)
3
11
 
4
12
  ### Documentation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: algorand-python-testing
3
- Version: 0.3.0b6
3
+ Version: 0.3.0b8
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
@@ -0,0 +1,31 @@
1
+ # API Reference
2
+
3
+ ## Contexts
4
+
5
+ ```{autodoc2-summary}
6
+ algopy_testing.AlgopyTestContext
7
+ algopy_testing.LedgerContext
8
+ algopy_testing.TransactionContext
9
+ ```
10
+
11
+ ## Value Generators
12
+
13
+ ```{autodoc2-summary}
14
+ algopy_testing.AVMValueGenerator
15
+ algopy_testing.ARC4ValueGenerator
16
+ algopy_testing.TxnValueGenerator
17
+ ```
18
+
19
+ ## Inner transaction loaders
20
+
21
+ ```{autodoc2-summary}
22
+ algopy_testing.ITxnGroupLoader
23
+ algopy_testing.ITxnLoader
24
+ ```
25
+
26
+ ## Utils
27
+
28
+ ```{autodoc2-summary}
29
+ algopy_testing.algopy_testing_context
30
+ algopy_testing.arc4_prefix
31
+ ```
@@ -61,7 +61,11 @@ myst_enable_extensions = ["colon_fence", "fieldlist"]
61
61
  autodoc2_packages = [
62
62
  {
63
63
  "path": "../src/algopy_testing",
64
- "auto_mode": False,
64
+ "auto_mode": True,
65
+ },
66
+ {
67
+ "path": "../src/_algopy_testing",
68
+ "auto_mode": True,
65
69
  },
66
70
  ]
67
71
  autodoc2_render_plugin = "myst"
@@ -1,8 +1,6 @@
1
1
  # Coverage
2
2
 
3
- See which `algorand-python` stubs are implemented by the `algorand-python-testing` library. See the [Concepts](testing-guide/concepts.md#types-of-algopy-stub-implementations) section for more details on the implementation categories.
4
-
5
- Based on the definitions provided and the implementation details in the `src` directory, here is the classification for the abstractions outlined in the table under the `Name` column:
3
+ See which `algorand-python` stubs are implemented by the `algorand-python-testing` library. See the [Concepts](testing-guide/concepts.md#types-of-algopy-stub-implementations) section for more details on the implementation categories. Refer to the [`algorand-python` stubs API](api.md) for the full list of the stubs for which the `algorand-python-testing` library provides implementations referenced in the table below.
6
4
 
7
5
  | Name | Implementation type |
8
6
  | ------------------------------------------- | ------------------- |
@@ -159,4 +157,3 @@ Based on the definitions provided and the implementation details in the `src` di
159
157
  | algopy.op.EllipticCurve | Mockable |
160
158
  | algopy.op.VrfVerify | Mockable |
161
159
  | algopy.op.vrf_verify | Mockable |
162
-
@@ -12,7 +12,6 @@ For all `algopy.arc4` types with and without respective _value generator_, insta
12
12
 
13
13
  ```{testsetup}
14
14
  import algopy
15
- import algopy_testing
16
15
  from algopy_testing import algopy_testing_context
17
16
 
18
17
  # Create the context manager for snippets below
@@ -8,7 +8,6 @@ For 'primitive `algopy` types such as `Account`, `Application`, `Asset`, `UInt64
8
8
 
9
9
  ```{testsetup}
10
10
  import algopy
11
- import algopy_testing
12
11
  from algopy_testing import algopy_testing_context
13
12
 
14
13
  # Create the context manager for snippets below
@@ -6,7 +6,6 @@ The [coverage](coverage.md) file provides a comprehensive list of all opcodes an
6
6
 
7
7
  ```{testsetup}
8
8
  import algopy
9
- import algopy_testing
10
9
  from algopy_testing import algopy_testing_context
11
10
 
12
11
  # Create the context manager for snippets below
@@ -29,7 +28,7 @@ The following opcodes are demonstrated:
29
28
  - `op.ecdsa_verify`
30
29
 
31
30
  ```{testcode}
32
- import algopy.op as op
31
+ from algopy import op
33
32
 
34
33
  # SHA256 hash
35
34
  data = algopy.Bytes(b"Hello, World!")
@@ -59,7 +58,7 @@ The following opcodes are demonstrated:
59
58
  - `op.setbit_uint64`
60
59
 
61
60
  ```{testcode}
62
- import algopy.op as op
61
+ from algopy import op
63
62
 
64
63
  # Addition with carry
65
64
  result, carry = op.addw(algopy.UInt64(2**63), algopy.UInt64(2**63))
@@ -80,7 +79,7 @@ These types necessitate interaction with the transaction context:
80
79
  ### algopy.op.Global
81
80
 
82
81
  ```{testcode}
83
- import algopy.op as op
82
+ from algopy import op
84
83
 
85
84
  class MyContract(algopy.ARC4Contract):
86
85
  @algopy.arc4.abimethod
@@ -102,12 +101,12 @@ assert result == algopy.UInt64(101000)
102
101
  ### algopy.op.Txn
103
102
 
104
103
  ```{testcode}
105
- import algopy.op as op
104
+ from algopy import op
106
105
 
107
106
  class MyContract(algopy.ARC4Contract):
108
107
  @algopy.arc4.abimethod
109
- def check_txn_fields(self) -> algopy.Bytes:
110
- return op.Txn.sender
108
+ def check_txn_fields(self) -> algopy.arc4.Address:
109
+ return algopy.arc4.Address(op.Txn.sender)
111
110
 
112
111
  ... # setup context (below assumes available under 'ctx' variable)
113
112
 
@@ -121,7 +120,7 @@ assert result == custom_sender
121
120
  ### algopy.op.AssetHoldingGet
122
121
 
123
122
  ```{testcode}
124
- import algopy.op as op
123
+ from algopy import op
125
124
 
126
125
  class AssetContract(algopy.ARC4Contract):
127
126
  @algopy.arc4.abimethod
@@ -141,7 +140,7 @@ assert result == algopy.UInt64(5000)
141
140
  ### algopy.op.AppGlobal
142
141
 
143
142
  ```{testcode}
144
- import algopy.op as op
143
+ from algopy import op
145
144
 
146
145
  class StateContract(algopy.ARC4Contract):
147
146
  @algopy.arc4.abimethod
@@ -162,7 +161,7 @@ assert stored_value == 42
162
161
  ### algopy.op.Block
163
162
 
164
163
  ```{testcode}
165
- import algopy.op as op
164
+ from algopy import op
166
165
 
167
166
  class BlockInfoContract(algopy.ARC4Contract):
168
167
  @algopy.arc4.abimethod
@@ -180,7 +179,7 @@ assert seed == algopy.op.itob(123456)
180
179
  ### algopy.op.AcctParamsGet
181
180
 
182
181
  ```{testcode}
183
- import algopy.op as op
182
+ from algopy import op
184
183
 
185
184
  class AccountParamsContract(algopy.ARC4Contract):
186
185
  @algopy.arc4.abimethod
@@ -205,7 +204,7 @@ class AppParamsContract(algopy.ARC4Contract):
205
204
  def get_app_creator(self, app_id: algopy.Application) -> algopy.arc4.Address:
206
205
  creator, exists = algopy.op.AppParamsGet.app_creator(app_id)
207
206
  assert exists
208
- return creator
207
+ return algopy.arc4.Address(creator)
209
208
 
210
209
  ... # setup context (below assumes available under 'ctx' variable)
211
210
 
@@ -218,8 +217,7 @@ assert creator == context.default_sender
218
217
  ### algopy.op.AssetParamsGet
219
218
 
220
219
  ```{testcode}
221
- from algopy_testing import algopy_testing_context
222
- import algopy.op as op
220
+ from algopy import op
223
221
 
224
222
  class AssetParamsContract(algopy.ARC4Contract):
225
223
  @algopy.arc4.abimethod
@@ -239,8 +237,7 @@ assert total == algopy.UInt64(1000000)
239
237
  ### algopy.op.Box
240
238
 
241
239
  ```{testcode}
242
- from algopy_testing import algopy_testing_context
243
- import algopy.op as op
240
+ from algopy import op
244
241
 
245
242
  class BoxStorageContract(algopy.ARC4Contract):
246
243
  @algopy.arc4.abimethod
@@ -329,23 +326,22 @@ assert result == 11
329
326
  ```{testcode}
330
327
  from unittest.mock import patch, MagicMock
331
328
  import algopy
332
- from algopy_testing.primitives import Bytes
333
329
 
334
330
  def test_mock_vrf_verify():
335
- mock_result = (Bytes(b'mock_output'), True)
331
+ mock_result = (algopy.Bytes(b'mock_output'), True)
336
332
  with patch('algopy.op.vrf_verify', return_value=mock_result) as mock_vrf_verify:
337
333
  result = algopy.op.vrf_verify(
338
334
  algopy.op.VrfVerify.VrfAlgorand,
339
- Bytes(b'proof'),
340
- Bytes(b'message'),
341
- Bytes(b'public_key')
335
+ algopy.Bytes(b'proof'),
336
+ algopy.Bytes(b'message'),
337
+ algopy.Bytes(b'public_key')
342
338
  )
343
339
  assert result == mock_result
344
340
  mock_vrf_verify.assert_called_once_with(
345
341
  algopy.op.VrfVerify.VrfAlgorand,
346
- Bytes(b'proof'),
347
- Bytes(b'message'),
348
- Bytes(b'public_key')
342
+ algopy.Bytes(b'proof'),
343
+ algopy.Bytes(b'message'),
344
+ algopy.Bytes(b'public_key')
349
345
  )
350
346
 
351
347
  test_mock_vrf_verify()
@@ -356,19 +352,18 @@ test_mock_vrf_verify()
356
352
  ```{testcode}
357
353
  from unittest.mock import patch, MagicMock
358
354
  import algopy
359
- from algopy_testing.primitives import Bytes
360
355
 
361
356
  def test_mock_elliptic_curve_decompress():
362
- mock_result = (Bytes(b'x_coord'), Bytes(b'y_coord'))
357
+ mock_result = (algopy.Bytes(b'x_coord'), algopy.Bytes(b'y_coord'))
363
358
  with patch('algopy.op.EllipticCurve.decompress', return_value=mock_result) as mock_decompress:
364
359
  result = algopy.op.EllipticCurve.decompress(
365
360
  algopy.op.EC.BN254g1,
366
- Bytes(b'compressed_point')
361
+ algopy.Bytes(b'compressed_point')
367
362
  )
368
363
  assert result == mock_result
369
364
  mock_decompress.assert_called_once_with(
370
365
  algopy.op.EC.BN254g1,
371
- Bytes(b'compressed_point')
366
+ algopy.Bytes(b'compressed_point')
372
367
  )
373
368
 
374
369
  test_mock_elliptic_curve_decompress()
@@ -4,7 +4,6 @@ Test Algorand smart signatures (LogicSigs) with ease using the Algorand Python T
4
4
 
5
5
  ```{testsetup}
6
6
  import algopy
7
- import algopy_testing
8
7
  from algopy_testing import algopy_testing_context
9
8
 
10
9
  # Create the context manager for snippets below
@@ -4,7 +4,6 @@
4
4
 
5
5
  ```{testsetup}
6
6
  import algopy
7
- import algopy_testing
8
7
  from algopy_testing import algopy_testing_context
9
8
 
10
9
  # Create the context manager for snippets below
@@ -115,8 +115,8 @@ from algopy_testing import AlgopyTestContext, algopy_testing_context
115
115
 
116
116
  class SimpleContract(algopy.ARC4Contract):
117
117
  @algopy.arc4.abimethod
118
- def check_sender(self) -> algopy.Bytes:
119
- return algopy.Txn.sender
118
+ def check_sender(self) -> algopy.arc4.Address:
119
+ return algopy.arc4.Address(algopy.Txn.sender)
120
120
  ...
121
121
 
122
122
  # Create a contract instance
@@ -3,8 +3,7 @@ from collections.abc import Generator
3
3
 
4
4
  import algopy
5
5
  import pytest
6
- from algopy_testing import AlgopyTestContext, algopy_testing_context
7
- from algopy_testing.utils import arc4_prefix
6
+ from algopy_testing import AlgopyTestContext, algopy_testing_context, arc4_prefix
8
7
 
9
8
  from .contract import ZkWhitelistContract
10
9
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "algorand-python-testing"
7
- version = "0.3.0-beta.6"
7
+ version = "0.3.0-beta.8"
8
8
  description = 'Algorand Python testing library'
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -41,7 +41,7 @@ Source = "https://github.com/algorandfoundation/puya/tree/main/algopy_testing"
41
41
  allow-direct-references = true
42
42
 
43
43
  [tool.hatch.build.targets.wheel]
44
- packages = ["src/algopy", 'src/algopy_testing']
44
+ packages = ["src/algopy", 'src/algopy_testing', 'src/_algopy_testing']
45
45
 
46
46
  [[tool.hatch.envs.all.matrix]]
47
47
  python = ["3.12"]
@@ -126,7 +126,6 @@ clean_dist = "rm -rf dist"
126
126
 
127
127
  # docs environment
128
128
  [tool.hatch.envs.docs]
129
- detached = true
130
129
  path = ".venv.docs"
131
130
  type = "virtual"
132
131
  python = "3.12"
@@ -141,13 +140,13 @@ dependencies = [
141
140
  "ipykernel",
142
141
  "pytest",
143
142
  "py-algorand-sdk",
144
- "algokit-utils",
145
- "pycryptodomex>=3.6.0,<4",
146
- "pynacl>=1.4.0,<2",
147
- "ecdsa>=0.17.0",
148
- "coincurve>=19.0.1",
149
- "algorand-python",
150
- "algorand-python-testing @ {root:uri}",
143
+ ]
144
+ # environment has algopy_testing included as an editable dependency
145
+ # however it also includes the package dependencies
146
+ # the stubs can't be in the same as the project when it is editable
147
+ # so explicitly remove them
148
+ post-install-commands = [
149
+ "hatch run docs:pip uninstall -y algorand-python",
151
150
  ]
152
151
 
153
152
  [tool.hatch.envs.docs.scripts]
@@ -1,15 +1,12 @@
1
- from algopy_testing import arc4, gtxn, itxn
2
- from algopy_testing._context_helpers.context_storage import algopy_testing_context
3
- from algopy_testing._context_helpers.ledger_context import LedgerContext
4
- from algopy_testing._context_helpers.txn_context import TransactionContext
5
- from algopy_testing._itxn_loader import ITxnGroupLoader, ITxnLoader
6
- from algopy_testing._value_generators.arc4 import ARC4ValueGenerator
7
- from algopy_testing._value_generators.avm import AVMValueGenerator
8
- from algopy_testing._value_generators.txn import TxnValueGenerator
9
- from algopy_testing.context import AlgopyTestContext
10
- from algopy_testing.decorators.subroutine import subroutine
11
- from algopy_testing.enums import OnCompleteAction, TransactionType
12
- from algopy_testing.models import (
1
+ from _algopy_testing import arc4, gtxn, itxn
2
+ from _algopy_testing.context import AlgopyTestContext
3
+ from _algopy_testing.context_helpers.context_storage import algopy_testing_context
4
+ from _algopy_testing.context_helpers.ledger_context import LedgerContext
5
+ from _algopy_testing.context_helpers.txn_context import TransactionContext
6
+ from _algopy_testing.decorators.subroutine import subroutine
7
+ from _algopy_testing.enums import OnCompleteAction, TransactionType
8
+ from _algopy_testing.itxn_loader import ITxnGroupLoader, ITxnLoader
9
+ from _algopy_testing.models import (
13
10
  Account,
14
11
  Application,
15
12
  ARC4Contract,
@@ -22,8 +19,11 @@ from algopy_testing.models import (
22
19
  uenumerate,
23
20
  urange,
24
21
  )
25
- from algopy_testing.primitives import BigUInt, Bytes, String, UInt64
26
- from algopy_testing.state import Box, BoxMap, BoxRef, GlobalState, LocalState
22
+ from _algopy_testing.primitives import BigUInt, Bytes, String, UInt64
23
+ from _algopy_testing.state import Box, BoxMap, BoxRef, GlobalState, LocalState
24
+ from _algopy_testing.value_generators.arc4 import ARC4ValueGenerator
25
+ from _algopy_testing.value_generators.avm import AVMValueGenerator
26
+ from _algopy_testing.value_generators.txn import TxnValueGenerator
27
27
 
28
28
  # TODO: clean up and ensure only algopy_testing namespace specific user facing abstractions
29
29
  # are exposed Only keep the _value_generators, ledger_context, txn_context,
@@ -62,7 +62,6 @@ __all__ = [
62
62
  "gtxn",
63
63
  "itxn",
64
64
  "logicsig",
65
- "op",
66
65
  "subroutine",
67
66
  "uenumerate",
68
67
  "urange",
@@ -8,22 +8,22 @@ import typing
8
8
  import algosdk
9
9
  from Cryptodome.Hash import SHA512
10
10
 
11
- from algopy_testing._mutable import (
12
- MutableBytes,
13
- add_mutable_callback,
14
- set_item_on_mutate,
15
- )
16
- from algopy_testing.constants import (
11
+ from _algopy_testing.constants import (
17
12
  ARC4_RETURN_PREFIX,
18
13
  BITS_IN_BYTE,
19
14
  MAX_UINT64,
20
15
  UINT64_SIZE,
21
16
  UINT512_SIZE,
22
17
  )
23
- from algopy_testing.models.account import Account
24
- from algopy_testing.primitives import Bytes
25
- from algopy_testing.protocols import BytesBacked
26
- from algopy_testing.utils import (
18
+ from _algopy_testing.models.account import Account
19
+ from _algopy_testing.mutable import (
20
+ MutableBytes,
21
+ add_mutable_callback,
22
+ set_item_on_mutate,
23
+ )
24
+ from _algopy_testing.primitives import Bytes
25
+ from _algopy_testing.protocols import BytesBacked
26
+ from _algopy_testing.utils import (
27
27
  as_bytes,
28
28
  as_int,
29
29
  as_int16,
@@ -62,6 +62,8 @@ __all__ = [
62
62
  "UInt8",
63
63
  "UIntN",
64
64
  "abi_call",
65
+ "arc4_create",
66
+ "arc4_update",
65
67
  "arc4_signature",
66
68
  "emit",
67
69
  ]
@@ -216,7 +218,7 @@ class String(_ABIEncoded):
216
218
  f"value must be a string or String type, not {type(value).__name__!r}"
217
219
  )
218
220
 
219
- self._value = len(bytes_value).to_bytes(_ABI_LENGTH_SIZE) + bytes_value
221
+ self._value = as_bytes(_encode_length(len(bytes_value)) + bytes_value)
220
222
 
221
223
  @property
222
224
  def native(self) -> algopy.String:
@@ -533,25 +535,12 @@ class Byte(UIntN[typing.Literal[8]]):
533
535
 
534
536
 
535
537
  UInt8: typing.TypeAlias = UIntN[typing.Literal[8]]
536
- """An ARC4 UInt8."""
537
-
538
538
  UInt16: typing.TypeAlias = UIntN[typing.Literal[16]]
539
- """An ARC4 UInt16."""
540
-
541
539
  UInt32: typing.TypeAlias = UIntN[typing.Literal[32]]
542
- """An ARC4 UInt32."""
543
-
544
540
  UInt64: typing.TypeAlias = UIntN[typing.Literal[64]]
545
- """An ARC4 UInt64."""
546
-
547
541
  UInt128: typing.TypeAlias = BigUIntN[typing.Literal[128]]
548
- """An ARC4 UInt128."""
549
-
550
542
  UInt256: typing.TypeAlias = BigUIntN[typing.Literal[256]]
551
- """An ARC4 UInt256."""
552
-
553
543
  UInt512: typing.TypeAlias = BigUIntN[typing.Literal[512]]
554
- """An ARC4 UInt512."""
555
544
 
556
545
 
557
546
  class _BoolTypeInfo(_TypeInfo):
@@ -665,6 +654,8 @@ class StaticArray(
665
654
  super().__init__()
666
655
  items = _check_is_arc4(_items)
667
656
  for item in items:
657
+ if len(items) != self._type_info.size:
658
+ raise TypeError(f"expected {self._type_info.size} items, not {len(items)}")
668
659
  if self._type_info.item_type != item._type_info:
669
660
  raise TypeError(
670
661
  f"item must be of type {self._type_info.item_type!r}, not {item._type_info!r}"
@@ -735,10 +726,10 @@ class Address(StaticArray[Byte, typing.Literal[32]]):
735
726
  bytes_value = algosdk.encoding.decode_address(value)
736
727
  except Exception as e:
737
728
  raise ValueError(f"cannot encode the following address: {value!r}") from e
729
+ elif isinstance(value, Account):
730
+ bytes_value = value.bytes.value
738
731
  else:
739
- bytes_value = (
740
- value.bytes.value if isinstance(value, Account) else as_bytes(value, max_size=32)
741
- )
732
+ bytes_value = as_bytes(value)
742
733
  if len(bytes_value) != 32:
743
734
  raise ValueError(f"expected 32 bytes, got: {len(bytes_value)}")
744
735
  self._value = bytes_value
@@ -1124,14 +1115,6 @@ class Struct(MutableBytes, _ABIEncoded, metaclass=_StructMeta): # type: ignore[
1124
1115
  tuple_value = tuple_type.from_bytes(value)
1125
1116
  return cls(*tuple_value.native)
1126
1117
 
1127
- @classmethod
1128
- def from_log(cls, log: algopy.Bytes, /) -> typing.Self:
1129
- """Load an ABI type from application logs, checking for the ABI return prefix
1130
- `0x151f7c75`"""
1131
- if log[:4] == ARC4_RETURN_PREFIX:
1132
- return cls.from_bytes(log[4:])
1133
- raise ValueError("ABI return prefix not found")
1134
-
1135
1118
  @property
1136
1119
  def bytes(self) -> algopy.Bytes:
1137
1120
  """Get the underlying bytes[]"""
@@ -1150,7 +1133,6 @@ class ARC4Client:
1150
1133
 
1151
1134
 
1152
1135
  class _ABICall:
1153
-
1154
1136
  def __init__(self, func_name: str) -> None:
1155
1137
  self.func_name = func_name
1156
1138
 
@@ -1175,7 +1157,7 @@ arc4_update = _ABICall("arc4_update")
1175
1157
 
1176
1158
 
1177
1159
  def emit(event: str | Struct, /, *args: object) -> None:
1178
- from algopy_testing.utilities.log import log
1160
+ from _algopy_testing.utilities.log import log
1179
1161
 
1180
1162
  if isinstance(event, str):
1181
1163
  arc4_args = tuple(_cast_arg_as_arc4(arg) for arg in args)
@@ -1213,7 +1195,7 @@ def native_value_to_arc4(value: object) -> _ABIEncoded: # noqa: PLR0911
1213
1195
  if isinstance(value, algopy.String):
1214
1196
  return String(value)
1215
1197
  if isinstance(value, tuple):
1216
- return Tuple(value)
1198
+ return Tuple(tuple(map(native_value_to_arc4, value)))
1217
1199
  raise TypeError(f"Unsupported type: {type(value).__name__}")
1218
1200
 
1219
1201
 
@@ -4,7 +4,7 @@ from __future__ import annotations
4
4
  import dataclasses
5
5
  import typing
6
6
 
7
- from algopy_testing.utils import raise_mocked_function_error
7
+ from _algopy_testing.utils import raise_mocked_function_error
8
8
 
9
9
  if typing.TYPE_CHECKING:
10
10
  from collections.abc import Mapping
@@ -4,8 +4,8 @@ import typing
4
4
 
5
5
  import algosdk
6
6
 
7
- from algopy_testing._context_helpers import LedgerContext, TransactionContext
8
- from algopy_testing._value_generators import AlgopyValueGenerator
7
+ from _algopy_testing.context_helpers import LedgerContext, TransactionContext
8
+ from _algopy_testing.value_generators import AlgopyValueGenerator
9
9
 
10
10
  if typing.TYPE_CHECKING:
11
11
  from collections.abc import Sequence
@@ -0,0 +1,13 @@
1
+ from _algopy_testing.context_helpers.context_storage import (
2
+ algopy_testing_context,
3
+ lazy_context,
4
+ )
5
+ from _algopy_testing.context_helpers.ledger_context import LedgerContext
6
+ from _algopy_testing.context_helpers.txn_context import TransactionContext
7
+
8
+ __all__ = [
9
+ "LedgerContext",
10
+ "TransactionContext",
11
+ "algopy_testing_context",
12
+ "lazy_context",
13
+ ]
@@ -9,13 +9,13 @@ if typing.TYPE_CHECKING:
9
9
 
10
10
  import algopy
11
11
 
12
- from algopy_testing._context_helpers.ledger_context import LedgerContext
13
- from algopy_testing._context_helpers.txn_context import TransactionContext, TransactionGroup
14
- from algopy_testing._value_generators import AlgopyValueGenerator
15
- from algopy_testing.context import AlgopyTestContext
16
- from algopy_testing.models.account import AccountContextData
17
- from algopy_testing.models.application import ApplicationContextData
18
- from algopy_testing.models.asset import AssetFields
12
+ from _algopy_testing.context import AlgopyTestContext
13
+ from _algopy_testing.context_helpers.ledger_context import LedgerContext
14
+ from _algopy_testing.context_helpers.txn_context import TransactionContext, TransactionGroup
15
+ from _algopy_testing.models.account import AccountContextData
16
+ from _algopy_testing.models.application import ApplicationContextData
17
+ from _algopy_testing.models.asset import AssetFields
18
+ from _algopy_testing.value_generators import AlgopyValueGenerator
19
19
 
20
20
  _var: ContextVar[AlgopyTestContext] = ContextVar("_var")
21
21
 
@@ -47,7 +47,7 @@ class _InternalContext:
47
47
  def any(self) -> AlgopyValueGenerator:
48
48
  return self.value.any
49
49
 
50
- def get_active_txn_fields(self) -> dict[str, typing.Any]:
50
+ def get_active_txn_overrides(self) -> dict[str, typing.Any]:
51
51
  active_group = self.txn._active_group
52
52
  if active_group is None:
53
53
  return {}
@@ -97,7 +97,12 @@ def algopy_testing_context(
97
97
  *,
98
98
  default_sender: str | None = None,
99
99
  ) -> Generator[AlgopyTestContext, None, None]:
100
- from algopy_testing.context import AlgopyTestContext
100
+ """Context manager for the AlgopyTestContext.
101
+
102
+ Args:
103
+ default_sender: The default sender for the context.
104
+ """
105
+ from _algopy_testing.context import AlgopyTestContext
101
106
 
102
107
  token = _var.set(
103
108
  AlgopyTestContext(