naeural-client 2.5.7__tar.gz → 2.5.8__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 (137) hide show
  1. {naeural_client-2.5.7 → naeural_client-2.5.8}/PKG-INFO +1 -1
  2. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/_ver.py +1 -1
  3. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/generic_session.py +31 -11
  4. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/cli/cli.py +8 -3
  5. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/cli/cli_commands.py +3 -2
  6. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/cli/nodes.py +12 -8
  7. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/utils/config.py +28 -0
  8. {naeural_client-2.5.7 → naeural_client-2.5.8}/pyproject.toml +1 -1
  9. {naeural_client-2.5.7 → naeural_client-2.5.8}/.devcontainer/Dockerfile +0 -0
  10. {naeural_client-2.5.7 → naeural_client-2.5.8}/.devcontainer/devcontainer.json +0 -0
  11. {naeural_client-2.5.7 → naeural_client-2.5.8}/.gitattributes +0 -0
  12. {naeural_client-2.5.7 → naeural_client-2.5.8}/.github/workflows/python-publish.yml +0 -0
  13. {naeural_client-2.5.7 → naeural_client-2.5.8}/.gitignore +0 -0
  14. {naeural_client-2.5.7 → naeural_client-2.5.8}/.vscode/launch.json +0 -0
  15. {naeural_client-2.5.7 → naeural_client-2.5.8}/LICENSE +0 -0
  16. {naeural_client-2.5.7 → naeural_client-2.5.8}/README.md +0 -0
  17. {naeural_client-2.5.7 → naeural_client-2.5.8}/TODOs.md +0 -0
  18. {naeural_client-2.5.7 → naeural_client-2.5.8}/__init__.py +0 -0
  19. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/__init__.py +0 -0
  20. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/__init__.py +0 -0
  21. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/distributed_custom_code_presets.py +0 -0
  22. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/instance.py +0 -0
  23. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/payload/__init__.py +0 -0
  24. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/payload/payload.py +0 -0
  25. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/pipeline.py +0 -0
  26. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/plugin_template.py +0 -0
  27. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/responses.py +0 -0
  28. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/transaction.py +0 -0
  29. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base/webapp_pipeline.py +0 -0
  30. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/base_decentra_object.py +0 -0
  31. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/bc/__init__.py +0 -0
  32. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/bc/base.py +0 -0
  33. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/bc/chain.py +0 -0
  34. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/bc/ec.py +0 -0
  35. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/certs/__init__.py +0 -0
  36. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
  37. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/cli/README.md +0 -0
  38. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/code_cheker/__init__.py +0 -0
  39. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/code_cheker/base.py +0 -0
  40. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/code_cheker/checker.py +0 -0
  41. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/comm/__init__.py +0 -0
  42. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/comm/amqp_wrapper.py +0 -0
  43. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/comm/mqtt_wrapper.py +0 -0
  44. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/const/README.md +0 -0
  45. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/const/__init__.py +0 -0
  46. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/const/apps.py +0 -0
  47. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/const/base.py +0 -0
  48. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/const/comms.py +0 -0
  49. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/const/environment.py +0 -0
  50. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/const/formatter.py +0 -0
  51. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/const/heartbeat.py +0 -0
  52. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/const/misc.py +0 -0
  53. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/const/payload.py +0 -0
  54. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/default/__init__.py +0 -0
  55. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/default/instance/__init__.py +0 -0
  56. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
  57. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/default/instance/custom_webapi_01_plugin.py +0 -0
  58. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/default/instance/net_mon_01_plugin.py +0 -0
  59. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/default/instance/telegram_basic_bot_01_plugin.py +0 -0
  60. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
  61. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/default/instance/view_scene_01_plugin.py +0 -0
  62. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/default/session/mqtt_session.py +0 -0
  63. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/io_formatter/__init__.py +0 -0
  64. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/io_formatter/base/__init__.py +0 -0
  65. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/io_formatter/base/base_formatter.py +0 -0
  66. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/io_formatter/default/__init__.py +0 -0
  67. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/io_formatter/default/a_dummy.py +0 -0
  68. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/io_formatter/default/aixp1.py +0 -0
  69. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/io_formatter/default/default.py +0 -0
  70. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/io_formatter/io_formatter_manager.py +0 -0
  71. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/__init__.py +0 -0
  72. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/base_logger.py +0 -0
  73. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/__init__.py +0 -0
  74. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/class_instance_mixin.py +0 -0
  75. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/computer_vision_mixin.py +0 -0
  76. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/datetime_mixin.py +0 -0
  77. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/download_mixin.py +0 -0
  78. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/general_serialization_mixin.py +0 -0
  79. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/json_serialization_mixin.py +0 -0
  80. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
  81. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/process_mixin.py +0 -0
  82. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/resource_size_mixin.py +0 -0
  83. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/timers_mixin.py +0 -0
  84. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/upload_mixin.py +0 -0
  85. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/logger_mixins/utils_mixin.py +0 -0
  86. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/small_logger.py +0 -0
  87. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/tzlocal/__init__.py +0 -0
  88. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/tzlocal/unix.py +0 -0
  89. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/tzlocal/utils.py +0 -0
  90. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/tzlocal/win32.py +0 -0
  91. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/logging/tzlocal/windows_tz.py +0 -0
  92. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/plugins_manager_mixin.py +0 -0
  93. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/utils/__init__.py +0 -0
  94. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/utils/comm_utils.py +0 -0
  95. {naeural_client-2.5.7 → naeural_client-2.5.8}/naeural_client/utils/dotenv.py +0 -0
  96. {naeural_client-2.5.7 → naeural_client-2.5.8}/requirements.txt +0 -0
  97. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/.example_env +0 -0
  98. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
  99. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
  100. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/_example_pk_sdk.pem +0 -0
  101. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex01_part1_connect.py +0 -0
  102. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex01_part2_filter.py +0 -0
  103. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex01_part3_adv_filter.py +0 -0
  104. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex02_first_deploy.py +0 -0
  105. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
  106. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
  107. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
  108. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
  109. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
  110. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex08_custom_webapi.py +0 -0
  111. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
  112. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex10_telegram_echo_bot.py +0 -0
  113. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex11_telegram_blackjack_bot.py +0 -0
  114. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex12_telegram_smart_bot.py +0 -0
  115. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/ex13_launch_repo_based_webapp.py +0 -0
  116. {naeural_client-2.5.7 → naeural_client-2.5.8}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
  117. {naeural_client-2.5.7 → naeural_client-2.5.8}/winrun.bat +0 -0
  118. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/.example_env +0 -0
  119. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/_archive/test.py +0 -0
  120. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/_tutorials/3. simple_real_time_custom_code.py +0 -0
  121. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/_tutorials/4. real_time_custom_code_2.py +0 -0
  122. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/_tutorials/8. chatbot.py +0 -0
  123. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/decentralized/chain_dist_example.py +0 -0
  124. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
  125. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
  126. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/enc_dec/enc_dec_test.py +0 -0
  127. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/eth/eth_sign.py +0 -0
  128. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/eth/info.md +0 -0
  129. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/eth/sign.py +0 -0
  130. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/multi-enc-dec/multi_test1.py +0 -0
  131. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/utils/get_documentation.py +0 -0
  132. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/various/README.md +0 -0
  133. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/various/attach_example.py +0 -0
  134. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/various/ex1.py +0 -0
  135. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/various/hello.py +0 -0
  136. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/various/remote_exec.py +0 -0
  137. {naeural_client-2.5.7 → naeural_client-2.5.8}/xperimental/various/save_images.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: naeural_client
