algorand-python-testing 1.2.0b6__tar.gz → 1.2.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.
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/CHANGELOG.md +4 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/PKG-INFO +2 -2
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/htlc_logicsig/test_signature.py +2 -3
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/proof_of_attendance/test_contract.py +2 -3
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/pyproject.toml +7 -22
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/arc4.py +5 -5
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/constants.py +2 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/context.py +2 -5
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/context_helpers/ledger_context.py +3 -3
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/context_helpers/txn_context.py +3 -3
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/decorators/arc4.py +7 -14
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/enums.py +7 -7
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/itxn.py +2 -2
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/models/account.py +5 -7
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/models/application.py +2 -2
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/op/crypto.py +9 -6
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/op/global_values.py +4 -4
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/utils.py +21 -4
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/value_generators/arc4.py +3 -4
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/value_generators/avm.py +7 -7
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_address.py +19 -18
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_arc4_method_signature.py +31 -44
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_dynamic_array.py +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_dynamic_bytes.py +2 -2
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_emit.py +2 -4
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_static_array.py +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_struct.py +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_tuple.py +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_ufixednxm.py +15 -7
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_uintn.py +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.approval.teal +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.arc56.json +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/common.py +31 -41
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/conftest.py +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/test_array.py +2 -2
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/test_context.py +2 -2
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/test_op.py +27 -25
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/utilities/test_log.py +2 -4
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/value_generators/test_avm.py +2 -3
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.coveragerc +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.editorconfig +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.github/dependabot.yml +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.github/pull_request_template.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.github/workflows/cd.yaml +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.github/workflows/ci.yaml +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.github/workflows/gh-pages.yaml +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.gitignore +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.pre-commit-config.yaml +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.vscode/extensions.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.vscode/launch.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/.vscode/settings.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/CONTRIBUTING.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/LICENSE +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/README.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/Makefile +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/_static/custom.css +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/algopy.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/api.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/conf.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/coverage.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/examples.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/faq.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/index.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/make.bat +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/testing-guide/arc4-types.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/testing-guide/avm-types.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/testing-guide/concepts.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/testing-guide/contract-testing.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/testing-guide/index.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/testing-guide/opcodes.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/testing-guide/signature-testing.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/testing-guide/state-management.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/testing-guide/subroutines.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/docs/testing-guide/transactions.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/README.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/auction/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/auction/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/auction/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/htlc_logicsig/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/htlc_logicsig/signature.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/marketplace/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/marketplace/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/marketplace/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/proof_of_attendance/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/proof_of_attendance/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/scratch_storage/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/scratch_storage/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/scratch_storage/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/simple_voting/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/simple_voting/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/simple_voting/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/zk_whitelist/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/zk_whitelist/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/examples/zk_whitelist/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/scripts/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/scripts/check_stubs_cov.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/scripts/refresh_test_artifacts.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/scripts/validate_examples.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/compiled.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/context_helpers/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/context_helpers/context_storage.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/decorators/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/decorators/subroutine.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/gtxn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/itxn_loader.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/models/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/models/asset.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/models/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/models/logicsig.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/models/template_variable.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/models/txn_fields.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/models/unsigned_builtins.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/mutable.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/op/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/op/block.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/op/constants.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/op/itxn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/op/misc.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/op/pure.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/op/txn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/primitives/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/primitives/array.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/primitives/biguint.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/primitives/bytes.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/primitives/fixed_bytes.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/primitives/string.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/primitives/uint64.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/protocols.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/py.typed +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/serialize.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/state/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/state/box.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/state/global_map.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/state/global_state.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/state/local_map.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/state/local_state.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/state/utils.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/utilities/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/utilities/budget.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/utilities/log.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/utilities/size_of.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/value_generators/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/value_generators/txn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/algopy/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/algopy/arc4.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/algopy/gtxn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/algopy/itxn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/algopy/op.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/algopy/py.typed +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/algopy_testing/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/algopy_testing/py.typed +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/templates/.macros.j2 +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/templates/.release_notes.md.j2 +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/templates/CHANGELOG.md.j2 +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_abi_call.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_bool.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/arc4/test_string.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/data/Contract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/data/Contract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/data/Contract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/data/ContractV0.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/data/ContractV0.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/data/ContractV0.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/data/ContractV1.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/data/ContractV1.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/AVM12/data/ContractV1.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4ABIMethod/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4ABIMethod/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4InnerTxns/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4InnerTxns/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4PrimitiveOps/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4PrimitiveOps/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/Contract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/Contract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/Contract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/Contract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/DynamicArrayInitContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/DynamicArrayInitContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/DynamicArrayInitContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/ImmutableArrayContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/ImmutableArrayContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/ImmutableArrayContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/ImmutableArrayContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/ImmutableArrayInitContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/ImmutableArrayInitContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/ImmutableArrayInitContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/StaticSizeContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/StaticSizeContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/StaticSizeContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/data/StaticSizeContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/immutable.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/static_size.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Arrays/uint64.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/BoxContract/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/BoxContract/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/BoxContract/data/BoxContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/BoxContract/data/BoxContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/BoxContract/data/BoxContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/BoxContract/data/BoxContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Contains/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Contains/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Contains/data/MyContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Contains/data/MyContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/data/AppCall.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/data/AppCall.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/data/AppCall.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/data/AppCall.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CreatedAppAsset/other.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CryptoOps/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CryptoOps/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CryptoOps/data/CryptoOpsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CryptoOps/data/CryptoOpsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CryptoOps/data/CryptoOpsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/CryptoOps/data/CryptoOpsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/DynamicITxnGroup/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/DynamicITxnGroup/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/DynamicITxnGroup/data/DynamicItxnGroup.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/DynamicITxnGroup/data/DynamicItxnGroup.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/DynamicITxnGroup/data/DynamicItxnGroup.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/DynamicITxnGroup/data/VerifierContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/DynamicITxnGroup/data/VerifierContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/DynamicITxnGroup/data/VerifierContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/DynamicITxnGroup/verifier.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/GlobalStateValidator/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/GlobalStateValidator/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/MiscellaneousOps/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/MiscellaneousOps/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/PrimitiveOps/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/PrimitiveOps/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateMutations/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateMutations/data/Contract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateMutations/data/Contract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateMutations/data/Contract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateMutations/data/StateMutations.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateMutations/data/StateMutations.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateMutations/data/StateMutations.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateMutations/data/StateMutations.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateMutations/statemutations.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/GlobalMapContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/GlobalMapContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/GlobalMapContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/GlobalStateContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/GlobalStateContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/GlobalStateContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/GlobalStateContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/ITxnOpsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/ITxnOpsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/ITxnOpsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/ITxnOpsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/LocalMapContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/LocalMapContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/LocalMapContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/LocalStateContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/LocalStateContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/LocalStateContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/LocalStateContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGet.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGet.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGet.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppGlobalContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppGlobalContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppGlobalContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppGlobalContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppGlobalExContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppGlobalExContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppGlobalExContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppGlobalExContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppLocalContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppLocalContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppLocalContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppLocalContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppLocalExContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppLocalExContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppLocalExContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppLocalExContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppParamsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppParamsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppParamsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAppParamsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAssetHoldingContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAssetHoldingContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAssetHoldingContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAssetHoldingContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAssetParamsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAssetParamsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAssetParamsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/StateOps/data/StateAssetParamsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Tuples/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Tuples/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Tuples/data/TuplesContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Tuples/data/TuplesContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Tuples/data/TuplesContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/Tuples/data/TuplesContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/artifacts/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/avm12/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/avm12/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/avm12/test_avm12.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/contexts/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/dynamic_itxn_group/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/dynamic_itxn_group/test_dynamic_itxn_group.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/models/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/models/test_asset.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/models/test_box.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/models/test_box_map.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/models/test_box_ref.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/models/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/models/test_uenumerate.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/models/test_urange.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/primitives/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/primitives/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/primitives/test_biguint.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/primitives/test_bytes.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/primitives/test_fixed_bytes.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/primitives/test_string.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/primitives/test_uint64.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/state/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/state/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/state/test_global_map.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/state/test_global_state.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/state/test_local_map.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/state/test_local_state.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/state/test_mutations.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/test_miscellaneous_op.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/util.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/utilities/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/utilities/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/utilities/test_size_of.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/tests/value_generators/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: algorand-python-testing
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.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
|
|
@@ -15,11 +15,11 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
16
16
|
Classifier: Topic :: Software Development :: Testing
|
|
17
17
|
Requires-Python: >=3.12
|
|
18
|
+
Requires-Dist: algokit-utils>=5.0.0b1
|
|
18
19
|
Requires-Dist: algorand-python>=3
|
|
19
20
|
Requires-Dist: coincurve>=19.0.1
|
|
20
21
|
Requires-Dist: ecdsa>=0.17.0
|
|
21
22
|
Requires-Dist: pycryptodomex<4,>=3.6.0
|
|
22
|
-
Requires-Dist: pynacl<2,>=1.4.0
|
|
23
23
|
Description-Content-Type: text/markdown
|
|
24
24
|
|
|
25
25
|
<div align="center">
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from collections.abc import Generator
|
|
2
2
|
|
|
3
3
|
import algopy
|
|
4
|
-
import algosdk
|
|
5
4
|
import pytest
|
|
6
5
|
from algopy_testing import AlgopyTestContext, algopy_testing_context
|
|
7
6
|
|
|
@@ -21,8 +20,8 @@ def test_seller_receives_payment(context: AlgopyTestContext) -> None:
|
|
|
21
20
|
context.any.txn.payment(
|
|
22
21
|
fee=algopy.UInt64(500),
|
|
23
22
|
first_valid=algopy.UInt64(1000),
|
|
24
|
-
close_remainder_to=algopy.Account(
|
|
25
|
-
rekey_to=algopy.Account(
|
|
23
|
+
close_remainder_to=algopy.Account(),
|
|
24
|
+
rekey_to=algopy.Account(),
|
|
26
25
|
receiver=algopy.Account(
|
|
27
26
|
"6ZHGHH5Z5CTPCF5WCESXMGRSVK7QJETR63M3NY5FJCUYDHO57VTCMJOBGY"
|
|
28
27
|
),
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from collections.abc import Generator
|
|
2
2
|
|
|
3
3
|
import algopy
|
|
4
|
-
import algosdk
|
|
5
4
|
import pytest
|
|
6
5
|
from algopy_testing import AlgopyTestContext, algopy_testing_context
|
|
7
6
|
|
|
@@ -81,8 +80,8 @@ def test_claim_poa(
|
|
|
81
80
|
opt_in_txn = context.any.txn.asset_transfer(
|
|
82
81
|
sender=context.default_sender,
|
|
83
82
|
asset_receiver=context.default_sender,
|
|
84
|
-
asset_close_to=algopy.Account(
|
|
85
|
-
rekey_to=algopy.Account(
|
|
83
|
+
asset_close_to=algopy.Account(),
|
|
84
|
+
rekey_to=algopy.Account(),
|
|
86
85
|
xfer_asset=dummy_poa,
|
|
87
86
|
fee=algopy.UInt64(0),
|
|
88
87
|
asset_amount=algopy.UInt64(0),
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "algorand-python-testing"
|
|
7
|
-
version = "1.2.0-beta.
|
|
7
|
+
version = "1.2.0-beta.8"
|
|
8
8
|
description = 'Algorand Python testing library'
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -21,16 +21,11 @@ classifiers = [
|
|
|
21
21
|
"Programming Language :: Python :: 3.13",
|
|
22
22
|
]
|
|
23
23
|
dependencies = [
|
|
24
|
-
# ==========================================================================
|
|
25
|
-
# Below is used for implementing algopy crypto ops matching AVM.
|
|
26
|
-
# Versions pinned for compatibility with py-algorand-sdk pre reqs
|
|
27
|
-
# https://github.com/algorand/py-algorand-sdk/blob/master/setup.py
|
|
28
|
-
# ==========================================================================
|
|
29
24
|
"pycryptodomex>=3.6.0,<4",
|
|
30
|
-
"pynacl>=1.4.0,<2",
|
|
31
25
|
"ecdsa>=0.17.0",
|
|
32
26
|
"coincurve>=19.0.1",
|
|
33
|
-
"algorand-python>=3",
|
|
27
|
+
"algorand-python>=3",
|
|
28
|
+
"algokit-utils>=5.0.0b1",
|
|
34
29
|
]
|
|
35
30
|
|
|
36
31
|
[project.urls]
|
|
@@ -50,12 +45,10 @@ type = "virtual"
|
|
|
50
45
|
path = ".venv"
|
|
51
46
|
python = "3.12"
|
|
52
47
|
dependencies = [
|
|
53
|
-
"puyapy>=5.
|
|
48
|
+
"puyapy>=5.8.0",
|
|
54
49
|
"pytest>=7.4",
|
|
55
50
|
"pytest-mock>=3.10.0",
|
|
56
51
|
"pytest-xdist[psutil]>=3.3",
|
|
57
|
-
"py-algorand-sdk>=2.4.0",
|
|
58
|
-
"algokit-utils>=4.0.0",
|
|
59
52
|
"pytest-cov>=4.1.0",
|
|
60
53
|
"prettytable>=3.9.0",
|
|
61
54
|
"mypy==1.19.1",
|
|
@@ -130,9 +123,7 @@ dependencies = [
|
|
|
130
123
|
"pytest-mock>=3.10.0",
|
|
131
124
|
"pytest-xdist[psutil]>=3.3",
|
|
132
125
|
"pytest-cov>=4.1.0",
|
|
133
|
-
"
|
|
134
|
-
"algokit-utils>=4.0.0",
|
|
135
|
-
"puyapy>=5.7.1",
|
|
126
|
+
"puyapy>=5.8.0",
|
|
136
127
|
]
|
|
137
128
|
|
|
138
129
|
[tool.hatch.envs.test.scripts]
|
|
@@ -157,7 +148,6 @@ dependencies = [
|
|
|
157
148
|
"sphinx-mermaid",
|
|
158
149
|
"ipykernel",
|
|
159
150
|
"pytest",
|
|
160
|
-
"py-algorand-sdk",
|
|
161
151
|
]
|
|
162
152
|
# environment has algopy_testing included as an editable dependency
|
|
163
153
|
# however it also includes the package dependencies
|
|
@@ -183,12 +173,9 @@ post-install-commands = [
|
|
|
183
173
|
"hatch run examples:reload_algopy_testing",
|
|
184
174
|
]
|
|
185
175
|
dependencies = [
|
|
186
|
-
"algorand-python>=3",
|
|
187
176
|
"pytest>=7.4",
|
|
188
177
|
"pytest-mock>=3.10.0",
|
|
189
178
|
"pytest-xdist[psutil]>=3.3",
|
|
190
|
-
"py-algorand-sdk>=2.4.0",
|
|
191
|
-
"algokit-utils>=4.0.0",
|
|
192
179
|
"pytest-cov>=4.1.0",
|
|
193
180
|
"mypy==1.19.1",
|
|
194
181
|
]
|
|
@@ -276,7 +263,7 @@ ignore = [
|
|
|
276
263
|
"RET503", # false negatives when involving typing.Never, covered by mypy anyway
|
|
277
264
|
"RET504",
|
|
278
265
|
"RET505", # stylistic choices for readability
|
|
279
|
-
"S101", # allow asserts
|
|
266
|
+
"S101", # allow asserts
|
|
280
267
|
"C901", # allow >10 args in a method
|
|
281
268
|
"N805", # allow using `cls` as a firstparameter name
|
|
282
269
|
]
|
|
@@ -317,15 +304,13 @@ builtins-ignorelist = ["id"]
|
|
|
317
304
|
[tool.mypy]
|
|
318
305
|
python_version = "3.12"
|
|
319
306
|
strict = true
|
|
320
|
-
untyped_calls_exclude = [
|
|
321
|
-
"algosdk",
|
|
322
|
-
]
|
|
323
307
|
files = ["src", "tests", "examples"]
|
|
324
308
|
exclude = ["tests/artifacts"]
|
|
325
309
|
|
|
326
310
|
[[tool.mypy.overrides]]
|
|
327
311
|
module = [
|
|
328
312
|
"tests.artifacts.*",
|
|
313
|
+
"rich.*",
|
|
329
314
|
]
|
|
330
315
|
follow_imports = "skip"
|
|
331
316
|
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/arc4.py
RENAMED
|
@@ -6,7 +6,7 @@ import functools
|
|
|
6
6
|
import types
|
|
7
7
|
import typing
|
|
8
8
|
|
|
9
|
-
import
|
|
9
|
+
from algokit_utils.common import ZERO_ADDRESS, public_key_from_address
|
|
10
10
|
from Cryptodome.Hash import SHA512
|
|
11
11
|
from typing_extensions import deprecated
|
|
12
12
|
|
|
@@ -751,11 +751,11 @@ class _AddressTypeInfo(_StaticArrayTypeInfo):
|
|
|
751
751
|
class Address(StaticArray[Byte, typing.Literal[32]]):
|
|
752
752
|
_type_info = _AddressTypeInfo()
|
|
753
753
|
|
|
754
|
-
def __init__(self, value: Account | str | algopy.Bytes =
|
|
754
|
+
def __init__(self, value: Account | str | algopy.Bytes = ZERO_ADDRESS):
|
|
755
755
|
super().__init__()
|
|
756
756
|
if isinstance(value, str):
|
|
757
757
|
try:
|
|
758
|
-
bytes_value =
|
|
758
|
+
bytes_value = public_key_from_address(value)
|
|
759
759
|
except Exception as e:
|
|
760
760
|
raise ValueError(f"cannot encode the following address: {value!r}") from e
|
|
761
761
|
elif isinstance(value, Account):
|
|
@@ -773,7 +773,7 @@ class Address(StaticArray[Byte, typing.Literal[32]]):
|
|
|
773
773
|
|
|
774
774
|
def __bool__(self) -> bool:
|
|
775
775
|
# """Returns `True` if not equal to the zero address"""
|
|
776
|
-
zero_bytes: bytes =
|
|
776
|
+
zero_bytes: bytes = public_key_from_address(ZERO_ADDRESS)
|
|
777
777
|
return self.bytes != zero_bytes
|
|
778
778
|
|
|
779
779
|
def __eq__(self, other: Address | Account | str) -> bool: # type: ignore[override]
|
|
@@ -782,7 +782,7 @@ class Address(StaticArray[Byte, typing.Literal[32]]):
|
|
|
782
782
|
if isinstance(other, Address | Account):
|
|
783
783
|
return self.bytes == other.bytes
|
|
784
784
|
elif isinstance(other, str):
|
|
785
|
-
other_bytes: bytes =
|
|
785
|
+
other_bytes: bytes = public_key_from_address(other)
|
|
786
786
|
return self.bytes == other_bytes
|
|
787
787
|
else:
|
|
788
788
|
return NotImplemented
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/context.py
RENAMED
|
@@ -2,9 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
import algosdk
|
|
6
|
-
|
|
7
5
|
from _algopy_testing.context_helpers import LedgerContext, TransactionContext
|
|
6
|
+
from _algopy_testing.utils import generate_random_account
|
|
8
7
|
from _algopy_testing.value_generators import AlgopyValueGenerator
|
|
9
8
|
|
|
10
9
|
if typing.TYPE_CHECKING:
|
|
@@ -33,9 +32,7 @@ class AlgopyTestContext:
|
|
|
33
32
|
) -> None:
|
|
34
33
|
import algopy
|
|
35
34
|
|
|
36
|
-
self._default_sender = algopy.Account(
|
|
37
|
-
default_sender or algosdk.account.generate_account()[1]
|
|
38
|
-
)
|
|
35
|
+
self._default_sender = algopy.Account(default_sender or generate_random_account().addr)
|
|
39
36
|
self._template_vars: dict[str, typing.Any] = template_vars or {}
|
|
40
37
|
|
|
41
38
|
self._active_lsig_args: Sequence[algopy.Bytes] = ()
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import typing
|
|
4
4
|
from collections import defaultdict
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
from algokit_utils.common import ZERO_ADDRESS
|
|
7
7
|
|
|
8
8
|
from _algopy_testing.constants import MAX_BOX_SIZE
|
|
9
9
|
from _algopy_testing.models.account import Account
|
|
@@ -374,9 +374,9 @@ class LedgerContext:
|
|
|
374
374
|
timestamp: algopy.UInt64 | int,
|
|
375
375
|
bonus: algopy.UInt64 | int = 0,
|
|
376
376
|
branch: algopy.Bytes | bytes = b"",
|
|
377
|
-
fee_sink: algopy.Account | str =
|
|
377
|
+
fee_sink: algopy.Account | str = ZERO_ADDRESS,
|
|
378
378
|
fees_collected: algopy.UInt64 | int = 0,
|
|
379
|
-
proposer: algopy.Account | str =
|
|
379
|
+
proposer: algopy.Account | str = ZERO_ADDRESS,
|
|
380
380
|
proposer_payout: algopy.UInt64 | int = 0,
|
|
381
381
|
protocol: algopy.Bytes | bytes = b"",
|
|
382
382
|
txn_counter: algopy.UInt64 | int = 0,
|
|
@@ -4,7 +4,7 @@ import contextlib
|
|
|
4
4
|
import time
|
|
5
5
|
import typing
|
|
6
6
|
|
|
7
|
-
import
|
|
7
|
+
from algokit_utils.transactions import MAX_TRANSACTION_GROUP_SIZE
|
|
8
8
|
|
|
9
9
|
from _algopy_testing import gtxn
|
|
10
10
|
from _algopy_testing.decorators.arc4 import (
|
|
@@ -229,9 +229,9 @@ class TransactionGroup:
|
|
|
229
229
|
if not all(isinstance(txn, gtxn.TransactionBase) for txn in txns):
|
|
230
230
|
raise ValueError("All transactions must be instances of TransactionBase")
|
|
231
231
|
|
|
232
|
-
if len(txns) >
|
|
232
|
+
if len(txns) > MAX_TRANSACTION_GROUP_SIZE:
|
|
233
233
|
raise ValueError(
|
|
234
|
-
f"Transaction group can have at most {
|
|
234
|
+
f"Transaction group can have at most {MAX_TRANSACTION_GROUP_SIZE} "
|
|
235
235
|
"transactions, as per AVM limits."
|
|
236
236
|
)
|
|
237
237
|
|
|
@@ -6,7 +6,7 @@ import inspect
|
|
|
6
6
|
import types
|
|
7
7
|
import typing
|
|
8
8
|
|
|
9
|
-
import
|
|
9
|
+
from algokit_utils.applications.abi import Arc56Method
|
|
10
10
|
|
|
11
11
|
import _algopy_testing
|
|
12
12
|
from _algopy_testing.constants import ALWAYS_APPROVE_TEAL_PROGRAM, ARC4_RETURN_PREFIX
|
|
@@ -217,7 +217,7 @@ def create_abimethod_txns(
|
|
|
217
217
|
contract_app = lazy_context.ledger.get_app(app_id)
|
|
218
218
|
txn_fields = get_active_txn_fields(contract_app, allow_actions)
|
|
219
219
|
|
|
220
|
-
method =
|
|
220
|
+
method = Arc56Method.from_signature(arc4_signature)
|
|
221
221
|
method_selector = Bytes(method.get_selector())
|
|
222
222
|
txn_arrays = _extract_arrays_from_args(
|
|
223
223
|
args,
|
|
@@ -337,18 +337,11 @@ def _generate_arc4_signature_from_fn(
|
|
|
337
337
|
fn: typing.Callable[_P, _R], arc4_name: str, resource_encoding: _ResourceEncoding
|
|
338
338
|
) -> str:
|
|
339
339
|
annotations = inspect.get_annotations(fn, eval_str=True).copy()
|
|
340
|
-
returns =
|
|
341
|
-
|
|
342
|
-
)
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
args=[
|
|
346
|
-
algosdk.abi.Argument(_type_to_arc4(a, resource_encoding, "input"))
|
|
347
|
-
for a in annotations.values()
|
|
348
|
-
],
|
|
349
|
-
returns=returns,
|
|
350
|
-
)
|
|
351
|
-
return method.get_signature()
|
|
340
|
+
returns = _type_to_arc4(annotations.pop("return"), resource_encoding, "output")
|
|
341
|
+
|
|
342
|
+
args = ",".join([_type_to_arc4(a, resource_encoding, "input") for a in annotations.values()])
|
|
343
|
+
|
|
344
|
+
return f"{arc4_name}({args}){returns}"
|
|
352
345
|
|
|
353
346
|
|
|
354
347
|
def _type_to_arc4( # noqa: PLR0912 PLR0911
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/enums.py
RENAMED
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from
|
|
5
|
+
from algokit_utils.transact import TransactionType as BaseTransactionType
|
|
6
6
|
|
|
7
7
|
from _algopy_testing.primitives import UInt64
|
|
8
8
|
|
|
@@ -73,17 +73,17 @@ class TransactionType(_EnumLike):
|
|
|
73
73
|
def txn_name(self) -> str:
|
|
74
74
|
match self:
|
|
75
75
|
case self.Payment:
|
|
76
|
-
return
|
|
76
|
+
return BaseTransactionType.Payment.value
|
|
77
77
|
case self.KeyRegistration:
|
|
78
|
-
return
|
|
78
|
+
return BaseTransactionType.KeyRegistration.value
|
|
79
79
|
case self.AssetConfig:
|
|
80
|
-
return
|
|
80
|
+
return BaseTransactionType.AssetConfig.value
|
|
81
81
|
case self.AssetTransfer:
|
|
82
|
-
return
|
|
82
|
+
return BaseTransactionType.AssetTransfer.value
|
|
83
83
|
case self.AssetFreeze:
|
|
84
|
-
return
|
|
84
|
+
return BaseTransactionType.AssetFreeze.value
|
|
85
85
|
case self.ApplicationCall:
|
|
86
|
-
return
|
|
86
|
+
return BaseTransactionType.AppCall.value
|
|
87
87
|
case _:
|
|
88
88
|
raise ValueError("unexpected transaction type")
|
|
89
89
|
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/itxn.py
RENAMED
|
@@ -4,7 +4,7 @@ import logging
|
|
|
4
4
|
import typing
|
|
5
5
|
from copy import deepcopy
|
|
6
6
|
|
|
7
|
-
import
|
|
7
|
+
from algokit_utils.transactions import MAX_TRANSACTION_GROUP_SIZE
|
|
8
8
|
|
|
9
9
|
from _algopy_testing.context_helpers import lazy_context
|
|
10
10
|
from _algopy_testing.enums import TransactionType
|
|
@@ -168,7 +168,7 @@ class ApplicationCall(_BaseInnerTransactionFields[ApplicationCallInnerTransactio
|
|
|
168
168
|
def submit_txns(
|
|
169
169
|
*transactions: _BaseInnerTransactionFields[_TResult_co],
|
|
170
170
|
) -> tuple[_BaseInnerTransactionResult, ...]:
|
|
171
|
-
if len(transactions) >
|
|
171
|
+
if len(transactions) > MAX_TRANSACTION_GROUP_SIZE:
|
|
172
172
|
raise ValueError("Cannot submit more than 16 inner transactions at once")
|
|
173
173
|
|
|
174
174
|
results = tuple(_get_itxn_result(tx) for tx in transactions)
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import dataclasses
|
|
4
4
|
import typing
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
from algokit_utils.common import ZERO_ADDRESS, address_from_public_key, public_key_from_address
|
|
7
7
|
|
|
8
8
|
from _algopy_testing.constants import DEFAULT_ACCOUNT_MIN_BALANCE
|
|
9
9
|
from _algopy_testing.primitives import Bytes, UInt64
|
|
@@ -79,12 +79,12 @@ class AccountContextData:
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
class Account(BytesBacked):
|
|
82
|
-
def __init__(self, value: str | Bytes =
|
|
82
|
+
def __init__(self, value: str | Bytes = ZERO_ADDRESS, /):
|
|
83
83
|
if not isinstance(value, str | Bytes):
|
|
84
84
|
raise TypeError("Invalid value for Account")
|
|
85
85
|
|
|
86
86
|
self._public_key: bytes = (
|
|
87
|
-
|
|
87
|
+
public_key_from_address(value) if isinstance(value, str) else value.value
|
|
88
88
|
)
|
|
89
89
|
|
|
90
90
|
@property
|
|
@@ -126,7 +126,7 @@ class Account(BytesBacked):
|
|
|
126
126
|
|
|
127
127
|
@property
|
|
128
128
|
def public_key(self) -> str:
|
|
129
|
-
return
|
|
129
|
+
return address_from_public_key(self._public_key)
|
|
130
130
|
|
|
131
131
|
def validate(self) -> None:
|
|
132
132
|
pass
|
|
@@ -151,9 +151,7 @@ class Account(BytesBacked):
|
|
|
151
151
|
return NotImplemented
|
|
152
152
|
|
|
153
153
|
def __bool__(self) -> bool:
|
|
154
|
-
return bool(self._public_key) and self._public_key !=
|
|
155
|
-
algosdk.constants.ZERO_ADDRESS
|
|
156
|
-
)
|
|
154
|
+
return bool(self._public_key) and self._public_key != public_key_from_address(ZERO_ADDRESS)
|
|
157
155
|
|
|
158
156
|
def __hash__(self) -> int:
|
|
159
157
|
return hash(self._public_key)
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
from algokit_utils.common import get_application_address
|
|
6
6
|
|
|
7
7
|
from _algopy_testing.primitives import UInt64
|
|
8
8
|
from _algopy_testing.protocols import UInt64Backed
|
|
@@ -63,7 +63,7 @@ class Application(UInt64Backed):
|
|
|
63
63
|
def address(self) -> algopy.Account:
|
|
64
64
|
from _algopy_testing.models import Account
|
|
65
65
|
|
|
66
|
-
address =
|
|
66
|
+
address = get_application_address(self._id)
|
|
67
67
|
return Account(address)
|
|
68
68
|
|
|
69
69
|
@property
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/op/crypto.py
RENAMED
|
@@ -3,12 +3,12 @@ from __future__ import annotations
|
|
|
3
3
|
import enum
|
|
4
4
|
import hashlib
|
|
5
5
|
import typing
|
|
6
|
-
from collections.abc import Sequence
|
|
7
6
|
|
|
8
|
-
import algosdk
|
|
9
7
|
import coincurve
|
|
10
8
|
import nacl.exceptions
|
|
11
9
|
import nacl.signing
|
|
10
|
+
from algokit_utils.common import public_key_from_address
|
|
11
|
+
from algokit_utils.transact import LogicSigAccount
|
|
12
12
|
from Cryptodome.Hash import SHA512, keccak
|
|
13
13
|
from ecdsa import ( # type: ignore # noqa: PGH003
|
|
14
14
|
BadSignatureError,
|
|
@@ -17,11 +17,15 @@ from ecdsa import ( # type: ignore # noqa: PGH003
|
|
|
17
17
|
VerifyingKey,
|
|
18
18
|
)
|
|
19
19
|
|
|
20
|
+
from _algopy_testing.constants import LOGIC_DATA_PREFIX
|
|
20
21
|
from _algopy_testing.context_helpers import lazy_context
|
|
21
22
|
from _algopy_testing.enums import OnCompleteAction
|
|
22
23
|
from _algopy_testing.primitives import Bytes, UInt64
|
|
23
24
|
from _algopy_testing.utils import as_bytes, raise_mocked_function_error
|
|
24
25
|
|
|
26
|
+
if typing.TYPE_CHECKING:
|
|
27
|
+
from collections.abc import Sequence
|
|
28
|
+
|
|
25
29
|
|
|
26
30
|
class ECDSA(enum.Enum):
|
|
27
31
|
Secp256k1 = 0
|
|
@@ -76,7 +80,7 @@ def ed25519verify(a: Bytes | bytes, b: Bytes | bytes, c: Bytes | bytes, /) -> bo
|
|
|
76
80
|
txn = lazy_context.active_group.active_txn
|
|
77
81
|
|
|
78
82
|
program_pages = typing.cast(
|
|
79
|
-
Sequence[Bytes],
|
|
83
|
+
"Sequence[Bytes]",
|
|
80
84
|
(
|
|
81
85
|
txn.fields["clear_state_program"]
|
|
82
86
|
if txn.on_completion == OnCompleteAction.ClearState
|
|
@@ -85,9 +89,9 @@ def ed25519verify(a: Bytes | bytes, b: Bytes | bytes, c: Bytes | bytes, /) -> bo
|
|
|
85
89
|
)
|
|
86
90
|
program_bytes = b"".join(map(as_bytes, program_pages))
|
|
87
91
|
|
|
88
|
-
decoded_address =
|
|
92
|
+
decoded_address = public_key_from_address(LogicSigAccount(logic=program_bytes).address)
|
|
89
93
|
address_bytes = as_bytes(decoded_address)
|
|
90
|
-
a =
|
|
94
|
+
a = LOGIC_DATA_PREFIX + address_bytes + a
|
|
91
95
|
return ed25519verify_bare(a, b, c)
|
|
92
96
|
|
|
93
97
|
|
|
@@ -195,7 +199,6 @@ class EC(enum.StrEnum):
|
|
|
195
199
|
|
|
196
200
|
|
|
197
201
|
class _MockedMember:
|
|
198
|
-
|
|
199
202
|
def __set_name__(self, owner: type, name: str) -> None:
|
|
200
203
|
self.name = f"{owner.__name__}.{name}"
|
|
201
204
|
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import typing
|
|
4
4
|
from typing import TypedDict, TypeVar
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
from algokit_utils.common import ZERO_ADDRESS, get_application_address
|
|
7
7
|
|
|
8
8
|
from _algopy_testing.context_helpers import lazy_context
|
|
9
9
|
from _algopy_testing.models import Account
|
|
@@ -45,7 +45,7 @@ class _Global:
|
|
|
45
45
|
|
|
46
46
|
@property
|
|
47
47
|
def current_application_address(self) -> algopy.Account:
|
|
48
|
-
app_address =
|
|
48
|
+
app_address = get_application_address(int(self.current_application_id.id))
|
|
49
49
|
return Account(app_address)
|
|
50
50
|
|
|
51
51
|
@property
|
|
@@ -58,7 +58,7 @@ class _Global:
|
|
|
58
58
|
|
|
59
59
|
@property
|
|
60
60
|
def caller_application_address(self) -> algopy.Account:
|
|
61
|
-
app_address =
|
|
61
|
+
app_address = get_application_address(int(self.caller_application_id))
|
|
62
62
|
return Account(app_address)
|
|
63
63
|
|
|
64
64
|
@property
|
|
@@ -104,7 +104,7 @@ class _Global:
|
|
|
104
104
|
try:
|
|
105
105
|
return self._fields["zero_address"]
|
|
106
106
|
except KeyError:
|
|
107
|
-
return Account(
|
|
107
|
+
return Account(ZERO_ADDRESS)
|
|
108
108
|
|
|
109
109
|
def __getattr__(self, name: str) -> typing.Any:
|
|
110
110
|
try:
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b8}/src/_algopy_testing/utils.py
RENAMED
|
@@ -5,7 +5,9 @@ import types
|
|
|
5
5
|
import typing
|
|
6
6
|
from typing import TYPE_CHECKING
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
from algokit_utils import AddressWithSigners, AlgorandClient, ClientManager
|
|
9
|
+
from algokit_utils.accounts import AccountManager
|
|
10
|
+
from algokit_utils.common import MIN_TXN_FEE, ZERO_ADDRESS, public_key_from_address
|
|
9
11
|
|
|
10
12
|
import _algopy_testing
|
|
11
13
|
from _algopy_testing.constants import (
|
|
@@ -60,6 +62,14 @@ def generate_random_bytes32() -> bytes:
|
|
|
60
62
|
return secrets.token_bytes(32)
|
|
61
63
|
|
|
62
64
|
|
|
65
|
+
def generate_random_account() -> AddressWithSigners:
|
|
66
|
+
"""Generate a new random Algorand account and return its address."""
|
|
67
|
+
configs = ClientManager.get_config_from_environment_or_localnet()
|
|
68
|
+
client_manager = ClientManager(configs, AlgorandClient(configs))
|
|
69
|
+
acc = AccountManager(client_manager).random()
|
|
70
|
+
return acc
|
|
71
|
+
|
|
72
|
+
|
|
63
73
|
def as_int(value: object, *, max: int | None) -> int: # noqa: A002
|
|
64
74
|
match value:
|
|
65
75
|
case int(int_value):
|
|
@@ -157,17 +167,24 @@ def check_type(value: object, typ: type | types.UnionType) -> None:
|
|
|
157
167
|
|
|
158
168
|
|
|
159
169
|
def assert_address_is_valid(address: str) -> None:
|
|
160
|
-
|
|
170
|
+
def is_valid_algorand_address(address: str) -> bool:
|
|
171
|
+
try:
|
|
172
|
+
public_key_from_address(address)
|
|
173
|
+
except: # noqa: E722
|
|
174
|
+
return False
|
|
175
|
+
return True
|
|
176
|
+
|
|
177
|
+
assert is_valid_algorand_address(address), "Invalid Algorand address supplied!"
|
|
161
178
|
|
|
162
179
|
|
|
163
180
|
def get_default_global_fields() -> GlobalFields:
|
|
164
181
|
import algopy
|
|
165
182
|
|
|
166
183
|
return {
|
|
167
|
-
"min_txn_fee": algopy.UInt64(
|
|
184
|
+
"min_txn_fee": algopy.UInt64(MIN_TXN_FEE),
|
|
168
185
|
"min_balance": algopy.UInt64(DEFAULT_ACCOUNT_MIN_BALANCE),
|
|
169
186
|
"max_txn_life": algopy.UInt64(DEFAULT_MAX_TXN_LIFE),
|
|
170
|
-
"zero_address": algopy.Account(
|
|
187
|
+
"zero_address": algopy.Account(ZERO_ADDRESS),
|
|
171
188
|
"caller_application_id": algopy.UInt64(),
|
|
172
189
|
"asset_create_min_balance": algopy.UInt64(DEFAULT_ASSET_CREATE_MIN_BALANCE),
|
|
173
190
|
"asset_opt_in_min_balance": algopy.UInt64(DEFAULT_ASSET_OPT_IN_MIN_BALANCE),
|
|
@@ -4,11 +4,9 @@ import secrets
|
|
|
4
4
|
import string
|
|
5
5
|
import typing
|
|
6
6
|
|
|
7
|
-
import algosdk
|
|
8
|
-
|
|
9
7
|
from _algopy_testing import arc4
|
|
10
8
|
from _algopy_testing.constants import MAX_UINT8, MAX_UINT16, MAX_UINT32, MAX_UINT64, MAX_UINT512
|
|
11
|
-
from _algopy_testing.utils import generate_random_int
|
|
9
|
+
from _algopy_testing.utils import generate_random_account, generate_random_int
|
|
12
10
|
|
|
13
11
|
if typing.TYPE_CHECKING:
|
|
14
12
|
import algopy
|
|
@@ -23,7 +21,8 @@ class ARC4ValueGenerator:
|
|
|
23
21
|
:returns: A new, random Algorand address.
|
|
24
22
|
"""
|
|
25
23
|
|
|
26
|
-
|
|
24
|
+
address = generate_random_account().addr
|
|
25
|
+
return arc4.Address(address)
|
|
27
26
|
|
|
28
27
|
def uint8(self, min_value: int = 0, max_value: int = MAX_UINT8) -> algopy.arc4.UInt8:
|
|
29
28
|
"""Generate a random UInt8 within the specified range.
|
|
@@ -5,7 +5,7 @@ import string
|
|
|
5
5
|
import typing
|
|
6
6
|
from collections import ChainMap
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
from algokit_utils.common import ZERO_ADDRESS
|
|
9
9
|
|
|
10
10
|
import _algopy_testing
|
|
11
11
|
from _algopy_testing.constants import (
|
|
@@ -18,7 +18,7 @@ from _algopy_testing.context_helpers import lazy_context
|
|
|
18
18
|
from _algopy_testing.models.account import AccountFields
|
|
19
19
|
from _algopy_testing.models.application import ApplicationContextData, ApplicationFields
|
|
20
20
|
from _algopy_testing.models.asset import AssetFields
|
|
21
|
-
from _algopy_testing.utils import generate_random_int
|
|
21
|
+
from _algopy_testing.utils import generate_random_account, generate_random_int
|
|
22
22
|
|
|
23
23
|
if typing.TYPE_CHECKING:
|
|
24
24
|
import algopy
|
|
@@ -92,7 +92,7 @@ class AVMValueGenerator:
|
|
|
92
92
|
raise AttributeError(f"Invalid field '{key}' for Account")
|
|
93
93
|
|
|
94
94
|
ledger = lazy_context.ledger
|
|
95
|
-
new_account_address = address or
|
|
95
|
+
new_account_address = address or generate_random_account().addr
|
|
96
96
|
new_account = algopy.Account(new_account_address)
|
|
97
97
|
# defaultdict of account_data ensures we get a new initialized account
|
|
98
98
|
account_data = lazy_context.get_account_data(new_account_address)
|
|
@@ -129,11 +129,11 @@ class AVMValueGenerator:
|
|
|
129
129
|
"name": lazy_context.any.bytes(32),
|
|
130
130
|
"url": lazy_context.any.bytes(10),
|
|
131
131
|
"metadata_hash": lazy_context.any.bytes(32),
|
|
132
|
-
"manager": algopy.Account(
|
|
133
|
-
"freeze": algopy.Account(
|
|
134
|
-
"clawback": algopy.Account(
|
|
132
|
+
"manager": algopy.Account(ZERO_ADDRESS),
|
|
133
|
+
"freeze": algopy.Account(ZERO_ADDRESS),
|
|
134
|
+
"clawback": algopy.Account(ZERO_ADDRESS),
|
|
135
135
|
"creator": lazy_context.value.default_sender,
|
|
136
|
-
"reserve": algopy.Account(
|
|
136
|
+
"reserve": algopy.Account(ZERO_ADDRESS),
|
|
137
137
|
}
|
|
138
138
|
merged_fields = dict(ChainMap(asset_fields, default_asset_fields)) # type: ignore[arg-type]
|
|
139
139
|
lazy_context.ledger._asset_data[int(new_asset.id)] = AssetFields(**merged_fields) # type: ignore[typeddict-item]
|