ratio1 3.4.46__tar.gz → 3.4.48__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.
- {ratio1-3.4.46 → ratio1-3.4.48}/PKG-INFO +1 -1
- {ratio1-3.4.46 → ratio1-3.4.48}/pyproject.toml +1 -1
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/_ver.py +1 -1
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/bc/evm.py +59 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/evm_net.py +84 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/ipfs/r1fs.py +37 -20
- ratio1-3.4.48/xperimental/_checks/w3_poai_check.py +25 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/.devcontainer/Dockerfile +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/.devcontainer/devcontainer.json +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/.gitattributes +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/.github/workflows/python-publish.yml +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/.gitignore +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/.vscode/launch.json +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/LICENSE +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/README.md +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/TODOs.md +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/r1ctl.MD +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/distributed_custom_code_presets.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/generic_session.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/instance.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/payload/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/payload/payload.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/pipeline.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/plugin_template.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/responses.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/transaction.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base/webapp_pipeline.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/base_decentra_object.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/bc/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/bc/base.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/bc/chain.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/bc/ec.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/certs/51.15.142.167.crt +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/certs/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/certs/a0d9818f.ala.eu-central-1.emqxsl.com.crt +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/certs/s624dbd4.ala.us-east-1.emqxsl.com.crt +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/cli/README.md +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/cli/cli.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/cli/cli_commands.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/cli/nodes.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/cli/oracles.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/cli/package_update.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/code_cheker/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/code_cheker/base.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/code_cheker/checker.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/comm/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/comm/amqp_wrapper.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/comm/base_comm_wrapper.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/comm/mqtt_wrapper.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/README.md +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/apps.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/base.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/comms.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/environment.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/formatter.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/heartbeat.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/misc.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/payload.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/const/plugins/deeploy_const.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/instance/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/instance/custom_webapi_01_plugin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/instance/generic_http_01_plugin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/instance/net_mon_01_plugin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/instance/telegram_basic_bot_01_plugin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/instance/view_scene_01_plugin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/session/mqtt_session.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/io_formatter/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/io_formatter/base/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/io_formatter/base/base_formatter.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/io_formatter/default/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/io_formatter/default/a_dummy.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/io_formatter/default/aixp1.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/io_formatter/default/default.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/io_formatter/io_formatter_manager.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/ipfs/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/ipfs/ifps_keygen +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/ipfs/ipfs_setup/ipfs.service +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/ipfs/ipfs_setup/launch_service.sh +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/ipfs/ipfs_setup/restart.sh +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/ipfs/ipfs_setup/run.sh +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/ipfs/ipfs_setup/setup.sh +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/ipfs/ipfs_setup/show.sh +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/ipfs/ipfs_setup/write_key.sh +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/base_logger.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/class_instance_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/computer_vision_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/datetime_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/download_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/general_serialization_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/json_serialization_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/machine_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/process_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/resource_size_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/timers_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/upload_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/logger_mixins/utils_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/small_logger.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/tzlocal/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/tzlocal/unix.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/tzlocal/utils.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/tzlocal/win32.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/logging/tzlocal/windows_tz.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/plugins_manager_mixin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/utils/__init__.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/utils/comm_utils.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/utils/config.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/utils/dotenv.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/ratio1/utils/oracle_sync/oracle_tester.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/requirements.txt +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/template.env +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/.example_env +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/_example_pk_sdk.pem +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/eth2025/deploy_home_safety.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/eth2025/deploy_maintenance_monitoring.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex01_part1_connect.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex01_part2_filter.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex01_part3_adv_filter.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex02_part1_deploy_webapi.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex02_part2_deploy_plugin.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex02_part3_deploy_r1fs_test.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex08_custom_webapi.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex10_telegram_echo_bot.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex11_telegram_blackjack_bot.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex12_telegram_smart_bot.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex13_launch_repo_based_webapp.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex14_wallets.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex15_telegram_rogue_style_game.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex16_launch_repo_based_http_server.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex17_launch_repo_based_balanced_webapp.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex18_deploy_container_webapi.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex19_deeploy_container_example.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex20_deeploy_telegram_bot.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex21_telegram_community_bot.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex22_deeploy_custom_code.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/winrun.bat +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/README.md +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/_show_config_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/cstore_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/dauth_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/keys_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/node_info_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/ora_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/ora_intervals.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/ora_sign_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/owner_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/payload_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/session_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/w3_auth_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/w3_nodes_licenses.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/w3_oracles_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/whitelist_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/_checks/workload_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/dates/check_date.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/debug/close_pipeline.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/decentralized/chain_dist_example.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/deeploy/checker.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/deeploy/checker2.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/deeploy/create_request.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/enc_dec/enc_dec_test.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/eth/balance.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/eth/eth_sign.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/eth/info.md +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/eth/send.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/eth/send_many.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/eth/sign.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/log.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/logger/run.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/lp/lp_checker.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/multi-enc-dec/multi_test1.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/multi-enc-dec/multi_test2.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/pipelines/start.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/pipelines/stop.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/scripts/monitoring/collect_messages.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/scripts/monitoring/get_hb_distribution.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/scripts/monitoring/multithreaded_network_sniffer.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/sign/simple_payload_checker.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/sign/test_sign1.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/sign/test_sign2.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/test.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/tokens/get_check.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/utils/get_documentation.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/various/attach_example.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/various/ex1.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/various/hello.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/various/remote_exec.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/various/save_images.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/wl/wl_add.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/xarchive/_tutorials/3. simple_real_time_custom_code.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/xarchive/_tutorials/4. real_time_custom_code_2.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/xarchive/_tutorials/8. chatbot.py +0 -0
- {ratio1-3.4.46 → ratio1-3.4.48}/xperimental/xarchive/test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ratio1
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.48
|
|
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
|
|
@@ -28,6 +28,7 @@ Web3Vars = namedtuple(
|
|
|
28
28
|
"r1_contract_address",
|
|
29
29
|
"proxy_contract_address",
|
|
30
30
|
"controller_contract_address",
|
|
31
|
+
"poai_manager_address",
|
|
31
32
|
"get_oracles_abi",
|
|
32
33
|
]
|
|
33
34
|
)
|
|
@@ -236,6 +237,7 @@ class _EVMMixin:
|
|
|
236
237
|
proxy_contract_address = network_data[dAuth.EvmNetData.DAUTH_PROXYAPI_ADDR_KEY]
|
|
237
238
|
str_genesis_date = network_data[dAuth.EvmNetData.EE_GENESIS_EPOCH_DATE_KEY]
|
|
238
239
|
controller_contract_address = network_data[dAuth.EvmNetData.DAUTH_CONTROLLER_ADDR_KEY]
|
|
240
|
+
poai_manager_address = network_data[dAuth.EvmNetData.DAUTH_POAI_MANAGER_KEY]
|
|
239
241
|
get_oracles_abi = network_data[dAuth.EvmNetData.DAUTH_GET_ORACLES_ABI]
|
|
240
242
|
genesis_date = self.log.str_to_date(str_genesis_date).replace(tzinfo=timezone.utc)
|
|
241
243
|
ep_sec = (
|
|
@@ -258,6 +260,7 @@ class _EVMMixin:
|
|
|
258
260
|
r1_contract_address=r1_contract_address,
|
|
259
261
|
proxy_contract_address=proxy_contract_address,
|
|
260
262
|
controller_contract_address=controller_contract_address,
|
|
263
|
+
poai_manager_address=poai_manager_address,
|
|
261
264
|
get_oracles_abi=get_oracles_abi,
|
|
262
265
|
)
|
|
263
266
|
return result
|
|
@@ -1294,6 +1297,62 @@ class _EVMMixin:
|
|
|
1294
1297
|
|
|
1295
1298
|
return balances
|
|
1296
1299
|
|
|
1300
|
+
def web3_get_job_details(
|
|
1301
|
+
self,
|
|
1302
|
+
job_id: int,
|
|
1303
|
+
network: str = None
|
|
1304
|
+
):
|
|
1305
|
+
"""
|
|
1306
|
+
Retrieve license details for the specified node using getNodeLicenseDetails().
|
|
1307
|
+
|
|
1308
|
+
Parameters
|
|
1309
|
+
----------
|
|
1310
|
+
job_id : int
|
|
1311
|
+
The job ID to retrieve details for.
|
|
1312
|
+
|
|
1313
|
+
network : str, optional
|
|
1314
|
+
The network to use. If None, defaults to self.evm_network.
|
|
1315
|
+
|
|
1316
|
+
|
|
1317
|
+
Returns
|
|
1318
|
+
-------
|
|
1319
|
+
dict
|
|
1320
|
+
A dictionary containing all job details returned by getJobDetails.
|
|
1321
|
+
"""
|
|
1322
|
+
# Validate the job ID.
|
|
1323
|
+
assert isinstance(job_id, int), "Invalid job ID"
|
|
1324
|
+
|
|
1325
|
+
# Retrieve the necessary Web3 variables (pattern consistent with web3_send_r1).
|
|
1326
|
+
w3vars = self._get_web3_vars(network)
|
|
1327
|
+
network = w3vars.network
|
|
1328
|
+
contract = w3vars.w3.eth.contract(
|
|
1329
|
+
address=w3vars.poai_manager_address,
|
|
1330
|
+
abi=EVM_ABI_DATA.GET_JOB_DETAILS
|
|
1331
|
+
)
|
|
1332
|
+
|
|
1333
|
+
self.P(f"`getJobDetails` on {network} via {w3vars.rpc_url}", verbosity=2)
|
|
1334
|
+
|
|
1335
|
+
# Call the contract function to get details.
|
|
1336
|
+
result_tuple = contract.functions.getJobDetails(job_id).call()
|
|
1337
|
+
|
|
1338
|
+
# Unpack the tuple into a dictionary for readability.
|
|
1339
|
+
details = {
|
|
1340
|
+
"network": network,
|
|
1341
|
+
"jobId": result_tuple[0],
|
|
1342
|
+
"requestTimestamp": result_tuple[1],
|
|
1343
|
+
"startTimestamp": result_tuple[2],
|
|
1344
|
+
"lastNodesChangeTimestamp": result_tuple[3],
|
|
1345
|
+
"jobType": result_tuple[4],
|
|
1346
|
+
"pricePerEpoch": result_tuple[5],
|
|
1347
|
+
"lastExecutionEpoch": result_tuple[6],
|
|
1348
|
+
"numberOfNodesRequested": result_tuple[7],
|
|
1349
|
+
"balance": result_tuple[8],
|
|
1350
|
+
"lastAllocatedEpoch": result_tuple[9],
|
|
1351
|
+
"activeNodes": result_tuple[10],
|
|
1352
|
+
}
|
|
1353
|
+
self.P(f"Job Details:\n{json.dumps(details, indent=2)}", verbosity=2)
|
|
1354
|
+
|
|
1355
|
+
return details
|
|
1297
1356
|
|
|
1298
1357
|
def get_deeploy_url(self):
|
|
1299
1358
|
"""
|
|
@@ -9,6 +9,7 @@ class EvmNetData:
|
|
|
9
9
|
DAUTH_R1_ADDR_KEY = 'EE_DAUTH_R1_ADDR'
|
|
10
10
|
DAUTH_MND_ADDR_KEY = 'EE_DAUTH_MND_ADDR'
|
|
11
11
|
DAUTH_PROXYAPI_ADDR_KEY = 'EE_DAUTH_PROXYAPI_ADDR'
|
|
12
|
+
DAUTH_POAI_MANAGER_KEY = 'EE_DAUTH_POAI_MANAGER'
|
|
12
13
|
|
|
13
14
|
DAUTH_CONTROLLER_ADDR_KEY = 'EE_DAUTH_CONTROLLER_ADDR'
|
|
14
15
|
DAUTH_GET_ORACLES_ABI = 'EE_DAUTH_GET_ORACLES_ABI'
|
|
@@ -219,6 +220,85 @@ _GET_ADDRESSES_BALANCES = [
|
|
|
219
220
|
}
|
|
220
221
|
]
|
|
221
222
|
|
|
223
|
+
_GET_JOB_DETAILS_ABI = [
|
|
224
|
+
{
|
|
225
|
+
"inputs": [
|
|
226
|
+
{
|
|
227
|
+
"internalType": "uint256",
|
|
228
|
+
"name": "jobId",
|
|
229
|
+
"type": "uint256"
|
|
230
|
+
}
|
|
231
|
+
],
|
|
232
|
+
"name": "getJobDetails",
|
|
233
|
+
"outputs": [
|
|
234
|
+
{
|
|
235
|
+
"components": [
|
|
236
|
+
{
|
|
237
|
+
"internalType": "uint256",
|
|
238
|
+
"name": "id",
|
|
239
|
+
"type": "uint256"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"internalType": "uint256",
|
|
243
|
+
"name": "requestTimestamp",
|
|
244
|
+
"type": "uint256"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"internalType": "uint256",
|
|
248
|
+
"name": "startTimestamp",
|
|
249
|
+
"type": "uint256"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"internalType": "uint256",
|
|
253
|
+
"name": "lastNodesChangeTimestamp",
|
|
254
|
+
"type": "uint256"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"internalType": "uint256",
|
|
258
|
+
"name": "jobType",
|
|
259
|
+
"type": "uint256"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"internalType": "uint256",
|
|
263
|
+
"name": "pricePerEpoch",
|
|
264
|
+
"type": "uint256"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"internalType": "uint256",
|
|
268
|
+
"name": "lastExecutionEpoch",
|
|
269
|
+
"type": "uint256"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"internalType": "uint256",
|
|
273
|
+
"name": "numberOfNodesRequested",
|
|
274
|
+
"type": "uint256"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"internalType": "int256",
|
|
278
|
+
"name": "balance",
|
|
279
|
+
"type": "int256"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"internalType": "uint256",
|
|
283
|
+
"name": "lastAllocatedEpoch",
|
|
284
|
+
"type": "uint256"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"internalType": "address[]",
|
|
288
|
+
"name": "activeNodes",
|
|
289
|
+
"type": "address[]"
|
|
290
|
+
}
|
|
291
|
+
],
|
|
292
|
+
"internalType": "struct JobDetails",
|
|
293
|
+
"name": "",
|
|
294
|
+
"type": "tuple"
|
|
295
|
+
}
|
|
296
|
+
],
|
|
297
|
+
"stateMutability": "view",
|
|
298
|
+
"type": "function"
|
|
299
|
+
}
|
|
300
|
+
]
|
|
301
|
+
|
|
222
302
|
# A minimal ERC20 ABI for balanceOf, transfer, and decimals functions.
|
|
223
303
|
_ERC20_ABI = [
|
|
224
304
|
{
|
|
@@ -263,6 +343,7 @@ EVM_NET_DATA = {
|
|
|
263
343
|
EvmNetData.DAUTH_R1_ADDR_KEY : "0x6444C6c2D527D85EA97032da9A7504d6d1448ecF",
|
|
264
344
|
EvmNetData.DAUTH_MND_ADDR_KEY : "0x0C431e546371C87354714Fcc1a13365391A549E2",
|
|
265
345
|
EvmNetData.DAUTH_PROXYAPI_ADDR_KEY : "0xa2fDD4c7E93790Ff68a01f01AA789D619F12c6AC",
|
|
346
|
+
EvmNetData.DAUTH_POAI_MANAGER_KEY : "0xTODO",
|
|
266
347
|
EvmNetData.DAUTH_RPC_KEY : "https://base-mainnet.public.blastapi.io",
|
|
267
348
|
EvmNetData.EE_GENESIS_EPOCH_DATE_KEY : "2025-05-23 16:00:00",
|
|
268
349
|
EvmNetData.EE_EPOCH_INTERVALS_KEY : 24,
|
|
@@ -280,6 +361,7 @@ EVM_NET_DATA = {
|
|
|
280
361
|
EvmNetData.DAUTH_R1_ADDR_KEY : "0xCC96f389F45Fc08b4fa8e2bC4C7DA9920292ec64",
|
|
281
362
|
EvmNetData.DAUTH_MND_ADDR_KEY : "0xa8d7FFCE91a888872A9f5431B4Dd6c0c135055c1",
|
|
282
363
|
EvmNetData.DAUTH_PROXYAPI_ADDR_KEY : "0xd1c7Dca934B37FAA402EB2EC64F6644d6957bE3b",
|
|
364
|
+
EvmNetData.DAUTH_POAI_MANAGER_KEY : "0xTODO",
|
|
283
365
|
EvmNetData.DAUTH_RPC_KEY : "https://base-sepolia.public.blastapi.io",
|
|
284
366
|
EvmNetData.EE_GENESIS_EPOCH_DATE_KEY : "2025-05-23 16:00:00",
|
|
285
367
|
EvmNetData.EE_EPOCH_INTERVALS_KEY : 24,
|
|
@@ -298,6 +380,7 @@ EVM_NET_DATA = {
|
|
|
298
380
|
EvmNetData.DAUTH_R1_ADDR_KEY : "0x277CbD0Cf25F4789Bc04035eCd03d811FAf73691",
|
|
299
381
|
EvmNetData.DAUTH_MND_ADDR_KEY : "0x17B8934dc5833CdBa1eF42D13D65D677C4727748",
|
|
300
382
|
EvmNetData.DAUTH_PROXYAPI_ADDR_KEY : "0xFcF04c9A67330431Af75a546615E4881BD8bdC78",
|
|
383
|
+
EvmNetData.DAUTH_POAI_MANAGER_KEY : "0x9A41f43494fCD592577228fE8E4014f2D75d2aa3",
|
|
301
384
|
EvmNetData.DAUTH_RPC_KEY : "https://base-sepolia.public.blastapi.io",
|
|
302
385
|
EvmNetData.EE_GENESIS_EPOCH_DATE_KEY : "2025-06-30 07:00:00",
|
|
303
386
|
EvmNetData.EE_EPOCH_INTERVALS_KEY : 1,
|
|
@@ -346,5 +429,6 @@ class EVM_ABI_DATA:
|
|
|
346
429
|
GET_WALLET_NODES = _GET_WALLET_NODES
|
|
347
430
|
GET_ADDRESSES_BALANCES = _GET_ADDRESSES_BALANCES
|
|
348
431
|
IS_NODE_ACTIVE = _DAUTH_ABI_IS_NODE_ACTIVE
|
|
432
|
+
GET_JOB_DETAILS = _GET_JOB_DETAILS_ABI
|
|
349
433
|
ERC20_ABI = _ERC20_ABI
|
|
350
434
|
|
|
@@ -300,6 +300,7 @@ class R1FSEngine:
|
|
|
300
300
|
return
|
|
301
301
|
|
|
302
302
|
def _hash_secret(self, secret: str) -> bytes:
|
|
303
|
+
secret = str(secret) # to be sure that the passed secret is of string type.
|
|
303
304
|
# Convert text to bytes, then hash with SHA-256 => 32-byte key
|
|
304
305
|
return hashlib.sha256(secret.encode("utf-8")).digest()
|
|
305
306
|
|
|
@@ -510,6 +511,25 @@ class R1FSEngine:
|
|
|
510
511
|
)
|
|
511
512
|
return result
|
|
512
513
|
|
|
514
|
+
# PUBLIC COMMAND
|
|
515
|
+
def get_ipfs_id_data(self) -> dict:
|
|
516
|
+
"""
|
|
517
|
+
Get the IPFS peer ID via 'ipfs id' (JSON output).
|
|
518
|
+
Returns the ipfs ID object.
|
|
519
|
+
"""
|
|
520
|
+
data = {}
|
|
521
|
+
output = self.__run_command(["ipfs", "id"]) # this will raise an exception if the command fails
|
|
522
|
+
try:
|
|
523
|
+
data = json.loads(output)
|
|
524
|
+
except json.JSONDecodeError:
|
|
525
|
+
raise Exception("Failed to parse JSON from 'ipfs id' output.")
|
|
526
|
+
except Exception as e:
|
|
527
|
+
msg = f"Error getting IPFS ID: {e}. `ipfs id`:\n{data}"
|
|
528
|
+
self.P(msg, color='r')
|
|
529
|
+
raise Exception(f"Error getting IPFS ID: {e}") from e
|
|
530
|
+
return data
|
|
531
|
+
|
|
532
|
+
# END PUBLIC COMMANS
|
|
513
533
|
|
|
514
534
|
def __run_command(
|
|
515
535
|
self,
|
|
@@ -575,24 +595,15 @@ class R1FSEngine:
|
|
|
575
595
|
Get the IPFS peer ID via 'ipfs id' (JSON output).
|
|
576
596
|
Returns the 'ID' field as a string.
|
|
577
597
|
"""
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
self.
|
|
585
|
-
|
|
586
|
-
if
|
|
587
|
-
self.__ipfs_address = None
|
|
588
|
-
else:
|
|
589
|
-
self.__ipfs_address = addrs[1] if len(addrs) > 1 else addrs[0] if len(addrs) else ERROR_TAG
|
|
590
|
-
except json.JSONDecodeError:
|
|
591
|
-
raise Exception("Failed to parse JSON from 'ipfs id' output.")
|
|
592
|
-
except Exception as e:
|
|
593
|
-
msg = f"Error getting IPFS ID: {e}. `ipfs id`:\n{data}"
|
|
594
|
-
self.P(msg, color='r')
|
|
595
|
-
raise Exception(f"Error getting IPFS ID: {e}") from e
|
|
598
|
+
data = self.get_ipfs_id_data()
|
|
599
|
+
self.__ipfs_id_result = data
|
|
600
|
+
self.__ipfs_id = data.get("ID", ERROR_TAG)
|
|
601
|
+
self.__ipfs_agent = data.get("AgentVersion", ERROR_TAG)
|
|
602
|
+
addrs = data.get("Addresses", [])
|
|
603
|
+
if not addrs:
|
|
604
|
+
self.__ipfs_address = None
|
|
605
|
+
else:
|
|
606
|
+
self.__ipfs_address = addrs[1] if len(addrs) > 1 else addrs[0] if len(addrs) else ERROR_TAG
|
|
596
607
|
return self.__ipfs_id
|
|
597
608
|
|
|
598
609
|
|
|
@@ -657,7 +668,7 @@ class R1FSEngine:
|
|
|
657
668
|
tempfile=False,
|
|
658
669
|
show_logs=True,
|
|
659
670
|
raise_on_error=False,
|
|
660
|
-
) ->
|
|
671
|
+
) -> str:
|
|
661
672
|
"""
|
|
662
673
|
Add a YAML object to IPFS.
|
|
663
674
|
"""
|
|
@@ -884,7 +895,8 @@ class R1FSEngine:
|
|
|
884
895
|
timeout: int = None,
|
|
885
896
|
pin: bool = True,
|
|
886
897
|
raise_on_error: bool = False,
|
|
887
|
-
show_logs: bool = True
|
|
898
|
+
show_logs: bool = True,
|
|
899
|
+
return_absolute_path: bool = True,
|
|
888
900
|
) -> str:
|
|
889
901
|
"""
|
|
890
902
|
Retrieve an encrypted file from R1FS by CID, decrypt with AES-GCM in streaming mode.
|
|
@@ -916,6 +928,9 @@ class R1FSEngine:
|
|
|
916
928
|
show_logs : bool, optional
|
|
917
929
|
If True, logs steps via self.P / self.Pd. Default True.
|
|
918
930
|
|
|
931
|
+
return_absolute_path : bool, optional
|
|
932
|
+
If True, return the absolute path to the restored plaintext file.
|
|
933
|
+
|
|
919
934
|
Returns
|
|
920
935
|
-------
|
|
921
936
|
str
|
|
@@ -1041,6 +1056,8 @@ class R1FSEngine:
|
|
|
1041
1056
|
fin.seek(data_start, os.SEEK_SET)
|
|
1042
1057
|
|
|
1043
1058
|
out_path = os.path.join(local_folder, original_filename)
|
|
1059
|
+
if return_absolute_path:
|
|
1060
|
+
out_path = os.path.abspath(out_path)
|
|
1044
1061
|
chunk_size = 1024 * 1024
|
|
1045
1062
|
|
|
1046
1063
|
with open(out_path, "wb") as fout:
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import json
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
from ratio1 import Logger, const
|
|
6
|
+
from ratio1.bc import DefaultBlockEngine
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
if __name__ == '__main__' :
|
|
11
|
+
|
|
12
|
+
l = Logger("ENC")
|
|
13
|
+
eng = DefaultBlockEngine(
|
|
14
|
+
log=l, name="default",
|
|
15
|
+
user_config=True
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
eng.reset_network("devnet")
|
|
19
|
+
|
|
20
|
+
l.P(f"Checking web3 API on {eng.evm_network}", color='b')
|
|
21
|
+
|
|
22
|
+
job_id = 1
|
|
23
|
+
job_details = eng.web3_get_job_details(job_id)
|
|
24
|
+
|
|
25
|
+
l.P(f"Job Details for job id {job_id}:\n{json.dumps(job_details, indent=2)}", color='b')
|
|
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
|
|
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
|
{ratio1-3.4.46 → ratio1-3.4.48}/ratio1/default/instance/telegram_conversational_bot_01_plugin.py
RENAMED
|
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
|
|
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
|
{ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py
RENAMED
|
File without changes
|
{ratio1-3.4.46 → ratio1-3.4.48}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py
RENAMED
|
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
|
|
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
|
{ratio1-3.4.46 → ratio1-3.4.48}/xperimental/scripts/monitoring/multithreaded_network_sniffer.py
RENAMED
|
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
|
{ratio1-3.4.46 → ratio1-3.4.48}/xperimental/xarchive/_tutorials/3. simple_real_time_custom_code.py
RENAMED
|
File without changes
|
{ratio1-3.4.46 → ratio1-3.4.48}/xperimental/xarchive/_tutorials/4. real_time_custom_code_2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|