Skip to content

Commit 0da514e

Browse files
boblatdaniel-makerx
authored andcommitted
chore: define txn fields explicitly to get correct type hints
1 parent e3b0776 commit 0da514e

File tree

1 file changed

+181
-17
lines changed

1 file changed

+181
-17
lines changed

src/_algopy_testing/models/txn_fields.py

Lines changed: 181 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ class TransactionFieldsGetter(abc.ABC):
193193
def fields(self) -> dict[str, object]:
194194
raise NotImplementedError
195195

196-
# explicitly define some properties commonly accessed by algopy testing
196+
# explicitly define all fields to have correct type hints
197197
@property
198198
def amount(self) -> algopy.UInt64:
199199
return self.fields["amount"] # type: ignore[return-value]
@@ -202,10 +202,190 @@ def amount(self) -> algopy.UInt64:
202202
def app_id(self) -> algopy.Application:
203203
return self.fields["app_id"] # type: ignore[return-value]
204204

205+
@property
206+
def asset_amount(self) -> algopy.UInt64:
207+
return self.fields["asset_amount"] # type: ignore[return-value]
208+
209+
@property
210+
def asset_close_to(self) -> algopy.Account:
211+
return self.fields["asset_close_to"] # type: ignore[return-value]
212+
213+
@property
214+
def asset_name(self) -> algopy.Bytes:
215+
return self.fields["asset_name"] # type: ignore[return-value]
216+
217+
@property
218+
def asset_receiver(self) -> algopy.Account:
219+
return self.fields["asset_receiver"] # type: ignore[return-value]
220+
221+
@property
222+
def asset_sender(self) -> algopy.Account:
223+
return self.fields["asset_sender"] # type: ignore[return-value]
224+
225+
@property
226+
def clawback(self) -> algopy.Account:
227+
return self.fields["clawback"] # type: ignore[return-value]
228+
229+
@property
230+
def close_remainder_to(self) -> algopy.Account:
231+
return self.fields["close_remainder_to"] # type: ignore[return-value]
232+
233+
@property
234+
def config_asset(self) -> algopy.Asset:
235+
return self.fields["config_asset"] # type: ignore[return-value]
236+
237+
@property
238+
def created_app(self) -> algopy.Application:
239+
return self.fields["created_app"] # type: ignore[return-value]
240+
241+
@property
242+
def created_asset(self) -> algopy.Asset:
243+
return self.fields["created_asset"] # type: ignore[return-value]
244+
245+
@property
246+
def decimals(self) -> algopy.UInt64:
247+
return self.fields["decimals"] # type: ignore[return-value]
248+
249+
@property
250+
def default_frozen(self) -> bool:
251+
return self.fields["default_frozen"] # type: ignore[return-value]
252+
253+
@property
254+
def extra_program_pages(self) -> algopy.UInt64:
255+
return self.fields["extra_program_pages"] # type: ignore[return-value]
256+
257+
@property
258+
def fee(self) -> algopy.UInt64:
259+
return self.fields["fee"] # type: ignore[return-value]
260+
261+
@property
262+
def first_valid(self) -> algopy.UInt64:
263+
return self.fields["first_valid"] # type: ignore[return-value]
264+
265+
@property
266+
def first_valid_time(self) -> algopy.UInt64:
267+
return self.fields["first_valid_time"] # type: ignore[return-value]
268+
269+
@property
270+
def freeze(self) -> algopy.Account:
271+
return self.fields["freeze"] # type: ignore[return-value]
272+
273+
@property
274+
def freeze_account(self) -> algopy.Account:
275+
return self.fields["freeze_account"] # type: ignore[return-value]
276+
277+
@property
278+
def freeze_asset(self) -> algopy.Asset:
279+
return self.fields["freeze_asset"] # type: ignore[return-value]
280+
281+
@property
282+
def frozen(self) -> bool:
283+
return self.fields["frozen"] # type: ignore[return-value]
284+
285+
@property
286+
def global_num_bytes(self) -> algopy.UInt64:
287+
return self.fields["global_num_bytes"] # type: ignore[return-value]
288+
289+
@property
290+
def global_num_uint(self) -> algopy.UInt64:
291+
return self.fields["global_num_uint"] # type: ignore[return-value]
292+
293+
@property
294+
def last_valid(self) -> algopy.UInt64:
295+
return self.fields["last_valid"] # type: ignore[return-value]
296+
297+
@property
298+
def lease(self) -> algopy.Bytes:
299+
return self.fields["lease"] # type: ignore[return-value]
300+
301+
@property
302+
def local_num_bytes(self) -> algopy.UInt64:
303+
return self.fields["local_num_bytes"] # type: ignore[return-value]
304+
305+
@property
306+
def local_num_uint(self) -> algopy.UInt64:
307+
return self.fields["local_num_uint"] # type: ignore[return-value]
308+
309+
@property
310+
def manager(self) -> algopy.Account:
311+
return self.fields["manager"] # type: ignore[return-value]
312+
313+
@property
314+
def metadata_hash(self) -> algopy.Bytes:
315+
return self.fields["metadata_hash"] # type: ignore[return-value]
316+
317+
@property
318+
def non_participation(self) -> bool:
319+
return self.fields["non_participation"] # type: ignore[return-value]
320+
321+
@property
322+
def note(self) -> algopy.Bytes:
323+
return self.fields["note"] # type: ignore[return-value]
324+
325+
@property
326+
def on_completion(self) -> algopy.OnCompleteAction:
327+
return self.fields["on_completion"] # type: ignore[return-value]
328+
329+
@property
330+
def receiver(self) -> algopy.Account:
331+
return self.fields["receiver"] # type: ignore[return-value]
332+
333+
@property
334+
def rekey_to(self) -> algopy.Account:
335+
return self.fields["rekey_to"] # type: ignore[return-value]
336+
337+
@property
338+
def reserve(self) -> algopy.Account:
339+
return self.fields["reserve"] # type: ignore[return-value]
340+
341+
@property
342+
def selection_key(self) -> algopy.Bytes:
343+
return self.fields["selection_key"] # type: ignore[return-value]
344+
205345
@property
206346
def sender(self) -> algopy.Account:
207347
return self.fields["sender"] # type: ignore[return-value]
208348

