algorand-python-testing 0.5.0b1__tar.gz → 0.6.0b2__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 (300) hide show
  1. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.vscode/settings.json +1 -2
  2. algorand_python_testing-0.6.0b2/CHANGELOG.md +426 -0
  3. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/PKG-INFO +1 -1
  4. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/coverage.md +2 -1
  5. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/pyproject.toml +1 -1
  6. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/arc4.py +52 -11
  7. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/state/box.py +41 -1
  8. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/utilities/__init__.py +2 -1
  9. algorand_python_testing-0.6.0b2/src/_algopy_testing/utilities/size_of.py +9 -0
  10. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/utils.py +20 -2
  11. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/algopy/__init__.py +2 -1
  12. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/templates/.macros.j2 +1 -1
  13. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_arc4_method_signature.py +8 -0
  14. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/models/test_box.py +139 -0
  15. algorand_python_testing-0.6.0b2/tests/utilities/test_size_of.py +65 -0
  16. algorand_python_testing-0.5.0b1/CHANGELOG.md +0 -96
  17. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.coveragerc +0 -0
  18. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.editorconfig +0 -0
  19. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  20. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  21. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.github/dependabot.yml +0 -0
  22. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.github/pull_request_template.md +0 -0
  23. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.github/workflows/cd.yaml +0 -0
  24. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.github/workflows/ci.yaml +0 -0
  25. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.github/workflows/gh-pages.yaml +0 -0
  26. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.gitignore +0 -0
  27. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.pre-commit-config.yaml +0 -0
  28. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.vscode/extensions.json +0 -0
  29. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/.vscode/launch.json +0 -0
  30. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/CONTRIBUTING.md +0 -0
  31. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/LICENSE +0 -0
  32. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/README.md +0 -0
  33. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/Makefile +0 -0
  34. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/__init__.py +0 -0
  35. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/_static/custom.css +0 -0
  36. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/algopy.md +0 -0
  37. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/api.md +0 -0
  38. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/conf.py +0 -0
  39. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/examples.md +0 -0
  40. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/faq.md +0 -0
  41. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/index.md +0 -0
  42. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/make.bat +0 -0
  43. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/testing-guide/arc4-types.md +0 -0
  44. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/testing-guide/avm-types.md +0 -0
  45. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/testing-guide/concepts.md +0 -0
  46. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/testing-guide/contract-testing.md +0 -0
  47. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/testing-guide/index.md +0 -0
  48. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/testing-guide/opcodes.md +0 -0
  49. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/testing-guide/signature-testing.md +0 -0
  50. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/testing-guide/state-management.md +0 -0
  51. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/testing-guide/subroutines.md +0 -0
  52. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/docs/testing-guide/transactions.md +0 -0
  53. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/README.md +0 -0
  54. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/__init__.py +0 -0
  55. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/auction/__init__.py +0 -0
  56. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/auction/contract.py +0 -0
  57. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/auction/test_contract.py +0 -0
  58. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/htlc_logicsig/__init__.py +0 -0
  59. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/htlc_logicsig/signature.py +0 -0
  60. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/htlc_logicsig/test_signature.py +0 -0
  61. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/marketplace/__init__.py +0 -0
  62. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/marketplace/contract.py +0 -0
  63. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/marketplace/test_contract.py +0 -0
  64. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/proof_of_attendance/__init__.py +0 -0
  65. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/proof_of_attendance/contract.py +0 -0
  66. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/proof_of_attendance/test_contract.py +0 -0
  67. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/scratch_storage/__init__.py +0 -0
  68. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/scratch_storage/contract.py +0 -0
  69. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/scratch_storage/test_contract.py +0 -0
  70. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/simple_voting/__init__.py +0 -0
  71. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/simple_voting/contract.py +0 -0
  72. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/simple_voting/test_contract.py +0 -0
  73. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/zk_whitelist/__init__.py +0 -0
  74. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/zk_whitelist/contract.py +0 -0
  75. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/examples/zk_whitelist/test_contract.py +0 -0
  76. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/scripts/__init__.py +0 -0
  77. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/scripts/check_stubs_cov.py +0 -0
  78. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/scripts/refresh_test_artifacts.py +0 -0
  79. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/scripts/validate_examples.py +0 -0
  80. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/__init__.py +0 -0
  81. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/compiled.py +0 -0
  82. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/constants.py +0 -0
  83. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/context.py +0 -0
  84. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/context_helpers/__init__.py +0 -0
  85. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/context_helpers/context_storage.py +0 -0
  86. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/context_helpers/ledger_context.py +0 -0
  87. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/context_helpers/txn_context.py +0 -0
  88. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/decorators/__init__.py +0 -0
  89. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/decorators/arc4.py +0 -0
  90. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/decorators/subroutine.py +0 -0
  91. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/enums.py +0 -0
  92. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/gtxn.py +0 -0
  93. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/itxn.py +0 -0
  94. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/itxn_loader.py +0 -0
  95. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/models/__init__.py +0 -0
  96. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/models/account.py +0 -0
  97. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/models/application.py +0 -0
  98. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/models/asset.py +0 -0
  99. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/models/contract.py +0 -0
  100. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/models/logicsig.py +0 -0
  101. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/models/template_variable.py +0 -0
  102. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/models/txn_fields.py +0 -0
  103. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/models/unsigned_builtins.py +0 -0
  104. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/mutable.py +0 -0
  105. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/op/__init__.py +0 -0
  106. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/op/block.py +0 -0
  107. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/op/constants.py +0 -0
  108. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/op/crypto.py +0 -0
  109. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/op/global_values.py +0 -0
  110. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/op/itxn.py +0 -0
  111. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/op/misc.py +0 -0
  112. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/op/pure.py +0 -0
  113. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/op/txn.py +0 -0
  114. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/primitives/__init__.py +0 -0
  115. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/primitives/array.py +0 -0
  116. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/primitives/biguint.py +0 -0
  117. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/primitives/bytes.py +0 -0
  118. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/primitives/string.py +0 -0
  119. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/primitives/uint64.py +0 -0
  120. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/protocols.py +0 -0
  121. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/py.typed +0 -0
  122. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/serialize.py +0 -0
  123. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/state/__init__.py +0 -0
  124. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/state/global_state.py +0 -0
  125. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/state/local_state.py +0 -0
  126. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/state/utils.py +0 -0
  127. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/utilities/budget.py +0 -0
  128. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/utilities/log.py +0 -0
  129. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/value_generators/__init__.py +0 -0
  130. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/value_generators/arc4.py +0 -0
  131. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/value_generators/avm.py +0 -0
  132. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/_algopy_testing/value_generators/txn.py +0 -0
  133. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/algopy/arc4.py +0 -0
  134. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/algopy/gtxn.py +0 -0
  135. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/algopy/itxn.py +0 -0
  136. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/algopy/op.py +0 -0
  137. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/algopy/py.typed +0 -0
  138. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/algopy_testing/__init__.py +0 -0
  139. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/src/algopy_testing/py.typed +0 -0
  140. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/templates/.release_notes.md.j2 +0 -0
  141. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/templates/CHANGELOG.md.j2 +0 -0
  142. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/__init__.py +0 -0
  143. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/__init__.py +0 -0
  144. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/conftest.py +0 -0
  145. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_abi_call.py +0 -0
  146. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_address.py +0 -0
  147. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_bool.py +0 -0
  148. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_dynamic_array.py +0 -0
  149. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_dynamic_bytes.py +0 -0
  150. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_emit.py +0 -0
  151. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_static_array.py +0 -0
  152. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_string.py +0 -0
  153. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_struct.py +0 -0
  154. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_tuple.py +0 -0
  155. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_ufixednxm.py +0 -0
  156. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/arc4/test_uintn.py +0 -0
  157. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4ABIMethod/__init__.py +0 -0
  158. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4ABIMethod/contract.py +0 -0
  159. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.approval.teal +0 -0
  160. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.arc32.json +0 -0
  161. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.clear.teal +0 -0
  162. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4InnerTxns/__init__.py +0 -0
  163. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4InnerTxns/contract.py +0 -0
  164. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.approval.teal +0 -0
  165. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.arc32.json +0 -0
  166. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.clear.teal +0 -0
  167. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4PrimitiveOps/__init__.py +0 -0
  168. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4PrimitiveOps/contract.py +0 -0
  169. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.approval.teal +0 -0
  170. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc32.json +0 -0
  171. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.clear.teal +0 -0
  172. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/__init__.py +0 -0
  173. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/data/Contract.approval.teal +0 -0
  174. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/data/Contract.arc32.json +0 -0
  175. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/data/Contract.clear.teal +0 -0
  176. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/data/ImmutableArrayContract.approval.teal +0 -0
  177. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/data/ImmutableArrayContract.arc32.json +0 -0
  178. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/data/ImmutableArrayContract.clear.teal +0 -0
  179. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/data/StaticSizeContract.approval.teal +0 -0
  180. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/data/StaticSizeContract.arc32.json +0 -0
  181. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/data/StaticSizeContract.clear.teal +0 -0
  182. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/immutable.py +0 -0
  183. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/static_size.py +0 -0
  184. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Arrays/uint64.py +0 -0
  185. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/BoxContract/__init__.py +0 -0
  186. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/BoxContract/contract.py +0 -0
  187. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/BoxContract/data/BoxContract.approval.teal +0 -0
  188. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/BoxContract/data/BoxContract.arc32.json +0 -0
  189. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/BoxContract/data/BoxContract.clear.teal +0 -0
  190. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Contains/__init__.py +0 -0
  191. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Contains/contract.py +0 -0
  192. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Contains/data/MyContract.approval.teal +0 -0
  193. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/Contains/data/MyContract.clear.teal +0 -0
  194. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CreatedAppAsset/__init__.py +0 -0
  195. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CreatedAppAsset/contract.py +0 -0
  196. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CreatedAppAsset/data/AppCall.approval.teal +0 -0
  197. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CreatedAppAsset/data/AppCall.arc32.json +0 -0
  198. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CreatedAppAsset/data/AppCall.clear.teal +0 -0
  199. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.approval.teal +0 -0
  200. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.arc32.json +0 -0
  201. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.clear.teal +0 -0
  202. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CreatedAppAsset/other.py +0 -0
  203. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CryptoOps/__init__.py +0 -0
  204. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CryptoOps/contract.py +0 -0
  205. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CryptoOps/data/CryptoOpsContract.approval.teal +0 -0
  206. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CryptoOps/data/CryptoOpsContract.arc32.json +0 -0
  207. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/CryptoOps/data/CryptoOpsContract.clear.teal +0 -0
  208. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/GlobalStateValidator/__init__.py +0 -0
  209. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/GlobalStateValidator/contract.py +0 -0
  210. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.approval.teal +0 -0
  211. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.arc32.json +0 -0
  212. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.clear.teal +0 -0
  213. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/MiscellaneousOps/__init__.py +0 -0
  214. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/MiscellaneousOps/contract.py +0 -0
  215. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.approval.teal +0 -0
  216. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.arc32.json +0 -0
  217. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.clear.teal +0 -0
  218. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/PrimitiveOps/__init__.py +0 -0
  219. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/PrimitiveOps/contract.py +0 -0
  220. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.approval.teal +0 -0
  221. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.arc32.json +0 -0
  222. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.clear.teal +0 -0
  223. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateMutations/__init__.py +0 -0
  224. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateMutations/data/Contract.approval.teal +0 -0
  225. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateMutations/data/Contract.arc32.json +0 -0
  226. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateMutations/data/Contract.clear.teal +0 -0
  227. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateMutations/data/StateMutations.approval.teal +0 -0
  228. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateMutations/data/StateMutations.arc32.json +0 -0
  229. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateMutations/data/StateMutations.clear.teal +0 -0
  230. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateMutations/statemutations.py +0 -0
  231. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/__init__.py +0 -0
  232. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/contract.py +0 -0
  233. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/GlobalStateContract.approval.teal +0 -0
  234. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/GlobalStateContract.arc32.json +0 -0
  235. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/GlobalStateContract.clear.teal +0 -0
  236. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/ITxnOpsContract.approval.teal +0 -0
  237. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/ITxnOpsContract.arc32.json +0 -0
  238. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/ITxnOpsContract.clear.teal +0 -0
  239. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/LocalStateContract.approval.teal +0 -0
  240. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/LocalStateContract.arc32.json +0 -0
  241. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/LocalStateContract.clear.teal +0 -0
  242. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAcctParamsGet.approval.teal +0 -0
  243. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAcctParamsGet.arc32.json +0 -0
  244. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAcctParamsGet.clear.teal +0 -0
  245. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.approval.teal +0 -0
  246. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.arc32.json +0 -0
  247. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.clear.teal +0 -0
  248. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppGlobalContract.approval.teal +0 -0
  249. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppGlobalContract.arc32.json +0 -0
  250. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppGlobalContract.clear.teal +0 -0
  251. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppGlobalExContract.approval.teal +0 -0
  252. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppGlobalExContract.arc32.json +0 -0
  253. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppGlobalExContract.clear.teal +0 -0
  254. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppLocalContract.approval.teal +0 -0
  255. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppLocalContract.arc32.json +0 -0
  256. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppLocalContract.clear.teal +0 -0
  257. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppLocalExContract.approval.teal +0 -0
  258. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppLocalExContract.arc32.json +0 -0
  259. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppLocalExContract.clear.teal +0 -0
  260. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppParamsContract.approval.teal +0 -0
  261. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppParamsContract.arc32.json +0 -0
  262. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAppParamsContract.clear.teal +0 -0
  263. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAssetHoldingContract.approval.teal +0 -0
  264. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAssetHoldingContract.arc32.json +0 -0
  265. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAssetHoldingContract.clear.teal +0 -0
  266. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAssetParamsContract.approval.teal +0 -0
  267. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAssetParamsContract.arc32.json +0 -0
  268. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/StateOps/data/StateAssetParamsContract.clear.teal +0 -0
  269. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/artifacts/__init__.py +0 -0
  270. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/common.py +0 -0
  271. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/conftest.py +0 -0
  272. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/contexts/__init__.py +0 -0
  273. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/models/__init__.py +0 -0
  274. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/models/test_asset.py +0 -0
  275. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/models/test_box_map.py +0 -0
  276. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/models/test_box_ref.py +0 -0
  277. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/models/test_contract.py +0 -0
  278. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/models/test_uenumerate.py +0 -0
  279. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/models/test_urange.py +0 -0
  280. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/primitives/__init__.py +0 -0
  281. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/primitives/conftest.py +0 -0
  282. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/primitives/test_biguint.py +0 -0
  283. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/primitives/test_bytes.py +0 -0
  284. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/primitives/test_string.py +0 -0
  285. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/primitives/test_uint64.py +0 -0
  286. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/state/__init__.py +0 -0
  287. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/state/conftest.py +0 -0
  288. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/state/test_global_state.py +0 -0
  289. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/state/test_local_state.py +0 -0
  290. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/state/test_mutations.py +0 -0
  291. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/test_array.py +0 -0
  292. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/test_context.py +0 -0
  293. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/test_miscellaneous_op.py +0 -0
  294. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/test_op.py +0 -0
  295. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/util.py +0 -0
  296. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/utilities/__init__.py +0 -0
  297. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/utilities/conftest.py +0 -0
  298. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/utilities/test_log.py +0 -0
  299. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/value_generators/__init__.py +0 -0
  300. {algorand_python_testing-0.5.0b1 → algorand_python_testing-0.6.0b2}/tests/value_generators/test_avm.py +0 -0