3
- Version: 2.5.7
3
+ Version: 2.5.8
4
4
  Summary: `naeural_client` is the Python SDK required for client app development for the Naeural Edge Protocol Edge Protocol framework
5
5
  Project-URL: Homepage, https://github.com/NaeuralEdgeProtocol/naeural_client
6
6
  Project-URL: Bug Tracker, https://github.com/NaeuralEdgeProtocol/naeural_client/issues
@@ -1,4 +1,4 @@
1
- __VER__ = "2.5.7"
1
+ __VER__ = "2.5.8"
2
2
 
3
3
  if __name__ == "__main__":
4
4
  with open("pyproject.toml", "rt") as fd:
@@ -24,7 +24,9 @@ from .payload import Payload
24
24
  from .pipeline import Pipeline
25
25
  from .webapp_pipeline import WebappPipeline
26
26
  from .transaction import Transaction
27
- from ..utils.config import load_user_defined_config, get_user_config_file, get_user_folder
27
+ from ..utils.config import (
28
+ load_user_defined_config, get_user_config_file, get_user_folder, seconds_to_short_format
29
+ )
28
30
 
29
31
  # from ..default.instance import PLUGIN_TYPES # circular import
30
32
 
@@ -571,7 +573,7 @@ class GenericSession(BaseDecentrAIObject):
571
573
  sender_addr = dict_msg.get(PAYLOAD_DATA.EE_SENDER, None)
572
574
  path = dict_msg.get(PAYLOAD_DATA.EE_PAYLOAD_PATH, [None, None, None, None])
573
575
  ee_id = dict_msg.get(PAYLOAD_DATA.EE_ID, None)
574
- current_network = dict_msg.get(PAYLOAD_DATA.NETMON_CURRENT_NETWORK, {})
576
+ current_network = dict_msg.get(PAYLOAD_DATA.NETMON_CURRENT_NETWORK, {})
575
577
  if current_network:
