ratio1 3.4.113__tar.gz → 3.4.114__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 (231) hide show
  1. {ratio1-3.4.113 → ratio1-3.4.114}/PKG-INFO +1 -1
  2. {ratio1-3.4.113 → ratio1-3.4.114}/pyproject.toml +1 -1
  3. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/_ver.py +1 -1
  4. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/26_cerviguard_war_loopback/cerviguard_test_ui.html +67 -52
  5. {ratio1-3.4.113 → ratio1-3.4.114}/.devcontainer/Dockerfile +0 -0
  6. {ratio1-3.4.113 → ratio1-3.4.114}/.devcontainer/devcontainer.json +0 -0
  7. {ratio1-3.4.113 → ratio1-3.4.114}/.gitattributes +0 -0
  8. {ratio1-3.4.113 → ratio1-3.4.114}/.github/workflows/python-publish.yml +0 -0
  9. {ratio1-3.4.113 → ratio1-3.4.114}/.gitignore +0 -0
  10. {ratio1-3.4.113 → ratio1-3.4.114}/.vscode/launch.json +0 -0
  11. {ratio1-3.4.113 → ratio1-3.4.114}/LICENSE +0 -0
  12. {ratio1-3.4.113 → ratio1-3.4.114}/README.md +0 -0
  13. {ratio1-3.4.113 → ratio1-3.4.114}/TODOs.md +0 -0
  14. {ratio1-3.4.113 → ratio1-3.4.114}/__init__.py +0 -0
  15. {ratio1-3.4.113 → ratio1-3.4.114}/r1ctl.MD +0 -0
  16. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/__init__.py +0 -0
  17. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/__init__.py +0 -0
  18. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/distributed_custom_code_presets.py +0 -0
  19. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/generic_session.py +0 -0
  20. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/instance.py +0 -0
  21. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/payload/__init__.py +0 -0
  22. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/payload/payload.py +0 -0
  23. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/pipeline.py +0 -0
  24. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/plugin_template.py +0 -0
  25. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/responses.py +0 -0
  26. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/transaction.py +0 -0
  27. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base/webapp_pipeline.py +0 -0
  28. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/base_decentra_object.py +0 -0
  29. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/bc/__init__.py +0 -0
  30. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/bc/base.py +0 -0
  31. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/bc/chain.py +0 -0
  32. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/bc/ec.py +0 -0
  33. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/bc/evm.py +0 -0
  34. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/141.136.35.100.crt +0 -0
  35. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/195.35.29.4.crt +0 -0
  36. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/31.97.72.187.crt +0 -0
  37. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/51.15.142.167.crt +0 -0
  38. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/72.60.187.24.crt +0 -0
  39. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/72.60.81.67.crt +0 -0
  40. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/72.60.83.78.crt +0 -0
  41. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/__init__.py +0 -0
  42. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/a0d9818f.ala.eu-central-1.emqxsl.com.crt +0 -0
  43. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
  44. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/certs/s624dbd4.ala.us-east-1.emqxsl.com.crt +0 -0
  45. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/cli/README.md +0 -0
  46. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/cli/cli.py +0 -0
  47. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/cli/cli_commands.py +0 -0
  48. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/cli/nodes.py +0 -0
  49. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/cli/oracles.py +0 -0
  50. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/cli/package_update.py +0 -0
  51. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/code_cheker/__init__.py +0 -0
  52. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/code_cheker/base.py +0 -0
  53. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/code_cheker/checker.py +0 -0
  54. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/comm/__init__.py +0 -0
  55. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/comm/amqp_wrapper.py +0 -0
  56. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/comm/base_comm_wrapper.py +0 -0
  57. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/comm/mqtt_wrapper.py +0 -0
  58. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/README.md +0 -0
  59. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/__init__.py +0 -0
  60. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/apps.py +0 -0
  61. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/base.py +0 -0
  62. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/comms.py +0 -0
  63. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/environment.py +0 -0
  64. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/evm_net.py +0 -0
  65. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/formatter.py +0 -0
  66. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/heartbeat.py +0 -0
  67. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/misc.py +0 -0
  68. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/payload.py +0 -0
  69. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/const/plugins/deeploy_const.py +0 -0
  70. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/default/__init__.py +0 -0
  71. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/default/instance/__init__.py +0 -0
  72. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
  73. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/default/instance/custom_webapi_01_plugin.py +0 -0
  74. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/default/instance/generic_http_01_plugin.py +0 -0
  75. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/default/instance/net_mon_01_plugin.py +0 -0
  76. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/default/instance/telegram_basic_bot_01_plugin.py +0 -0
  77. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
  78. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/default/instance/view_scene_01_plugin.py +0 -0
  79. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/default/session/mqtt_session.py +0 -0
  80. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/io_formatter/__init__.py +0 -0
  81. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/io_formatter/base/__init__.py +0 -0
  82. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/io_formatter/base/base_formatter.py +0 -0
  83. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/io_formatter/default/__init__.py +0 -0
  84. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/io_formatter/default/a_dummy.py +0 -0
  85. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/io_formatter/default/aixp1.py +0 -0
  86. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/io_formatter/default/default.py +0 -0
  87. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/io_formatter/io_formatter_manager.py +0 -0
  88. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/ipfs/__init__.py +0 -0
  89. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/ipfs/ifps_keygen +0 -0
  90. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/ipfs/ipfs_setup/ipfs.service +0 -0
  91. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/ipfs/ipfs_setup/launch_service.sh +0 -0
  92. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/ipfs/ipfs_setup/restart.sh +0 -0
  93. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/ipfs/ipfs_setup/run.sh +0 -0
  94. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/ipfs/ipfs_setup/setup.sh +0 -0
  95. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/ipfs/ipfs_setup/show.sh +0 -0
  96. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/ipfs/ipfs_setup/write_key.sh +0 -0
  97. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/ipfs/r1fs.py +0 -0
  98. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/__init__.py +0 -0
  99. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/base_logger.py +0 -0
  100. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/__init__.py +0 -0
  101. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/class_instance_mixin.py +0 -0
  102. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/computer_vision_mixin.py +0 -0
  103. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/datetime_mixin.py +0 -0
  104. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/download_mixin.py +0 -0
  105. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/general_serialization_mixin.py +0 -0
  106. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/json_serialization_mixin.py +0 -0
  107. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/machine_mixin.py +0 -0
  108. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
  109. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/process_mixin.py +0 -0
  110. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/resource_size_mixin.py +0 -0
  111. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/timers_mixin.py +0 -0
  112. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/upload_mixin.py +0 -0
  113. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/logger_mixins/utils_mixin.py +0 -0
  114. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/small_logger.py +0 -0
  115. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/tzlocal/__init__.py +0 -0
  116. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/tzlocal/unix.py +0 -0
  117. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/tzlocal/utils.py +0 -0
  118. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/tzlocal/win32.py +0 -0
  119. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/logging/tzlocal/windows_tz.py +0 -0
  120. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/plugins_manager_mixin.py +0 -0
  121. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/utils/__init__.py +0 -0
  122. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/utils/comm_utils.py +0 -0
  123. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/utils/config.py +0 -0
  124. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/utils/dotenv.py +0 -0
  125. {ratio1-3.4.113 → ratio1-3.4.114}/ratio1/utils/oracle_sync/oracle_tester.py +0 -0
  126. {ratio1-3.4.113 → ratio1-3.4.114}/requirements.txt +0 -0
  127. {ratio1-3.4.113 → ratio1-3.4.114}/template.env +0 -0
  128. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/.example_env +0 -0
  129. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
  130. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
  131. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/_example_pk_sdk.pem +0 -0
  132. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/eth2025/deploy_home_safety.py +0 -0
  133. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/eth2025/deploy_maintenance_monitoring.py +0 -0
  134. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex01_part1_connect.py +0 -0
  135. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex01_part2_filter.py +0 -0
  136. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex01_part3_adv_filter.py +0 -0
  137. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex02_part1_deploy_webapi.py +0 -0
  138. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex02_part2_deploy_plugin.py +0 -0
  139. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex02_part3_deploy_r1fs_test.py +0 -0
  140. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
  141. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
  142. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
  143. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
  144. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
  145. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex08_custom_webapi.py +0 -0
  146. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
  147. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex10_telegram_echo_bot.py +0 -0
  148. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex11_telegram_blackjack_bot.py +0 -0
  149. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex12_telegram_smart_bot.py +0 -0
  150. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex13_launch_repo_based_webapp.py +0 -0
  151. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex14_wallets.py +0 -0
  152. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex15_telegram_rogue_style_game.py +0 -0
  153. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex16_launch_repo_based_http_server.py +0 -0
  154. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex17_launch_repo_based_balanced_webapp.py +0 -0
  155. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex18_deploy_container_webapi.py +0 -0
  156. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex19_deeploy_container_example.py +0 -0
  157. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex20_deeploy_telegram_bot.py +0 -0
  158. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex21_telegram_community_bot.py +0 -0
  159. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex22_deeploy_custom_code.py +0 -0
  160. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex23_deploy_worker_app.py +0 -0
  161. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex24_multi_video_stream_monitor.py +0 -0
  162. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex25_local_serving_api.py +0 -0
  163. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/ex26_cerviguard_war_loopback.py +0 -0
  164. {ratio1-3.4.113 → ratio1-3.4.114}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
  165. {ratio1-3.4.113 → ratio1-3.4.114}/winrun.bat +0 -0
  166. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/README.md +0 -0
  167. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/_show_config_check.py +0 -0
  168. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/cstore_check.py +0 -0
  169. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/dauth_check.py +0 -0
  170. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/keys_check.py +0 -0
  171. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/node_info_check.py +0 -0
  172. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/ora_check.py +0 -0
  173. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/ora_intervals.py +0 -0
  174. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/ora_sign_check.py +0 -0
  175. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/owner_check.py +0 -0
  176. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/payload_check.py +0 -0
  177. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/session_check.py +0 -0
  178. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/w3_all_active_jobs_check.py +0 -0
  179. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/w3_auth_check.py +0 -0
  180. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/w3_first_closable_job_check.py +0 -0
  181. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/w3_nodes_licenses.py +0 -0
  182. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/w3_oracles_check.py +0 -0
  183. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/w3_poai_check.py +0 -0
  184. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/whitelist_check.py +0 -0
  185. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/_checks/workload_check.py +0 -0
  186. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/ai4e/delete.py +0 -0
  187. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/ai4e/launcher.py +0 -0
  188. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/dates/check_date.py +0 -0
  189. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/debug/close_pipeline.py +0 -0
  190. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/decentralized/chain_dist_example.py +0 -0
  191. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
  192. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
  193. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/deeploy/checker.py +0 -0
  194. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/deeploy/checker2.py +0 -0
  195. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/deeploy/create_request.py +0 -0
  196. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/enc_dec/enc_dec_test.py +0 -0
  197. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/eth/allocate_rewards.py +0 -0
  198. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/eth/balance.py +0 -0
  199. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/eth/eth_sign.py +0 -0
  200. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/eth/info.md +0 -0
  201. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/eth/send.py +0 -0
  202. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/eth/send_many.py +0 -0
  203. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/eth/sign.py +0 -0
  204. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/log.py +0 -0
  205. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/logger/run.py +0 -0
  206. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/lp/lp_checker.py +0 -0
  207. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/multi-enc-dec/multi_test1.py +0 -0
  208. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/multi-enc-dec/multi_test2.py +0 -0
  209. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/netmon/check_netmon.py +0 -0
  210. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/netmon/netmon_data.json +0 -0
  211. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/pipelines/start.py +0 -0
  212. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/pipelines/stop.py +0 -0
  213. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/scripts/monitoring/collect_messages.py +0 -0
  214. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/scripts/monitoring/get_hb_distribution.py +0 -0
  215. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/scripts/monitoring/multithreaded_network_sniffer.py +0 -0
  216. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/sign/simple_payload_checker.py +0 -0
  217. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/sign/test_sign1.py +0 -0
  218. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/sign/test_sign2.py +0 -0
  219. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/test.py +0 -0
  220. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/tokens/get_check.py +0 -0
  221. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/utils/get_documentation.py +0 -0
  222. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/various/attach_example.py +0 -0
  223. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/various/ex1.py +0 -0
  224. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/various/hello.py +0 -0
  225. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/various/remote_exec.py +0 -0
  226. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/various/save_images.py +0 -0
  227. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/wl/wl_add.py +0 -0
  228. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/xarchive/_tutorials/3. simple_real_time_custom_code.py +0 -0
  229. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/xarchive/_tutorials/4. real_time_custom_code_2.py +0 -0
  230. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/xarchive/_tutorials/8. chatbot.py +0 -0
  231. {ratio1-3.4.113 → ratio1-3.4.114}/xperimental/xarchive/test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ratio1