@@ -17,8 +17,7 @@
17
17
  "python.analysis.typeCheckingMode": "off",
18
18
 
19
19
  "ruff.enable": true,
20
- "ruff.lint.run": "onSave",
21
- "ruff.lint.args": ["--config=pyproject.toml"],
20
+ "ruff.configuration": "pyproject.toml",
22
21
  "ruff.importStrategy": "fromEnvironment",
23
22
  "ruff.fixAll": true, //lint and fix all files in workspace
24
23
  "ruff.organizeImports": true, //organize imports on save
@@ -0,0 +1,426 @@
1
+ # CHANGELOG
2
+ ## v0.6.0-beta.2 (2025-05-15)
3
+
4
+ ### Features
5
+
6
+ * add stubs for box create function ([`1fe6fe5`](https://github.com/algorandfoundation/algorand-python-testing/commit/1fe6fe55358630a6abea2f69406821cb6031a4d5))
7
+
8
+ ## v0.6.0-beta.1 (2025-05-09)
9
+
10
+ ### Features
11
+
12
+ * add stub implementation of algopy.size_of function for calculating static storage size of types ([`98e6816`](https://github.com/algorandfoundation/algorand-python-testing/commit/98e6816a48f1cff206f2c99d1384af1855d352c2))
13
+
14
+ ### Bug fixes
15
+
16
+ * ensure size_of is exported from algopy module ([`01c055a`](https://github.com/algorandfoundation/algorand-python-testing/commit/01c055a4d2bd1fe17324bd91f7a83810900baa4e))
17
+
18
+ ### Documentation
19
+
20
+ * include size_of in coverage doc ([`2c73646`](https://github.com/algorandfoundation/algorand-python-testing/commit/2c7364626357844437fd80b6039c112a87b277bb))
21
+
22
+ ## v0.5.0 (2025-02-20)
23
+
24
+ ## v0.5.0-beta.1 (2025-02-19)
25
+
26
+ ### Features
27
+
28
+ * support `algopy.Array` and `algopy.ImmutableArray` from algorand-python 2.7 ([`fd8d19f`](https://github.com/algorandfoundation/algorand-python-testing/commit/fd8d19f25b9f8e0a48f58ae8f45e4d546b965f83))
29
+
30
+ * support mocking new `algopy.op` functions `falcon_verify`, `mimc`, `online_stake`, `sumhash512` and `VoterParamsGet` ([`83ddcbb`](https://github.com/algorandfoundation/algorand-python-testing/commit/83ddcbb8f83f72a5e0bc247c14e250c55496febf))
31
+
32
+ * update `algopy.op.Block` with fields added in AVM 11 ([`90d857d`](https://github.com/algorandfoundation/algorand-python-testing/commit/90d857d248d7b1b5a4b3791ccb0e10c20c478325))
33
+
34
+ * update `algopy.op.AcctParamsGet` with fields added in AVM 11 ([`059b669`](https://github.com/algorandfoundation/algorand-python-testing/commit/059b6690441e99a709fc47691bcb0e4f2453cd26))
35
+
36
+ * add `avm_version` to `algopy.Contract` class options ([`fc53b0f`](https://github.com/algorandfoundation/algorand-python-testing/commit/fc53b0fda5f0d22b6dbb99abf1ba024284fa52a4))
37
+
38
+ * update `algopy.op.Global` with fields added in AVM 11 ([`0cc9807`](https://github.com/algorandfoundation/algorand-python-testing/commit/0cc9807bbfc7084d54425c40889065ae2fd7d856))
39
+
40
+ * add `algopy.arc4.Struct._replace` introduced in algorand-python 2.5.0 ([`75d6847`](https://github.com/algorandfoundation/algorand-python-testing/commit/75d6847b80498d637c7f0b0e3915afd7af6f132c))
41
+
42
+ * add inline option to subroutine decorator ([`2cc15b3`](https://github.com/algorandfoundation/algorand-python-testing/commit/2cc15b3dc706eb8585b9658bf67b38da215e2e38))
43
+
44
+ ### Bug fixes
45
+
46
+ * add missing mappings for `algopy.op.Txn` members ([`fddfe6f`](https://github.com/algorandfoundation/algorand-python-testing/commit/fddfe6f7ff9d6d4e0434f65e19dd0b0cf2aef6bd))
47
+
48
+ * include `ARC4Contract` in `algopy.arc4` namespace ([`f19d46f`](https://github.com/algorandfoundation/algorand-python-testing/commit/f19d46f5663c9fbe4e9b2e8c3bd1e2f7ddc89c3a))
49
+
50
+ * update `algopy.CompiledContract` and `algopy.CompiledLogicSig` to be NamedTuples ([`84be408`](https://github.com/algorandfoundation/algorand-python-testing/commit/84be4082348e3d89b40a65a69b599594a5531828))
51
+
52
+ * added missing __contains__ implementation for `algopy.Bytes` ([`8b2efa2`](https://github.com/algorandfoundation/algorand-python-testing/commit/8b2efa20b37e3043ac6a228d6706da4203373a7e))
53
+
54
+ ### Documentation
55
+
56
+ * fix doctest example for `algopy.EllipticCurve` ([`7d0bb0d`](https://github.com/algorandfoundation/algorand-python-testing/commit/7d0bb0dfe9a5ea2d67b130fa300fb80cef52fda5))
57
+
58
+ ## v0.4.1 (2024-09-03)
59
+
60
+ ## v0.4.1-beta.1 (2024-09-03)
61
+
62
+ ### Bug fixes
63
+
64
+ * ability to pass kw_only flag to dataclass when defining struct subclass (#23) ([`24bcf9d`](https://github.com/algorandfoundation/algorand-python-testing/commit/24bcf9d8af34eb2675ddf85ce9d71802f82f2d6a))
65
+
66
+ * fix: ability to pass kw_only flag to dataclass when defining struct subclass
67
+
68
+ * chore: add dependabot yaml
69
+
70
+ * chore: adding ability to pass args to struct init subclass
71
+
72
+ ## v0.4.0 (2024-08-27)
73
+
74
+ ## v0.4.0-beta.2 (2024-08-27)
75
+
76
+ ## v0.4.0-beta.1 (2024-08-27)
77
+
78
+ ### Features
79
+
80
+ * add support for frozen on asset holdings, including a new ledger function `update_asset_holdings` for setting asset holding balances and frozen states ([`d777ca0`](https://github.com/algorandfoundation/algorand-python-testing/commit/d777ca0a318a8ade7a20363c9ce77fe8a8bf5d68))
81
+
82
+ * expand accepted types when interacting with accounts, applications and assets ([`f448a97`](https://github.com/algorandfoundation/algorand-python-testing/commit/f448a97cb154c9f90ecf42c599b240f12928af20))
83
+
84
+ wip
85
+
86
+ * replaced `account_exists` with `account_is_funded` as the later is more useful ([`4d08690`](https://github.com/algorandfoundation/algorand-python-testing/commit/4d086903eb93a70ce1d485cdd7b12d8472ef16db))
87
+
88
+ ### Bug fixes
89
+
90
+ * use correct type for Globals.caller_application_id ([`a30d85a`](https://github.com/algorandfoundation/algorand-python-testing/commit/a30d85a4416dfc2c5d901f3ace2265384ef60c01))
91
+
92
+ * do not allow specifying `address` for applications, it is derived from the app_id ([`00fe1bc`](https://github.com/algorandfoundation/algorand-python-testing/commit/00fe1bc8ea247dcc36b01154db36b984b151e396))
93
+
94
+ * do not treat asset and application ids as possible foreign array indexes ([`94a989f`](https://github.com/algorandfoundation/algorand-python-testing/commit/94a989f77169da2ae437c629cd5f4d8a872263f6))
95
+
96
+ * removed incorrect deduction in `algopy.op.balance` ([`76e67c5`](https://github.com/algorandfoundation/algorand-python-testing/commit/76e67c5e3dd1cda388a2a948d452ba89805add6a))
97
+
98
+ * ensure all comparable types return `NotImplemented` when a comparison is not possible ([`b055fa6`](https://github.com/algorandfoundation/algorand-python-testing/commit/b055fa68531e0b7923773ec10c2097a3d64b9dbe))
99
+
100
+ * `arc4_prefix` annotated to also accept `algopy.Bytes` ([`40328ca`](https://github.com/algorandfoundation/algorand-python-testing/commit/40328ca3701b3e255193e206e8a7b1bdb441a346))
101
+
102
+ ### Documentation
103
+
104
+ * include usage of `algopy_testing_context` in README.md quick start ([`4702f60`](https://github.com/algorandfoundation/algorand-python-testing/commit/4702f60cfe7d09956a5ae6dbdcd72da29fdda808))
105
+
106
+ ## v0.3.0 (2024-08-22)
107
+
108
+ ## v0.3.0-beta.10 (2024-08-22)
109
+
110
+ ## v0.3.0-beta.9 (2024-08-22)
111
+
112
+ ## v0.3.0-beta.8 (2024-08-22)
113
+
114
+ ### Features
115
+
116
+ * include ARC4 results in log, and handle > 15 ARC4 arguments (#18) ([`fd83ee8`](https://github.com/algorandfoundation/algorand-python-testing/commit/fd83ee8525a393d4a1a66f20acdb661906d84b51))
117
+
118
+ ## v0.3.0-beta.7 (2024-08-21)
119
+
120
+ ## v0.3.0-beta.6 (2024-08-21)
121
+
122
+ ### Documentation
123
+
124
+ * documentation for initial stable release of `algorand-python-testing` (#8) ([`9d97d0d`](https://github.com/algorandfoundation/algorand-python-testing/commit/9d97d0de5ff9897e642ec3f11a186f2fb95375bb))
125
+
126
+ * docs: wip
127
+
128
+ * chore: refresh pyproject
129
+
130
+ * docs: refining docs (wip)
131
+
132
+ * chore: integrating doctests
133
+
134
+ * docs: revamping docs with latest features
135
+
136
+ * docs: minor consistency with main readme; patching doctests
137
+
138
+ * docs: removing the box from examples
139
+
140
+ * docs: refine op codes section
141
+
142
+ * chore: merge conflicts
143
+
144
+ * chore: apply suggestions from code review
145
+
146
+ Co-authored-by: Daniel McGregor <daniel.mcgregor@makerx.com.au>
147
+
148
+ * docs: addressing docs pr comments
149
+
150
+ ## v0.3.0-beta.5 (2024-08-21)
151
+
152
+ ### Bug fixes
153
+
154
+ * ensure mutable types (ARC4 tuple, array and structs) have their changes propagated back to container-like types (global/local state, boxes, ARC4 mutable types) (#14) ([`1f1f2ea`](https://github.com/algorandfoundation/algorand-python-testing/commit/1f1f2ea43a2f4f906cbcd5709b8e86b5c1f2bc63))
155
+
156
+ * fix: add default __eq__ implementation for ARC4 types
157
+
158
+ * fix: ensure mutable types (ARC4 tuple, array and structs) have their changes propagated back to container-like types (global/local state, boxes, ARC4 mutable types)
159
+
160
+ * feat: add __str__ and __repr__ implementations for ARC4 types
161
+
162
+ * refactor: make ARC4 type_info private
163
+
164
+ * refactor: make ARC4 struct inherit _ABIEncoded
165
+
166
+ * refactor: removing get_app_for_contract; expanding get_app; parsing on_complete
167
+
168
+ ## v0.3.0-beta.4 (2024-08-21)
169
+
170
+ ### Features
171
+
172
+ * rename txn_op_fields to active_txn_overrides to better reflect purpose, add additional checks to ensure crate_group parameters are used correctly ([`973fc28`](https://github.com/algorandfoundation/algorand-python-testing/commit/973fc288836d09ba4657642c980ca9f916d38823))
173
+
174
+ ### Bug fixes
175
+
176
+ * fix equality implementation for Account, to allow comparison with arc4.Address ([`6ec2dd4`](https://github.com/algorandfoundation/algorand-python-testing/commit/6ec2dd4f2b4119987a5ea7c3c670bdd554c4fe30))
177
+
178
+ * ensure new Account's have field defaults populated ([`54432b0`](https://github.com/algorandfoundation/algorand-python-testing/commit/54432b03cef13008b16fab84dcc250824e2e2da1))
179
+
180
+ * ensure Global.current_application* properties match AVM ([`ae84ae2`](https://github.com/algorandfoundation/algorand-python-testing/commit/ae84ae27e49ef977babe7abb10d8994446d6b5f7))
181
+
182
+ * when generating app/asset id's skip any that might already be reserved ([`0bb5eba`](https://github.com/algorandfoundation/algorand-python-testing/commit/0bb5eba3ec75ffdb16cfbac5b3c4837f64f8a58a))
183
+
184
+ ### Documentation
185
+
186
+ * integrating pydoclint; formatting docs; removing docs from stub implementation ([`d729bf9`](https://github.com/algorandfoundation/algorand-python-testing/commit/d729bf9b70ef885cd1b2ef705c4f5e2582d853ab))
187
+
188
+ ## v0.3.0-beta.3 (2024-08-16)
189
+
190
+ ## v0.3.0-beta.2 (2024-08-16)
191
+
192
+ ## v0.3.0-beta.1 (2024-08-14)
193
+
194
+ ### Features
195
+
196
+ * deferred app calls, modular test context, refined access to value generators, numerous fixes/improvements (#4) ([`85dd58a`](https://github.com/algorandfoundation/algorand-python-testing/commit/85dd58a60f56a0737de84dcb549c01ca5a7a2851))
197
+
198
+ * feat: work in progress on asset, application related state ops
199
+
200
+ * test: adding extra tests
201
+
202
+ * feat: extra tests and implementation wrappers around AppLocal
203
+
204
+ * chore: wip
205
+
206
+ * chore: update src/algopy_testing/op.py
207
+
208
+ Co-authored-by: Daniel McGregor <daniel.mcgregor@makerx.com.au>
209
+
210
+ * feat: adding acctparamsget; extra tests; pr comments
211
+
212
+ * refactor: adding final bits around AcctParamsGet; unit tests and fixes
213
+
214
+ * refactor: adding lookup by index to acct/app/asset get ops; tweaking ci
215
+
216
+ * refactor: addressing pr comments
217
+
218
+ * chore: fixing failing test
219
+
220
+ * refactor: simplifying test_context validation
221
+
222
+ * use specific enum types in box example with latest puya version
223
+
224
+ * include box types in algopy_testing
225
+
226
+ * fix inconsistent usage of field names on application fields use state total overrides when determining state totals reduce usage of `import algopy` in implementations
227
+
228
+ * expose fields property on application to aid debugging
229
+
230
+ * added section to CONTRIBUTING.md describing relationship between `algopy` and `algopy_testing`
231
+
232
+ * remove lazy algopy imports from utils remove some unnecessary ignores add TODO
233
+
234
+ * simplify abimethod and add TODO's
235
+
236
+ * add TODO for state totals
237
+
238
+ * add some tests (including currently failing ones) for app transactions
239
+
240
+ * feat: add arc4factory
241
+
242
+ * refactor: ensuring underlying _key is properly reflected on local/global states
243
+
244
+ * refactor: change guards for setting keys to explicitly check for None
245
+
246
+ * refactor: use implementation types in internal mappings
247
+
248
+ * refactor: remove usages of `import algopy` from op.py, remove explicit imports from typing module add TODO's
249
+
250
+ * test: use non-abstract contract base
251
+
252
+ * allow empty box prefix
253
+
254
+ * refactor
255
+
256
+ * use immutable param defaults
257
+
258
+ * fix: handle populating foreign arrays correctly for abi method calls
259
+
260
+ * refactor: remove lazy import algopy
261
+
262
+ * remove irrelevant comment
263
+
264
+ * initialize accounts correctly
265
+
266
+ * build: adding post install command into examples venv in hatch settings
267
+
268
+ * refactor: refine arc4 factory; add corresponding tests
269
+
270
+ * chore: adding the missing clear methods
271
+
272
+ * chore: merging everything from docs branch except docs changes
273
+
274
+ * chore: merge conflicts
275
+
276
+ * refactor: simplify txn implementations provide default values for unspecified txn fields
277
+
278
+ * docs: adding pep257 formatter; using reST docstrings style for context.py
279
+
280
+ * test: adding tests for scratch slots
281
+
282
+ * refactor: renaming set_txn_fields -> scoped_txn_fields
283
+
284
+ * chore: adding `amount` field and open question under TODO;
285
+
286
+ also adding adding get_box_map that reuses get_box but appends the bytes box_map prefix
287
+
288
+ * chore: bumping ruff
289
+
290
+ * refactor: adding context manager for lsig args setup (similar to algopy.Txn)
291
+
292
+ also running latest ruff - some rules are updated
293
+
294
+ * refactor: move helper classes into their own file
295
+
296
+ * refactor: simplify itxn loader
297
+
298
+ * refactor: isolate get_test_context to reduce circular imports
299
+
300
+ * chore: using multiprocessing in refresh test artifacts script
301
+
302
+ * refactor: adding tests for ITxn, ITxnCreate and GITxn, fixing related bugs
303
+
304
+ * refactor: default_creator -> default_sender; setting creator as default_sender
305
+
306
+ * chore: parsing name to op name in ITxn
307
+
308
+ * chore: updating default extension for mypy to use ms-python
309
+
310
+ * test: remove incorrect test and replace with TODO
311
+
312
+ * chore: add TODO about subroutine support
313
+
314
+ * add stricter type checks for primitives
315
+
316
+ * track when contracts are in a "creating" state or not
317
+
318
+ * todos
319
+
320
+ * refactor: moving GITxn class to itxn.py
321
+
322
+ * refactor: generate arc4 signatures from types added more robust system for tracking arc4 types removed unneeded functions on StaticArray
323
+
324
+ * only support native tuples when handling generic aliases in arc4 tuples
325
+
326
+ * refactor: 1/2 adding paged access to clear state program in txn fields
327
+
328
+ * refactor: consolidating txn and itxn related context attributes/methods
329
+
330
+ * minor refactors
331
+
332
+ * support arc4 structs
333
+
334
+ * refactor: simplify logic sig implementation, and remove mapping
335
+
336
+ * refactor: fix itxn op behaviour with program pages, and other array like fields
337
+
338
+ * refactor: simplify account properties
339
+
340
+ * refactor: move crypto ops into their own module
341
+
342
+ * refactor: move pure ops into their own module
343
+
344
+ * refactor: move other misc ops
345
+
346
+ * refactor: consolidating value generators; ledger and txn contexts;
347
+
348
+ * refactor: add active group/txn properties change local/global state storage to store values against the app, not the contract instance add UInt64Backed type to simplify serialization to/from int/bytes
349
+
350
+ * refactor: remove nested private modules, replace usages of get_test_context with lazy_context
351
+
352
+ * refactor: move inner transactions onto transaction group
353
+
354
+ * refactor: remove scoped_lsig_args
355
+
356
+ * refactor: remove maybe_active_app_id
357
+
358
+ * refactor: include bool in test for uint64
359
+
360
+ * refactor: ensure arc4 values always have fully parametrized types
361
+
362
+ * refactor: use _paramatize_type
363
+
364
+ * refactor: addressing TODOs
365
+
366
+ refactor: removing txn from method names inside txn context manager prop
367
+
368
+ chore: restoring initial pre-commit
369
+
370
+ refactor: expanding scoped_execution
371
+
372
+ chore: remove redundant fields
373
+
374
+ chore: addressing minor todos and removing the ones already addressed
375
+
376
+ * refactor: adding unit tests for global/local state with implicit keys
377
+
378
+ * refactor: improving handling of initial value for implicit global/local state keys
379
+
380
+ * test: extra test cases for accessing implicit/explicit keyed local/global state
381
+
382
+ * refactor: wip adding txn_group_for method
383
+
384
+ * chore: fix linting errors
385
+
386
+ * feat: continue with txn_group_for and add a test
387
+
388
+ * chore: remove scoped_txn_fields methods
389
+
390
+ * add some additional TODO's for scoped_execution
391
+
392
+ * remove TODO
393
+
394
+ * expand gaid TODO
395
+
396
+ * tweak op.exit implementation and add TODO
397
+
398
+ * remove arc4 property from AlgopyTestContext
399
+
400
+ * add more TODOs
401
+
402
+ * refactor: addressing TODOs; adding marketplace contract example (devrel bootcamps)
403
+
404
+ * test: fixing failing tests
405
+
406
+ ## v0.2.2-beta.5 (2024-07-30)
407
+
408
+ ### Documentation
409
+
410
+ * patch urls in README.md (#9) ([`eddf612`](https://github.com/algorandfoundation/algorand-python-testing/commit/eddf612b177a2acddf15d58be3f375e99fb6564b))
411
+
412
+ * chore: patch urls in README.md
413
+
414
+ * ci: relaxing rules around paths-ignore
415
+
416
+ * docs: patching old namespace name in readme
417
+
418
+ ## v0.2.2-beta.4 (2024-07-25)
419
+
420
+ ## v0.2.2-beta.3 (2024-07-25)
421
+
422
+ ## v0.2.2-beta.2 (2024-07-25)
423
+
424
+ ## v0.2.2-beta.1 (2024-07-24)
425
+
426
+ ## v0.2.1 (2024-07-10)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algorand-python-testing
3
- Version: 0.5.0b1
3
+ Version: 0.6.0b2
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
@@ -3,7 +3,7 @@
3
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.
4
4
 
5
5
  | Name | Implementation type |
6
- | ------------------------------------------- | ------------------- |
6
+ |---------------------------------------------|---------------------|
7
7
  | algopy.Account | Emulated |
8
8
  | algopy.Application | Emulated |
9
9
  | algopy.Asset | Emulated |
@@ -33,6 +33,7 @@ See which `algorand-python` stubs are implemented by the `algorand-python-testin
33
33
  | algopy.ensure_budget | Emulated |
34
34
  | algopy.log | Emulated |
35
35
  | algopy.logicsig | Emulated |
36
+ | algopy.size_of | Emulated |
36
37
  | algopy.subroutine | Native |
37
38
  | algopy.uenumerate | Native |
38
39
  | algopy.urange | Native |
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "algorand-python-testing"
7
- version = "0.5.0-beta.1"
7
+ version = "0.6.0-beta.2"
8
8
  description = 'Algorand Python testing library'
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -37,7 +37,7 @@ from _algopy_testing.utils import (
37
37
  )
38
38
 
39
39
  if typing.TYPE_CHECKING:
40
- from collections.abc import Iterable, Iterator, Sequence
40
+ from collections.abc import Callable, Iterable, Iterator, Sequence
41
41
 
42
42
  import algopy
43
43
 
@@ -56,24 +56,27 @@ __all__ = [
56
56
  "Struct",
57
57
  "Tuple",
58
58
  "UFixedNxM",
59
- "UInt128",
59
+ "UInt8",
60
60
  "UInt16",
61
- "UInt256",
62
61
  "UInt32",
63
- "UInt512",
64
62
  "UInt64",
65
- "UInt8",
63
+ "UInt128",
64
+ "UInt256",
65
+ "UInt512",
66
66
  "UIntN",
67
67
  "abi_call",
68
68
  "arc4_create",
69
- "arc4_update",
70
69
  "arc4_signature",
70
+ "arc4_update",
71
71
  "emit",
72
72
  ]
73
73
 
74
74
  _ABI_LENGTH_SIZE = 2
75
75
  _TBitSize = typing.TypeVar("_TBitSize", bound=int)
76
76
 
77
+ _P = typing.ParamSpec("_P")
78
+ _R = typing.TypeVar("_R")
79
+
77
80
 
78
81
  class _TypeInfo:
79
82
  @property
@@ -179,12 +182,22 @@ class _ABIEncoded(BytesBacked):
179
182
  return hash(self.bytes)
180
183
 
181
184
 
182
- def arc4_signature(signature: str, /) -> algopy.Bytes:
185
+ def arc4_signature(signature: str | Callable[_P, _R], /) -> algopy.Bytes:
183
186
  """Convert a signature to ARC4 bytes."""
184
187
  import algopy
185
188
 
189
+ from _algopy_testing.decorators.arc4 import get_arc4_metadata
190
+
191
+ if isinstance(signature, str):
192
+ method_signature = signature
193
+ else:
194
+ arc4_signature = get_arc4_metadata(signature).arc4_signature
195
+ if arc4_signature is None:
196
+ raise ValueError("signature not found")
197
+ method_signature = arc4_signature
198
+
186
199
  hashed_signature = SHA512.new(truncate="256")
187
- hashed_signature.update(signature.encode("utf-8"))
200
+ hashed_signature.update(method_signature.encode("utf-8"))
188
201
  return_value = hashed_signature.digest()[:4]
189
202
  return algopy.Bytes(return_value)
190
203
 
@@ -1187,11 +1200,17 @@ def _find_bool(
1187
1200
  ) -> int:
1188
1201
  """Helper function to find consecutive booleans from current index in a tuple."""
1189
1202
  until = 0
1203
+ is_looking_forward = delta > 0
1204
+ is_looking_backward = delta < 0
1190
1205
  values_length = len(values) if isinstance(values, tuple | list) else values.length.value
1191
1206
  while True:
1192
1207
  curr = index + delta * until
1208
+ is_curr_at_end = curr == values_length - 1
1209
+ is_curr_at_start = curr == 0
1193
1210
  if isinstance(values[curr], Bool):
1194
- if curr != values_length - 1 and delta > 0 or curr > 0 and delta < 0:
1211
+ if (is_looking_forward and not is_curr_at_end) or (
1212
+ is_looking_backward and not is_curr_at_start
1213
+ ):
1195
1214
  until += 1
1196
1215
  else:
1197
1216
  break
@@ -1204,11 +1223,17 @@ def _find_bool(
1204
1223
  def _find_bool_types(values: typing.Sequence[_TypeInfo], index: int, delta: int) -> int:
1205
1224
  """Helper function to find consecutive booleans from current index in a tuple."""
1206
1225
  until = 0
1226
+ is_looking_forward = delta > 0
1227
+ is_looking_backward = delta < 0
1207
1228
  values_length = len(values)
1208
1229
  while True:
1209
1230
  curr = index + delta * until
1231
+ is_curr_at_end = curr == values_length - 1
1232
+ is_curr_at_start = curr == 0
1210
1233
  if isinstance(values[curr], _BoolTypeInfo):
1211
- if curr != values_length - 1 and delta > 0 or curr > 0 and delta < 0:
1234
+ if (is_looking_forward and not is_curr_at_end) or (
1235
+ is_looking_backward and not is_curr_at_start
1236
+ ):
1212
1237
  until += 1
1213
1238
  else:
1214
1239
  break
@@ -1231,10 +1256,20 @@ def _compress_multiple_bool(value_list: list[Bool]) -> int:
1231
1256
  return result
1232
1257
 
1233
1258
 
1259
+ def get_max_bytes_static_len(type_info: _TypeInfo) -> int | None:
1260
+ return _get_max_bytes_len_impl(type_info, static_size_only=True)
1261
+
1262
+
1234
1263
  def _get_max_bytes_len(type_info: _TypeInfo) -> int:
1264
+ return _get_max_bytes_len_impl(type_info) or 0
1265
+
1266
+
1267
+ def _get_max_bytes_len_impl(type_info: _TypeInfo, *, static_size_only: bool = False) -> int | None:
1235
1268
  size = 0
1236
1269
  if isinstance(type_info, _DynamicArrayTypeInfo):
1237
1270
  size += _ABI_LENGTH_SIZE
1271
+ if static_size_only:
1272
+ return None
1238
1273
  elif isinstance(type_info, _TupleTypeInfo | _StructTypeInfo | _StaticArrayTypeInfo):
1239
1274
  i = 0
1240
1275
  if isinstance(type_info, _TupleTypeInfo | _StructTypeInfo):
@@ -1251,12 +1286,18 @@ def _get_max_bytes_len(type_info: _TypeInfo) -> int:
1251
1286
  if bool_num % 8 != 0:
1252
1287
  size += 1
1253
1288
  else:
1254
- child_byte_size = _get_max_bytes_len(child_types[i])
1289
+ child_byte_size = _get_max_bytes_len_impl(
1290
+ child_types[i], static_size_only=static_size_only
1291
+ )
1292
+ if child_byte_size is None:
1293
+ return None
1255
1294
  size += child_byte_size
1256
1295
  i += 1
1257
1296
  elif isinstance(type_info, _UIntTypeInfo):
1258
1297
  size = type_info.max_bytes_len
1259
1298
 
1299
+ elif static_size_only:
1300
+ return None
1260
1301
  return size
1261
1302
 
1262
1303
 
@@ -1,13 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import typing
4
+ import warnings
4
5
 
5
6
  import _algopy_testing
6
7
  from _algopy_testing.constants import MAX_BOX_SIZE
7
8
  from _algopy_testing.context_helpers import lazy_context
8
9
  from _algopy_testing.mutable import set_attr_on_mutate, set_item_on_mutate
9
10
  from _algopy_testing.state.utils import cast_from_bytes, cast_to_bytes
10
- from _algopy_testing.utils import as_bytes, as_string
11
+ from _algopy_testing.utils import as_bytes, as_int64, as_string, get_static_size_of
11
12
 
12
13
  _TKey = typing.TypeVar("_TKey")
13
14
  _TValue = typing.TypeVar("_TValue")
@@ -38,6 +39,45 @@ class Box(typing.Generic[_TValue]):
38
39
  def __bool__(self) -> bool:
39
40
  return lazy_context.ledger.box_exists(self.app_id, self.key)
40
41
 
42
+ def create(self, *, size: algopy.UInt64 | int | None = None) -> bool:
43
+ missing_size_err_msg = (
44
+ f"{self._type} does not have a fixed byte size. Please specify a size argument"
45
+ )
46
+
47
+ size_arg = None if size is None else as_int64(size)
48
+ content_type_size = get_static_size_of(self._type)
49
+
50
+ if content_type_size is None and size_arg is None:
51
+ raise ValueError(missing_size_err_msg)
52
+ if content_type_size is not None and size_arg is not None:
53
+ if size_arg < content_type_size:
54
+ warnings.warn(
55
+ f"Box size should not be less than {content_type_size}",
56
+ stacklevel=2,
57
+ )
58
+
59
+ if size_arg > content_type_size:
60
+ warnings.warn(
61
+ f"Size is set to {size_arg} but {self._type} has a fixed size of {content_type_size}", # noqa: E501
62
+ stacklevel=2,
63
+ )
64
+
65
+ size_int = size_arg if size_arg is not None else content_type_size
66
+ assert size_int is not None, missing_size_err_msg
67
+
68
+ if size_int > MAX_BOX_SIZE:
69
+ raise ValueError(f"Box size cannot exceed {MAX_BOX_SIZE}")
70
+
71
+ box_exists = lazy_context.ledger.box_exists(self.app_id, self.key)
72
+ if box_exists:
73
+ if self.length == size_int:
74
+ return False
75
+ else:
76
+ raise ValueError(f"Box already exists with a different size: {self.length}")
77
+
78
+ lazy_context.ledger.set_box(self.app_id, self.key, b"\x00" * size_int)
79
+ return True
80
+
41
81
  @property
42
82
  def key(self) -> algopy.Bytes:
43
83
  if not self._key:
@@ -1,4 +1,5 @@
1
1
  from _algopy_testing.utilities.budget import OpUpFeeSource, ensure_budget
2
2
  from _algopy_testing.utilities.log import log
3
+ from _algopy_testing.utilities.size_of import size_of
3
4
 
4
- __all__ = ["OpUpFeeSource", "ensure_budget", "log"]
5
+ __all__ = ["OpUpFeeSource", "ensure_budget", "log", "size_of"]