576
578
  all_addresses = [
577
579
  x[PAYLOAD_DATA.NETMON_ADDRESS] for x in current_network.values()
@@ -1881,14 +1883,16 @@ class GenericSession(BaseDecentrAIObject):
1881
1883
  """
1882
1884
 
1883
1885
  ngrok_use_api = True
1884
- use_ngrok=True,
1886
+ use_ngrok = True
1887
+ kwargs.pop('use_ngrok', None)
1888
+ kwargs.pop('ngrok_use_api', None)
1885
1889
 
1886
1890
  # if isinstance(signature, str):
1887
1891
 
1888
1892
  pipelines, instances = [], []
1889
1893
 
1890
1894
  for node in nodes:
1891
- self.P("Creating web app on node {}...".format(node), color='y')
1895
+ self.P("Creating web app on node {}...".format(node), color='b')
1892
1896
  pipeline: WebappPipeline = self.create_pipeline(
1893
1897
  node=nodes[0],
1894
1898
  name=name,
@@ -2230,7 +2234,14 @@ class GenericSession(BaseDecentrAIObject):
2230
2234
  def client_address(self):
2231
2235
  return self.get_client_address()
2232
2236
 
2233
- def get_network_known_nodes(self, timeout=10, online_only=False, supervisors_only=False):
2237
+ def get_network_known_nodes(
2238
+ self,
2239
+ timeout=10,
2240
+ online_only=False,
2241
+ supervisors_only=False,
2242
+ min_supervisors=2,
2243
+ supervisor=None,
2244
+ ):
2234
2245
  """
2235
2246
  This function will return a Pandas dataframe known nodes in the network based on
2236
2247
  all the net-mon messages received so far.
@@ -2238,10 +2249,10 @@ class GenericSession(BaseDecentrAIObject):
2238
2249
  mapping = OrderedDict({
2239
2250
  'Address': PAYLOAD_DATA.NETMON_ADDRESS,
2240
2251
  'Alias' : PAYLOAD_DATA.NETMON_EEID,
2252
+ 'Seen ago' : PAYLOAD_DATA.NETMON_LAST_SEEN,
2241
2253
  'Last state': PAYLOAD_DATA.NETMON_STATUS_KEY,
2242
- 'Ago (s)' : PAYLOAD_DATA.NETMON_LAST_SEEN,
2243
2254
  'Last probe' : PAYLOAD_DATA.NETMON_LAST_REMOTE_TIME,
2244
- 'Node zone' : PAYLOAD_DATA.NETMON_NODE_UTC,
2255
+ 'Zone' : PAYLOAD_DATA.NETMON_NODE_UTC,
2245
2256
  'Supervisor' : PAYLOAD_DATA.NETMON_IS_SUPERVISOR,
2246
2257
  })
2247
2258
  reverse_mapping = {v: k for k, v in mapping.items()}
@@ -2249,8 +2260,12 @@ class GenericSession(BaseDecentrAIObject):
2249
2260
  for k in mapping:
2250
2261
  res[k] = []
2251
2262
  start = tm()
2263
+
2252
2264
  while (tm() - start) < timeout:
2253
- if len(self.__current_network_statuses) > 0:
2265
+ if supervisor is not None:
2266
+ if supervisor in self.__current_network_statuses:
2267
+ break
2268
+ elif len(self.__current_network_statuses) >= min_supervisors:
2254
2269
  break
2255
2270
  sleep(0.1)
2256
2271
  # end while
@@ -2273,10 +2288,15 @@ class GenericSession(BaseDecentrAIObject):
2273
2288
  val = node_info.get(key, None)
2274
2289
  if key == PAYLOAD_DATA.NETMON_LAST_REMOTE_TIME:
2275
2290
  # val hols a string '2024-12-23 23:50:16.462155' and must be converted to a datetime
2276
- val = dt.strptime(val, '%Y-%m-%d %H:%M:%S.%f')
2277
- # strip the microseconds
2278
- val = val.replace(microsecond=0)
2291
+ val = dt.strptime(val, '%Y-%m-%d %H:%M:%S.%f')
2292
+ val = val.replace(microsecond=0) # strip the microseconds
2293
+ elif key == PAYLOAD_DATA.NETMON_LAST_SEEN:
2294
+ # convert val (seconds) to a human readable format
2295
+ val = seconds_to_short_format(val)
2296
+ elif key == PAYLOAD_DATA.NETMON_ADDRESS:
2297
+ val = self.bc_engine._add_prefix(val)
2279
2298
  res[column].append(val)
2280
2299
  # end for
2281
2300
  # end if
2301
+ pd.options.display.float_format = '{:.1f}'.format
2282
2302
  return pd.DataFrame(res), best_super
@@ -52,9 +52,14 @@ def build_parser():
52
52
  if isinstance(subcmd_info, dict) and "params" in subcmd_info:
53
53
  for param, description in subcmd_info["params"].items():
54
54
  if param.startswith("--"):
55
- subcommand_parser.add_argument(
56
- param, action="store_true", help=description
57
- )
55
+ if description.upper().endswith("FLAG"):
56
+ subcommand_parser.add_argument(
57
+ param, action="store_true", help=description
58
+ )
59
+ else:
60
+ subcommand_parser.add_argument(
61
+ param, help=description, type=str
62
+ )
58
63
  else:
59
64
  subcommand_parser.add_argument(
60
65
  param, help=description
@@ -11,9 +11,10 @@ CLI_COMMANDS = {
11
11
  "nodes": {
12
12
  "func": get_nodes,
13
13
  "params": {
14
- "--all": "Get all known nodes", # DONE
15
- "--online" : "Get only online nodes", # DONE
14
+ "--all": "Get all known nodes flag", # DONE
15
+ "--online" : "Get only online nodes flag", # DONE
16
16
  # "--peered": "Get only peered nodes"
17
+ "--supervisor" : "Use a specific supervisor node"
17
18
  }
18
19
  },
19
20
  "supervisors": {
@@ -10,21 +10,25 @@ def get_nodes(args):
10
10
  3. Wait for the second net mon message via Session and show progress.
11
11
  4. Get the active nodes union via Session and display the nodes marking those peered vs non-peered.
12
12
  """
13
- if args.verbose:
14
- log_with_color("Getting nodes...", color='b')
13
+ supervisor_addr = args.supervisor
14
+ # log_with_color(f"Getting nodes from supervisor <{supervisor_addr}>...", color='b')
15
15
  from naeural_client import Session
16
16
  sess = Session(silent=not args.verbose)
17
17
  if args.all:
18
- df, supervisor = sess.get_network_known_nodes()
19
- log_with_color(f"Network historical map as seen by <{supervisor}>:", color='b')
18
+ df, supervisor = sess.get_network_known_nodes(supervisor=supervisor_addr)
19
+ log_with_color(f"Network full map reported by <{supervisor}>:", color='b')
20
20
  log_with_color(f"{df}")
21
21
  elif args.online:
22
- df, supervisor = sess.get_network_known_nodes(online_only=True)
23
- log_with_color(f"Online nodes as seen by <{supervisor}>:", color='b')
22
+ df, supervisor = sess.get_network_known_nodes(
23
+ online_only=True, supervisor=supervisor_addr
24
+ )
25
+ log_with_color(f"Online nodes reported by <{supervisor}>:", color='b')
24
26
  log_with_color(f"{df}")
25
27
  else:
26
- df, supervisor = sess.get_network_known_nodes(online_only=True)
27
- log_with_color(f"Online nodes as seen by <{supervisor}>:", color='b')
28
+ df, supervisor = sess.get_network_known_nodes(
29
+ online_only=True, supervisor=supervisor_addr
30
+ )
31
+ log_with_color(f"Online nodes reported by <{supervisor}>:", color='b')
28
32
  log_with_color(f"{df}")
29
33
  return
30
34
 
@@ -14,6 +14,34 @@ EE_SECURED=true
14
14
  TARGET_NODE=
15
15
  """
16
16
 
17
+ def seconds_to_short_format(seconds):
18
+ """
19
+ Converts a duration in seconds into a short human-readable format: "Xd HH:MM:SS".
20
+
21
+ Parameters
22
+ ----------
23
+ seconds : int
24
+ The total duration in seconds.
25
+
26
+ Returns
27
+ -------
28
+ str
29
+ Short human-readable duration in "Xd HH:MM:SS" format.
30
+ """
31
+ days = int(seconds / (24 * 3600))
32
+ seconds %= (24 * 3600)
33
+ hours = int(seconds / 3600)
34
+ seconds %= 3600
35
+ minutes = int(seconds / 60)
36
+ seconds %= 60
37
+ seconds = int(seconds)
38
+
39
+ # Format the result
40
+ if days > 0:
41
+ return f"{days}d {hours:02}:{minutes:02}:{seconds:02}"
42
+ else:
43
+ return f"{hours:02}:{minutes:02}:{seconds:02}"
44
+
17
45
  def log_with_color(s, color='n'):
18
46
  """
19
47
  Prints the string `s` to the console in the specified color.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "naeural_client"
7
- version = "2.5.7"
7
+ version = "2.5.8"
8
8
  authors = [
9
9
  { name="Andrei Ionut Damian", email="andrei.damian@me.com" },
10
10
  { name="Cristan Bleotiu", email="cristibleotiu@gmail.com" },
File without changes
File without changes
File without changes