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.
- naeural_client/__init__.py +2 -0
- naeural_client/_ver.py +1 -1
- naeural_client/base/generic_session.py +118 -37
- naeural_client/base/instance.py +2 -2
- naeural_client/base/payload/payload.py +14 -1
- naeural_client/base/pipeline.py +14 -14
- naeural_client/base_decentra_object.py +1 -1
- naeural_client/const/__init__.py +1 -0
- naeural_client/const/apps.py +11 -0
- naeural_client/const/environment.py +6 -0
- naeural_client/default/instance/__init__.py +12 -0
- naeural_client/default/instance/basic_telegram_bot_01_plugin.py +5 -0
- naeural_client/default/instance/chain_dist_custom_job_01_plugin.py +2 -1
- naeural_client/default/instance/custom_web_app_01_plugin.py +2 -2
- naeural_client/default/instance/net_mon_01_plugin.py +2 -2
- naeural_client/default/instance/view_scene_01_plugin.py +2 -2
- naeural_client/logging/base_logger.py +5 -4
- {naeural_client-2.0.2.dist-info → naeural_client-2.1.0.dist-info}/METADATA +9 -10
- {naeural_client-2.0.2.dist-info → naeural_client-2.1.0.dist-info}/RECORD +21 -19
- {naeural_client-2.0.2.dist-info → naeural_client-2.1.0.dist-info}/WHEEL +1 -1
- {naeural_client-2.0.2.dist-info → naeural_client-2.1.0.dist-info}/licenses/LICENSE +0 -1
naeural_client/__init__.py
CHANGED
@@ -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
@@ -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(
|
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=
|
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,
|
naeural_client/base/instance.py
CHANGED
@@ -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))
|
naeural_client/base/pipeline.py
CHANGED
@@ -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
|
naeural_client/const/__init__.py
CHANGED
@@ -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
|
@@ -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 =
|
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 =
|
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 =
|
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
|
"""
|
@@ -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.
|
184
|
-
"
|
185
|
-
|
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
|
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/
|
6
|
-
Project-URL: Bug Tracker, https://github.com/
|
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/
|
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/
|
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/
|
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=
|
2
|
-
naeural_client/_ver.py,sha256=
|
3
|
-
naeural_client/base_decentra_object.py,sha256=
|
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=
|
8
|
-
naeural_client/base/instance.py,sha256=
|
9
|
-
naeural_client/base/pipeline.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
38
|
-
naeural_client/default/instance/
|
39
|
-
naeural_client/default/instance/
|
40
|
-
naeural_client/default/instance/
|
41
|
-
naeural_client/default/instance/
|
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=
|
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.
|
76
|
-
naeural_client-2.0.
|
77
|
-
naeural_client-2.0.
|
78
|
-
naeural_client-2.0.
|
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,,
|
@@ -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.
|