ratio1 3.4.34__tar.gz → 3.4.36__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 (209) hide show
  1. {ratio1-3.4.34 → ratio1-3.4.36}/PKG-INFO +1 -1
  2. {ratio1-3.4.34 → ratio1-3.4.36}/pyproject.toml +1 -1
  3. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/_ver.py +1 -1
  4. ratio1-3.4.34/ratio1/certs/51.15.142.167.cert → ratio1-3.4.36/ratio1/certs/51.15.142.167.crt +1 -1
  5. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/cli/cli_commands.py +4 -0
  6. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/cli/nodes.py +5 -0
  7. ratio1-3.4.36/xperimental/lp/lp_checker.py +206 -0
  8. ratio1-3.4.34/xperimental/lp/lp_checker.py +0 -88
  9. {ratio1-3.4.34 → ratio1-3.4.36}/.devcontainer/Dockerfile +0 -0
  10. {ratio1-3.4.34 → ratio1-3.4.36}/.devcontainer/devcontainer.json +0 -0
  11. {ratio1-3.4.34 → ratio1-3.4.36}/.gitattributes +0 -0
  12. {ratio1-3.4.34 → ratio1-3.4.36}/.github/workflows/python-publish.yml +0 -0
  13. {ratio1-3.4.34 → ratio1-3.4.36}/.gitignore +0 -0
  14. {ratio1-3.4.34 → ratio1-3.4.36}/.vscode/launch.json +0 -0
  15. {ratio1-3.4.34 → ratio1-3.4.36}/LICENSE +0 -0
  16. {ratio1-3.4.34 → ratio1-3.4.36}/README.md +0 -0
  17. {ratio1-3.4.34 → ratio1-3.4.36}/TODOs.md +0 -0
  18. {ratio1-3.4.34 → ratio1-3.4.36}/__init__.py +0 -0
  19. {ratio1-3.4.34 → ratio1-3.4.36}/r1ctl.MD +0 -0
  20. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/__init__.py +0 -0
  21. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/__init__.py +0 -0
  22. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/distributed_custom_code_presets.py +0 -0
  23. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/generic_session.py +0 -0
  24. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/instance.py +0 -0
  25. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/payload/__init__.py +0 -0
  26. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/payload/payload.py +0 -0
  27. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/pipeline.py +0 -0
  28. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/plugin_template.py +0 -0
  29. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/responses.py +0 -0
  30. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/transaction.py +0 -0
  31. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base/webapp_pipeline.py +0 -0
  32. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/base_decentra_object.py +0 -0
  33. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/bc/__init__.py +0 -0
  34. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/bc/base.py +0 -0
  35. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/bc/chain.py +0 -0
  36. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/bc/ec.py +0 -0
  37. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/bc/evm.py +0 -0
  38. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/certs/__init__.py +0 -0
  39. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/certs/a0d9818f.ala.eu-central-1.emqxsl.com.crt +0 -0
  40. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
  41. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/certs/s624dbd4.ala.us-east-1.emqxsl.com.crt +0 -0
  42. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/cli/README.md +0 -0
  43. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/cli/cli.py +0 -0
  44. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/cli/oracles.py +0 -0
  45. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/cli/package_update.py +0 -0
  46. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/code_cheker/__init__.py +0 -0
  47. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/code_cheker/base.py +0 -0
  48. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/code_cheker/checker.py +0 -0
  49. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/comm/__init__.py +0 -0
  50. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/comm/amqp_wrapper.py +0 -0
  51. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/comm/base_comm_wrapper.py +0 -0
  52. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/comm/mqtt_wrapper.py +0 -0
  53. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/README.md +0 -0
  54. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/__init__.py +0 -0
  55. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/apps.py +0 -0
  56. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/base.py +0 -0
  57. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/comms.py +0 -0
  58. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/environment.py +0 -0
  59. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/evm_net.py +0 -0
  60. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/formatter.py +0 -0
  61. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/heartbeat.py +0 -0
  62. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/misc.py +0 -0
  63. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/payload.py +0 -0
  64. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/const/plugins/deeploy_const.py +0 -0
  65. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/default/__init__.py +0 -0
  66. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/default/instance/__init__.py +0 -0
  67. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
  68. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/default/instance/custom_webapi_01_plugin.py +0 -0
  69. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/default/instance/generic_http_01_plugin.py +0 -0
  70. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/default/instance/net_mon_01_plugin.py +0 -0
  71. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/default/instance/telegram_basic_bot_01_plugin.py +0 -0
  72. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
  73. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/default/instance/view_scene_01_plugin.py +0 -0
  74. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/default/session/mqtt_session.py +0 -0
  75. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/io_formatter/__init__.py +0 -0
  76. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/io_formatter/base/__init__.py +0 -0
  77. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/io_formatter/base/base_formatter.py +0 -0
  78. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/io_formatter/default/__init__.py +0 -0
  79. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/io_formatter/default/a_dummy.py +0 -0
  80. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/io_formatter/default/aixp1.py +0 -0
  81. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/io_formatter/default/default.py +0 -0
  82. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/io_formatter/io_formatter_manager.py +0 -0
  83. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/ipfs/__init__.py +0 -0
  84. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/ipfs/ifps_keygen +0 -0
  85. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/ipfs/ipfs_setup/ipfs.service +0 -0
  86. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/ipfs/ipfs_setup/launch_service.sh +0 -0
  87. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/ipfs/ipfs_setup/restart.sh +0 -0
  88. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/ipfs/ipfs_setup/run.sh +0 -0
  89. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/ipfs/ipfs_setup/setup.sh +0 -0
  90. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/ipfs/ipfs_setup/show.sh +0 -0
  91. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/ipfs/ipfs_setup/write_key.sh +0 -0
  92. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/ipfs/r1fs.py +0 -0
  93. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/__init__.py +0 -0
  94. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/base_logger.py +0 -0
  95. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/__init__.py +0 -0
  96. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/class_instance_mixin.py +0 -0
  97. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/computer_vision_mixin.py +0 -0
  98. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/datetime_mixin.py +0 -0
  99. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/download_mixin.py +0 -0
  100. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/general_serialization_mixin.py +0 -0
  101. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/json_serialization_mixin.py +0 -0
  102. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/machine_mixin.py +0 -0
  103. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
  104. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/process_mixin.py +0 -0
  105. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/resource_size_mixin.py +0 -0
  106. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/timers_mixin.py +0 -0
  107. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/upload_mixin.py +0 -0
  108. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/logger_mixins/utils_mixin.py +0 -0
  109. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/small_logger.py +0 -0
  110. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/tzlocal/__init__.py +0 -0
  111. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/tzlocal/unix.py +0 -0
  112. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/tzlocal/utils.py +0 -0
  113. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/tzlocal/win32.py +0 -0
  114. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/logging/tzlocal/windows_tz.py +0 -0
  115. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/plugins_manager_mixin.py +0 -0
  116. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/utils/__init__.py +0 -0
  117. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/utils/comm_utils.py +0 -0
  118. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/utils/config.py +0 -0
  119. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/utils/dotenv.py +0 -0
  120. {ratio1-3.4.34 → ratio1-3.4.36}/ratio1/utils/oracle_sync/oracle_tester.py +0 -0
  121. {ratio1-3.4.34 → ratio1-3.4.36}/requirements.txt +0 -0
  122. {ratio1-3.4.34 → ratio1-3.4.36}/template.env +0 -0
  123. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/.example_env +0 -0
  124. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
  125. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
  126. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/_example_pk_sdk.pem +0 -0
  127. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/eth2025/deploy_home_safety.py +0 -0
  128. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/eth2025/deploy_maintenance_monitoring.py +0 -0
  129. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex01_part1_connect.py +0 -0
  130. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex01_part2_filter.py +0 -0
  131. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex01_part3_adv_filter.py +0 -0
  132. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex02_part1_deploy_webapi.py +0 -0
  133. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex02_part2_deploy_plugin.py +0 -0
  134. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex02_part3_deploy_r1fs_test.py +0 -0
  135. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
  136. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
  137. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
  138. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
  139. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
  140. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex08_custom_webapi.py +0 -0
  141. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
  142. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex10_telegram_echo_bot.py +0 -0
  143. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex11_telegram_blackjack_bot.py +0 -0
  144. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex12_telegram_smart_bot.py +0 -0
  145. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex13_launch_repo_based_webapp.py +0 -0
  146. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex14_wallets.py +0 -0
  147. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex15_telegram_rogue_style_game.py +0 -0
  148. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex16_launch_repo_based_http_server.py +0 -0
  149. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex17_launch_repo_based_balanced_webapp.py +0 -0
  150. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex18_deploy_container_webapi.py +0 -0
  151. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex19_deeploy_container_example.py +0 -0
  152. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex20_deeploy_telegram_bot_example.py +0 -0
  153. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/ex21_telegram_community_bot.py +0 -0
  154. {ratio1-3.4.34 → ratio1-3.4.36}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
  155. {ratio1-3.4.34 → ratio1-3.4.36}/winrun.bat +0 -0
  156. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/README.md +0 -0
  157. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/_show_config_check.py +0 -0
  158. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/cstore_check.py +0 -0
  159. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/dauth_check.py +0 -0
  160. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/keys_check.py +0 -0
  161. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/node_info_check.py +0 -0
  162. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/ora_check.py +0 -0
  163. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/ora_intervals.py +0 -0
  164. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/ora_sign_check.py +0 -0
  165. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/owner_check.py +0 -0
  166. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/payload_check.py +0 -0
  167. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/session_check.py +0 -0
  168. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/w3_auth_check.py +0 -0
  169. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/w3_nodes_licenses.py +0 -0
  170. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/w3_oracles_check.py +0 -0
  171. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/whitelist_check.py +0 -0
  172. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/_checks/workload_check.py +0 -0
  173. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/dates/check_date.py +0 -0
  174. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/debug/close_pipeline.py +0 -0
  175. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/decentralized/chain_dist_example.py +0 -0
  176. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
  177. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
  178. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/deeploy/checker.py +0 -0
  179. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/deeploy/checker2.py +0 -0
  180. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/deeploy/create_request.py +0 -0
  181. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/enc_dec/enc_dec_test.py +0 -0
  182. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/eth/balance.py +0 -0
  183. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/eth/eth_sign.py +0 -0
  184. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/eth/info.md +0 -0
  185. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/eth/send.py +0 -0
  186. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/eth/send_many.py +0 -0
  187. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/eth/sign.py +0 -0
  188. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/log.py +0 -0
  189. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/logger/run.py +0 -0
  190. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/multi-enc-dec/multi_test1.py +0 -0
  191. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/multi-enc-dec/multi_test2.py +0 -0
  192. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/pipelines/start.py +0 -0
  193. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/pipelines/stop.py +0 -0
  194. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/sign/simple_payload_checker.py +0 -0
  195. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/sign/test_sign1.py +0 -0
  196. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/sign/test_sign2.py +0 -0
  197. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/test.py +0 -0
  198. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/tokens/get_check.py +0 -0
  199. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/utils/get_documentation.py +0 -0
  200. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/various/attach_example.py +0 -0
  201. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/various/ex1.py +0 -0
  202. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/various/hello.py +0 -0
  203. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/various/remote_exec.py +0 -0
  204. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/various/save_images.py +0 -0
  205. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/wl/wl_add.py +0 -0
  206. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/xarchive/_tutorials/3. simple_real_time_custom_code.py +0 -0
  207. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/xarchive/_tutorials/4. real_time_custom_code_2.py +0 -0
  208. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/xarchive/_tutorials/8. chatbot.py +0 -0
  209. {ratio1-3.4.34 → ratio1-3.4.36}/xperimental/xarchive/test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ratio1
