ratio1 3.4.41__tar.gz → 3.4.42__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. {ratio1-3.4.41 → ratio1-3.4.42}/PKG-INFO +1 -1
  2. {ratio1-3.4.41 → ratio1-3.4.42}/pyproject.toml +1 -1
  3. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/_ver.py +1 -1
  4. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/base.py +2 -0
  5. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex21_telegram_community_bot.py +50 -23
  6. {ratio1-3.4.41 → ratio1-3.4.42}/.devcontainer/Dockerfile +0 -0
  7. {ratio1-3.4.41 → ratio1-3.4.42}/.devcontainer/devcontainer.json +0 -0
  8. {ratio1-3.4.41 → ratio1-3.4.42}/.gitattributes +0 -0
  9. {ratio1-3.4.41 → ratio1-3.4.42}/.github/workflows/python-publish.yml +0 -0
  10. {ratio1-3.4.41 → ratio1-3.4.42}/.gitignore +0 -0
  11. {ratio1-3.4.41 → ratio1-3.4.42}/.vscode/launch.json +0 -0
  12. {ratio1-3.4.41 → ratio1-3.4.42}/LICENSE +0 -0
  13. {ratio1-3.4.41 → ratio1-3.4.42}/README.md +0 -0
  14. {ratio1-3.4.41 → ratio1-3.4.42}/TODOs.md +0 -0
  15. {ratio1-3.4.41 → ratio1-3.4.42}/__init__.py +0 -0
  16. {ratio1-3.4.41 → ratio1-3.4.42}/r1ctl.MD +0 -0
  17. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/__init__.py +0 -0
  18. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/__init__.py +0 -0
  19. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/distributed_custom_code_presets.py +0 -0
  20. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/generic_session.py +0 -0
  21. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/instance.py +0 -0
  22. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/payload/__init__.py +0 -0
  23. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/payload/payload.py +0 -0
  24. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/pipeline.py +0 -0
  25. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/plugin_template.py +0 -0
  26. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/responses.py +0 -0
  27. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/transaction.py +0 -0
  28. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base/webapp_pipeline.py +0 -0
  29. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/base_decentra_object.py +0 -0
  30. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/bc/__init__.py +0 -0
  31. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/bc/base.py +0 -0
  32. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/bc/chain.py +0 -0
  33. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/bc/ec.py +0 -0
  34. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/bc/evm.py +0 -0
  35. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/certs/51.15.142.167.crt +0 -0
  36. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/certs/__init__.py +0 -0
  37. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/certs/a0d9818f.ala.eu-central-1.emqxsl.com.crt +0 -0
  38. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
  39. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/certs/s624dbd4.ala.us-east-1.emqxsl.com.crt +0 -0
  40. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/cli/README.md +0 -0
  41. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/cli/cli.py +0 -0
  42. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/cli/cli_commands.py +0 -0
  43. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/cli/nodes.py +0 -0
  44. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/cli/oracles.py +0 -0
  45. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/cli/package_update.py +0 -0
  46. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/code_cheker/__init__.py +0 -0
  47. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/code_cheker/base.py +0 -0
  48. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/code_cheker/checker.py +0 -0
  49. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/comm/__init__.py +0 -0
  50. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/comm/amqp_wrapper.py +0 -0
  51. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/comm/base_comm_wrapper.py +0 -0
  52. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/comm/mqtt_wrapper.py +0 -0
  53. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/README.md +0 -0
  54. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/__init__.py +0 -0
  55. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/apps.py +0 -0
  56. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/comms.py +0 -0
  57. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/environment.py +0 -0
  58. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/evm_net.py +0 -0
  59. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/formatter.py +0 -0
  60. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/heartbeat.py +0 -0
  61. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/misc.py +0 -0
  62. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/payload.py +0 -0
  63. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/const/plugins/deeploy_const.py +0 -0
  64. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/default/__init__.py +0 -0
  65. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/default/instance/__init__.py +0 -0
  66. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
  67. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/default/instance/custom_webapi_01_plugin.py +0 -0
  68. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/default/instance/generic_http_01_plugin.py +0 -0
  69. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/default/instance/net_mon_01_plugin.py +0 -0
  70. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/default/instance/telegram_basic_bot_01_plugin.py +0 -0
  71. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
  72. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/default/instance/view_scene_01_plugin.py +0 -0
  73. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/default/session/mqtt_session.py +0 -0
  74. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/io_formatter/__init__.py +0 -0
  75. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/io_formatter/base/__init__.py +0 -0
  76. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/io_formatter/base/base_formatter.py +0 -0
  77. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/io_formatter/default/__init__.py +0 -0
  78. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/io_formatter/default/a_dummy.py +0 -0
  79. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/io_formatter/default/aixp1.py +0 -0
  80. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/io_formatter/default/default.py +0 -0
  81. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/io_formatter/io_formatter_manager.py +0 -0
  82. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/ipfs/__init__.py +0 -0
  83. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/ipfs/ifps_keygen +0 -0
  84. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/ipfs/ipfs_setup/ipfs.service +0 -0
  85. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/ipfs/ipfs_setup/launch_service.sh +0 -0
  86. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/ipfs/ipfs_setup/restart.sh +0 -0
  87. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/ipfs/ipfs_setup/run.sh +0 -0
  88. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/ipfs/ipfs_setup/setup.sh +0 -0
  89. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/ipfs/ipfs_setup/show.sh +0 -0
  90. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/ipfs/ipfs_setup/write_key.sh +0 -0
  91. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/ipfs/r1fs.py +0 -0
  92. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/__init__.py +0 -0
  93. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/base_logger.py +0 -0
  94. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/__init__.py +0 -0
  95. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/class_instance_mixin.py +0 -0
  96. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/computer_vision_mixin.py +0 -0
  97. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/datetime_mixin.py +0 -0
  98. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/download_mixin.py +0 -0
  99. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/general_serialization_mixin.py +0 -0
  100. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/json_serialization_mixin.py +0 -0
  101. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/machine_mixin.py +0 -0
  102. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
  103. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/process_mixin.py +0 -0
  104. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/resource_size_mixin.py +0 -0
  105. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/timers_mixin.py +0 -0
  106. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/upload_mixin.py +0 -0
  107. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/logger_mixins/utils_mixin.py +0 -0
  108. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/small_logger.py +0 -0
  109. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/tzlocal/__init__.py +0 -0
  110. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/tzlocal/unix.py +0 -0
  111. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/tzlocal/utils.py +0 -0
  112. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/tzlocal/win32.py +0 -0
  113. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/logging/tzlocal/windows_tz.py +0 -0
  114. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/plugins_manager_mixin.py +0 -0
  115. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/utils/__init__.py +0 -0
  116. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/utils/comm_utils.py +0 -0
  117. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/utils/config.py +0 -0
  118. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/utils/dotenv.py +0 -0
  119. {ratio1-3.4.41 → ratio1-3.4.42}/ratio1/utils/oracle_sync/oracle_tester.py +0 -0
  120. {ratio1-3.4.41 → ratio1-3.4.42}/requirements.txt +0 -0
  121. {ratio1-3.4.41 → ratio1-3.4.42}/template.env +0 -0
  122. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/.example_env +0 -0
  123. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
  124. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
  125. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/_example_pk_sdk.pem +0 -0
  126. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/eth2025/deploy_home_safety.py +0 -0
  127. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/eth2025/deploy_maintenance_monitoring.py +0 -0
  128. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex01_part1_connect.py +0 -0
  129. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex01_part2_filter.py +0 -0
  130. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex01_part3_adv_filter.py +0 -0
  131. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex02_part1_deploy_webapi.py +0 -0
  132. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex02_part2_deploy_plugin.py +0 -0
  133. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex02_part3_deploy_r1fs_test.py +0 -0
  134. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
  135. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
  136. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
  137. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
  138. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
  139. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex08_custom_webapi.py +0 -0
  140. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
  141. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex10_telegram_echo_bot.py +0 -0
  142. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex11_telegram_blackjack_bot.py +0 -0
  143. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex12_telegram_smart_bot.py +0 -0
  144. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex13_launch_repo_based_webapp.py +0 -0
  145. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex14_wallets.py +0 -0
  146. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex15_telegram_rogue_style_game.py +0 -0
  147. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex16_launch_repo_based_http_server.py +0 -0
  148. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex17_launch_repo_based_balanced_webapp.py +0 -0
  149. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex18_deploy_container_webapi.py +0 -0
  150. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex19_deeploy_container_example.py +0 -0
  151. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex20_deeploy_telegram_bot.py +0 -0
  152. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/ex22_deeploy_custom_code.py +0 -0
  153. {ratio1-3.4.41 → ratio1-3.4.42}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
  154. {ratio1-3.4.41 → ratio1-3.4.42}/winrun.bat +0 -0
  155. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/README.md +0 -0
  156. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/_show_config_check.py +0 -0
  157. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/cstore_check.py +0 -0
  158. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/dauth_check.py +0 -0
  159. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/keys_check.py +0 -0
  160. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/node_info_check.py +0 -0
  161. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/ora_check.py +0 -0
  162. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/ora_intervals.py +0 -0
  163. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/ora_sign_check.py +0 -0
  164. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/owner_check.py +0 -0
  165. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/payload_check.py +0 -0
  166. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/session_check.py +0 -0
  167. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/w3_auth_check.py +0 -0
  168. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/w3_nodes_licenses.py +0 -0
  169. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/w3_oracles_check.py +0 -0
  170. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/whitelist_check.py +0 -0
  171. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/_checks/workload_check.py +0 -0
  172. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/dates/check_date.py +0 -0
  173. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/debug/close_pipeline.py +0 -0
  174. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/decentralized/chain_dist_example.py +0 -0
  175. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
  176. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
  177. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/deeploy/checker.py +0 -0
  178. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/deeploy/checker2.py +0 -0
  179. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/deeploy/create_request.py +0 -0
  180. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/enc_dec/enc_dec_test.py +0 -0
  181. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/eth/balance.py +0 -0
  182. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/eth/eth_sign.py +0 -0
  183. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/eth/info.md +0 -0
  184. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/eth/send.py +0 -0
  185. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/eth/send_many.py +0 -0
  186. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/eth/sign.py +0 -0
  187. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/log.py +0 -0
  188. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/logger/run.py +0 -0
  189. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/lp/lp_checker.py +0 -0
  190. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/multi-enc-dec/multi_test1.py +0 -0
  191. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/multi-enc-dec/multi_test2.py +0 -0
  192. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/pipelines/start.py +0 -0
  193. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/pipelines/stop.py +0 -0
  194. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/scripts/monitoring/collect_messages.py +0 -0
  195. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/scripts/monitoring/get_hb_distribution.py +0 -0
  196. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/scripts/monitoring/multithreaded_network_sniffer.py +0 -0
  197. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/sign/simple_payload_checker.py +0 -0
  198. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/sign/test_sign1.py +0 -0
  199. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/sign/test_sign2.py +0 -0
  200. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/test.py +0 -0
  201. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/tokens/get_check.py +0 -0
  202. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/utils/get_documentation.py +0 -0
  203. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/various/attach_example.py +0 -0
  204. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/various/ex1.py +0 -0
  205. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/various/hello.py +0 -0
  206. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/various/remote_exec.py +0 -0
  207. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/various/save_images.py +0 -0
  208. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/wl/wl_add.py +0 -0
  209. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/xarchive/_tutorials/3. simple_real_time_custom_code.py +0 -0
  210. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/xarchive/_tutorials/4. real_time_custom_code_2.py +0 -0
  211. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/xarchive/_tutorials/8. chatbot.py +0 -0
  212. {ratio1-3.4.41 → ratio1-3.4.42}/xperimental/xarchive/test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ratio1