3
- Version: 3.4.113
3
+ Version: 3.4.114
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.113"
7
+ version = "3.4.114"
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.113"
1
+ __VER__ = "3.4.114"
2
2
 
3
3
  if __name__ == "__main__":
4
4
  with open("pyproject.toml", "rt") as fd:
@@ -224,10 +224,10 @@
224
224
  <body>
225
225
  <div class="container">
226
226
  <h1>🔬 CerviGuard WAR</h1>
227
- <p class="subtitle">Cervical Image Analysis - Loopback Pipeline Test</p>
227
+ <p class="subtitle">Cervical Image Analysis - Loopback Pipeline + PostponedRequest</p>
228
228
 
229
229
  <div style="text-align: center;">
230
- <span class="loopback-indicator">🔄 LOOPBACK MODE ENABLED</span>
230
+ <span class="loopback-indicator">🔄 LOOPBACK + PostponedRequest Pattern</span>
231
231
  </div>
232
232
 
233
233
  <!-- API Configuration -->
@@ -269,9 +269,9 @@
269
269
 
270
270
  <!-- Footer -->
271
271
  <div class="footer">
272
- <p>CerviGuard WAR Test Interface | Naeural Edge Node Loopback Demo</p>
272
+ <p>CerviGuard WAR Test Interface | Naeural Edge Node Loopback + PostponedRequest Demo</p>
273
273
  <p style="font-size: 12px; margin-top: 5px;">