3
- Version: 3.4.34
3
+ Version: 3.4.36
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.34"
7
+ version = "3.4.36"
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.34"
1
+ __VER__ = "3.4.36"
2
2
 
3
3
  if __name__ == "__main__":
4
4
  with open("pyproject.toml", "rt") as fd:
@@ -17,4 +17,4 @@ APeA2A8F9zriemjFjQYaveQKW4tzXtGY68ibSMgH/qceVrfgZ8/G1vE7Qy/RtYRE
17
17
  z54RLb2dZIIUQCcuRCbzX0KHB4PMbz42gSPrWA3V1anVuxXeq9NYOU87dLK7y4fp
18
18
  lcdFmDaI1mQ3UgRRXKrv14yjvRYxSAcao6mfsx1zVVKlvcavqawNxcQp+bQD1Nxw
19
19
  scArD5w=
20
- -----END CERTIFICATE-----
20
+ -----END CERTIFICATE-----
@@ -42,6 +42,10 @@ CLI_COMMANDS = {
42
42
  "supervisors": {
43
43
  "func": get_supervisors, # DONE
44
44
  "description": "Get the list of available supervisor oracles",
45
+ "params": {
46
+ "--eth" : "Use a specific node (flag)",
47
+ "--wide" : "Display all available information (flag)",
48
+ }
45
49
  },
46
50
  "eth" : {
47
51
  "func": get_eth_addr,
@@ -115,10 +115,15 @@ def get_supervisors(args):
115
115
  online_only=True,
116
116
  supervisors_only=True,
117
117
  return_session=True,
118
+ eth=args.eth,
119
+ all_info=args.wide,
118
120
  )
119
121
  df, supervisor, super_alias, nr_supers, elapsed, sess = res
120
122
  FILTERED = ['Oracle', 'State']
121
123
  df = df[[c for c in df.columns if c not in FILTERED]]
124
+
125
+ import pandas as pd
126
+ pd.set_option('display.float_format', '{:.4f}'.format)
122
127
 
123
128
  if supervisor == "ERROR":
124
129
  log_with_color(f"No supervisors or no comms available in {elapsed:.1f}s. Please check your settings.", color='r')
@@ -0,0 +1,206 @@
1
+ #!/usr/bin/env python3
2
+ """Utility script for inspecting the R1/USDC liquidity pool on Base.
3
+
4
+ The script prints the current LP holders and the amount of R1 and USDC each
5
+ holder would receive if they removed their liquidity. Additionally it computes
6
+ the "lower bound price" of the R1 token which is defined as the price implied by
7
+ the token balances inside the pair contract (reserves plus any unclaimed
8
+ trading fees).
9
+ """
10
+
11
+ from web3 import Web3
12
+ from web3.exceptions import Web3RPCError
13
+ from typing import Iterable, Set
14
+ import logging
15
+ import math
16
+
17
+ # Connect to Base mainnet RPC (chain ID 8453)
18
+ base_rpc = "https://base-mainnet.public.blastapi.io"
19
+ w3 = Web3(Web3.HTTPProvider(base_rpc))
20
+
21
+ logging.basicConfig(level=logging.INFO, format="%(levelname)s:%(message)s")
22
+ logger = logging.getLogger(__name__)
23
+
24
+ # Uniswap V2 R1/USDC pair contract address
25
+ pair_address = Web3.to_checksum_address("0x0feC06fd2C2bd4066c7302c08950aBaA2E4AB1d3")
26
+
27
+ # Minimal ABI for Uniswap V2 pair (token0, token1, getReserves, totalSupply, balanceOf, and Transfer event)
28
+ pair_abi = [
29
+ {
30
+ "constant": True,
31
+ "inputs": [],
32
+ "name": "token0",
33
+ "outputs": [{"name": "", "type": "address"}],
34
+ "type": "function",
35
+ },
36
+ {
37
+ "constant": True,
38
+ "inputs": [],
39
+ "name": "token1",
40
+ "outputs": [{"name": "", "type": "address"}],
41
+ "type": "function",
42
+ },
43
+ {
44
+ "constant": True,
45
+ "inputs": [],
46
+ "name": "getReserves",
47
+ "outputs": [
48
+ {"name": "reserve0", "type": "uint112"},
49
+ {"name": "reserve1", "type": "uint112"},
50
+ {"name": "blockTimestampLast", "type": "uint32"},
51
+ ],
52
+ "type": "function",
53
+ },
54
+ {
55
+ "constant": True,
56
+ "inputs": [],
57
+ "name": "totalSupply",
58
+ "outputs": [{"name": "", "type": "uint"}],
59
+ "type": "function",
60
+ },
61
+ {
62
+ "constant": True,
63
+ "inputs": [{"name": "owner", "type": "address"}],
64
+ "name": "balanceOf",
65
+ "outputs": [{"name": "", "type": "uint"}],
66
+ "type": "function",
67
+ },
68
+ {
69
+ "anonymous": False,
70
+ "inputs": [
71
+ {"indexed": True, "name": "from", "type": "address"},
72
+ {"indexed": True, "name": "to", "type": "address"},
73
+ {"indexed": False, "name": "value", "type": "uint256"},
74
+ ],
75
+ "name": "Transfer",
76
+ "type": "event",
77
+ },
78
+ ]
79
+ pair_contract = w3.eth.contract(address=pair_address, abi=pair_abi)
80
+
81
+ erc20_abi = [
82
+ {
83
+ "constant": True,
84
+ "inputs": [],
85
+ "name": "symbol",
86
+ "outputs": [{"name": "", "type": "string"}],
87
+ "type": "function",
88
+ },
89
+ {
90
+ "constant": True,
91
+ "inputs": [],
92
+ "name": "decimals",
93
+ "outputs": [{"name": "", "type": "uint8"}],
94
+ "type": "function",
95
+ },
96
+ {
97
+ "constant": True,
98
+ "inputs": [{"name": "owner", "type": "address"}],
99
+ "name": "balanceOf",
100
+ "outputs": [{"name": "", "type": "uint256"}],
101
+ "type": "function",
102
+ },
103
+ ]
104
+
105
+
106
+ def fetch_transfer_addresses(start_block: int, end_block: int, step: int = 10_000) -> Set[str]:
107
+ """Return all addresses that ever transferred LP tokens."""
108
+
109
+ transfer_topic = Web3.keccak(text="Transfer(address,address,uint256)").hex()
110
+ addresses: Set[str] = set()
111
+ for from_block in range(start_block, end_block + 1, step):
112
+ to_block = min(from_block + step - 1, end_block)
113
+ logger.debug("Fetching logs %s-%s", from_block, to_block)
114
+ try:
115
+ logs = w3.eth.get_logs(
116
+ {
117
+ "fromBlock": from_block,
118
+ "toBlock": to_block,
119
+ "address": pair_address,
120
+ "topics": [transfer_topic],
121
+ }
122
+ )
123
+ except Exception as exc:
124
+ logger.warning("log request failed %s-%s: %s", from_block, to_block, exc)
125
+ break
126
+ for log in logs:
127
+ from_addr = "0x" + log["topics"][1].hex()[-40:]
128
+ to_addr = "0x" + log["topics"][2].hex()[-40:]
129
+ if from_addr != "0x0000000000000000000000000000000000000000":
130
+ addresses.add(Web3.to_checksum_address(from_addr))
131
+ if to_addr != "0x0000000000000000000000000000000000000000":
132
+ addresses.add(Web3.to_checksum_address(to_addr))
133
+ return addresses
134
+
135
+
136
+ def compute_lower_bound_price(
137
+ r1_balance: int, usdc_balance: int, r1_dec: int, usdc_dec: int
138
+ ) -> float:
139
+ """Return the minimal R1/USDC price implied by token balances."""
140
+
141
+ r1_amt = r1_balance / (10**r1_dec)
142
+ usdc_amt = usdc_balance / (10**usdc_dec)
143
+ logger.debug("R1 balance=%s (%s decimals)", r1_amt, r1_dec)
144
+ logger.debug("USDC balance=%s (%s decimals)", usdc_amt, usdc_dec)
145
+ if r1_amt == 0:
146
+ return 0.0
147
+ return usdc_amt / r1_amt
148
+
149
+
150
+ def main() -> None:
151
+ logger.info("Fetching pair metadata")
152
+ latest_block = w3.eth.block_number
153
+
154
+ token0 = pair_contract.functions.token0().call()
155
+ token1 = pair_contract.functions.token1().call()
156
+ reserve0, reserve1, _ = pair_contract.functions.getReserves().call()
157
+ total_supply = pair_contract.functions.totalSupply().call()
158
+
159
+ t0_contract = w3.eth.contract(address=token0, abi=erc20_abi)
160
+ t1_contract = w3.eth.contract(address=token1, abi=erc20_abi)
161
+ sym0 = t0_contract.functions.symbol().call().upper()
162
+ sym1 = t1_contract.functions.symbol().call().upper()
163
+
164
+ if sym0 == "R1":
165
+ r1_reserve, usdc_reserve = reserve0, reserve1
166
+ r1_contract, usdc_contract = t0_contract, t1_contract
167
+ elif sym1 == "R1":
168
+ r1_reserve, usdc_reserve = reserve1, reserve0
169
+ r1_contract, usdc_contract = t1_contract, t0_contract
170
+ else:
171
+ r1_reserve, usdc_reserve = reserve0, reserve1
172
+ r1_contract, usdc_contract = t0_contract, t1_contract
173
+ logger.info("Reserves: R1=%s, USDC=%s", r1_reserve, usdc_reserve)
174
+
175
+ r1_balance = r1_contract.functions.balanceOf(pair_address).call()
176
+ usdc_balance = usdc_contract.functions.balanceOf(pair_address).call()
177
+
178
+ lower_bound = compute_lower_bound_price(
179
+ r1_balance,
180
+ usdc_balance,
181
+ r1_contract.functions.decimals().call(),
182
+ usdc_contract.functions.decimals().call(),
183
+ )
184
+ logger.info("Lower bound price = %s", lower_bound)
185
+
186
+ addresses = fetch_transfer_addresses(0, latest_block)
187
+ logger.info("Found %d transfer addresses", len(addresses))
188
+ holders = {}
189
+ for addr in addresses:
190
+ bal = pair_contract.functions.balanceOf(addr).call()
191
+ if bal > 0 and w3.eth.get_code(addr) in (b"", b"0x", b"0x0", "0x"):
192
+ holders[addr] = bal
193
+
194
+ logger.info("EOA LP holders: %d", len(holders))
195
+ for holder, bal in holders.items():
196
+ share = bal / total_supply
197
+ r1_amt = int(share * r1_reserve)
198
+ usdc_amt = int(share * usdc_reserve)
199
+ print(f"{holder}: R1={r1_amt}, USDC={usdc_amt}")
200
+
201
+ logger.info("Lower bound price (R1/USDC) including fees: %s", lower_bound)
202
+ print(f"Lower bound price (R1/USDC) including fees: {lower_bound}")
203
+
204
+
205
+ if __name__ == "__main__":
206
+ main()
@@ -1,88 +0,0 @@
1
- #!/usr/bin/env python3
2
- from web3 import Web3
3
-
4
- # Connect to Base mainnet RPC (chain ID 8453)
5
- base_rpc = "https://base-mainnet.public.blastapi.io"
6
- w3 = Web3(Web3.HTTPProvider(base_rpc))
7
-
8
- # Uniswap V2 R1/USDC pair contract address
9
- pair_address = Web3.to_checksum_address("0x0feC06fd2C2bd4066c7302c08950aBaA2E4AB1d3")
10
-
11
- # Minimal ABI for Uniswap V2 pair (token0, token1, getReserves, totalSupply, balanceOf, and Transfer event)
12
- pair_abi = [
13
- {"constant": True, "inputs": [], "name": "token0", "outputs": [{"name": "", "type": "address"}], "type": "function"},
14
- {"constant": True, "inputs": [], "name": "token1", "outputs": [{"name": "", "type": "address"}], "type": "function"},
15
- {"constant": True, "inputs": [], "name": "getReserves", "outputs": [
16
- {"name": "reserve0", "type": "uint112"},
17
- {"name": "reserve1", "type": "uint112"},
18
- {"name": "blockTimestampLast", "type": "uint32"}], "type": "function"},
19
- {"constant": True, "inputs": [], "name": "totalSupply", "outputs": [{"name": "", "type": "uint"}], "type": "function"},
20
- {"constant": True, "inputs": [{"name": "owner", "type": "address"}], "name": "balanceOf", "outputs": [{"name": "", "type": "uint"}], "type": "function"},
21
- {"anonymous": False, "inputs": [
22
- {"indexed": True, "name": "from", "type": "address"},
23
- {"indexed": True, "name": "to", "type": "address"},
24
- {"indexed": False, "name": "value", "type": "uint256"}],
25
- "name": "Transfer", "type": "event"}
26
- ]
27
- pair_contract = w3.eth.contract(address=pair_address, abi=pair_abi)
28
-
29
- # Fetch token addresses and pool data
30
- token0 = pair_contract.functions.token0().call() # Address of R1 or USDC
31
- token1 = pair_contract.functions.token1().call() # Address of the other token
32
- reserve0, reserve1, _ = pair_contract.functions.getReserves().call()
33
- total_supply = pair_contract.functions.totalSupply().call()
34
-
35
- # Determine which reserve is R1 vs USDC by checking token symbols (optional)
36
- erc20_abi = [{"constant": True, "inputs": [], "name": "symbol", "outputs": [{"name": "", "type": "string"}], "type": "function"}]
37
- sym0 = w3.eth.contract(address=token0, abi=erc20_abi).functions.symbol().call().upper()
38
- sym1 = w3.eth.contract(address=token1, abi=erc20_abi).functions.symbol().call().upper()
39
- if sym0 == 'R1':
40
- r1_reserve, usdc_reserve = reserve0, reserve1
41
- elif sym1 == 'R1':
42
- r1_reserve, usdc_reserve = reserve1, reserve0
43
- else:
44
- # Fallback assumption if symbol check fails
45
- r1_reserve, usdc_reserve = reserve0, reserve1
46
-
47
- # Prepare Transfer event signature hash for filtering logs
48
- transfer_topic = Web3.keccak(text="Transfer(address,address,uint256)").hex()
49
-
50
- # Fetch all Transfer events from block 0 to latest for this pair contract
51
- logs = w3.eth.get_logs({
52
- "fromBlock": 0,
53
- "toBlock": "latest",
54
- "address": pair_address,
55
- "topics": [transfer_topic]
56
- })
57
-
58
- # Collect all addresses that appear in Transfer logs
59
- all_addresses = set()
60
- for log in logs:
61
- # Topics[1] = from, Topics[2] = to (indexed fields)
62
- from_addr = "0x" + log['topics'][1].hex()[-40:]
63
- to_addr = "0x" + log['topics'][2].hex()[-40:]
64
- # Convert to checksum addresses
65
- from_addr = Web3.to_checksum_address(from_addr)
66
- to_addr = Web3.to_checksum_address(to_addr)
67
- # Add addresses if not zero address
68
- if from_addr != "0x0000000000000000000000000000000000000000":
69
- all_addresses.add(from_addr)
70
- if to_addr != "0x0000000000000000000000000000000000000000":
71
- all_addresses.add(to_addr)
72
-
73
- # Filter for EOAs with positive LP balance
74
- holders = {}
75
- for addr in all_addresses:
76
- balance = pair_contract.functions.balanceOf(addr).call()
77
- if balance > 0:
78
- code = w3.eth.get_code(addr)
79
- # EOA check: get_code returns empty (0x) for EOAs:contentReference[oaicite:12]{index=12}
80
- if code == b'' or code == '0x' or code == b'0x' or code == b'0x0':
81
- holders[addr] = balance
82
-
83
- # Compute and print each holder's share of R1 and USDC
84
- for holder, bal in holders.items():
85
- share = bal / total_supply
86
- r1_amount = int(share * r1_reserve)
87
- usdc_amount = int(share * usdc_reserve)
88
- print(f"{holder}: R1={r1_amount}, USDC={usdc_amount}")
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