naeural-client 2.3.0__tar.gz → 2.3.3__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 (135) hide show
  1. {naeural_client-2.3.0 → naeural_client-2.3.3}/PKG-INFO +1 -1
  2. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/_ver.py +1 -1
  3. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/bc/ec.py +5 -1
  4. naeural_client-2.3.3/naeural_client/cli/cli.py +90 -0
  5. naeural_client-2.3.3/naeural_client/cli/cli_commands.py +42 -0
  6. naeural_client-2.3.3/naeural_client/cli/nodes.py +53 -0
  7. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/const/misc.py +1 -1
  8. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/const/payload.py +3 -0
  9. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/base_logger.py +2 -0
  10. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/utils/config.py +38 -9
  11. {naeural_client-2.3.0 → naeural_client-2.3.3}/pyproject.toml +1 -1
  12. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/eth/eth_sign.py +14 -15
  13. naeural_client-2.3.0/naeural_client/cli/cli.py +0 -43
  14. naeural_client-2.3.0/naeural_client/cli/cli_commands.py +0 -15
  15. naeural_client-2.3.0/naeural_client/cli/nodes.py +0 -22
  16. {naeural_client-2.3.0 → naeural_client-2.3.3}/.devcontainer/Dockerfile +0 -0
  17. {naeural_client-2.3.0 → naeural_client-2.3.3}/.devcontainer/devcontainer.json +0 -0
  18. {naeural_client-2.3.0 → naeural_client-2.3.3}/.gitattributes +0 -0
  19. {naeural_client-2.3.0 → naeural_client-2.3.3}/.github/workflows/python-publish.yml +0 -0
  20. {naeural_client-2.3.0 → naeural_client-2.3.3}/.gitignore +0 -0
  21. {naeural_client-2.3.0 → naeural_client-2.3.3}/.vscode/launch.json +0 -0
  22. {naeural_client-2.3.0 → naeural_client-2.3.3}/LICENSE +0 -0
  23. {naeural_client-2.3.0 → naeural_client-2.3.3}/README.md +0 -0
  24. {naeural_client-2.3.0 → naeural_client-2.3.3}/TODOs.md +0 -0
  25. {naeural_client-2.3.0 → naeural_client-2.3.3}/__init__.py +0 -0
  26. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/__init__.py +0 -0
  27. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base/__init__.py +0 -0
  28. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base/distributed_custom_code_presets.py +0 -0
  29. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base/generic_session.py +0 -0
  30. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base/instance.py +0 -0
  31. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base/payload/__init__.py +0 -0
  32. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base/payload/payload.py +0 -0
  33. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base/pipeline.py +0 -0
  34. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base/plugin_template.py +0 -0
  35. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base/responses.py +0 -0
  36. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base/transaction.py +0 -0
  37. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/base_decentra_object.py +0 -0
  38. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/bc/__init__.py +0 -0
  39. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/bc/base.py +0 -0
  40. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/bc/chain.py +0 -0
  41. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/certs/__init__.py +0 -0
  42. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
  43. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/cli/README.md +0 -0
  44. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/code_cheker/__init__.py +0 -0
  45. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/code_cheker/base.py +0 -0
  46. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/code_cheker/checker.py +0 -0
  47. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/comm/__init__.py +0 -0
  48. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/comm/amqp_wrapper.py +0 -0
  49. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/comm/mqtt_wrapper.py +0 -0
  50. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/const/README.md +0 -0
  51. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/const/__init__.py +0 -0
  52. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/const/apps.py +0 -0
  53. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/const/base.py +0 -0
  54. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/const/comms.py +0 -0
  55. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/const/environment.py +0 -0
  56. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/const/formatter.py +0 -0
  57. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/const/heartbeat.py +0 -0
  58. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/default/__init__.py +0 -0
  59. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/default/instance/__init__.py +0 -0
  60. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
  61. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/default/instance/custom_web_app_01_plugin.py +0 -0
  62. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/default/instance/net_mon_01_plugin.py +0 -0
  63. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/default/instance/telegram_basic_bot_01_plugin.py +0 -0
  64. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
  65. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/default/instance/view_scene_01_plugin.py +0 -0
  66. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/default/session/mqtt_session.py +0 -0
  67. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/io_formatter/__init__.py +0 -0
  68. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/io_formatter/base/__init__.py +0 -0
  69. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/io_formatter/base/base_formatter.py +0 -0
  70. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/io_formatter/default/__init__.py +0 -0
  71. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/io_formatter/default/a_dummy.py +0 -0
  72. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/io_formatter/default/aixp1.py +0 -0
  73. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/io_formatter/default/default.py +0 -0
  74. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/io_formatter/io_formatter_manager.py +0 -0
  75. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/__init__.py +0 -0
  76. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/__init__.py +0 -0
  77. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/class_instance_mixin.py +0 -0
  78. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/computer_vision_mixin.py +0 -0
  79. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/datetime_mixin.py +0 -0
  80. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/download_mixin.py +0 -0
  81. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/general_serialization_mixin.py +0 -0
  82. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/json_serialization_mixin.py +0 -0
  83. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
  84. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/process_mixin.py +0 -0
  85. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/resource_size_mixin.py +0 -0
  86. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/timers_mixin.py +0 -0
  87. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/upload_mixin.py +0 -0
  88. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/logger_mixins/utils_mixin.py +0 -0
  89. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/small_logger.py +0 -0
  90. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/tzlocal/__init__.py +0 -0
  91. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/tzlocal/unix.py +0 -0
  92. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/tzlocal/utils.py +0 -0
  93. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/tzlocal/win32.py +0 -0
  94. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/logging/tzlocal/windows_tz.py +0 -0
  95. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/plugins_manager_mixin.py +0 -0
  96. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/utils/__init__.py +0 -0
  97. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/utils/comm_utils.py +0 -0
  98. {naeural_client-2.3.0 → naeural_client-2.3.3}/naeural_client/utils/dotenv.py +0 -0
  99. {naeural_client-2.3.0 → naeural_client-2.3.3}/requirements.txt +0 -0
  100. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/.example_env +0 -0
  101. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
  102. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
  103. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/_example_pk_sdk.pem +0 -0
  104. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex01_part1_connect.py +0 -0
  105. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex01_part2_filter.py +0 -0
  106. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex02_first_deploy.py +0 -0
  107. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
  108. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
  109. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
  110. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
  111. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
  112. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex08_custom_web_app.py +0 -0
  113. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
  114. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex10_telegram_echo_bot.py +0 -0
  115. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex11_telegram_blackjack_bot.py +0 -0
  116. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/ex12_telegram_smart_bot.py +0 -0
  117. {naeural_client-2.3.0 → naeural_client-2.3.3}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
  118. {naeural_client-2.3.0 → naeural_client-2.3.3}/winrun.bat +0 -0
  119. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/.example_env +0 -0
  120. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/README.md +0 -0
  121. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/_archive/test.py +0 -0
  122. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/_tutorials/3. simple_real_time_custom_code.py +0 -0
  123. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/_tutorials/4. real_time_custom_code_2.py +0 -0
  124. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/_tutorials/8. chatbot.py +0 -0
  125. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/attach_example.py +0 -0
  126. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/decentralized/chain_dist_example.py +0 -0
  127. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
  128. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
  129. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/enc_dec/enc_dec_test.py +0 -0
  130. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/eth/info.md +0 -0
  131. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/ex1.py +0 -0
  132. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/hello.py +0 -0
  133. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/remote_exec.py +0 -0
  134. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/save_images.py +0 -0
  135. {naeural_client-2.3.0 → naeural_client-2.3.3}/xperimental/utils/get_documentation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: naeural_client
3
- Version: 2.3.0
3
+ Version: 2.3.3
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.3.0"
1
+ __VER__ = "2.3.3"
2
2
 
3
3
  if __name__ == "__main__":
4
4
  with open("pyproject.toml", "rt") as fd:
@@ -480,13 +480,17 @@ class BaseBCEllipticCurveEngine(BaseBlockEngine):
480
480
  message_hash = self.eth_hash_message(types, values, as_hex=False)
481
481
  signable_message = encode_defunct(primitive=message_hash)
482
482
  signed_message = Account.sign_message(signable_message, private_key=self.eth_account.key)
483
+ if hasattr(signed_message, "message_hash"): # backward compatibility
484
+ signed_message_hash = signed_message.message_hash
485
+ else:
486
+ signed_message_hash = signed_message.messageHash
483
487
  return {
484
488
  "message_hash": message_hash.hex(),
485
489
  "r": hex(signed_message.r),
486
490
  "s": hex(signed_message.s),
487
491
  "v": signed_message.v,
488
492
  "signature": signed_message.signature.hex(),
489
- "signed_message": signed_message.message_hash.hex(),
493
+ "signed_message": signed_message_hash.hex(),
490
494
  "sender" : self.eth_address,
491
495
  }
492
496
 
@@ -0,0 +1,90 @@
1
+ import argparse
2
+
3
+ from naeural_client.utils.config import maybe_init_config, log_with_color
4
+ from naeural_client.cli.cli_commands import CLI_COMMANDS
5
+
6
+ from naeural_client import version
7
+
8
+ def build_parser():
9
+ """
10
+ Dynamically builds the argument parser based on CLI_COMMANDS.
11
+
12
+ Returns
13
+ -------
14
+ argparse.ArgumentParser
15
+ Configured argument parser.
16
+ """
17
+ descr = f"nepctl v{version} - CLI for Naeural Edge Protocol SDK package"
18
+ parser = argparse.ArgumentParser(description=descr)
19
+ subparsers = parser.add_subparsers(dest="command", help="Available commands")
20
+
21
+ for command, subcommands in CLI_COMMANDS.items():
22
+ command_parser = subparsers.add_parser(command, help=f"{command} commands")
23
+
24
+ if isinstance(subcommands, dict) and "func" not in subcommands:
25
+ # Nested subcommands
26
+ command_subparsers = command_parser.add_subparsers(dest="subcommand")
27
+ for subcommand, subcmd_info in subcommands.items():
28
+ subcommand_parser = command_subparsers.add_parser(
29
+ subcommand, help=f"{subcommand} command"
30
+ )
31
+ if isinstance(subcmd_info, dict) and "params" in subcmd_info:
32
+ for param, description in subcmd_info["params"].items():
33
+ if param.startswith("--"):
34
+ subcommand_parser.add_argument(
35
+ param, action="store_true", help=description
36
+ )
37
+ else:
38
+ subcommand_parser.add_argument(
39
+ param, help=description
40
+ )
41
+ #end if
42
+ #end for
43
+ #end if
44
+ subcommand_parser.set_defaults(func=subcmd_info["func"])
45
+ else:
46
+ # Single-level commands with parameters
47
+ if "params" in subcommands:
48
+ for param, description in subcommands["params"].items():
49
+ if param.startswith("--"):
50
+ command_parser.add_argument(
51
+ param, action="store_true", help=description
52
+ )
53
+ else:
54
+ command_parser.add_argument(
55
+ param, help=description
56
+ )
57
+ #end if
58
+ command_parser.set_defaults(func=subcommands["func"])
59
+
60
+ return parser
61
+
62
+
63
+
64
+ def main():
65
+ """
66
+ Main entry point for the CLI.
67
+ Ensures the configuration is initialized, builds the parser,
68
+ and executes the appropriate command function.
69
+ """
70
+ try:
71
+ # Initialize configuration if necessary
72
+ maybe_init_config()
73
+
74
+ # Build the CLI parser
75
+ parser = build_parser()
76
+ args = parser.parse_args()
77
+
78
+ # Check if a command function is provided
79
+ if hasattr(args, "func"):
80
+ args.func(args) # Pass parsed arguments to the command function
81
+ else:
82
+ parser.print_help()
83
+
84
+ except Exception as e:
85
+ # Handle unexpected errors gracefully
86
+ print(f"Error: {e}")
87
+
88
+
89
+ if __name__ == "__main__":
90
+ main()
@@ -0,0 +1,42 @@
1
+ from naeural_client.cli.nodes import (
2
+ get_nodes, get_supervisors,
3
+ restart_node, shutdown_node
4
+ )
5
+ from naeural_client.utils.config import show_config, reset_config
6
+
7
+
8
+ # Define the available commands
9
+ CLI_COMMANDS = {
10
+ "get": {
11
+ "nodes": {
12
+ "func": get_nodes,
13
+ "params": {
14
+ "--all": "Get all nodes",
15
+ "--peered": "Get only peered nodes"
16
+ }
17
+ },
18
+ "supervisors": {
19
+ "func": get_supervisors,
20
+ },
21
+ },
22
+ "config": {
23
+ "show": {
24
+ "func": show_config,
25
+ },
26
+ "reset": {
27
+ "func": reset_config,
28
+ },
29
+ },
30
+ "restart": {
31
+ "func": restart_node,
32
+ "params": {
33
+ "node": "The node to restart"
34
+ }
35
+ },
36
+ "shutdown": {
37
+ "func": shutdown_node,
38
+ "params": {
39
+ "node": "The node to shutdown"
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,53 @@
1
+ from naeural_client.utils.config import log_with_color
2
+
3
+
4
+ def get_nodes(args):
5
+ """
6
+ This function is used to get the information about the nodes and it will perform the following:
7
+
8
+ 1. Create a Session object.
9
+ 2. Wait for the first net mon message via Session and show progress.
10
+ 3. Wait for the second net mon message via Session and show progress.
11
+ 4. Get the active nodes union via Session and display the nodes marking those peered vs non-peered.
12
+ """
13
+ if args.all:
14
+ log_with_color("Getting all nodes information", color="b")
15
+ elif args.peered:
16
+ log_with_color("Getting peered nodes information", color="b")
17
+ else:
18
+ log_with_color("Getting default nodes information", color="b")
19
+ return
20
+
21
+
22
+ def get_supervisors(args):
23
+ """
24
+ This function is used to get the information about the supervisors.
25
+ """
26
+ log_with_color("Getting supervisors information", color='b')
27
+ return
28
+
29
+
30
+ def restart_node(args):
31
+ """
32
+ This function is used to restart the node.
33
+
34
+ Parameters
35
+ ----------
36
+ args : argparse.Namespace
37
+ Arguments passed to the function.
38
+ """
39
+ log_with_color(f"Restarting node {args.node}", color='b')
40
+ return
41
+
42
+
43
+ def shutdown_node(args):
44
+ """
45
+ This function is used to shutdown the node.
46
+
47
+ Parameters
48
+ ----------
49
+ args : argparse.Namespace
50
+ Arguments passed to the function.
51
+ """
52
+ log_with_color(f"Shutting down node {args.node}", color='b')
53
+ return
@@ -4,7 +4,7 @@ class COLORS:
4
4
  TIMERS = 'd'
5
5
  STATUS = 'n'
6
6
  SERVING = 'm'
7
- BIZ = 'b'
7
+ BIZ = 'c'
8
8
  COMM = 'y'
9
9
  TIMERS = 'd'
10
10
 
@@ -182,6 +182,9 @@ class PAYLOAD_DATA:
182
182
  EE_HASH = BC_CT.HASH
183
183
  EE_SIGN = BC_CT.SIGN
184
184
 
185
+ EE_ETH_ADDR = 'EE_ETH_SENDER'
186
+ EE_ETH_SIGN = 'EE_ETH_SIGN'
187
+
185
188
  EE_DESTINATION = "EE_DEST"
186
189
 
187
190
  NOTIFICATION = 'NOTIFICATION'
@@ -35,6 +35,8 @@ COLORS = {
35
35
  'y': "\x1b[1;33m",
36
36
  'b': "\x1b[1;34m",
37
37
  'm': "\x1b[1;35m",
38
+ 'c': "\x1b[1;36m", # bright cyan
39
+ 'v': "\x1b[0;36m", # dim cyan
38
40
  'a': "\x1b[41m",
39
41
  'e': "\x1b[41m",
40
42
  'w': "\x1b[1;31m", # warning == red
@@ -14,6 +14,34 @@ EE_SECURED=true
14
14
  TARGET_NODE=
15
15
  """
16
16
 
17
+ def log_with_color(s, color='n'):
18
+ """
19
+ Prints the string `s` to the console in the specified color.
20
+
21
+ Parameters
22
+ ----------
23
+ s : str
24
+ The string to be logged.
25
+ color : str, optional
26
+ The color code:
27
+ 'r' for red, 'g' for green, 'y' for yellow,
28
+ 'b' for blue, 'w' for light white, 'n' for dark white (default).
29
+ """
30
+ color_codes = {
31
+ 'r': '\033[31m', # Red
32
+ 'g': '\033[32m', # Green
33
+ 'y': '\033[33m', # Yellow
34
+ 'b': "\x1b[1;34m", # bright blue
35
+ 'w': '\033[97m', # Light white
36
+ 'c': "\x1b[1;36m", # bright cyan
37
+ 'n': '\033[37m', # Dark white (default)
38
+ }
39
+
40
+ reset_code = '\033[0m' # Reset color
41
+ color_code = color_codes.get(color, color_codes['n'])
42
+ print(f"{color_code}{s}{reset_code}", flush=True)
43
+
44
+
17
45
  def get_user_folder():
18
46
  """
19
47
  Returns the user folder.
@@ -26,7 +54,7 @@ def get_user_config_file():
26
54
  """
27
55
  return get_user_folder() / "config"
28
56
 
29
- def reset_config():
57
+ def reset_config(args):
30
58
  """
31
59
  Resets the configuration by creating a ~/.naeural folder and populating
32
60
  ~/.naeural/config with values from a local .env file, if it exists.
@@ -43,26 +71,27 @@ def reset_config():
43
71
  if current_env_file.exists():
44
72
  # Copy .env content to ~/.naeural/config
45
73
  shutil.copy(current_env_file, config_file)
46
- print(f"Configuration has been reset using {current_env_file} into {config_file}")
74
+ log_with_color(f"Configuration has been reset using {current_env_file} into {config_file}", color='y')
47
75
  else:
48
76
  # Create an empty config file
49
77
  with config_file.open("wt") as file:
50
78
  file.write(ENV_TEMPLATE)
51
- print(f"Configuration has been reset to default in {config_file}:\n{ENV_TEMPLATE}")
79
+ log_with_color(f"Configuration has been reset to default in {config_file}:\n{ENV_TEMPLATE}", color='y')
52
80
 
53
81
 
54
- def show_config():
82
+ def show_config(args):
55
83
  """
56
84
  Displays the current configuration from ~/.naeural/config.
57
85
  """
58
86
  config_file = get_user_config_file()
59
87
 
60
88
  if config_file.exists():
61
- print(f"Current configuration ({config_file}):")
89
+ log_with_color(f"Current configuration ({config_file}):")
62
90
  with config_file.open("r") as file:
63
- print(file.read())
91
+ log_with_color(file.read())
64
92
  else:
65
- print(f"No configuration found at {config_file}. Please run `reset_config` first.")
93
+ log_with_color(f"No configuration found at {config_file}. Please run `reset_config` first.", color="r")
94
+ return
66
95
 
67
96
 
68
97
  def load_user_defined_config(verbose=False):
@@ -84,10 +113,10 @@ def load_user_defined_config(verbose=False):
84
113
  result = True
85
114
  os.environ[key.strip()] = value
86
115
  if verbose:
87
- print(f"Configuration from {config_file} has been loaded into the environment.")
116
+ log_with_color(f"Configuration from {config_file} has been loaded into the environment.", color='b')
88
117
  else:
89
118
  if verbose:
90
- print(f"No configuration file found at {config_file}. Please run `reset_config` first.")
119
+ log_with_color(f"No configuration file found at {config_file}. Please run `reset_config` first.", color="r")
91
120
  return result
92
121
 
93
122
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "naeural_client"
7
- version = "2.3.0"
7
+ version = "2.3.3"
8
8
  authors = [
9
9
  { name="Andrei Ionut Damian", email="andrei.damian@me.com" },
10
10
  { name="Cristan Bleotiu", email="cristibleotiu@gmail.com" },
@@ -41,24 +41,23 @@ if __name__ == '__main__' :
41
41
  types = ["string", "uint256[]", "uint256[]"]
42
42
  values = [node, epochs, epochs_vals]
43
43
 
44
- # hash1 = eng1.eth_sign_message(types, values)
45
44
 
46
- # from web3 import Web3
47
- # from eth_account import Account
48
- # from eth_account.messages import encode_defunct
45
+ from web3 import Web3
46
+ from eth_account import Account
47
+ from eth_account.messages import encode_defunct
49
48
 
50
- # message_hash = Web3.solidity_keccak(types, values)
51
- # signable_message = encode_defunct(primitive=message_hash)
52
- # signed_message = Account.sign_message(signable_message, private_key=private_key)
49
+ message_hash = Web3.solidity_keccak(types, values)
50
+ signable_message = encode_defunct(primitive=message_hash)
51
+ signed_message = Account.sign_message(signable_message, private_key=private_key)
53
52
 
54
- # results = {
55
- # "sender" : eng1.eth_address,
56
- # "message_hash": message_hash.hex(),
57
- # "signature": signed_message.signature.hex(),
58
- # "signed_message": signed_message.message_hash.hex(),
59
- # }
60
- # l.P("Signable message: {}".format(signable_message))
61
- # l.P("Results:\n{}".format(json.dumps(results, indent=2)))
53
+ results = {
54
+ "sender" : eng1.eth_address,
55
+ "message_hash": message_hash.hex(),
56
+ "signature": signed_message.signature.hex(),
57
+ "signed_message": signed_message.message_hash.hex(),
58
+ }
59
+ l.P("Signable message: {}".format(signable_message))
60
+ l.P("Results:\n{}".format(json.dumps(results, indent=2)))
62
61
 
63
62
  s2 = eng1.eth_sign_message(types, values)
64
63
  l.P("Results:\n{}".format(json.dumps(s2, indent=2)))
@@ -1,43 +0,0 @@
1
- import argparse
2
-
3
- from naeural_client.utils.config import maybe_init_config
4
- from naeural_client.cli.cli_commands import CLI_COMMANDS
5
-
6
- def build_parser():
7
- """
8
- Dynamically builds the argument parser based on CLI_COMMANDS.
9
-
10
- Returns
11
- -------
12
- argparse.ArgumentParser
13
- Configured argument parser.
14
- """
15
- parser = argparse.ArgumentParser(description="nepctl - CLI for Naeural Edge Protocol SDK package")
16
- subparsers = parser.add_subparsers(dest="command", help="Available commands")
17
-
18
- # Iterate over top-level commands
19
- for command, subcommands in CLI_COMMANDS.items():
20
- command_parser = subparsers.add_parser(command, help=f"{command} commands")
21
- if isinstance(subcommands, dict): # Nested subcommands
22
- command_subparsers = command_parser.add_subparsers(dest="subcommand")
23
- for subcommand, func in subcommands.items():
24
- subcommand_parser = command_subparsers.add_parser(
25
- subcommand, help=f"{subcommand} command"
26
- )
27
- subcommand_parser.set_defaults(func=func)
28
- else:
29
- command_parser.set_defaults(func=subcommands)
30
-
31
- return parser
32
-
33
- def main():
34
- maybe_init_config()
35
- parser = build_parser()
36
- args = parser.parse_args()
37
- if hasattr(args, "func"):
38
- args.func() # Call the dynamically loaded function
39
- else:
40
- parser.print_help()
41
-
42
- if __name__ == "__main__":
43
- main()
@@ -1,15 +0,0 @@
1
- from naeural_client.cli.nodes import get_nodes, get_supervisors
2
- from naeural_client.utils.config import show_config, reset_config
3
-
4
-
5
- # Define the available commands
6
- CLI_COMMANDS = {
7
- "get": {
8
- "nodes": get_nodes,
9
- "supervisors": get_supervisors,
10
- },
11
- "config": {
12
- "show": show_config,
13
- "reset": reset_config,
14
- },
15
- }
@@ -1,22 +0,0 @@
1
-
2
-
3
-
4
- def get_nodes():
5
- """
6
- This function is used to get the information about the nodes and it will perform the following:
7
-
8
- 1. Create a Session object.
9
- 2. Wait for the first net mon message via Session and show progress.
10
- 3. Wait for the second net mon message via Session and show progress.
11
- 4. Get the active nodes union via Session and display the nodes marking those peered vs non-peered.
12
- """
13
- print("Getting nodes information")
14
- return
15
-
16
-
17
- def get_supervisors():
18
- """
19
- This function is used to get the information about the supervisors.
20
- """
21
- print("Getting supervisors information")
22
- return
File without changes
File without changes
File without changes