349+
@property
350+
def state_proof_key(self) -> algopy.Bytes:
351+
return self.fields["state_proof_key"] # type: ignore[return-value]
352+
353+
@property
354+
def total(self) -> algopy.UInt64:
355+
return self.fields["total"] # type: ignore[return-value]
356+
357+
@property
358+
def type(self) -> algopy.TransactionType:
359+
return self.fields["type"] # type: ignore[return-value]
360+
361+
@property
362+
def unit_name(self) -> algopy.Bytes:
363+
return self.fields["unit_name"] # type: ignore[return-value]
364+
365+
@property
366+
def url(self) -> algopy.Bytes:
367+
return self.fields["url"] # type: ignore[return-value]
368+
369+
@property
370+
def vote_first(self) -> algopy.UInt64:
371+
return self.fields["vote_first"] # type: ignore[return-value]
372+
373+
@property
374+
def vote_key(self) -> algopy.Bytes:
375+
return self.fields["vote_key"] # type: ignore[return-value]
376+
377+
@property
378+
def vote_key_dilution(self) -> algopy.UInt64:
379+
return self.fields["vote_key_dilution"] # type: ignore[return-value]
380+
381+
@property
382+
def vote_last(self) -> algopy.UInt64:
383+
return self.fields["vote_last"] # type: ignore[return-value]
384+
385+
@property
386+
def xfer_asset(self) -> algopy.Asset:
387+
return self.fields["xfer_asset"] # type: ignore[return-value]
388+
209389
@property
210390
def txn_id(self) -> algopy.Bytes:
211391
return self.fields["txn_id"] # type: ignore[return-value]
@@ -262,10 +442,6 @@ def num_app_args(self) -> algopy.UInt64:
262442
def app_args(self) -> Callable[[algopy.UInt64 | int], algopy.Bytes]:
263443
return _create_array_accessor(self._app_args)
264444

265-
@property
266-
def type(self) -> algopy.TransactionType:
267-
return self.fields["type"] # type: ignore[return-value]
268-
269445
@property
270446
def type_bytes(self) -> algopy.Bytes:
271447
return Bytes(self.type.txn_name.encode("utf8"))
@@ -304,18 +480,6 @@ def clear_state_program_pages(self) -> Callable[[algopy.UInt64 | int], algopy.By
304480
def num_clear_state_program_pages(self) -> algopy.UInt64:
305481
return UInt64(len(self._clear_state_program_pages))
306482

307-
@property
308-
def on_completion(self) -> algopy.OnCompleteAction:
309-
return self.fields["on_completion"] # type: ignore[return-value]
310-
311-
@property
312-
def created_app(self) -> algopy.Application:
313-
return self.fields["created_app"] # type: ignore[return-value]
314-
315-
@property
316-
def created_asset(self) -> algopy.Asset:
317-
return self.fields["created_asset"] # type: ignore[return-value]
318-
319483
@property
320484
def _logs(self) -> Sequence[algopy.Bytes]:
321485
try:

0 commit comments

Comments
 (0)