tonutils 2.0.1b2__py3-none-any.whl → 2.0.1b4__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.
Files changed (91) hide show
  1. tonutils/__init__.py +0 -2
  2. tonutils/__meta__.py +1 -1
  3. tonutils/cli.py +111 -0
  4. tonutils/clients/__init__.py +7 -11
  5. tonutils/clients/adnl/__init__.py +7 -3
  6. tonutils/clients/adnl/balancer.py +362 -168
  7. tonutils/clients/adnl/client.py +203 -67
  8. tonutils/clients/adnl/provider/config.py +24 -25
  9. tonutils/clients/adnl/provider/models.py +4 -0
  10. tonutils/clients/adnl/provider/provider.py +203 -160
  11. tonutils/clients/adnl/provider/transport.py +44 -33
  12. tonutils/clients/adnl/provider/workers/base.py +0 -2
  13. tonutils/clients/adnl/provider/workers/pinger.py +1 -1
  14. tonutils/clients/adnl/provider/workers/reader.py +3 -2
  15. tonutils/clients/adnl/{provider/builder.py → utils.py} +62 -2
  16. tonutils/clients/http/__init__.py +11 -8
  17. tonutils/clients/http/balancer.py +75 -63
  18. tonutils/clients/http/clients/__init__.py +13 -0
  19. tonutils/clients/http/clients/chainstack.py +48 -0
  20. tonutils/clients/http/clients/quicknode.py +47 -0
  21. tonutils/clients/http/clients/tatum.py +56 -0
  22. tonutils/clients/http/{tonapi/client.py → clients/tonapi.py} +31 -31
  23. tonutils/clients/http/{toncenter/client.py → clients/toncenter.py} +59 -48
  24. tonutils/clients/http/providers/__init__.py +4 -0
  25. tonutils/clients/http/providers/base.py +201 -0
  26. tonutils/clients/http/providers/response.py +85 -0
  27. tonutils/clients/http/providers/tonapi/__init__.py +3 -0
  28. tonutils/clients/http/{tonapi → providers/tonapi}/models.py +1 -0
  29. tonutils/clients/http/providers/tonapi/provider.py +125 -0
  30. tonutils/clients/http/providers/toncenter/__init__.py +3 -0
  31. tonutils/clients/http/{toncenter → providers/toncenter}/models.py +1 -0
  32. tonutils/clients/http/providers/toncenter/provider.py +119 -0
  33. tonutils/clients/http/utils.py +140 -0
  34. tonutils/clients/limiter.py +115 -0
  35. tonutils/contracts/__init__.py +4 -0
  36. tonutils/contracts/base.py +33 -20
  37. tonutils/contracts/dns/methods.py +2 -2
  38. tonutils/contracts/jetton/methods.py +2 -2
  39. tonutils/contracts/nft/methods.py +2 -2
  40. tonutils/contracts/nft/tlb.py +1 -1
  41. tonutils/{protocols/contract.py → contracts/protocol.py} +29 -29
  42. tonutils/contracts/telegram/methods.py +2 -2
  43. tonutils/contracts/vanity/vanity.py +1 -1
  44. tonutils/contracts/wallet/__init__.py +2 -0
  45. tonutils/contracts/wallet/base.py +3 -3
  46. tonutils/contracts/wallet/messages.py +1 -1
  47. tonutils/contracts/wallet/methods.py +2 -2
  48. tonutils/{protocols/wallet.py → contracts/wallet/protocol.py} +35 -35
  49. tonutils/contracts/wallet/versions/v5.py +3 -3
  50. tonutils/exceptions.py +146 -228
  51. tonutils/tonconnect/__init__.py +0 -0
  52. tonutils/tools/__init__.py +6 -0
  53. tonutils/tools/block_scanner/__init__.py +26 -0
  54. tonutils/tools/block_scanner/annotations.py +23 -0
  55. tonutils/tools/block_scanner/dispatcher.py +141 -0
  56. tonutils/tools/block_scanner/events.py +31 -0
  57. tonutils/tools/block_scanner/scanner.py +315 -0
  58. tonutils/tools/block_scanner/traversal.py +96 -0
  59. tonutils/tools/block_scanner/where.py +151 -0
  60. tonutils/tools/status_monitor/__init__.py +3 -0
  61. tonutils/tools/status_monitor/console.py +157 -0
  62. tonutils/tools/status_monitor/models.py +27 -0
  63. tonutils/tools/status_monitor/monitor.py +295 -0
  64. tonutils/types.py +125 -2
  65. tonutils/utils.py +3 -3
  66. {tonutils-2.0.1b2.dist-info → tonutils-2.0.1b4.dist-info}/METADATA +2 -5
  67. tonutils-2.0.1b4.dist-info/RECORD +108 -0
  68. tonutils-2.0.1b4.dist-info/entry_points.txt +2 -0
  69. tonutils/clients/adnl/provider/limiter.py +0 -56
  70. tonutils/clients/adnl/stack.py +0 -64
  71. tonutils/clients/http/chainstack/__init__.py +0 -4
  72. tonutils/clients/http/chainstack/client.py +0 -63
  73. tonutils/clients/http/chainstack/provider.py +0 -44
  74. tonutils/clients/http/quicknode/__init__.py +0 -4
  75. tonutils/clients/http/quicknode/client.py +0 -60
  76. tonutils/clients/http/quicknode/provider.py +0 -42
  77. tonutils/clients/http/tatum/__init__.py +0 -4
  78. tonutils/clients/http/tatum/client.py +0 -66
  79. tonutils/clients/http/tatum/provider.py +0 -53
  80. tonutils/clients/http/tonapi/__init__.py +0 -4
  81. tonutils/clients/http/tonapi/provider.py +0 -150
  82. tonutils/clients/http/tonapi/stack.py +0 -71
  83. tonutils/clients/http/toncenter/__init__.py +0 -4
  84. tonutils/clients/http/toncenter/provider.py +0 -145
  85. tonutils/clients/http/toncenter/stack.py +0 -73
  86. tonutils/protocols/__init__.py +0 -9
  87. tonutils-2.0.1b2.dist-info/RECORD +0 -98
  88. /tonutils/{protocols/client.py → clients/protocol.py} +0 -0
  89. {tonutils-2.0.1b2.dist-info → tonutils-2.0.1b4.dist-info}/WHEEL +0 -0
  90. {tonutils-2.0.1b2.dist-info → tonutils-2.0.1b4.dist-info}/licenses/LICENSE +0 -0
  91. {tonutils-2.0.1b2.dist-info → tonutils-2.0.1b4.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,108 @@
1
+ tonutils/__init__.py,sha256=ueJrDkU1JBlZiX0q8roQfzYOZY62Of_CiHZlxIIQFO0,228
2
+ tonutils/__meta__.py,sha256=9hS3P2QnGv90JwrHxXnlkhgaiyUR_t8z-ovZW7v3DGk,24
3
+ tonutils/cli.py,sha256=WGir-ihgPuKTgKGmhjPZeKk9wgsm64jiJciOnVlsdco,2645
4
+ tonutils/exceptions.py,sha256=67jXCFPyOnVnd8EaqYg1osVIXg34VZX-aJHPunpc-oI,6462
5
+ tonutils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ tonutils/types.py,sha256=ORevKllLjb7pmL3AQTMeSoiZQ4KFhoB_rA7KpGqZZjU,14542
7
+ tonutils/utils.py,sha256=w2sXvVMA2Erz_JSSN2WuYSi7RAPDAOOwWYiThu8Q0Ps,16499
8
+ tonutils/clients/__init__.py,sha256=PvHsOHOtkVonfiowEPi6P7ggDeQeQorXcksujru6efQ,561
9
+ tonutils/clients/base.py,sha256=K2Z0FTF1c1V420mJn8Az9PGgzfbHmK6fnyFPXtrEWGM,9594
10
+ tonutils/clients/limiter.py,sha256=d2WO7Dx-ksg3gvl05WuDMu1KycuQj0XrmiG67Q7wnFo,3592
11
+ tonutils/clients/protocol.py,sha256=4QerYoqBKAAfNZVpyQW2sp5KZZlq8xHCn9yWbbJERPQ,2557
12
+ tonutils/clients/adnl/__init__.py,sha256=shkczPIYlTrOHjpnOBIoRwEYRQ4rVGfLnOZvnQY0a5U,174
13
+ tonutils/clients/adnl/balancer.py,sha256=L5tvSwklgsp1QGBypMcxta_vhGdCXrOahi33-EFMPfs,26877
14
+ tonutils/clients/adnl/client.py,sha256=hClnodq57bi6Q2p-9vbmh89GKpRDwXdIABUM8BEtKUs,14111
15
+ tonutils/clients/adnl/utils.py,sha256=rKLbTiGbZQ0ozvh5jYjjaFEKsmqEschjuUiHOX9e6ps,5154
16
+ tonutils/clients/adnl/provider/__init__.py,sha256=lLwFEEgCifMlYozwSzQbvq97R6Du7TzgGFnTgUnk4gw,63
17
+ tonutils/clients/adnl/provider/config.py,sha256=nhe9jwDeN6d4yTlgaVHGKk5TaALYSvIfaok2myvIJXY,894
18
+ tonutils/clients/adnl/provider/models.py,sha256=3dn4oZv7PIgiwlP2lGs0O6VckC19ejxCFlSPhzU0wX8,4537
19
+ tonutils/clients/adnl/provider/provider.py,sha256=Er5RNR490RIQlRTI5KMxVarshHRNVseAbUYGM48fcbg,24180
20
+ tonutils/clients/adnl/provider/transport.py,sha256=lgp1N0LGjYYIKWiwBIm-pnF064TkkCsSTDAFKt8_U-I,10983
21
+ tonutils/clients/adnl/provider/workers/__init__.py,sha256=M65q7mVfinHImIZNCEaHBJ-SO4DdVBsSkeZFrJs9OoE,177
22
+ tonutils/clients/adnl/provider/workers/base.py,sha256=8RenR2MU_B-b8mevzCytLJmPgjLCJ8bVI-4q-wx78Q8,2031
23
+ tonutils/clients/adnl/provider/workers/pinger.py,sha256=lBpy4TU8L-I_6sxEft-Bn9XmntJhMg5Rm2o2tN2Mp0A,2443
24
+ tonutils/clients/adnl/provider/workers/reader.py,sha256=qvkaBBrRNu_nLTQOd0w6lDdN_wPOnzPbfAa3UToJWd8,1944
25
+ tonutils/clients/adnl/provider/workers/updater.py,sha256=r7NrZXDg3nY4jAF-sYkX1ZvxTE8sN99qSFctbAmHTME,1978
26
+ tonutils/clients/http/__init__.py,sha256=UIhIb0jLFmM73FabLHHZV-kxM3pq02P4WfCviBPHDPY,476
27
+ tonutils/clients/http/balancer.py,sha256=tDQBRvwnwoUdceYyVVuJpJnTI__x02J-4oP1_-rFgTs,12376
28
+ tonutils/clients/http/utils.py,sha256=mv9kCwLu8qjayy03E524WZ3q7Zf96t5VCE6H9j5kHRE,4994
29
+ tonutils/clients/http/clients/__init__.py,sha256=DBUfGpJIDqHDzTLMLtJatT7pKusnMSLGYiTek7Hf6i4,347
30
+ tonutils/clients/http/clients/chainstack.py,sha256=jH0alNZMAkRSBb4U6MoiFa_FiQ9ZTvjqDbwjFvidsiI,1749
31
+ tonutils/clients/http/clients/quicknode.py,sha256=4bh8QebatFGHpIINiQFNIuYnHW8FW3aTzZIf-rAL0PI,1668
32
+ tonutils/clients/http/clients/tatum.py,sha256=pRIUJvzmKJBJUPocedGo6fsQ-CZUDm-7DIQwOJQWXCk,2025
33
+ tonutils/clients/http/clients/tonapi.py,sha256=hhcYjs6foDfsoBgBGAptQq58WSQ18x_kupA8nlAORU8,5769
34
+ tonutils/clients/http/clients/toncenter.py,sha256=2cni37OIZ9IRMxF54YwMV3sMacksJbumYseAhHE4-Sg,7319
35
+ tonutils/clients/http/providers/__init__.py,sha256=psOTidJ5Zc1qhNYmHgZaiDbht4BvEWZ5r_xgrcrmipQ,143
36
+ tonutils/clients/http/providers/base.py,sha256=D4RkgmG713JIc2LPbUamr1-RIN3kuwdToPumdx7o0Sg,6447
37
+ tonutils/clients/http/providers/response.py,sha256=G0kAInKJ4nOIkqMB5dac2Ugnsj3YDxS06awK7RrQPNk,2265
38
+ tonutils/clients/http/providers/tonapi/__init__.py,sha256=A4-axY0GZZ-NtB0F9h9Mh3PFoosmHpt0nS2HU8GOLcE,75
39
+ tonutils/clients/http/providers/tonapi/models.py,sha256=0ldcEaw_ReT4Zns0HSCBwe3RFUhcUsjdKhrBorN9_qY,1204
40
+ tonutils/clients/http/providers/tonapi/provider.py,sha256=iPquCsJglbgxtnHbUrkGYbiJG1rf5zmyh4XKMsncj-4,3727
41
+ tonutils/clients/http/providers/toncenter/__init__.py,sha256=PSzpwMrwcs_LY2Aw5omErjaLSVzy_9LB5EpRjtITyTs,81
42
+ tonutils/clients/http/providers/toncenter/models.py,sha256=ZPx6EhjhrNWFMWF_055EIolMwaLfQAGio0fqTUmljy8,2397
43
+ tonutils/clients/http/providers/toncenter/provider.py,sha256=QoNrobRgytG0Gc9Lo-QXrdMCtyJk1rOS-B2nPzGwaV0,3391
44
+ tonutils/contracts/__init__.py,sha256=KZm3_rQwoY0kO6zFGpPcjrN9XBTjDDvpB2dfaHjwjjw,9561
45
+ tonutils/contracts/base.py,sha256=7AVjsBmcM30Y1fKIIKMVXGr58ZmMfpublunecsSn2W4,10521
46
+ tonutils/contracts/codes.py,sha256=1Sbbs_izHZHd-i1cjWHRP8VN3Xc2BDPr4pnjojj6mZc,37741
47
+ tonutils/contracts/opcodes.py,sha256=niPd-pDmtXiEpYX8xvorFmd7O4vkY0i8nX71e3iaJ1s,1001
48
+ tonutils/contracts/protocol.py,sha256=WLqDUmcgHGRYlKQWQGDWm-2pI2L9iTYg4tAxsehPNLE,6210
49
+ tonutils/contracts/versions.py,sha256=V1rJECQSQuAVYwDmXl4lZzLzDeqZ9OChOgipzAlTPQE,1705
50
+ tonutils/contracts/dns/__init__.py,sha256=H57OtOeohbQlcNTHZS5YI7wtZjlqlpKg4wVso2kPRrU,987
51
+ tonutils/contracts/dns/collection.py,sha256=wSpKGOyCnmXBq1IITjjq5oOt2OZO3u5ckibDcacbJ9I,3089
52
+ tonutils/contracts/dns/item.py,sha256=H0kyZ8h4Aq8ybRLhqJdMj4YzGY6I1F_bDQrfn8BUt8Y,2998
53
+ tonutils/contracts/dns/methods.py,sha256=92AsZBOVqCjgRRRqZHbC_jWT3mJReQjijLnPx0aWRPY,4823
54
+ tonutils/contracts/dns/tlb.py,sha256=e0kQQ-yoXH3ptg4-42mWQqLVspjUHBsGQiV7bpARyxc,18352
55
+ tonutils/contracts/jetton/__init__.py,sha256=q4veZ0vA5OgonorVxcrZ2pZm4c6uoITfUcuRcBhnHR4,1895
56
+ tonutils/contracts/jetton/master.py,sha256=iYlEmhyLp1Dquwam4Hh6AIPIW5PV3tCUVN4zSjjHDTg,9917
57
+ tonutils/contracts/jetton/methods.py,sha256=gLIdMSDUhoprHDRV1EZ87BnMVqUhKUM9XaUZ_Z1Jwms,5479
58
+ tonutils/contracts/jetton/tlb.py,sha256=Bv0-8cmqxnGVyik60hu-zpQ8KJoSnL4Y5WK7eflfKhI,29341
59
+ tonutils/contracts/jetton/wallet.py,sha256=mhTcGucqEIgjHNaL4ee8vcv944zNFvMsA6AhaWZMUGk,2464
60
+ tonutils/contracts/nft/__init__.py,sha256=Oyhr6dVKcJuFxUV2hH62ehtaPlXXAsaNKbskdecEvec,2183
61
+ tonutils/contracts/nft/collection.py,sha256=EIAPs5gF_HW7tev1rNRCELRyVcxcNvgPVetF7Exa5O0,3086
62
+ tonutils/contracts/nft/item.py,sha256=zNCbHgykIPL0mn8eIcFbdFA2ZiGEXjaE2MgiS4flnuI,3746
63
+ tonutils/contracts/nft/methods.py,sha256=tpwGcUnhqDUZk3UOwvkrIwh2gqmLQvNv-fRLvyQ9_DM,9913
64
+ tonutils/contracts/nft/tlb.py,sha256=cUM5NVQg3RzzEnvNGsEK_dHjPxd7vFN39xPUi-OcJYM,36671
65
+ tonutils/contracts/telegram/__init__.py,sha256=nr0O0rzr2UJu1KrtrqbBqLOuUfMSLSWo4Iam5N76uak,1051
66
+ tonutils/contracts/telegram/collection.py,sha256=CM3T_8eWmrO_Ovq-crZgesfJ4h6JV4DhyggjV6nBY-U,3925
67
+ tonutils/contracts/telegram/item.py,sha256=DhNs5WFjhI1vqMfUg-cm311JTIvSaznc3aTqtLOCr9w,3887
68
+ tonutils/contracts/telegram/methods.py,sha256=rcZsEYTDwbT92NFhBhs-8TYruQWmxYgF6KElvaRnJPg,4403
69
+ tonutils/contracts/telegram/tlb.py,sha256=QRYijGDT0YGjRRjYiHjbgyeSxMP9RiSmRvmdhh6itS4,17848
70
+ tonutils/contracts/vanity/__init__.py,sha256=6LvJQxpmtrE3-ju44IsrkYQTx4HSq8nRb3fLyJFwrgE,288
71
+ tonutils/contracts/vanity/models.py,sha256=B6W1TN4CyrMs4SfBDAjuQ8QP-wn5QFhNpcSzO99DCbY,815
72
+ tonutils/contracts/vanity/tlb.py,sha256=gcNYEGPWMUHYbg_Je9QbBUlmVXF5RmobL-FoCMCF1HA,1078
73
+ tonutils/contracts/vanity/vanity.py,sha256=uYH1zybcOTQQBPciUFxAS6wksBwawKx06YES2tLuguI,1242
74
+ tonutils/contracts/wallet/__init__.py,sha256=Ho3-3C09JNk53ySnQaUnNscchfCtbUdyA2kpWAFzOf4,3295
75
+ tonutils/contracts/wallet/base.py,sha256=hKkvbeL4uG165k4_iWR4CjIUQsAtaUgQh9hwt1ZcUY8,15960
76
+ tonutils/contracts/wallet/configs.py,sha256=yQfuCEGL_fBuc5qGJ93rPIUATTR8V1wpYscgrWb7cEQ,4082
77
+ tonutils/contracts/wallet/messages.py,sha256=jUHQyejAS1x9uMzDW6BArifCmniODebxwrTSxceDgT4,13904
78
+ tonutils/contracts/wallet/methods.py,sha256=x7aPt71v3PUFNYHStWQrjLK7_SWPC2MiTG0c15X5TRI,10732
79
+ tonutils/contracts/wallet/params.py,sha256=hqinZJmhWiZUywDcmolvRxB0HYJgMAPDWYJiTmgjZ7w,4569
80
+ tonutils/contracts/wallet/protocol.py,sha256=DCu3CNbcZJ_wwROEK3GlpnwxNY2ZLdE0D2Z23WiyVDY,6200
81
+ tonutils/contracts/wallet/tlb.py,sha256=rS1oZJ6jvi7zGOuPPN6S7RajQaLaUsMm-VqO09dys8I,21871
82
+ tonutils/contracts/wallet/versions/__init__.py,sha256=DOHAEpx1mOlHdyTg2K0Mj8ZkcjabSdpLvIQY9_Pk6gw,592
83
+ tonutils/contracts/wallet/versions/hw.py,sha256=9kc_mlCegBo1O4_MvRQGLE3ZqLHsvqGN2F1IgnJeBOE,8348
84
+ tonutils/contracts/wallet/versions/pp.py,sha256=QfTqd4TAJHFMuatIwe0lg80uixno2JqSZFmQboxhca0,3793
85
+ tonutils/contracts/wallet/versions/v1.py,sha256=BYRWXdM0OlSeCfayHAUBj_wM4bb3WTVYoI-pPWDJD64,2881
86
+ tonutils/contracts/wallet/versions/v2.py,sha256=pwrlan-utZo_WmnzDwSbnzV8ibkPEWx2WU1uOjkdrrA,2452
87
+ tonutils/contracts/wallet/versions/v3.py,sha256=d7cM8wjmW-1H7jGuY3AuUd7eTY3wq9ZYpJ4f5OeYX08,2470
88
+ tonutils/contracts/wallet/versions/v4.py,sha256=2sAsjJ8_3oYAj5JwWH3PiMyoGbgl6-f7-p6T5X7MGTI,2713
89
+ tonutils/contracts/wallet/versions/v5.py,sha256=1J6KXPOc7Q5S5EdFM9WXQzNGRZrw5EgxDZ9dmyHwsXE,8890
90
+ tonutils/tonconnect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ tonutils/tools/__init__.py,sha256=QYOVuGY50FFkWlgIvHc2RPU3xiEWSbwnwZ6wuZPQnCA,102
92
+ tonutils/tools/block_scanner/__init__.py,sha256=j0TLZR8reFTXlD55zIjYI2WmP8Yizhwu0DQYzGnFBSQ,385
93
+ tonutils/tools/block_scanner/annotations.py,sha256=i6Xsu_rBERr7qEmhGGcwlYYkqf8cLjNJlZ4rXUf51WY,795
94
+ tonutils/tools/block_scanner/dispatcher.py,sha256=lgrs0MPnnyx0VibVQGYXU6s5mpqV_lO47yhO0uOCV30,4393
95
+ tonutils/tools/block_scanner/events.py,sha256=6M80JoiVMRy7kBBuT8-KlHJ5Dx3GHUjIKmZVPaXXeaA,727
96
+ tonutils/tools/block_scanner/scanner.py,sha256=eIdETj2awJOK72MUZH15-wzQjF0VKZBBXg-c0V1pu64,9988
97
+ tonutils/tools/block_scanner/traversal.py,sha256=DBwMgHzy-oXhc6PVlrW6x7pvN2HiYghKdtdBGZp2MvE,3085
98
+ tonutils/tools/block_scanner/where.py,sha256=FQaNBUEopgWZgTulZ8kg2cG0FMvvJAL1ddI2bKCoAzQ,3813
99
+ tonutils/tools/status_monitor/__init__.py,sha256=QnMlA0IDLtCGgXsEgB9q3EJTBo2s5js6lSJk0oZkQZQ,72
100
+ tonutils/tools/status_monitor/console.py,sha256=UX3BzjjzeS_nKFGg4NkZJpu9fR_IAJZdQUMz0HcJCdg,5036
101
+ tonutils/tools/status_monitor/models.py,sha256=yHuiEuij4h2kVoOK3sbhNq6SwiGDW_evZmzUwMy1GQs,608
102
+ tonutils/tools/status_monitor/monitor.py,sha256=8zUwNwFScmcjK9ES7XX1LZWjw49lk8CSUQATcUYM57E,10085
103
+ tonutils-2.0.1b4.dist-info/licenses/LICENSE,sha256=fG-yM-8DSkOTaJ558P7uF5PNXBmineVO9-HC12YbIxs,1060
104
+ tonutils-2.0.1b4.dist-info/METADATA,sha256=uulcdOShjPjzlh6h97LbvLuzmB9SxVQlJB8QjHawYfc,4181
105
+ tonutils-2.0.1b4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
106
+ tonutils-2.0.1b4.dist-info/entry_points.txt,sha256=qijo1cqvbbzLVbXp-PCYh19Pgmd7duH6yljmnUPd55I,47
107
+ tonutils-2.0.1b4.dist-info/top_level.txt,sha256=-7H_mGl8S9HKQrkUiTLmEbtMM-knzRzd_a0cZZnuZIU,9
108
+ tonutils-2.0.1b4.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ tonutils = tonutils.cli:main
@@ -1,56 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import asyncio
4
-
5
- from pyapiq.limiter import AsyncLimiter
6
-
7
-
8
- class PriorityLimiter(AsyncLimiter):
9
- """
10
- Token-bucket limiter with priority scheduling.
11
-
12
- Extends AsyncLimiter by allowing priority acquisitions that bypass
13
- normal waiters while still respecting rate limits.
14
- """
15
-
16
- def __init__(self, max_rate: int, time_period: float) -> None:
17
- """
18
- Initialize priority-aware limiter.
19
-
20
- :param max_rate: Maximum number of operations allowed in the window
21
- :param time_period: Time window length in seconds
22
- """
23
- super().__init__(max_rate, time_period)
24
- self._prio_waiters = 0
25
-
26
- async def acquire(self, priority: bool = False) -> None:
27
- """
28
- Acquire a limiter token.
29
-
30
- Priority requests are allowed to skip regular waiters when
31
- tokens become available.
32
-
33
- :param priority: Whether this acquisition request has priority
34
- """
35
- if priority:
36
- async with self._lock:
37
- self._prio_waiters += 1
38
-
39
- try:
40
- while True:
41
- # noinspection PyUnresolvedReferences
42
- async with self._lock:
43
- self._refill()
44
- if self._tokens >= 1:
45
- if not priority and self._prio_waiters > 0:
46
- delay = self._time_period / self._max_rate
47
- else:
48
- self._tokens -= 1
49
- return
50
- else:
51
- delay = self._time_period / self._max_rate
52
- await asyncio.sleep(delay)
53
- finally:
54
- if priority:
55
- async with self._lock:
56
- self._prio_waiters -= 1
@@ -1,64 +0,0 @@
1
- import typing as t
2
-
3
- from pytoniq_core import Address, Cell, Slice, VmTuple
4
-
5
- from tonutils.types import StackItem, StackItems
6
- from tonutils.utils import norm_stack_num, norm_stack_cell
7
-
8
-
9
- def decode_stack(items: t.List[t.Any]) -> StackItems:
10
- """
11
- Decode VM stack items into internal Python structures.
12
-
13
- Supports:
14
- - int → int
15
- - Cell/Slice → normalized cell
16
- - Address → address cell
17
- - VmTuple/list → recursive decode
18
- - None → None
19
-
20
- :param items: Raw VM stack items
21
- :return: Normalized Python stack values
22
- """
23
-
24
- out: StackItems = []
25
- for item in items:
26
- if item is None:
27
- out.append(None)
28
- elif isinstance(item, int):
29
- out.append(norm_stack_num(item))
30
- elif isinstance(item, Address):
31
- out.append(item.to_cell())
32
- elif isinstance(item, (Cell, Slice)):
33
- out.append(norm_stack_cell(item))
34
- elif isinstance(item, VmTuple):
35
- out.append(decode_stack(item.list))
36
- elif isinstance(item, list):
37
- out.append(decode_stack(item))
38
- return out
39
-
40
-
41
- def encode_stack(items: t.List[StackItem]) -> t.List[t.Any]:
42
- """
43
- Encode Python stack values into VM-compatible format.
44
-
45
- Supports:
46
- - int → int
47
- - Cell/Slice → cell/slice
48
- - Address → cell slice
49
- - list/tuple → recursive encode
50
-
51
- :param items: Normalized Python stack items
52
- :return: VM-encoded stack values
53
- """
54
- out: t.List[t.Any] = []
55
- for item in items:
56
- if isinstance(item, int):
57
- out.append(item)
58
- elif isinstance(item, Address):
59
- out.append(item.to_cell().to_slice())
60
- elif isinstance(item, (Cell, Slice)):
61
- out.append(item)
62
- elif isinstance(item, (list, tuple)):
63
- out.append(encode_stack(list(item)))
64
- return out
@@ -1,4 +0,0 @@
1
- from .client import ChainstackHttpClient
2
- from .provider import ChainstackHttpProvider
3
-
4
- __all__ = ["ChainstackHttpClient", "ChainstackHttpProvider"]
@@ -1,63 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import typing as t
4
-
5
- from aiohttp import ClientSession
6
-
7
- from tonutils.clients.http.chainstack.provider import ChainstackHttpProvider
8
- from tonutils.clients.http.toncenter.client import ToncenterHttpClient
9
- from tonutils.exceptions import ClientNotConnectedError
10
- from tonutils.types import NetworkGlobalID
11
-
12
-
13
- class ChainstackHttpClient(ToncenterHttpClient):
14
- """TON blockchain client using Chainstack HTTP API as transport."""
15
-
16
- def __init__(
17
- self,
18
- *,
19
- network: NetworkGlobalID = NetworkGlobalID.MAINNET,
20
- http_provider_url: str,
21
- timeout: int = 10,
22
- session: t.Optional[ClientSession] = None,
23
- rps_limit: t.Optional[int] = None,
24
- rps_period: float = 1.0,
25
- rps_retries: int = 2,
26
- ) -> None:
27
- """
28
- Initialize Chainstack HTTP client.
29
-
30
- :param network: Target TON network (mainnet or testnet)
31
- :param http_provider_url: Chainstack TON HTTP endpoint URL
32
- You can obtain a personal endpoint on the Chainstack website: https://chainstack.com/
33
- :param timeout: HTTP request timeout in seconds
34
- :param session: Optional externally managed aiohttp.ClientSession
35
- :param rps_limit: Optional requests-per-second limit
36
- :param rps_period: Time window in seconds for rate limiting
37
- :param rps_retries: Number of retries on rate limiting
38
- """
39
- super().__init__(network=network)
40
- self._provider: ChainstackHttpProvider = ChainstackHttpProvider(
41
- network=network,
42
- http_provider_url=http_provider_url,
43
- timeout=timeout,
44
- session=session,
45
- rps_limit=rps_limit,
46
- rps_period=rps_period,
47
- rps_retries=rps_retries,
48
- )
49
-
50
- @property
51
- def provider(self) -> ChainstackHttpProvider:
52
- """
53
- Underlying Chainstack HTTP provider.
54
-
55
- :return: ChainstackHttpProvider instance used for HTTP requests
56
- """
57
- if not self.is_connected:
58
- raise ClientNotConnectedError(self)
59
- return self._provider
60
-
61
- async def __aenter__(self) -> ChainstackHttpClient:
62
- await self._provider.__aenter__()
63
- return self
@@ -1,44 +0,0 @@
1
- import typing as t
2
-
3
- from aiohttp import ClientSession
4
-
5
- from tonutils.clients.http.toncenter.provider import ToncenterHttpProvider
6
- from tonutils.types import NetworkGlobalID
7
-
8
-
9
- class ChainstackHttpProvider(ToncenterHttpProvider):
10
- """Low-level HTTP provider for Chainstack API."""
11
-
12
- version = ""
13
-
14
- def __init__(
15
- self,
16
- network: NetworkGlobalID,
17
- http_provider_url: str,
18
- timeout: int = 10,
19
- session: t.Optional[ClientSession] = None,
20
- rps_limit: t.Optional[int] = None,
21
- rps_period: t.Optional[float] = None,
22
- rps_retries: t.Optional[int] = None,
23
- ) -> None:
24
- """
25
- Initialize Chainstack HTTP provider.
26
-
27
- :param network: TON network selector (mainnet/testnet)
28
- :param http_provider_url: Chainstack TON HTTP endpoint URL
29
- You can obtain a personal endpoint on the Chainstack website: https://chainstack.com/
30
- :param timeout: HTTP request timeout in seconds
31
- :param session: Optional aiohttp.ClientSession, external or auto-created
32
- :param rps_limit: Requests-per-second rate limit
33
- :param rps_period: Time period window for rate limiting
34
- :param rps_retries: Number of retries on rate-limit errors
35
- """
36
- super().__init__(
37
- network=network,
38
- base_url=http_provider_url,
39
- timeout=timeout,
40
- session=session,
41
- rps_limit=rps_limit,
42
- rps_period=rps_period,
43
- rps_retries=rps_retries,
44
- )
@@ -1,4 +0,0 @@
1
- from .client import QuicknodeHttpClient
2
- from .provider import QuicknodeHttpProvider
3
-
4
- __all__ = ["QuicknodeHttpClient", "QuicknodeHttpProvider"]
@@ -1,60 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import typing as t
4
-
5
- from aiohttp import ClientSession
6
-
7
- from tonutils.clients.http.quicknode.provider import QuicknodeHttpProvider
8
- from tonutils.clients.http.toncenter.client import ToncenterHttpClient
9
- from tonutils.exceptions import ClientNotConnectedError
10
- from tonutils.types import NetworkGlobalID
11
-
12
-
13
- class QuicknodeHttpClient(ToncenterHttpClient):
14
- """TON blockchain client using Quicknode HTTP API as transport."""
15
-
16
- def __init__(
17
- self,
18
- *,
19
- http_provider_url: str,
20
- timeout: int = 10,
21
- session: t.Optional[ClientSession] = None,
22
- rps_limit: t.Optional[int] = None,
23
- rps_period: float = 1.0,
24
- rps_retries: int = 2,
25
- ) -> None:
26
- """
27
- Initialize QuickNode HTTP client.
28
-
29
- :param http_provider_url: QuickNode TON HTTP endpoint URL.
30
- You can obtain a personal endpoint on the QuickNode website: https://www.quicknode.com/
31
- :param timeout: HTTP request timeout in seconds
32
- :param session: Optional externally managed aiohttp.ClientSession
33
- :param rps_limit: Optional requests-per-second limit
34
- :param rps_period: Time window in seconds for rate limiting
35
- :param rps_retries: Number of retries on rate limiting
36
- """
37
- super().__init__(network=NetworkGlobalID.MAINNET)
38
- self._provider: QuicknodeHttpProvider = QuicknodeHttpProvider(
39
- http_provider_url=http_provider_url,
40
- timeout=timeout,
41
- session=session,
42
- rps_limit=rps_limit,
43
- rps_period=rps_period,
44
- rps_retries=rps_retries,
45
- )
46
-
47
- @property
48
- def provider(self) -> QuicknodeHttpProvider:
49
- """
50
- Underlying QuickNode HTTP provider.
51
-
52
- :return: QuicknodeHttpProvider instance used for HTTP requests
53
- """
54
- if not self.is_connected:
55
- raise ClientNotConnectedError(self)
56
- return self._provider
57
-
58
- async def __aenter__(self) -> QuicknodeHttpClient:
59
- await self._provider.__aenter__()
60
- return self
@@ -1,42 +0,0 @@
1
- import typing as t
2
-
3
- from aiohttp import ClientSession
4
-
5
- from tonutils.clients.http.toncenter.provider import ToncenterHttpProvider
6
- from tonutils.types import NetworkGlobalID
7
-
8
-
9
- class QuicknodeHttpProvider(ToncenterHttpProvider):
10
- """Low-level HTTP provider for Quicknode API."""
11
-
12
- version = ""
13
-
14
- def __init__(
15
- self,
16
- http_provider_url: str,
17
- timeout: int = 10,
18
- session: t.Optional[ClientSession] = None,
19
- rps_limit: t.Optional[int] = None,
20
- rps_period: t.Optional[float] = None,
21
- rps_retries: t.Optional[int] = None,
22
- ) -> None:
23
- """
24
- Initialize QuickNode HTTP provider.
25
-
26
- :param http_provider_url: QuickNode TON HTTP endpoint URL.
27
- You can obtain a personal endpoint on the QuickNode website: https://www.quicknode.com/
28
- :param timeout: HTTP request timeout in seconds
29
- :param session: Optional aiohttp.ClientSession, external or auto-created
30
- :param rps_limit: Requests-per-second rate limit
31
- :param rps_period: Time period window for rate limiting
32
- :param rps_retries: Number of retries on rate-limit errors
33
- """
34
- super().__init__(
35
- network=NetworkGlobalID.MAINNET,
36
- base_url=http_provider_url,
37
- timeout=timeout,
38
- session=session,
39
- rps_limit=rps_limit,
40
- rps_period=rps_period,
41
- rps_retries=rps_retries,
42
- )
@@ -1,4 +0,0 @@
1
- from .client import TatumHttpClient
2
- from .provider import TatumHttpProvider
3
-
4
- __all__ = ["TatumHttpClient", "TatumHttpProvider"]
@@ -1,66 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import typing as t
4
-
5
- from aiohttp import ClientSession
6
-
7
- from tonutils.clients.http.tatum.provider import TatumHttpProvider
8
- from tonutils.clients.http.toncenter.client import ToncenterHttpClient
9
- from tonutils.exceptions import ClientNotConnectedError
10
- from tonutils.types import NetworkGlobalID
11
-
12
-
13
- class TatumHttpClient(ToncenterHttpClient):
14
- """TON blockchain client using Tatum HTTP API as transport."""
15
-
16
- def __init__(
17
- self,
18
- *,
19
- network: NetworkGlobalID = NetworkGlobalID.MAINNET,
20
- api_key: str,
21
- base_url: t.Optional[str] = None,
22
- timeout: int = 10,
23
- session: t.Optional[ClientSession] = None,
24
- rps_limit: t.Optional[int] = None,
25
- rps_period: float = 1.0,
26
- rps_retries: int = 2,
27
- ) -> None:
28
- """
29
- Initialize Tatum HTTP client.
30
-
31
- :param network: Target TON network (mainnet or testnet)
32
- :param api_key: Tatum API key
33
- You can get an API key on the Tatum website: https://tatum.io/
34
- :param base_url: Optional custom Tatum base URL
35
- :param timeout: HTTP request timeout in seconds
36
- :param session: Optional externally managed aiohttp.ClientSession
37
- :param rps_limit: Optional requests-per-second limit
38
- :param rps_period: Time window in seconds for rate limiting
39
- :param rps_retries: Number of retries on rate limiting
40
- """
41
- super().__init__(network=network)
42
- self._provider: TatumHttpProvider = TatumHttpProvider(
43
- api_key=api_key,
44
- network=network,
45
- base_url=base_url,
46
- timeout=timeout,
47
- session=session,
48
- rps_limit=rps_limit,
49
- rps_period=rps_period,
50
- rps_retries=rps_retries,
51
- )
52
-
53
- @property
54
- def provider(self) -> TatumHttpProvider:
55
- """
56
- Underlying Tatum HTTP provider.
57
-
58
- :return: TatumHttpProvider instance used for HTTP requests
59
- """
60
- if not self.is_connected:
61
- raise ClientNotConnectedError(self)
62
- return self._provider
63
-
64
- async def __aenter__(self) -> TatumHttpClient:
65
- await self._provider.__aenter__()
66
- return self
@@ -1,53 +0,0 @@
1
- import typing as t
2
-
3
- from aiohttp import ClientSession
4
-
5
- from tonutils.clients.http.toncenter.provider import ToncenterHttpProvider
6
- from tonutils.types import NetworkGlobalID
7
-
8
-
9
- class TatumHttpProvider(ToncenterHttpProvider):
10
- """Low-level HTTP provider for Tatum API."""
11
-
12
- version = ""
13
-
14
- def __init__(
15
- self,
16
- network: NetworkGlobalID,
17
- api_key: str,
18
- base_url: t.Optional[str] = None,
19
- timeout: int = 10,
20
- session: t.Optional[ClientSession] = None,
21
- rps_limit: t.Optional[int] = None,
22
- rps_period: t.Optional[float] = None,
23
- rps_retries: t.Optional[int] = None,
24
- ) -> None:
25
- """
26
- Initialize Tatum HTTP provider.
27
-
28
- :param network: TON network selector (mainnet/testnet)
29
- :param api_key: Tatum API key
30
- You can get an API key on the Tatum website: https://tatum.io/
31
- :param base_url: Custom Tatum base URL, overrides default if provided
32
- :param timeout: HTTP request timeout in seconds
33
- :param session: Optional aiohttp.ClientSession, external or auto-created
34
- :param rps_limit: Requests-per-second rate limit
35
- :param rps_period: Time period window for rate limiting
36
- :param rps_retries: Number of retries on rate-limit errors
37
- """
38
- urls = {
39
- NetworkGlobalID.MAINNET: "https://ton-mainnet.gateway.tatum.io",
40
- NetworkGlobalID.TESTNET: "https://ton-testnet.gateway.tatum.io",
41
- }
42
- base_url = base_url or urls.get(network)
43
-
44
- super().__init__(
45
- api_key=api_key,
46
- network=network,
47
- base_url=base_url,
48
- timeout=timeout,
49
- session=session,
50
- rps_limit=rps_limit,
51
- rps_period=rps_period,
52
- rps_retries=rps_retries,
53
- )
@@ -1,4 +0,0 @@
1
- from .client import TonapiHttpClient
2
- from .provider import TonapiHttpProvider
3
-
4
- __all__ = ["TonapiHttpClient", "TonapiHttpProvider"]