algokit-utils 4.1.0b5__py3-none-any.whl → 4.1.0b7__py3-none-any.whl

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.

Potentially problematic release.


This version of algokit-utils might be problematic. Click here for more details.

@@ -95,6 +95,9 @@ __all__ = [
95
95
  # TEAL opcodes for constant blocks
96
96
  BYTE_CBLOCK = 38 # bytecblock opcode
97
97
  INT_CBLOCK = 32 # intcblock opcode
98
+ MAX_SIMULATE_OPCODE_BUDGET = (
99
+ 20_000 * 16
100
+ ) # https://github.com/algorand/go-algorand/blob/807b29a91c371d225e12b9287c5d56e9b33c4e4c/ledger/simulation/trace.go#L104
98
101
 
99
102
  T = TypeVar("T") # For generic return type in _handle_call_errors
100
103
 
@@ -1183,7 +1186,6 @@ class _TransactionSender:
1183
1186
  :param params: Parameters for the application call including method and transaction options
1184
1187
  :param send_params: Send parameters
1185
1188
  :return: The result of sending or simulating the transaction, including ABI return value if applicable
1186
- :raises ValueError: If the transaction is read-only and `max_fee` is not provided
1187
1189
  """
1188
1190
  is_read_only_call = (
1189
1191
  params.on_complete == algosdk.transaction.OnComplete.NoOpOC or params.on_complete is None
@@ -1194,14 +1196,10 @@ class _TransactionSender:
1194
1196
  readonly_send_params = send_params or SendParams()
1195
1197
 
1196
1198
  # Read-only calls do not require fees to be paid, as they are only simulated on the network.
1197
- # Therefore there is no value in calculating the minimum fee needed for a successful app call with inners.
1198
- # As a a result we only need to send a single simulate call,
1199
- # however to do this successfully we need to ensure fees for the transaction are fully covered using maxFee.
1200
- if readonly_send_params.get("cover_app_call_inner_transaction_fees"):
1201
- if params.max_fee is None:
1202
- raise ValueError(
1203
- "Please provide a `max_fee` for the transaction when `cover_app_call_inner_transaction_fees` is enabled." # noqa: E501
1204
- )
1199
+ # With maximum opcode budget provided, ensure_budget won't create inner transactions,
1200
+ # so fee coverage is no longer a concern for read-only calls.
1201
+ # If max_fee is provided, use it as static_fee for potential benefits.
1202
+ if readonly_send_params.get("cover_app_call_inner_transaction_fees") and params.max_fee is not None:
1205
1203
  readonly_params = replace(readonly_params, static_fee=params.max_fee, extra_fee=None)
1206
1204
 
1207
1205
  method_call_to_simulate = self._algorand.new_group().add_app_call_method_call(
@@ -1215,11 +1213,13 @@ class _TransactionSender:
1215
1213
  skip_signatures=True,
1216
1214
  allow_more_logs=True,
1217
1215
  allow_empty_signatures=True,
1218
- extra_opcode_budget=None,
1216
+ extra_opcode_budget=MAX_SIMULATE_OPCODE_BUDGET,
1219
1217
  exec_trace_config=None,
1220
1218
  simulation_round=None,
1221
1219
  )
1222
1220
  except Exception as e:
1221
+ # For read-only calls with max opcode budget, fee issues should be rare
1222
+ # but we can still provide helpful error message if they occur
1223
1223
  if readonly_send_params.get("cover_app_call_inner_transaction_fees") and "fee too small" in str(e):
1224
1224
  raise ValueError(
1225
1225
  "Fees were too small. You may need to increase the transaction `maxFee`."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: algokit-utils
3
- Version: 4.1.0b5
3
+ Version: 4.1.0b7
4
4
  Summary: Utilities for Algorand development for use by AlgoKit
5
5
  License: MIT
6
6
  Author: Algorand Foundation
@@ -21,7 +21,7 @@ algokit_utils/application_client.py,sha256=5UIxXIBjukjRyjZPCeXmaNlAftbb3TziV7EfB
21
21
  algokit_utils/application_specification.py,sha256=wV0H088IudMqlxsW-gsZIfJyKA4e-zVwxJ-cR__ouBA,1379
22
22
  algokit_utils/applications/__init__.py,sha256=NGjhpBeExsQZOAYCT2QUFag1xuKoFiX-Ux5SR2GNzd8,452
23
23
  algokit_utils/applications/abi.py,sha256=OjTdn4szJPPeC8XmosdDYtkIIVgQSWAnqz2DHw5OH9g,10117
24
- algokit_utils/applications/app_client.py,sha256=WKedIu3CDamBW8dAAR5IBYCXkesvETkof1dwIqKHaNE,88474
24
+ algokit_utils/applications/app_client.py,sha256=wScCqe3j33EJbBGncRnAeGy55sHEgujtnL6WNmDVDRw,88477
25
25
  algokit_utils/applications/app_deployer.py,sha256=xJCu7SU66OTg5misSbSF0QI8abRB-DWAwAVKd1kNcPI,30685
26
26
  algokit_utils/applications/app_factory.py,sha256=jVAzoK1J9S-BTGHA5BLxT-cl0pWhPdf222W4fYpFihE,45352
27
27
  algokit_utils/applications/app_manager.py,sha256=8bboIswlwBQhPIqilSBMaxd83yHjIpkloezmtgcAdZY,22301
@@ -64,7 +64,7 @@ algokit_utils/transactions/__init__.py,sha256=7fYF3m6DyOGzbV36MT5svo0wSkj9AIz496
64
64
  algokit_utils/transactions/transaction_composer.py,sha256=eK-6l2W1CkbKID1ezi-zCs_TxA2i5ZTm3YTl8sT2Zfw,103995
65
65
  algokit_utils/transactions/transaction_creator.py,sha256=cuP6Xm-fhGoCc2FNSbLiEg3iQRwW38rfdTzsqPyEcpM,29053
66
66
  algokit_utils/transactions/transaction_sender.py,sha256=Wi3ws9S-Df1JeTlaSTXmq-WS24Gsq7WGsKk1B0z23ao,50117
67
- algokit_utils-4.1.0b5.dist-info/LICENSE,sha256=J5i7U1Q9Q2c7saUzlvFRmrCCFhQyXb5Juz_LO5omNUw,1076
68
- algokit_utils-4.1.0b5.dist-info/METADATA,sha256=xpKj8lMnSggaAcaZjs1TMP4KVWfsm0IogPz34-Mio4s,2421
69
- algokit_utils-4.1.0b5.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
70
- algokit_utils-4.1.0b5.dist-info/RECORD,,
67
+ algokit_utils-4.1.0b7.dist-info/LICENSE,sha256=J5i7U1Q9Q2c7saUzlvFRmrCCFhQyXb5Juz_LO5omNUw,1076
68
+ algokit_utils-4.1.0b7.dist-info/METADATA,sha256=W7IeGIhYSpAqdMimtS1gV2YbTrH-GuvqmENN7WHuk3I,2421
69
+ algokit_utils-4.1.0b7.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
70
+ algokit_utils-4.1.0b7.dist-info/RECORD,,