3
- Version: 3.4.41
3
+ Version: 3.4.42
4
4
  Summary: `ratio1` or Ration1 SDK is the Python SDK required for client app development for the Ratio1 ecosystem
5
5
  Project-URL: Homepage, https://github.com/Ratio1/ratio1_sdk
6
6
  Project-URL: Bug Tracker, https://github.com/Ratio1/ratio1_sdk/issues
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "ratio1"
7
- version = "3.4.41"
7
+ version = "3.4.42"
8
8
  authors = [
9
9
  { name="Andrei Ionut Damian", email="andrei.damian@ratio1.ai" },
10
10
  { name="Cristan Bleotiu", email="cristian.bleotiu@ratio1.ai" },
@@ -1,4 +1,4 @@
1
- __VER__ = "3.4.41"
1
+ __VER__ = "3.4.42"
2
2
 
3
3
  if __name__ == "__main__":
4
4
  with open("pyproject.toml", "rt") as fd:
@@ -172,6 +172,8 @@ class CONFIG_STREAM:
172
172
 
173
173
  LAST_UPDATE_TIME = 'LAST_UPDATE_TIME'
174
174
 
175
+ IS_DEEPLOYED = 'IS_DEEPLOYED'
176
+
175
177
  URL = K_URL
176
178
  TYPE = K_TYPE
177
179
  RECONNECTABLE = K_RECONNECTABLE
@@ -29,13 +29,14 @@ def loop_processing(plugin: CustomPluginTemplate):
29
29
  # Define cache keys and file names for storing epoch review data and watched wallets
30
30
  epoch_review_cache_key = f"ratio1_epoch_review"
31
31
  watched_wallets_cache_key = f"ratio1_watched_wallets"
32
+ watched_wallets_loops_delay_cache_key = f"ratio1_watched_wallets_loops_delay"
32
33
  alert_cache_key = f"ratio1_node_alerts"
33
34
  cache_already_read_key = f"ratio1_epoch_review_already_read"
34
35
  diskapi_epoch_review_file_name = "ratio1_epoch_review_data.pkl"
35
36
  diskapi_watched_wallets_file_name = "ratio1_watched_wallets_data.pkl"
36
37
 
37
38
  def get_erc721_total_supply(contract_address: str) -> int:
38
- return int(plugin.requests.post("https://base.drpc.org", json={
39
+ return int(plugin.requests.post("https://base-mainnet.public.blastapi.io", json={
39
40
  "jsonrpc": "2.0",
40
41
  "method": "eth_call",
41
42
  "params": [
@@ -83,32 +84,37 @@ def loop_processing(plugin: CustomPluginTemplate):
83
84
  plugin.obj_cache[epoch_review_cache_key] = plugin.diskapi_load_pickle_from_data(diskapi_epoch_review_file_name) or {}
84
85
  plugin.obj_cache[watched_wallets_cache_key] = plugin.diskapi_load_pickle_from_data(diskapi_watched_wallets_file_name) or {}
85
86
  plugin.obj_cache[alert_cache_key] = {}
87
+ plugin.obj_cache[watched_wallets_loops_delay_cache_key] = 30
86
88
  plugin.obj_cache[cache_already_read_key] = True # We use this flag to read the cache only once at the first run
87
89
 
88
90
  # Check users' watched wallets and notify if any node is offline
89
- watched_wallets = plugin.obj_cache.get(watched_wallets_cache_key)
90
- if watched_wallets is not None:
91
- for user, wallets in watched_wallets.items():
92
- for wallet in wallets:
93
- wallet_nodes = plugin.bc.get_wallet_nodes(wallet)
94
- for node in wallet_nodes:
95
- if node == "0x0000000000000000000000000000000000000000":
96
- continue
91
+ if plugin.obj_cache.get(watched_wallets_loops_delay_cache_key) == 30:
92
+ watched_wallets = plugin.obj_cache.get(watched_wallets_cache_key)
93
+ if watched_wallets is not None:
94
+ for user, wallets in watched_wallets.items():
95
+ for wallet in wallets:
96
+ wallet_nodes = plugin.bc.get_wallet_nodes(wallet)
97
+ for node in wallet_nodes:
98
+ if node == "0x0000000000000000000000000000000000000000":
99
+ continue
97
100
 
98
- node_alert_cache_key = f"{user}-{node}"
99
- node_internal_addr = plugin.bc.eth_addr_to_internal_addr(node)
100
- node_is_online = plugin.netmon.network_node_is_online(node_internal_addr)
101
- if node_is_online:
102
- if plugin.obj_cache[alert_cache_key].get(node_alert_cache_key) is not None:
103
- # Node was previously offline, now it is back online, we notify the user
104
- message = f"✅ Node {plugin.netmon.network_node_eeid(node_internal_addr)} ({node}) is back online."
101
+ node_alert_cache_key = f"{user}-{node}"
102
+ node_internal_addr = plugin.bc.eth_addr_to_internal_addr(node)
103
+ node_is_online = plugin.netmon.network_node_is_online(node_internal_addr)
104
+ if node_is_online:
105
+ if plugin.obj_cache[alert_cache_key].get(node_alert_cache_key) is not None:
106
+ # Node was previously offline, now it is back online, we notify the user
107
+ message = f"✅ Node {plugin.netmon.network_node_eeid(node_internal_addr)} ({node}) is back online."
108
+ plugin.send_message_to_user(user_id=user, text=message)
109
+ plugin.obj_cache[alert_cache_key][node_alert_cache_key] = None
110
+ elif plugin.obj_cache[alert_cache_key].get(node_alert_cache_key) is None:
111
+ # Node is offline and we haven't notified the user yet
112
+ plugin.obj_cache[alert_cache_key][node_alert_cache_key] = True
113
+ message = f"⚠️ Node {plugin.netmon.network_node_eeid(node_internal_addr)} ({node}) is offline. Please check your node status."
105
114
  plugin.send_message_to_user(user_id=user, text=message)
106
- plugin.obj_cache[alert_cache_key][node_alert_cache_key] = None
107
- elif plugin.obj_cache[alert_cache_key].get(node_alert_cache_key) is None:
108
- # Node is offline and we haven't notified the user yet
109
- plugin.obj_cache[alert_cache_key][node_alert_cache_key] = True
110
- message = f"⚠️ Node {plugin.netmon.network_node_eeid(node_internal_addr)} ({node}) is offline. Please check your node status."
111
- plugin.send_message_to_user(user_id=user, text=message)
115
+ plugin.obj_cache[watched_wallets_loops_delay_cache_key] = 0
116
+ else:
117
+ plugin.obj_cache[watched_wallets_loops_delay_cache_key] += 1
112
118
 
113
119
  # Check if the epoch review has already been processed for the last epoch
114
120
  if plugin.obj_cache.get(epoch_review_cache_key) is not None:
@@ -145,7 +151,8 @@ def loop_processing(plugin: CustomPluginTemplate):
145
151
  message += f"🔄 Circulating R1 Supply: {circulating_supply:,.0f} R1\n"
146
152
  message += f"💎 Total R1 Supply: {total_supply:,.0f} R1\n"
147
153
  message += f"🎁 Last Epoch PoA Mining: {(last_epoch_nd_mining):,.2f} R1\n"
148
- message += f"🔥 Last Epoch Burn: {(burned_last_epoch):,.2f} R1\n"
154
+ if burned_last_epoch > 0:
155
+ message += f"🔥 Last Epoch Burn: {(burned_last_epoch):,.2f} R1\n"
149
156
  message += f"🔥 Total Burn: {(current_burn):,.2f} R1\n"
150
157
  plugin.send_message_to_user(user_id=plugin.cfg_chat_id, text=message)
151
158
 
@@ -222,6 +229,24 @@ def reply(plugin: CustomPluginTemplate, message: str, user: str, chat_id: str):
222
229
  message += f"- {wallet}\n"
223
230
  return message
224
231
 
232
+ def handle_nodes():
233
+ user_watched_wallets = plugin.obj_cache.get(watched_wallets_cache_key).get(chat_id, [])
234
+ if not user_watched_wallets:
235
+ return "You are not watching any wallet. Use /watch <wallet_address> to start watching a wallet."
236
+ message = "You are currently watching the following wallets and their nodes:\n"
237
+ for wallet in user_watched_wallets:
238
+ wallet_nodes = plugin.bc.get_wallet_nodes(wallet)
239
+ message += f"- {wallet}:\n"
240
+ for node in wallet_nodes:
241
+ if node == "0x0000000000000000000000000000000000000000":
242
+ continue
243
+ node_internal_addr = plugin.bc.eth_addr_to_internal_addr(node)
244
+ node_alias = plugin.netmon.network_node_eeid(node_internal_addr)
245
+ node_is_online = plugin.netmon.network_node_is_online(node_internal_addr)
246
+ short_node = node[:6] + "..." + node[-4:]
247
+ message += f" - {'🟢' if node_is_online else '🔴'} {node_alias} ({short_node})\n"
248
+ return message
249
+
225
250
  def handle_start():
226
251
  return "Welcome to the Ratio1 Bot! Use /watch <wallet_address> to start watching your nodes. You will receive notifications when your nodes are offline."
227
252
 
@@ -238,6 +263,8 @@ def reply(plugin: CustomPluginTemplate, message: str, user: str, chat_id: str):
238
263
  return handle_unwatchall()
239
264
  if message.startswith("/unwatch"):
240
265
  return handle_unwatch()
266
+ if message.startswith("/nodes"):
267
+ return handle_nodes()
241
268
  if message.startswith("/start"):
242
269
  return handle_start()
243
270
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes