naeural-client 2.0.2__py3-none-any.whl → 2.1.0__py3-none-any.whl

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.
@@ -11,3 +11,5 @@ from .base_decentra_object import BaseDecentrAIObject
11
11
  from .plugins_manager_mixin import _PluginsManagerMixin
12
12
  from .logging import Logger
13
13
  from .code_cheker import BaseCodeChecker
14
+ from .const import PLUGIN_SIGNATURES
15
+ from .default.instance import PLUGIN_TYPES
naeural_client/_ver.py CHANGED
@@ -1,4 +1,4 @@
1
- __VER__ = "2.0.2"
1
+ __VER__ = "2.1.0"
2
2
 
3
3
  if __name__ == "__main__":
4
4
  with open("pyproject.toml", "rt") as fd:
@@ -9,7 +9,7 @@ from time import time as tm
9
9
 
10
10
  from ..base_decentra_object import BaseDecentrAIObject
11
11
  from ..bc import DefaultBlockEngine
12
- from ..const import COMMANDS, ENVIRONMENT, HB, PAYLOAD_DATA, STATUS_TYPE
12
+ from ..const import COMMANDS, ENVIRONMENT, HB, PAYLOAD_DATA, STATUS_TYPE, PLUGIN_SIGNATURES
13
13
  from ..const import comms as comm_ct
14
14
  from ..io_formatter import IOFormatterWrapper
15
15
  from ..logging import Logger
@@ -23,7 +23,7 @@ from .transaction import Transaction
23
23
 
24
24
  class GenericSession(BaseDecentrAIObject):
25
25
  """
26
- A Session is a connection to a communication server which provides the channel to interact with nodes from the Naeural network.
26
+ A Session is a connection to a communication server which provides the channel to interact with nodes from the Naeural Edge Protocol network.
27
27
  A Session manages `Pipelines` and handles all messages received from the communication server.
28
28
  The Session handles all callbacks that are user-defined and passed as arguments in the API calls.
29
29
  """
@@ -74,7 +74,7 @@ class GenericSession(BaseDecentrAIObject):
74
74
  root_topic="naeural",
75
75
  **kwargs) -> None:
76
76
  """
77
- A Session is a connection to a communication server which provides the channel to interact with nodes from the Naeural network.
77
+ A Session is a connection to a communication server which provides the channel to interact with nodes from the Naeural Edge Protocol network.
78
78
  A Session manages `Pipelines` and handles all messages received from the communication server.
79
79
  The Session handles all callbacks that are user-defined and passed as arguments in the API calls.
80
80
 
@@ -91,8 +91,8 @@ class GenericSession(BaseDecentrAIObject):
91
91
  secured: bool, optional
92
92
  True if connection is secured, by default None
93
93
  name : str, optional
94
- The name of this connection, used to identify owned pipelines on a specific Naeural edge node.
95
- The name will be used as `INITIATOR_ID` and `SESSION_ID` when communicating with Naeural edge nodes, by default 'pySDK'
94
+ The name of this connection, used to identify owned pipelines on a specific Naeural Edge Protocol edge node.
95
+ The name will be used as `INITIATOR_ID` and `SESSION_ID` when communicating with Naeural Edge Protocol edge nodes, by default 'pySDK'
96
96
  config : dict, optional
97
97
  Configures the names of the channels this session will connect to.
98
98
  If using a Mqtt server, these channels are in fact topics.
@@ -102,7 +102,7 @@ class GenericSession(BaseDecentrAIObject):
102
102
  If set, process the messages that come only from the nodes from this list.
103
103
  Defaults to None
104
104
  show_commands : bool
105
- If True, will print the commands that are being sent to the Naeural edge nodes.
105
+ If True, will print the commands that are being sent to the Naeural Edge Protocol edge nodes.
106
106
  Defaults to False
107
107
  log : Logger, optional
108
108
  A logger object which implements basic logging functionality and some other utils stuff. Can be ignored for now.
@@ -335,7 +335,7 @@ class GenericSession(BaseDecentrAIObject):
335
335
  Parameters
336
336
  ----------
337
337
  node_addr : str
338
- The address of the Naeural edge node that sent the message.
338
+ The address of the Naeural Edge Protocol edge node that sent the message.
339
339
 
340
340
  Returns
341
341
  -------
@@ -351,7 +351,7 @@ class GenericSession(BaseDecentrAIObject):
351
351
  Parameters
352
352
  ----------
353
353
  node_addr : str
354
- The address of the Naeural edge node that sent the message.
354
+ The address of the Naeural Edge Protocol edge node that sent the message.
355
355
  """
356
356
  self._dct_node_last_seen_time[node_addr] = tm()
357
357
  self._dct_node_addr_name[node_addr] = node_id
@@ -364,7 +364,7 @@ class GenericSession(BaseDecentrAIObject):
364
364
  Parameters
365
365
  ----------
366
366
  node_addr : str
367
- The address of the Naeural edge node that sent the message.
367
+ The address of the Naeural Edge Protocol edge node that sent the message.
368
368
  dict_msg : dict
369
369
  The message received from the communication server.
370
370
  """
@@ -383,7 +383,7 @@ class GenericSession(BaseDecentrAIObject):
383
383
  dict_msg : dict
384
384
  The message received from the communication server
385
385
  msg_node_addr : str
386
- The address of the Naeural edge node that sent the message.
386
+ The address of the Naeural Edge Protocol edge node that sent the message.
387
387
  msg_pipeline : str
388
388
  The name of the pipeline that sent the message.
389
389
  msg_signature : str
@@ -449,7 +449,7 @@ class GenericSession(BaseDecentrAIObject):
449
449
  dict_msg : dict
450
450
  The message received from the communication server
451
451
  msg_node_addr : str
452
- The address of the Naeural edge node that sent the message.
452
+ The address of the Naeural Edge Protocol edge node that sent the message.
453
453
  msg_pipeline : str
454
454
  The name of the pipeline that sent the message.
455
455
  msg_signature : str
@@ -509,7 +509,7 @@ class GenericSession(BaseDecentrAIObject):
509
509
  dict_msg : dict
510
510
  The message received from the communication server
511
511
  msg_node_addr : str
512
- The address of the Naeural edge node that sent the message.
512
+ The address of the Naeural Edge Protocol edge node that sent the message.
513
513
  msg_pipeline : str
514
514
  The name of the pipeline that sent the message.
515
515
  msg_signature : str
@@ -538,7 +538,14 @@ class GenericSession(BaseDecentrAIObject):
538
538
  for transaction in open_transactions_copy:
539
539
  transaction.handle_payload(dict_msg)
540
540
  if self.custom_on_payload is not None:
541
- self.custom_on_payload(self, msg_node_addr, msg_pipeline, msg_signature, msg_instance, Payload(msg_data))
541
+ self.custom_on_payload(
542
+ self, # session
543
+ msg_node_addr, # node_addr
544
+ msg_pipeline, # pipeline
545
+ msg_signature, # plugin signature
546
+ msg_instance, # plugin instance name
547
+ Payload(msg_data) # the actual payload
548
+ )
542
549
 
543
550
  return
544
551
 
@@ -662,7 +669,7 @@ class GenericSession(BaseDecentrAIObject):
662
669
  Parameters
663
670
  ----------
664
671
  to : str
665
- The name of the Naeural edge node that will receive the payload.
672
+ The name of the Naeural Edge Protocol edge node that will receive the payload.
666
673
  payload : dict
667
674
  The payload to send.
668
675
  """
@@ -808,13 +815,14 @@ class GenericSession(BaseDecentrAIObject):
808
815
  os.getenv(ENVIRONMENT.AIXP_USER),
809
816
  os.getenv(ENVIRONMENT.EE_USERNAME),
810
817
  os.getenv(ENVIRONMENT.EE_USER),
818
+ os.getenv(ENVIRONMENT.EE_MQTT_USER),
811
819
  self._config.get(comm_ct.USER),
812
820
  ]
813
821
 
814
822
  user = next((x for x in possible_user_values if x is not None), None)
815
823
 
816
824
  if user is None:
817
- env_error = "Error: No user specified for Naeural network connection. Please make sure you have the correct credentials in the environment variables within the .env file or provide them as params in code (not recommended due to potential security issue)."
825
+ env_error = "Error: No user specified for Naeural Edge Protocol network connection. Please make sure you have the correct credentials in the environment variables within the .env file or provide them as params in code (not recommended due to potential security issue)."
818
826
  raise ValueError(env_error)
819
827
  if self._config.get(comm_ct.USER, None) is None:
820
828
  self._config[comm_ct.USER] = user
@@ -827,13 +835,14 @@ class GenericSession(BaseDecentrAIObject):
827
835
  os.getenv(ENVIRONMENT.EE_PASSWORD),
828
836
  os.getenv(ENVIRONMENT.EE_PASS),
829
837
  os.getenv(ENVIRONMENT.EE_PWD),
838
+ os.getenv(ENVIRONMENT.EE_MQTT),
830
839
  self._config.get(comm_ct.PASS),
831
840
  ]
832
841
 
833
842
  pwd = next((x for x in possible_password_values if x is not None), None)
834
843
 
835
844
  if pwd is None:
836
- raise ValueError("Error: No password specified for Naeural network connection")
845
+ raise ValueError("Error: No password specified for Naeural Edge Protocol network connection")
837
846
  if self._config.get(comm_ct.PASS, None) is None:
838
847
  self._config[comm_ct.PASS] = pwd
839
848
 
@@ -843,6 +852,7 @@ class GenericSession(BaseDecentrAIObject):
843
852
  os.getenv(ENVIRONMENT.AIXP_HOST),
844
853
  os.getenv(ENVIRONMENT.EE_HOSTNAME),
845
854
  os.getenv(ENVIRONMENT.EE_HOST),
855
+ os.getenv(ENVIRONMENT.EE_MQTT_HOST),
846
856
  self._config.get(comm_ct.HOST),
847
857
  "r9092118.ala.eu-central-1.emqxsl.com",
848
858
  ]
@@ -850,7 +860,7 @@ class GenericSession(BaseDecentrAIObject):
850
860
  host = next((x for x in possible_host_values if x is not None), None)
851
861
 
852
862
  if host is None:
853
- raise ValueError("Error: No host specified for Naeural network connection")
863
+ raise ValueError("Error: No host specified for Naeural Edge Protocol network connection")
854
864
  if self._config.get(comm_ct.HOST, None) is None:
855
865
  self._config[comm_ct.HOST] = host
856
866
 
@@ -858,6 +868,7 @@ class GenericSession(BaseDecentrAIObject):
858
868
  port,
859
869
  os.getenv(ENVIRONMENT.AIXP_PORT),
860
870
  os.getenv(ENVIRONMENT.EE_PORT),
871
+ os.getenv(ENVIRONMENT.EE_MQTT_PORT),
861
872
  self._config.get(comm_ct.PORT),
862
873
  8883,
863
874
  ]
@@ -865,7 +876,7 @@ class GenericSession(BaseDecentrAIObject):
865
876
  port = next((x for x in possible_port_values if x is not None), None)
866
877
 
867
878
  if port is None:
868
- raise ValueError("Error: No port specified for Naeural network connection")
879
+ raise ValueError("Error: No port specified for Naeural Edge Protocol network connection")
869
880
  if self._config.get(comm_ct.PORT, None) is None:
870
881
  self._config[comm_ct.PORT] = int(port)
871
882
 
@@ -920,7 +931,7 @@ class GenericSession(BaseDecentrAIObject):
920
931
  command : str
921
932
  The command to send.
922
933
  worker : str
923
- The name of the Naeural edge node that will receive the command.
934
+ The name of the Naeural Edge Protocol edge node that will receive the command.
924
935
  payload : dict
925
936
  The payload to send.
926
937
  show_command : bool, optional
@@ -1134,7 +1145,7 @@ class GenericSession(BaseDecentrAIObject):
1134
1145
  max_wait_time=0,
1135
1146
  **kwargs) -> Pipeline:
1136
1147
  """
1137
- Create a new pipeline on a node. A pipeline is the equivalent of the "config file" used by the Naeural edge node team internally.
1148
+ Create a new pipeline on a node. A pipeline is the equivalent of the "config file" used by the Naeural Edge Protocol edge node team internally.
1138
1149
 
1139
1150
  A `Pipeline` is a an object that encapsulates a one-to-many, data acquisition to data processing, flow of data.
1140
1151
 
@@ -1150,14 +1161,14 @@ class GenericSession(BaseDecentrAIObject):
1150
1161
 
1151
1162
  `Plugin` == `Signature`
1152
1163
 
1153
- This call can busy-wait for a number of seconds to listen to heartbeats, in order to check if an Naeural edge node is online or not.
1164
+ This call can busy-wait for a number of seconds to listen to heartbeats, in order to check if an Naeural Edge Protocol edge node is online or not.
1154
1165
  If the node does not appear online, a warning will be displayed at the stdout, telling the user that the message that handles the
1155
1166
  creation of the pipeline will be sent, but it is not guaranteed that the specific node will receive it.
1156
1167
 
1157
1168
  Parameters
1158
1169
  ----------
1159
1170
  node : str
1160
- Address or Name of the Naeural edge node that will handle this pipeline.
1171
+ Address or Name of the Naeural Edge Protocol edge node that will handle this pipeline.
1161
1172
  name : str
1162
1173
  Name of the pipeline. This is good to be kept unique, as it allows multiple parties to overwrite each others configurations.
1163
1174
  data_source : str, optional
@@ -1233,36 +1244,36 @@ class GenericSession(BaseDecentrAIObject):
1233
1244
 
1234
1245
  def get_active_nodes(self):
1235
1246
  """
1236
- Get the list of all Naeural edge nodes that sent a message since this session was created, and that are considered online
1247
+ Get the list of all Naeural Edge Protocol edge nodes that sent a message since this session was created, and that are considered online
1237
1248
 
1238
1249
  Returns
1239
1250
  -------
1240
1251
  list
1241
- List of names of all the Naeural edge nodes that are considered online
1252
+ List of names of all the Naeural Edge Protocol edge nodes that are considered online
1242
1253
 
1243
1254
  """
1244
1255
  return [k for k, v in self._dct_node_last_seen_time.items() if tm() - v < self.online_timeout]
1245
1256
 
1246
1257
  def get_allowed_nodes(self):
1247
1258
  """
1248
- Get the list of all active Naeural edge nodes to whom this session can send messages
1259
+ Get the list of all active Naeural Edge Protocol edge nodes to whom this session can send messages
1249
1260
 
1250
1261
  Returns
1251
1262
  -------
1252
1263
  list[str]
1253
- List of names of all the active Naeural edge nodes to whom this session can send messages
1264
+ List of names of all the active Naeural Edge Protocol edge nodes to whom this session can send messages
1254
1265
  """
1255
1266
  active_nodes = self.get_active_nodes()
1256
1267
  return [node for node in self._dct_can_send_to_node if self._dct_can_send_to_node[node] and node in active_nodes]
1257
1268
 
1258
1269
  def get_active_pipelines(self, node):
1259
1270
  """
1260
- Get a dictionary with all the pipelines that are active on this Naeural edge node
1271
+ Get a dictionary with all the pipelines that are active on this Naeural Edge Protocol edge node
1261
1272
 
1262
1273
  Parameters
1263
1274
  ----------
1264
1275
  node : str
1265
- Address or Name of the Naeural edge node
1276
+ Address or Name of the Naeural Edge Protocol edge node
1266
1277
 
1267
1278
  Returns
1268
1279
  -------
@@ -1302,7 +1313,7 @@ class GenericSession(BaseDecentrAIObject):
1302
1313
  on_notification=None,
1303
1314
  max_wait_time=0) -> Pipeline:
1304
1315
  """
1305
- Create a Pipeline object and attach to an existing pipeline on an Naeural edge node.
1316
+ Create a Pipeline object and attach to an existing pipeline on an Naeural Edge Protocol edge node.
1306
1317
  Useful when one wants to treat an existing pipeline as one of his own,
1307
1318
  or when one wants to attach callbacks to various events (on_data, on_notification).
1308
1319
 
@@ -1320,7 +1331,7 @@ class GenericSession(BaseDecentrAIObject):
1320
1331
 
1321
1332
  `Plugin` == `Signature`
1322
1333
 
1323
- This call can busy-wait for a number of seconds to listen to heartbeats, in order to check if an Naeural edge node is online or not.
1334
+ This call can busy-wait for a number of seconds to listen to heartbeats, in order to check if an Naeural Edge Protocol edge node is online or not.
1324
1335
  If the node does not appear online, a warning will be displayed at the stdout, telling the user that the message that handles the
1325
1336
  creation of the pipeline will be sent, but it is not guaranteed that the specific node will receive it.
1326
1337
 
@@ -1328,7 +1339,7 @@ class GenericSession(BaseDecentrAIObject):
1328
1339
  Parameters
1329
1340
  ----------
1330
1341
  node : str
1331
- Address or Name of the Naeural edge node that handles this pipeline.
1342
+ Address or Name of the Naeural Edge Protocol edge node that handles this pipeline.
1332
1343
  name : str
1333
1344
  Name of the existing pipeline.
1334
1345
  on_data : Callable[[Pipeline, str, str, dict], None], optional
@@ -1385,7 +1396,7 @@ class GenericSession(BaseDecentrAIObject):
1385
1396
  def create_or_attach_to_pipeline(self, *,
1386
1397
  node,
1387
1398
  name,
1388
- data_source,
1399
+ data_source="Void",
1389
1400
  config={},
1390
1401
  plugins=[],
1391
1402
  on_data=None,
@@ -1393,21 +1404,27 @@ class GenericSession(BaseDecentrAIObject):
1393
1404
  max_wait_time=0,
1394
1405
  **kwargs) -> Pipeline:
1395
1406
  """
1396
- Create a new pipeline on a node, or attach to an existing pipeline on an Naeural edge node.
1407
+ Create a new pipeline on a node, or attach to an existing pipeline on an Naeural Edge Protocol edge node.
1397
1408
 
1398
1409
  Parameters
1399
1410
  ----------
1400
1411
  node : str
1401
- Address or Name of the Naeural edge node that will handle this pipeline.
1412
+ Address or Name of the Naeural Edge Protocol edge node that will handle this pipeline.
1413
+
1402
1414
  name : str
1403
1415
  Name of the pipeline. This is good to be kept unique, as it allows multiple parties to overwrite each others configurations.
1416
+
1404
1417
  data_source : str
1405
1418
  This is the name of the DCT plugin, which resembles the desired functionality of the acquisition.
1419
+ Defaults to "Void" - no actual data acquisition.
1420
+
1406
1421
  config : dict, optional
1407
1422
  This is the dictionary that contains the configuration of the acquisition source, by default {}
1423
+
1408
1424
  plugins : list
1409
1425
  List of dictionaries which contain the configurations of each plugin instance that is desired to run on the box.
1410
1426
  Defaults to []. Should be left [], and instances should be created with the api.
1427
+
1411
1428
  on_data : Callable[[Pipeline, str, str, dict], None], optional
1412
1429
  Callback that handles messages received from any plugin instance.
1413
1430
  As arguments, it has a reference to this Pipeline object, the signature and the instance of the plugin
@@ -1415,15 +1432,18 @@ class GenericSession(BaseDecentrAIObject):
1415
1432
  This callback acts as a default payload processor and will be called even if for a given instance
1416
1433
  the user has defined a specific callback.
1417
1434
  Defaults to None.
1435
+
1418
1436
  on_notification : Callable[[Pipeline, dict], None], optional
1419
1437
  Callback that handles notifications received from any plugin instance.
1420
1438
  As arguments, it has a reference to this Pipeline object, along with the payload itself.
1421
1439
  This callback acts as a default payload processor and will be called even if for a given instance
1422
1440
  the user has defined a specific callback.
1423
1441
  Defaults to None.
1442
+
1424
1443
  max_wait_time : int, optional
1425
1444
  The maximum time to busy-wait, allowing the Session object to listen to node heartbeats
1426
1445
  and to check if the desired node is online in the network, by default 0.
1446
+
1427
1447
  **kwargs :
1428
1448
  The user can provide the configuration of the acquisition source directly as kwargs.
1429
1449
 
@@ -1552,7 +1572,7 @@ class GenericSession(BaseDecentrAIObject):
1552
1572
  Parameters
1553
1573
  ----------
1554
1574
  node : str
1555
- The address or name of the Naeural edge node.
1575
+ The address or name of the Naeural Edge Protocol edge node.
1556
1576
  timeout : int, optional
1557
1577
  The timeout, by default 15
1558
1578
 
@@ -1586,7 +1606,7 @@ class GenericSession(BaseDecentrAIObject):
1586
1606
  Parameters
1587
1607
  ----------
1588
1608
  node : str
1589
- The address or name of the Naeural edge node.
1609
+ The address or name of the Naeural Edge Protocol edge node.
1590
1610
 
1591
1611
  Returns
1592
1612
  -------
@@ -1640,15 +1660,39 @@ class GenericSession(BaseDecentrAIObject):
1640
1660
  *,
1641
1661
  node,
1642
1662
  name,
1643
- signature="CUSTOM_CODE_FASTAPI_01",
1663
+ signature=PLUGIN_SIGNATURES.CUSTOM_WEB_APP_01,
1644
1664
  endpoints=None,
1645
1665
  use_ngrok=True,
1646
1666
  **kwargs
1647
1667
  ):
1668
+ """
1669
+ Create a new web app on a node.
1670
+
1671
+ Parameters
1672
+ ----------
1673
+
1674
+ node : str
1675
+ Address or Name of the Naeural Edge Protocol edge node that will handle this web app.
1676
+
1677
+ name : str
1678
+ Name of the web app.
1679
+
1680
+ signature : str, optional
1681
+ The signature of the plugin that will be used. Defaults to PLUGIN_SIGNATURES.CUSTOM_WEB_APP_01.
1682
+
1683
+ endpoints : list[dict], optional
1684
+ A list of dictionaries defining the endpoint configuration. Defaults to None.
1685
+
1686
+ use_ngrok : bool, optional
1687
+ If True, will use ngrok to expose the web app. Defaults to True.
1688
+
1689
+
1690
+ """
1648
1691
 
1649
1692
  pipeline: Pipeline = self.create_pipeline(
1650
1693
  node=node,
1651
1694
  name=name,
1695
+ # default TYPE is "Void"
1652
1696
  )
1653
1697
 
1654
1698
  instance = pipeline.create_plugin_instance(
@@ -1666,6 +1710,43 @@ class GenericSession(BaseDecentrAIObject):
1666
1710
  # end if we have endpoints defined in the call
1667
1711
 
1668
1712
  return pipeline, instance
1713
+
1714
+
1715
+ def create_telegram_simple_bot(
1716
+ self,
1717
+ *,
1718
+ node,
1719
+ name,
1720
+ signature=PLUGIN_SIGNATURES.CUSTOM_WEB_APP_01,
1721
+ message_handler=None,
1722
+ telegram_bot_token=None,
1723
+ telegram_bot_token_env_key=ENVIRONMENT.TELEGRAM_BOT_TOKEN_ENV_KEY,
1724
+ **kwargs
1725
+ ):
1726
+
1727
+ if telegram_bot_token is None:
1728
+ telegram_bot_token = os.getenv(telegram_bot_token_env_key)
1729
+ if telegram_bot_token is None:
1730
+ message = f"Warning! No Telegram bot token provided as via env {ENVIRONMENT.TELEGRAM_BOT_TOKEN_ENV_KEY} or explicitly as `telegram_bot_token` param."
1731
+ raise ValueError(message)
1732
+
1733
+ b64code = self._get_base64_code(message_handler)
1734
+
1735
+ pipeline: Pipeline = self.create_pipeline(
1736
+ node=node,
1737
+ name=name,
1738
+ # default TYPE is "Void"
1739
+ )
1740
+
1741
+ instance = pipeline.create_plugin_instance(
1742
+ signature=signature,
1743
+ instance_id=self.log.get_unique_id(),
1744
+ telegram_bot_token=telegram_bot_token,
1745
+ message_handler=b64code,
1746
+ **kwargs
1747
+ )
1748
+ return pipeline, instance
1749
+
1669
1750
 
1670
1751
  def broadcast_instance_command_and_wait_for_response_payload(
1671
1752
  self,
@@ -310,7 +310,7 @@ class Instance():
310
310
  def __register_transaction_for_instance_command(self, session_id: str = None, timeout: float = 0) -> list[Transaction]:
311
311
  """
312
312
  Register a new transaction for the instance command.
313
- This method is called before sending an instance command to the Naeural edge node.
313
+ This method is called before sending an instance command to the Naeural Edge Protocol edge node.
314
314
 
315
315
  Parameters
316
316
  ----------
@@ -441,7 +441,7 @@ class Instance():
441
441
  def send_instance_command(self, command, payload=None, command_params=None, wait_confirmation=True, session_id=None, timeout=10):
442
442
  """
443
443
  Send a command to the instance.
444
- This command can block until the command is confirmed by the Naeural edge node.
444
+ This command can block until the command is confirmed by the Naeural Edge Protocol edge node.
445
445
 
446
446
  Example:
447
447
  --------
@@ -8,7 +8,7 @@ import numpy as np
8
8
  class Payload(UserDict):
9
9
  """
10
10
  This class enriches the default python dict, providing
11
- helpful methods to process the payloads received from Naeural edge nodes.
11
+ helpful methods to process the payloads received from Naeural Edge Protocol edge nodes.
12
12
  """
13
13
 
14
14
  def get_images_as_np(self, key='IMG') -> list:
@@ -64,3 +64,16 @@ class Payload(UserDict):
64
64
  except ModuleNotFoundError:
65
65
  raise "This functionality requires the PIL library. To use this feature, please install it using 'pip install pillow'"
66
66
  return image
67
+
68
+
69
+ if __name__ == "__main__":
70
+ import json
71
+ payload = Payload()
72
+ payload.data = {
73
+ "IMG": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABKklEQVR42mNkAAwOyKg",
74
+ "TEST" : "TEST"
75
+ }
76
+
77
+ print(type(payload), payload)
78
+ print(type(payload.data), payload.data)
79
+ print(json.dumps(payload.data, indent=2))
@@ -54,7 +54,7 @@ class Pipeline(BaseCodeChecker):
54
54
  In the future, the documentation for the Logger base class will be available and developers will be able to use
55
55
  custom-made Loggers.
56
56
  node_addr : str
57
- Address of the Naeural edge node that will handle this pipeline.
57
+ Address of the Naeural Edge Protocol edge node that will handle this pipeline.
58
58
  name : str
59
59
  The name of this pipeline.
60
60
  data_source : str
@@ -91,7 +91,7 @@ class Pipeline(BaseCodeChecker):
91
91
  plugins = config.pop('PLUGINS', plugins)
92
92
 
93
93
  if is_attached:
94
- assert existing_config is not None, "When attaching to a pipeline, the existing configuration should be found in the heartbeat of the Naeural edge node."
94
+ assert existing_config is not None, "When attaching to a pipeline, the existing configuration should be found in the heartbeat of the Naeural Edge Protocol edge node."
95
95
  assert config == {}, "Cannot provide a configuration when attaching to a pipeline."
96
96
  assert len(kwargs) == 0, "Cannot provide a configuration when attaching to a pipeline."
97
97
  self.config = {k.upper(): v for k, v in existing_config.items()}
@@ -201,7 +201,7 @@ class Pipeline(BaseCodeChecker):
201
201
  def __register_transactions_for_update(self, session_id: str = None, timeout: float = 0) -> list[Transaction]:
202
202
  """
203
203
  Register transactions for updating the pipeline and instances configuration.
204
- This method is called before sending an update pipeline configuration command to the Naeural edge node.
204
+ This method is called before sending an update pipeline configuration command to the Naeural Edge Protocol edge node.
205
205
 
206
206
  Parameters
207
207
  ----------
@@ -261,7 +261,7 @@ class Pipeline(BaseCodeChecker):
261
261
  def __register_transactions_for_delete(self, session_id: str = None, timeout: float = 0) -> list[Transaction]:
262
262
  """
263
263
  Register transactions for deleting the pipeline.
264
- This method is called before sending a delete pipeline command to the Naeural edge node.
264
+ This method is called before sending a delete pipeline command to the Naeural Edge Protocol edge node.
265
265
 
266
266
  Parameters
267
267
  ----------
@@ -294,7 +294,7 @@ class Pipeline(BaseCodeChecker):
294
294
  def __register_transaction_for_pipeline_command(self, session_id: str = None, timeout: float = 0) -> list[Transaction]:
295
295
  """
296
296
  Register a transaction for a pipeline command.
297
- This method is called before sending a pipeline command to the Naeural edge node.
297
+ This method is called before sending a pipeline command to the Naeural Edge Protocol edge node.
298
298
 
299
299
  Parameters
300
300
  ----------
@@ -366,7 +366,7 @@ class Pipeline(BaseCodeChecker):
366
366
 
367
367
  def __send_update_config_to_box(self, session_id=None):
368
368
  """
369
- Send an update pipeline configuration command to the Naeural edge node.
369
+ Send an update pipeline configuration command to the Naeural Edge Protocol edge node.
370
370
  """
371
371
  self.session._send_command_update_pipeline_config(
372
372
  worker=self.node_addr,
@@ -668,7 +668,7 @@ class Pipeline(BaseCodeChecker):
668
668
  if True:
669
669
  def _on_data(self, signature, instance_id, data):
670
670
  """
671
- Handle the data received from the Naeural edge node. This method is called by the Session object when a message is received from the Naeural edge node.
671
+ Handle the data received from the Naeural Edge Protocol edge node. This method is called by the Session object when a message is received from the Naeural Edge Protocol edge node.
672
672
  This method will call all the `on_data` callbacks of the pipeline and the instance that received the message.
673
673
 
674
674
  Parameters
@@ -690,7 +690,7 @@ class Pipeline(BaseCodeChecker):
690
690
 
691
691
  def _on_notification(self, signature, instance_id, data):
692
692
  """
693
- Handle the notification received from the Naeural edge node. This method is called by the Session object when a notification is received from the Naeural edge node.
693
+ Handle the notification received from the Naeural Edge Protocol edge node. This method is called by the Session object when a notification is received from the Naeural Edge Protocol edge node.
694
694
 
695
695
  Parameters
696
696
  ----------
@@ -893,7 +893,7 @@ class Pipeline(BaseCodeChecker):
893
893
  The name of the instance. There can be multiple instances of the same plugin, mostly with different parameters
894
894
  custom_code : Callable[[CustomPluginTemplate], Any], optional
895
895
  A string containing the entire code, a path to a file containing the code as a string or a function with the code.
896
- This code will be executed remotely on an Naeural edge node. Defaults to None.
896
+ This code will be executed remotely on an Naeural Edge Protocol edge node. Defaults to None.
897
897
  config : dict, optional
898
898
  parameters used to customize the functionality. One can change the AI engine used for object detection,
899
899
  or finetune alerter parameters to better fit a camera located in a low light environment.
@@ -989,8 +989,8 @@ class Pipeline(BaseCodeChecker):
989
989
 
990
990
  def deploy(self, with_confirmation=True, wait_confirmation=True, timeout=10, verbose=False):
991
991
  """
992
- This method is used to deploy the pipeline on the Naeural edge node.
993
- Here we collect all the proposed configurations and send them to the Naeural edge node.
992
+ This method is used to deploy the pipeline on the Naeural Edge Protocol edge node.
993
+ Here we collect all the proposed configurations and send them to the Naeural Edge Protocol edge node.
994
994
  All proposed configs become staged configs.
995
995
  After all responses, apply the staged configs to finish the transaction.
996
996
  """
@@ -1050,7 +1050,7 @@ class Pipeline(BaseCodeChecker):
1050
1050
  ----------
1051
1051
  custom_code : Callable[[CustomPluginTemplate], Any], optional
1052
1052
  A string containing the entire code, a path to a file containing the code as a string or a function with the code.
1053
- This code will be executed remotely on an Naeural edge node. Defaults to None.
1053
+ This code will be executed remotely on an Naeural Edge Protocol edge node. Defaults to None.
1054
1054
  config : dict, optional
1055
1055
  parameters used to customize the functionality, by default {}
1056
1056
 
@@ -1281,8 +1281,8 @@ class Pipeline(BaseCodeChecker):
1281
1281
 
1282
1282
  def send_pipeline_command(self, command, payload=None, command_params=None, wait_confirmation=True, timeout=10) -> list[Transaction]:
1283
1283
  """
1284
- Send a pipeline command to the Naeural edge node.
1285
- This command can block until the command is confirmed by the Naeural edge node.
1284
+ Send a pipeline command to the Naeural Edge Protocol edge node.
1285
+ This command can block until the command is confirmed by the Naeural Edge Protocol edge node.
1286
1286
 
1287
1287
  Example:
1288
1288
  --------
@@ -32,7 +32,7 @@ class BaseDecentrAIObject(object):
32
32
  if not create_logger:
33
33
  raise ValueError("Logger object is invalid: {}".format(log))
34
34
  else:
35
- log = Logger(DEBUG=DEBUG, base_folder='.', app_folder='_local_cache')
35
+ log = Logger("DEF", DEBUG=DEBUG, base_folder='.', app_folder='_local_cache')
36
36
  # endif
37
37
 
38
38
  self.log = log
@@ -7,3 +7,4 @@ from .payload import STATUS_TYPE, PAYLOAD_DATA, COMMANDS, NOTIFICATION_CODES
7
7
  from .base import CONFIG_STREAM, BIZ_PLUGIN_DATA, PLUGIN_INFO
8
8
  from . import heartbeat as HB
9
9
  from .environment import ENVIRONMENT
10
+ from .apps import PLUGIN_SIGNATURES
@@ -0,0 +1,11 @@
1
+ class PLUGIN_SIGNATURES:
2
+ """
3
+ This class is used to store the plugin signatures for the different plugins.
4
+ It is complementary to the PLUGIN_TYPES class.
5
+ """
6
+ NET_MON_01 = 'NET_MON_01'
7
+ VIEW_SCENE_01 = 'VIEW_SCENE_01'
8
+ CUSTOM_WEB_APP_01 = 'CUSTOM_CODE_FASTAPI_01'
9
+ CHAIN_DIST_CUSTOM_JOB_01 = 'PROCESS_REAL_TIME_COLLECTED_DATA_CUSTOM_EXEC_CHAIN_DIST'
10
+ BASIC_TELEGRAM_BOT_01 = 'BASIC_TELEGRAM_BOT_01'
11
+ # INSERT_NEW_PLUGIN_HERE
@@ -3,6 +3,7 @@ class ENVIRONMENT:
3
3
  AIXP_USER = 'AIXP_USER'
4
4
  EE_USERNAME = 'EE_USERNAME'
5
5
  EE_USER = 'EE_USER'
6
+ EE_MQTT_USER = 'EE_MQTT_USER'
6
7
 
7
8
  AIXP_PASSWORD = 'AIXP_PASSWORD'
8
9
  AIXP_PASS = 'AIXP_PASS'
@@ -10,17 +11,22 @@ class ENVIRONMENT:
10
11
  EE_PASSWORD = 'EE_PASSWORD'
11
12
  EE_PASS = 'EE_PASS'
12
13
  EE_PWD = 'EE_PWD'
14
+ EE_MQTT = 'EE_MQTT'
13
15
 
14
16
  AIXP_HOSTNAME = 'AIXP_HOSTNAME'
15
17
  AIXP_HOST = 'AIXP_HOST'
16
18
  EE_HOSTNAME = 'EE_HOSTNAME'
17
19
  EE_HOST = 'EE_HOST'
20
+ EE_MQTT_HOST = 'EE_MQTT_HOST'
18
21
 
19
22
  AIXP_PORT = 'AIXP_PORT'
20
23
  EE_PORT = 'EE_PORT'
24
+ EE_MQTT_PORT = 'EE_MQTT_PORT'
21
25
 
22
26
  AIXP_CERT_PATH = 'AIXP_CERT_PATH'
23
27
  EE_CERT_PATH = 'EE_CERT_PATH'
24
28
 
25
29
  EE_SECURED = 'EE_SECURED'
26
30
  AIXP_SECURED = 'AIXP_SECURED'
31
+
32
+ TELEGRAM_BOT_TOKEN_ENV_KEY = 'TELEGRAM_BOT_TOKEN'
@@ -2,3 +2,15 @@ from .net_mon_01_plugin import NetMon01
2
2
  from .view_scene_01_plugin import ViewScene01
3
3
  from .custom_web_app_01_plugin import CustomWebApp01
4
4
  from .chain_dist_custom_job_01_plugin import ChainDistCustomJob01
5
+ from .basic_telegram_bot_01_plugin import BasicTelegramBot01
6
+
7
+
8
+ class PLUGIN_TYPES:
9
+ """
10
+ The plugin types that are available in the default instance
11
+ """
12
+ NET_MON_01 = NetMon01
13
+ VIEW_SCENE_01 = ViewScene01
14
+ CUSTOM_WEB_APP_01 = CustomWebApp01
15
+ CHAIN_DIST_CUSTOM_JOB_01 = ChainDistCustomJob01
16
+ BASIC_TELEGRAM_BOT_01 = BasicTelegramBot01
@@ -0,0 +1,5 @@
1
+ from ...base import Instance
2
+ from ...const import PLUGIN_SIGNATURES
3
+
4
+ class BasicTelegramBot01(Instance):
5
+ signature = PLUGIN_SIGNATURES.BASIC_TELEGRAM_BOT_01
@@ -1,8 +1,9 @@
1
1
  from ...base import Instance
2
+ from ...const import PLUGIN_SIGNATURES
2
3
 
3
4
 
4
5
  class ChainDistCustomJob01(Instance):
5
- signature = "PROCESS_REAL_TIME_COLLECTED_DATA_CUSTOM_EXEC_CHAIN_DIST"
6
+ signature = PLUGIN_SIGNATURES.CHAIN_DIST_CUSTOM_JOB_01
6
7
 
7
8
  def add_custom_code_callbacks(
8
9
  self,
@@ -1,8 +1,8 @@
1
1
  from ...base import Instance, Pipeline
2
-
2
+ from ...const import PLUGIN_SIGNATURES
3
3
 
4
4
  class CustomWebApp01(Instance):
5
- signature = "CUSTOM_CODE_FASTAPI_01"
5
+ signature = PLUGIN_SIGNATURES.CUSTOM_WEB_APP_01
6
6
 
7
7
  def get_proposed_endpoints(self):
8
8
  from copy import deepcopy
@@ -1,8 +1,8 @@
1
1
  from ...base import Instance
2
-
2
+ from ...const import PLUGIN_SIGNATURES
3
3
 
4
4
  class NetMon01(Instance):
5
- signature = "NET_MON_01"
5
+ signature = PLUGIN_SIGNATURES.NET_MON_01
6
6
 
7
7
  def get_node_history(self, node_id=None, node_addr=None, time_window_hours=1, steps=20):
8
8
  """
@@ -1,8 +1,8 @@
1
1
  from ...base import Instance
2
-
2
+ from ...const import PLUGIN_SIGNATURES
3
3
 
4
4
  class ViewScene01(Instance):
5
- signature = "VIEW_SCENE_01"
5
+ signature = PLUGIN_SIGNATURES.VIEW_SCENE_01
6
6
 
7
7
  def get_last_witness(self, response_params_key="COMMAND_PARAMS"):
8
8
  """
@@ -180,11 +180,12 @@ class BaseLogger(object):
180
180
  if lib_ver == "":
181
181
  lib_ver = __VER__
182
182
  ver = "v{}".format(lib_ver) if lib_ver != "" else ""
183
- self.verbose_log(
184
- "SDK [{} {}] initialized on machine [{}][{}].".format(
185
- self.__lib__, ver, self.MACHINE_NAME, self.get_processor_platform(),
183
+ self.P(
184
+ "NSDK {} initialized on [{}][{}].".format(
185
+ ver, self.MACHINE_NAME, self.get_processor_platform(),
186
186
  ),
187
- color='green'
187
+ color='green',
188
+ boxed=True,
188
189
  )
189
190
  self.verbose_log(" Timezone: {}.".format(self.timezone),color='green')
190
191
 
@@ -1,11 +1,10 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: naeural_client
3
- Version: 2.0.2
4
- Summary: `naeural_client` is the Python SDK required for client app development for the Naeural Edge Protocol framework
5
- Project-URL: Homepage, https://github.com/NaeuralEdgeProtocol/naeural_client
6
- Project-URL: Bug Tracker, https://github.com/NaeuralEdgeProtocol/naeural_client/issues
3
+ Version: 2.1.0
4
+ Summary: `naeural_client` is the Python SDK required for client app development for the Naeural Edge Protocol Edge Protocol framework
5
+ Project-URL: Homepage, https://github.com/Naeural Edge ProtocolEdgeProtocol/naeural_client
6
+ Project-URL: Bug Tracker, https://github.com/Naeural Edge ProtocolEdgeProtocol/naeural_client/issues
7
7
  Author-email: Stefan Saraev <saraevstefan@gmail.com>, Andrei Ionut Damian <andrei.damian@me.com>, Cristan Bleotiu <cristibleotiu@gmail.com>
8
- License-File: LICENSE
9
8
  Classifier: License :: OSI Approved :: MIT License
10
9
  Classifier: Operating System :: OS Independent
11
10
  Classifier: Programming Language :: Python :: 3
@@ -21,7 +20,7 @@ Description-Content-Type: text/markdown
21
20
 
22
21
  # naeural_client SDK
23
22
 
24
- This is the Python SDK package that allows interactions, development and deployment of jobs in Naeural network. The SDK enables low-code development and deployment of end-to-end AI (and not only) cooperative application pipelines within the Naeural Execution Engine processing nodes ecosystem. For further information please see [Naeural AI OS - Decentralized ubiquitous computing MLOps execution engine](https://arxiv.org/pdf/2306.08708).
23
+ This is the Python SDK package that allows interactions, development and deployment of jobs in Naeural Edge Protocol network. The SDK enables low-code development and deployment of end-to-end AI (and not only) cooperative application pipelines within the Naeural Edge Protocol Execution Engine processing nodes ecosystem. For further information please see [Naeural Edge Protocol AI OS - Decentralized ubiquitous computing MLOps execution engine](https://arxiv.org/pdf/2306.08708).
25
24
 
26
25
  ## Dependencies
27
26
 
@@ -337,9 +336,9 @@ For any inquiries related to the funding and its impact on this project, please
337
336
  ```bibtex
338
337
  @misc{naeural_client,
339
338
  author = {Stefan Saraev, Andrei Damian},
340
- title = {naeural_client: Python SDK for Naeural Edge Protocol},
339
+ title = {naeural_client: Python SDK for Naeural Edge Protocol Edge Protocol},
341
340
  year = {2024},
342
- howpublished = {\url{https://github.com/NaeuralEdgeProtocol/naeural_client}},
341
+ howpublished = {\url{https://github.com/Naeural Edge ProtocolEdgeProtocol/naeural_client}},
343
342
  }
344
343
  ```
345
344
 
@@ -348,7 +347,7 @@ For any inquiries related to the funding and its impact on this project, please
348
347
  author = {Damian, Bleotiu, Saraev, Constantinescu},
349
348
  title = {SOLIS – Sistem Omogen multi-Locație cu funcționalități Inteligente și Sustenabile”
350
349
  SMIS 143488},
351
- howpublished = {\url{https://github.com/NaeuralEdgeProtocol/}},
350
+ howpublished = {\url{https://github.com/Naeural Edge ProtocolEdgeProtocol/}},
352
351
  note = {This project includes open-source components developed with support from the Romanian Competitiveness Operational Programme under grants SMIS 143488. The content is solely the responsibility of the authors and does not necessarily reflect the views of the funding agencies.},
353
352
  year = {2021-2022}
354
353
  }
@@ -358,7 +357,7 @@ SMIS 143488},
358
357
  @misc{project_funding_acknowledgment2,
359
358
  author = {Damian, Bleotiu, Saraev, Constantinescu, Milik, Lupaescu},
360
359
  title = {ReDeN – Rețea Descentralizată Neurală SMIS 156084},
361
- howpublished = {\url{https://github.com/NaeuralEdgeProtocol/}},
360
+ howpublished = {\url{https://github.com/Naeural Edge ProtocolEdgeProtocol/}},
362
361
  note = {This project includes open-source components developed with support from the Romanian Competitiveness Operational Programme under grants SMIS 143488. The content is solely the responsibility of the authors and does not necessarily reflect the views of the funding agencies.},
363
362
  year = {2023-2024}
364
363
  }
@@ -1,17 +1,17 @@
1
- naeural_client/__init__.py,sha256=ZNoadMrxrd1EZqxni0zpoqjFIBrS8Jg-vfZrr7xwe9I,498
2
- naeural_client/_ver.py,sha256=l7yLqLlJKbOAi0-Y1OLeSMEafEsEAQAHaqoBwPAaV3U,330
3
- naeural_client/base_decentra_object.py,sha256=TBBnShUybWhjcbEIT8_27FGzxcQUVh23jm-HlaD9Qbw,4173
1
+ naeural_client/__init__.py,sha256=UKEDGS0wFYyxwmhEAKJGecO2vYbIfRYUP4SQgnK10IE,578
2
+ naeural_client/_ver.py,sha256=PKIJgoKWB4wskSQA9KvdwJkGx2b-A3tKTo2Rq6DMhdw,330
3
+ naeural_client/base_decentra_object.py,sha256=qDBpitcyhr1eEXPD8cGFtcNPNf71fqNRsmOEcCpx4sM,4180
4
4
  naeural_client/plugins_manager_mixin.py,sha256=X1JdGLDz0gN1rPnTN_5mJXR8JmqoBFQISJXmPR9yvCo,11106
5
5
  naeural_client/base/__init__.py,sha256=hACh83_cIv7-PwYMM3bQm2IBmNqiHw-3PAfDfAEKz9A,259
6
6
  naeural_client/base/distributed_custom_code_presets.py,sha256=cvz5R88P6Z5V61Ce1vHVVh8bOkgXd6gve_vdESDNAsg,2544
7
- naeural_client/base/generic_session.py,sha256=xlFonVvfgpuMqLHeRzIcVuqiZXxsJB4KvwAMY36yh64,66389
8
- naeural_client/base/instance.py,sha256=pZSYC_WQNa5YqU2cVN9vbDyCg8ums8EQCd5Cx95a_VQ,19942
9
- naeural_client/base/pipeline.py,sha256=21V9SN1v86iMm80jOikZIkooyBF9FMs_3_0Q9-Qp4sc,57288
7
+ naeural_client/base/generic_session.py,sha256=azhJGCXstzBFQjWqW1z5OjwtSn2nkoPCNsSIcag5hIE,69231
8
+ naeural_client/base/instance.py,sha256=m6IKOWuT5GsZVSdFNdcR-ImJTpTdHqNoMe8KQlEK3Gc,19970
9
+ naeural_client/base/pipeline.py,sha256=fWwSNUvvrVvJYzxRBCKTt1f9_pci1hCBiG2LtoyOpMU,57512
10
10
  naeural_client/base/plugin_template.py,sha256=qGaXByd_JZFpjvH9GXNbT7KaitRxIJB6-1IhbKrZjq4,138123
11
11
  naeural_client/base/responses.py,sha256=ZKBZmRhYDv8M8mQ5C_ahGsQvtWH4b9ImRcuerQdZmNw,6937
12
12
  naeural_client/base/transaction.py,sha256=bfs6td5M0fINgPQNxhrl_AUjb1YiilLDQ-Cd_o3OR_E,5146
13
13
  naeural_client/base/payload/__init__.py,sha256=y8fBI8tG2ObNfaXFWjyWZXwu878FRYj_I8GIbHT4GKE,29
14
- naeural_client/base/payload/payload.py,sha256=wejtDRg-hZZAzJD4Ud-AEW67gEbs1kNriimul95lyj4,1951
14
+ naeural_client/base/payload/payload.py,sha256=v50D7mBBD2WwWzvpbRGMSr-X6vv5ie21IY1aDxTqe1c,2275
15
15
  naeural_client/bc/__init__.py,sha256=FQj23D1PrY06NUOARiKQi4cdj0-VxnoYgYDEht8lpr8,158
16
16
  naeural_client/bc/base.py,sha256=QK6QdONTpT9N--H7CHk8pwRxwJUGK4nvhNTfKxQeztQ,28328
17
17
  naeural_client/bc/chain.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -25,20 +25,22 @@ naeural_client/comm/__init__.py,sha256=za3B2HUKNXzYtjElMgGM9xbxNsdQfFY4JB_YzdyFk
25
25
  naeural_client/comm/amqp_wrapper.py,sha256=hzj6ih07DnLQy2VSfA88giDIFHaCp9uSdGLTA-IFE4s,8535
26
26
  naeural_client/comm/mqtt_wrapper.py,sha256=Ig3bFZkCbWd4y_Whn2PPa91Z3aLgNbNPau6Tn5yLPZ8,16167
27
27
  naeural_client/const/README.md,sha256=6OHesr-f5NBuuJGryEoi_TCu2XdlhfQYlDKx_IJoXeg,177
28
- naeural_client/const/__init__.py,sha256=nm0maDn_l44UQkJy4XLHnOcpHMypkVvYYDFkezi6_rk,380
28
+ naeural_client/const/__init__.py,sha256=G7Fa50SpEhAPOnL8_mxgVmJ0Xq1qEncWd75pg2BkiG4,416
29
+ naeural_client/const/apps.py,sha256=i0MNCM1Wf7QUCB4OKO1vGNUonPs6EsnZV6-XZjknppw,439
29
30
  naeural_client/const/base.py,sha256=V94oaT7xYrrTGxmLJlynxmbFujVX0G9wIfC8TilH5MU,2548
30
31
  naeural_client/const/comms.py,sha256=La6JXWHexH8CfcBCKyT4fCIoeaoZlcm7KtZ57ab4ZgU,2201
31
- naeural_client/const/environment.py,sha256=RygVb5l6oCYTt45Mupw0Gi44NbhpsnIpiiVu5TpCijg,580
32
+ naeural_client/const/environment.py,sha256=bq21Q7e5FXpTNpoek_CUOX5oOZpSJEtNHXiZ79ZHe18,753
32
33
  naeural_client/const/formatter.py,sha256=AW3bWlqf39uaqV4BBUuW95qKYfF2OkkU4f9hy3kSVhM,200
33
34
  naeural_client/const/heartbeat.py,sha256=jGHmKfeHTFOXJaKUT3o_ocnQyF-EpcLeunW-ifkYKfU,2534
34
35
  naeural_client/const/misc.py,sha256=1ypROmZsOyp_8zG2LARwPeo-YfXuyYqZnml0elTP4kw,211
35
36
  naeural_client/const/payload.py,sha256=k24vH9iJIBBPnCXx7HAEuli2fNAETK7h8ZuVKyKLgbk,5725
36
37
  naeural_client/default/__init__.py,sha256=ozU6CMMuWl0LhG8Ae3LrZ65a6tLrptfscVYGf83zjxM,46
37
- naeural_client/default/instance/__init__.py,sha256=k1YZhbhLh7-Q7avnvwuQ2Ij-BhGbTlgwiWsOj9cS9xU,205
38
- naeural_client/default/instance/chain_dist_custom_job_01_plugin.py,sha256=-YO26dH3774wkMbj0Z0GACpVeVYblkxV4KhidtPEqcI,1891
39
- naeural_client/default/instance/custom_web_app_01_plugin.py,sha256=9swEcfEzpL_P29WDkP9kTZ8oHNS0s9TXwd5BfIGiDZI,4805
40
- naeural_client/default/instance/net_mon_01_plugin.py,sha256=1k1Ul6pKyhSfAYbcfj38t404Z3KyMVvfhlMJdzIgV-c,1154
41
- naeural_client/default/instance/view_scene_01_plugin.py,sha256=bQtkQKrZRvzenlH3JYVvBXe2Tow5qdKYlmuvjpBLYn4,666
38
+ naeural_client/default/instance/__init__.py,sha256=pHR9_5t3xv9ug3nu-8202yW-rqq-KR3C_L5N2xaADTA,548
39
+ naeural_client/default/instance/basic_telegram_bot_01_plugin.py,sha256=STaIwtGCnEZdvxm7cF9NIQeZL5Zlru1c4cMSHKJc5pQ,159
40
+ naeural_client/default/instance/chain_dist_custom_job_01_plugin.py,sha256=QtHi3uXKsVs9eyMgbnvBVbMylErhV1Du4X2-7zDL7Y0,1915
41
+ naeural_client/default/instance/custom_web_app_01_plugin.py,sha256=JblmfDa8ICppHItzEqU2HBSgT0nzZy9NWzgUHQ2sffw,4854
42
+ naeural_client/default/instance/net_mon_01_plugin.py,sha256=u85i2AiYHkLJnam0wOx-m71hlp0EYyNtk3JwbkOrvHg,1208
43
+ naeural_client/default/instance/view_scene_01_plugin.py,sha256=5kMhd23kL5AYCdOJzrdCqi2ohoQNvmpv8oE6hWQtUWk,720
42
44
  naeural_client/default/session/mqtt_session.py,sha256=dpQcBhhVZDo458v0IqJMZb1CsTn-TxXhYjNlyJp9Rp8,2414
43
45
  naeural_client/io_formatter/__init__.py,sha256=_wy7c-Z9kgb26jN7uNTDq88G7xZ3wI_ObuQd3QWNPkQ,85
44
46
  naeural_client/io_formatter/io_formatter_manager.py,sha256=MiZ70cGVD6hR99QiEk9wvJ_vADxpI-y2bTb0ITlMNI0,3451
@@ -49,7 +51,7 @@ naeural_client/io_formatter/default/a_dummy.py,sha256=qr9eUizQ-NN5jdXVzkaZKMaf9K
49
51
  naeural_client/io_formatter/default/aixp1.py,sha256=MX0TeUR4APA-qN3vUC6uzcz8Pssz5lgrQWo7td5Ri1A,3052
50
52
  naeural_client/io_formatter/default/default.py,sha256=gEy78cP2D5s0y8vQh4aHuxqz7D10gGfuiKF311QhrpE,494
51
53
  naeural_client/logging/__init__.py,sha256=b79X45VC6c37u32flKB2GAK9f-RR0ocwP0JDCy0t7QQ,33
52
- naeural_client/logging/base_logger.py,sha256=9FflGeC0m3zzcQB2QrRH0iebQn37FDe9r9BxNaoH1J0,65163
54
+ naeural_client/logging/base_logger.py,sha256=tTxzCKOhcqGOtckHK8lQ1nUTNeaBNkeh0_SmDyzX6_Y,65146
53
55
  naeural_client/logging/small_logger.py,sha256=6wljiHP1moCkgohRnr2EX095eM2RtdJ5B3cytbO_Ow4,2887
54
56
  naeural_client/logging/logger_mixins/__init__.py,sha256=yQO7umlRvz63FeWpi-F9GRmC_MOHcNW6R6pwvZZBy3A,600
55
57
  naeural_client/logging/logger_mixins/class_instance_mixin.py,sha256=xUXE2VZgmrlrSrvw0f6GF1jlTnVLeVkIiG0bhlBfq3o,2741
@@ -72,7 +74,7 @@ naeural_client/logging/tzlocal/windows_tz.py,sha256=Sv9okktjZJfRGGUOOppsvQuX_eXy
72
74
  naeural_client/utils/__init__.py,sha256=mAnke3-MeRzz3nhQvhuHqLnpaaCSmDxicd7Ck9uwpmI,77
73
75
  naeural_client/utils/comm_utils.py,sha256=4cS9llRr_pK_3rNgDcRMCQwYPO0kcNU7AdWy_LtMyCY,1072
74
76
  naeural_client/utils/dotenv.py,sha256=_AgSo35n7EnQv5yDyu7C7i0kHragLJoCGydHjvOkrYY,2008
75
- naeural_client-2.0.2.dist-info/METADATA,sha256=y7AtPpCgmqhD-SMgBnndpNqkKOEV2LhM4Vxt6mM-5ts,14339
76
- naeural_client-2.0.2.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
77
- naeural_client-2.0.2.dist-info/licenses/LICENSE,sha256=7P07j9ez3_ovbZ8L_ZJuPXVOgqTS19-ECkezwOtFqOI,11340
78
- naeural_client-2.0.2.dist-info/RECORD,,
77
+ naeural_client-2.1.0.dist-info/METADATA,sha256=I71wSC0lZI0XDuh8j1mIcyHoxL8Y5SNcB0d_K31BTP0,14457
78
+ naeural_client-2.1.0.dist-info/WHEEL,sha256=wukiCwsxxsuzcQTdnC_ZWHZECE4wwOh3xCCrap6i6Ts,87
79
+ naeural_client-2.1.0.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
80
+ naeural_client-2.1.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.25.0
2
+ Generator: hatchling 1.26.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -186,7 +186,6 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2024 Naeural.AI
190
189
 
191
190
  Licensed under the Apache License, Version 2.0 (the "License");
192
191
  you may not use this file except in compliance with the License.