274
- Flow: UI → API (localhost) → Loopback Queue → Processor → Results
274
+ Flow: UI → API (PostponedRequest) → Loopback Queue → Processor → Auto-polling → Results
275
275
  </p>
276
276
  </div>
277
277
  </div>
@@ -289,7 +289,6 @@
289
289
  const apiUrlInput = document.getElementById('apiUrl');
290
290
 
291
291
  let selectedImage = null;
292
- let currentRequestId = null;
293
292
 
294
293
  // Upload zone click
295
294
  uploadZone.addEventListener('click', () => imageInput.click());
@@ -338,7 +337,7 @@
338
337
  reader.readAsDataURL(file);
339
338
  }
340
339
 
341
- // Submit image
340
+ // Submit image using PostponedRequest pattern
342
341
  submitBtn.addEventListener('click', async () => {
343
342
  if (!selectedImage) return;
344
343
 
@@ -352,9 +351,12 @@
352
351
  const apiUrl = apiUrlInput.value;
353
352
 
354
353
  try {
355
- showStatus('Submitting image to CerviGuard API...', 'processing');
354
+ showStatus('Submitting image to CerviGuard API (PostponedRequest)...', 'processing');
355
+ showStatus('⏳ Connection open - waiting for processing to complete...', 'processing');
356
356
 
357
- const response = await fetch(`${apiUrl}/cerviguard_submit_image`, {
357
+ // With PostponedRequest, the server keeps the connection open until processing is done
358
+ // No manual polling needed - the framework handles it server-side
359
+ const response = await fetch(`${apiUrl}/predict`, {
358
360
  method: 'POST',
359
361
  headers: {
360
362
  'Content-Type': 'application/json',
@@ -371,70 +373,83 @@
371
373
  const data = await response.json();
372
374
  const result = data.result;
373
375
 
374
- if (result.status === 'submitted') {
375
- currentRequestId = result.request_id;
376
- showStatus(`Image submitted successfully! Request ID: ${currentRequestId}`, 'success');
377
- showStatus('Polling for results (loopback processing)...', 'processing');
378
- pollForResults(currentRequestId);
379
- } else {
380
- showStatus(`Error: ${result.error || 'Unknown error'}`, 'error');
381
- loader.style.display = 'none';
382
- submitBtn.disabled = false;
383
- }
384
-
385
- } catch (error) {
386
- showStatus(`Network Error: ${error.message}`, 'error');
387
- showStatus('Make sure the API is running on the specified URL', 'error');
388
- loader.style.display = 'none';
389
- submitBtn.disabled = false;
390
- }
391
- });
392
-
393
- // Poll for results
394
- async function pollForResults(requestId, attempt = 1, maxAttempts = 20) {
395
- const apiUrl = apiUrlInput.value;
396
-
397
- try {
398
- const response = await fetch(`${apiUrl}/cerviguard_get_result?request_id=${requestId}`);
399
- const data = await response.json();
400
- const result = data.result;
401
-
376
+ // PostponedRequest returns the final result directly (or error)
402
377
  if (result.status === 'completed') {
403
378
  loader.style.display = 'none';
404
379
  showStatus('✓ Processing completed successfully!', 'success');
405
- displayResults(result.result);
380
+ displayResults(result);
406
381
  submitBtn.disabled = false;
407
- } else if (result.status === 'processing') {
408
- showStatus(`⏳ Processing... (attempt ${attempt}/${maxAttempts})`, 'processing');
409
- if (attempt < maxAttempts) {
410
- setTimeout(() => pollForResults(requestId, attempt + 1, maxAttempts), 1000);
411
- } else {
412
- loader.style.display = 'none';
413
- showStatus('Timeout: Processing is taking too long', 'error');
414
- submitBtn.disabled = false;
415
- }
416
382
  } else if (result.status === 'error') {
417
383
  loader.style.display = 'none';
418
384
  showStatus(`✗ Processing Error: ${result.error}`, 'error');
419
385
  submitBtn.disabled = false;
420
386
  } else {
421
387
  loader.style.display = 'none';
422
- showStatus(`Unknown status: ${result.status}`, 'error');
388
+ showStatus(`Error: ${result.error || 'Unknown error'}`, 'error');
423
389
  submitBtn.disabled = false;
424
390
  }
425
391
 
426
392
  } catch (error) {
393
+ showStatus(`Network Error: ${error.message}`, 'error');
394
+ showStatus('Make sure the API is running on the specified URL', 'error');
427
395
  loader.style.display = 'none';
428
- showStatus(`Polling Error: ${error.message}`, 'error');
429
396
  submitBtn.disabled = false;
430
397
  }
431
- }
398
+ });
432
399
 
433
400
  // Display results
434
401
  function displayResults(result) {
435
- const imgInfo = result.image_info;
402
+ const analysis = result.analysis || {};
403
+ const imgInfo = analysis.image_info || {};
404
+
405
+ // Determine risk color based on lesion assessment
406
+ const getRiskColor = (assessment) => {
407
+ switch(assessment) {
408
+ case 'none': return '#28a745';
409
+ case 'low': return '#ffc107';
410
+ case 'moderate': return '#fd7e14';
411
+ case 'high': return '#dc3545';
412
+ default: return '#6c757d';
413
+ }
414
+ };
415
+
416
+ const riskColor = getRiskColor(analysis.lesion_assessment);
436
417
 
437
418
  resultsContent.innerHTML = `
419
+ <h4 style="color: #667eea; margin-bottom: 15px;">📊 Cervical Screening Analysis</h4>
420
+
421
+ <div class="result-item" style="background: #f0f8ff; border-left: 4px solid ${riskColor};">
422
+ <span class="result-label">Transformation Zone Type:</span>
423
+ <span class="result-value" style="font-weight: bold; color: ${riskColor};">${analysis.tz_type || 'N/A'}</span>
424
+ </div>
425
+
426
+ <div class="result-item" style="background: #f0f8ff; border-left: 4px solid ${riskColor};">
427
+ <span class="result-label">Lesion Assessment:</span>
428
+ <span class="result-value" style="font-weight: bold; color: ${riskColor}; text-transform: uppercase;">${analysis.lesion_assessment || 'N/A'}</span>
429
+ </div>
430
+
431
+ <div class="result-item" style="background: #f0f8ff; border-left: 4px solid ${riskColor};">
432
+ <span class="result-label">Risk Score:</span>
433
+ <span class="result-value" style="font-weight: bold; color: ${riskColor};">${analysis.risk_score || 0}/100</span>
434
+ </div>
435
+
436
+ <div class="result-item" style="background: #f0f8ff; border-left: 4px solid ${riskColor};">
437
+ <span class="result-label">Image Dimensions:</span>
438
+ <span class="result-value" style="font-weight: bold;">${imgInfo.width} × ${imgInfo.height} pixels</span>
439
+ </div>
440
+
441
+ <div class="result-item" style="background: #f0f8ff; border-left: 4px solid ${riskColor};">
442
+ <span class="result-label">Image Quality:</span>
443
+ <span class="result-value" style="font-weight: bold; ${analysis.image_quality_sufficient ? '' : 'color: #ff9800;'}">${analysis.image_quality || 'N/A'}${!analysis.image_quality_sufficient ? ' ⚠️' : ' ✓'}</span>
444
+ </div>
445
+
446
+ <div class="result-item" style="background: #fffbf0; padding: 15px; border-left: 4px solid ${riskColor};">
447
+ <span class="result-label" style="display: block; margin-bottom: 8px;">Clinical Summary:</span>
448
+ <span class="result-value" style="display: block; line-height: 1.6; color: #333;">${analysis.lesion_summary || 'No summary available'}</span>
449
+ </div>
450
+
451
+ <h4 style="color: #667eea; margin: 20px 0 15px 0;">🖼️ Image Information</h4>
452
+
438
453
  <div class="result-item">
439
454
  <span class="result-label">Width:</span>
440
455
  <span class="result-value">${imgInfo.width} pixels</span>
@@ -482,12 +497,12 @@
482
497
 
483
498
  try {
484
499
  showStatus('Checking system status...', 'processing');
485
- const response = await fetch(`${apiUrl}/cerviguard_status`);
500
+ const response = await fetch(`${apiUrl}/status`);
486
501
  const data = await response.json();
487
502
  const status = data.result;
488
503
 
489
504
  showStatus(`✓ System Online | Service: ${status.service} | Version: ${status.version}`, 'success');
490
- showStatus(`Total Requests: ${status.total_requests} | Pending: ${status.pending_requests} | Uptime: ${Math.round(status.uptime_seconds)}s`, 'info');
505
+ showStatus(`Total: ${status.total_requests} | Pending: ${status.pending_requests} | Completed: ${status.completed_requests || 0} | Uptime: ${Math.round(status.uptime_seconds)}s`, 'info');
491
506
 
492
507
  } catch (error) {
493
508
  showStatus(`✗ Cannot connect to API: ${error.message}`, 'error');
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