naeural-core 7.7.240__py3-none-any.whl → 7.7.243__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_core/business/business_manager.py +174 -128
- naeural_core/comm/communication_manager.py +9 -4
- naeural_core/comm/mixins/default_comm_mixin.py +0 -1
- naeural_core/main/orchestrator.py +28 -1
- naeural_core/main/ver.py +1 -1
- {naeural_core-7.7.240.dist-info → naeural_core-7.7.243.dist-info}/METADATA +1 -1
- {naeural_core-7.7.240.dist-info → naeural_core-7.7.243.dist-info}/RECORD +9 -9
- {naeural_core-7.7.240.dist-info → naeural_core-7.7.243.dist-info}/WHEEL +0 -0
- {naeural_core-7.7.240.dist-info → naeural_core-7.7.243.dist-info}/licenses/LICENSE +0 -0
|
@@ -6,7 +6,7 @@ import traceback
|
|
|
6
6
|
|
|
7
7
|
from collections import OrderedDict
|
|
8
8
|
|
|
9
|
-
from time import time, sleep
|
|
9
|
+
from time import time, sleep, perf_counter
|
|
10
10
|
from naeural_core import constants as ct
|
|
11
11
|
from naeural_core import Logger
|
|
12
12
|
from naeural_core.manager import Manager
|
|
@@ -245,142 +245,189 @@ class BusinessManager(Manager):
|
|
|
245
245
|
current_instances = []
|
|
246
246
|
self.set_loop_stage('2.bm.refresh._check_instances.get_current_jobs')
|
|
247
247
|
all_jobs = self.get_current_jobs()
|
|
248
|
+
n_all_jobs = len(all_jobs)
|
|
249
|
+
self.P("Checking {} business plugin instances...".format(n_all_jobs))
|
|
250
|
+
total_start = perf_counter()
|
|
248
251
|
for idx_job, (initiator_addr, initiator_id, modified_by_addr, modified_by_id, session_id, stream_name, signature, instance_id, upstream_config) in enumerate(all_jobs):
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
suffix=ct.PLUGIN_SEARCH.SUFFIX_BIZ_PLUGINS,
|
|
270
|
-
verbose=0,
|
|
271
|
-
safety_check=True, # perform safety check on custom biz plugins
|
|
272
|
-
safe_locations=ct.PLUGIN_SEARCH.SAFE_BIZ_PLUGINS,
|
|
273
|
-
safe_imports=ct.PLUGIN_SEARCH.SAFE_BIZ_IMPORTS
|
|
274
|
-
)
|
|
252
|
+
iter_start = perf_counter()
|
|
253
|
+
get_class_s = 0.0
|
|
254
|
+
instantiate_s = 0.0
|
|
255
|
+
start_thread_s = 0.0
|
|
256
|
+
update_config_s = 0.0
|
|
257
|
+
is_new_instance = False
|
|
258
|
+
try:
|
|
259
|
+
obj_identification = (stream_name, signature, instance_id)
|
|
260
|
+
instance_hash = self.log.hash_object(obj_identification, size=5)
|
|
261
|
+
self._dct_hash_mappings[instance_hash] = obj_identification
|
|
262
|
+
current_instances.append(instance_hash)
|
|
263
|
+
if instance_hash not in self._dct_current_instances:
|
|
264
|
+
is_new_instance = True
|
|
265
|
+
self._dct_instance_hash_log[instance_hash] = {
|
|
266
|
+
ct.PAYLOAD_DATA.INITIATOR_ID : initiator_id,
|
|
267
|
+
ct.PAYLOAD_DATA.SESSION_ID : session_id,
|
|
268
|
+
ct.PAYLOAD_DATA.SIGNATURE : signature,
|
|
269
|
+
ct.PAYLOAD_DATA.STREAM_NAME : stream_name,
|
|
270
|
+
ct.PAYLOAD_DATA.INSTANCE_ID : instance_id,
|
|
271
|
+
}
|
|
275
272
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
self.P(msg + " on stream {}".format(stream_name), color='r')
|
|
282
|
-
self._create_notification(
|
|
283
|
-
notif=ct.STATUS_TYPE.STATUS_EXCEPTION,
|
|
284
|
-
msg=msg,
|
|
285
|
-
stream_name=stream_name,
|
|
286
|
-
info="No code/script defined for business plugin '{}' in {} or plugin is invalid (node {})".format(
|
|
287
|
-
signature, ct.PLUGIN_SEARCH.LOC_BIZ_PLUGINS, "is currently SECURED" if self.owner.is_secured else "is currently UNSECURED!"
|
|
288
|
-
)
|
|
273
|
+
self.P(
|
|
274
|
+
" * * * * Init biz plugin #{}/{} {}:{} * * * *".format(
|
|
275
|
+
idx_job + 1, n_all_jobs, signature, instance_id
|
|
276
|
+
),
|
|
277
|
+
color='b'
|
|
289
278
|
)
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
279
|
+
self.set_loop_stage('2.bm.refresh.get_class.{}:{}'.format(signature,instance_id))
|
|
280
|
+
if 'update_monitor' in signature.lower():
|
|
281
|
+
print('debug')
|
|
282
|
+
get_class_start = perf_counter()
|
|
283
|
+
_module_name, _class_name, _cls_def, _config_dict = self._get_module_name_and_class(
|
|
284
|
+
locations=ct.PLUGIN_SEARCH.LOC_BIZ_PLUGINS,
|
|
285
|
+
name=signature,
|
|
286
|
+
suffix=ct.PLUGIN_SEARCH.SUFFIX_BIZ_PLUGINS,
|
|
287
|
+
verbose=0,
|
|
288
|
+
safety_check=True, # perform safety check on custom biz plugins
|
|
289
|
+
safe_locations=ct.PLUGIN_SEARCH.SAFE_BIZ_PLUGINS,
|
|
290
|
+
safe_imports=ct.PLUGIN_SEARCH.SAFE_BIZ_IMPORTS
|
|
291
|
+
)
|
|
292
|
+
get_class_s = perf_counter() - get_class_start
|
|
295
293
|
|
|
296
|
-
|
|
297
|
-
self.set_loop_stage('2.bm.refresh.call_class.{}:{}:{}'.format(stream_name, signature, instance_id))
|
|
298
|
-
self.shmem['__set_loop_stage_func'] = self.set_loop_stage
|
|
299
|
-
# debug when configuring a plugin
|
|
300
|
-
debug_config_changes = self.config_data.get('PLUGINS_DEBUG_CONFIG_CHANGES', False) # Ugly but needed
|
|
301
|
-
# end debug
|
|
294
|
+
self.set_loop_stage('2.bm.refresh.check_class.{}:{}'.format(signature,instance_id))
|
|
302
295
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
environment_variables=self._environment_variables,
|
|
314
|
-
initiator_id=initiator_id,
|
|
315
|
-
initiator_addr=initiator_addr,
|
|
316
|
-
session_id=session_id,
|
|
317
|
-
threaded_execution_chain=self._run_on_threads,
|
|
318
|
-
payloads_deque=self.comm_shared_memory['payloads'][instance_hash],
|
|
319
|
-
commands_deque=self.comm_shared_memory['commands'][instance_hash],
|
|
320
|
-
ee_ver=self.owner.__version__,
|
|
321
|
-
runs_in_docker=self.owner.runs_in_docker,
|
|
322
|
-
docker_branch=self.owner.docker_source,
|
|
323
|
-
debug_config_changes=debug_config_changes,
|
|
324
|
-
version=_module_version,
|
|
325
|
-
pipelines_view_function=self.owner.get_pipelines_view,
|
|
326
|
-
pipeline_use_local_comms_only=self._dct_config_streams[stream_name].get(ct.CONFIG_STREAM.K_USE_LOCAL_COMMS_ONLY, False),
|
|
327
|
-
)
|
|
328
|
-
if plugin.cfg_runs_only_on_supervisor_node:
|
|
329
|
-
if not self.is_supervisor_node:
|
|
330
|
-
self.P(
|
|
331
|
-
"Plugin {}:{} runs ONLY on supervisor node. Skipping.".format(signature, instance_id),
|
|
332
|
-
color='r', boxed=True,
|
|
296
|
+
if _cls_def is None:
|
|
297
|
+
self._dct_current_instances[instance_hash] = None
|
|
298
|
+
msg = "Error loading business plugin <{}:{}> - No code/script defined.".format(signature, instance_id)
|
|
299
|
+
self.P(msg + " on stream {}".format(stream_name), color='r')
|
|
300
|
+
self._create_notification(
|
|
301
|
+
notif=ct.STATUS_TYPE.STATUS_EXCEPTION,
|
|
302
|
+
msg=msg,
|
|
303
|
+
stream_name=stream_name,
|
|
304
|
+
info="No code/script defined for business plugin '{}' in {} or plugin is invalid (node {})".format(
|
|
305
|
+
signature, ct.PLUGIN_SEARCH.LOC_BIZ_PLUGINS, "is currently SECURED" if self.owner.is_secured else "is currently UNSECURED!"
|
|
333
306
|
)
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
self.
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
307
|
+
)
|
|
308
|
+
continue
|
|
309
|
+
#endif
|
|
310
|
+
|
|
311
|
+
self.comm_shared_memory['payloads'][instance_hash] = deque(maxlen=1000)
|
|
312
|
+
self.comm_shared_memory['commands'][instance_hash] = deque(maxlen=1000)
|
|
313
|
+
|
|
314
|
+
try:
|
|
315
|
+
self.set_loop_stage('2.bm.refresh.call_class.{}:{}:{}'.format(stream_name, signature, instance_id))
|
|
316
|
+
self.shmem['__set_loop_stage_func'] = self.set_loop_stage
|
|
317
|
+
# debug when configuring a plugin
|
|
318
|
+
debug_config_changes = self.config_data.get('PLUGINS_DEBUG_CONFIG_CHANGES', False) # Ugly but needed
|
|
319
|
+
# end debug
|
|
320
|
+
|
|
321
|
+
_module_version = _config_dict.get('MODULE_VERSION', '0.0.0')
|
|
322
|
+
|
|
323
|
+
instantiate_start = perf_counter()
|
|
324
|
+
plugin = _cls_def(
|
|
325
|
+
log=self.log,
|
|
326
|
+
global_shmem=self.shmem, # this SHOULD NOT be used for inter-plugin mem access
|
|
327
|
+
plugins_shmem=self.plugins_shmem,
|
|
328
|
+
stream_id=stream_name,
|
|
329
|
+
signature=signature,
|
|
330
|
+
default_config=_config_dict,
|
|
331
|
+
upstream_config=upstream_config,
|
|
332
|
+
environment_variables=self._environment_variables,
|
|
333
|
+
initiator_id=initiator_id,
|
|
334
|
+
initiator_addr=initiator_addr,
|
|
335
|
+
session_id=session_id,
|
|
336
|
+
threaded_execution_chain=self._run_on_threads,
|
|
337
|
+
payloads_deque=self.comm_shared_memory['payloads'][instance_hash],
|
|
338
|
+
commands_deque=self.comm_shared_memory['commands'][instance_hash],
|
|
339
|
+
ee_ver=self.owner.__version__,
|
|
340
|
+
runs_in_docker=self.owner.runs_in_docker,
|
|
341
|
+
docker_branch=self.owner.docker_source,
|
|
342
|
+
debug_config_changes=debug_config_changes,
|
|
343
|
+
version=_module_version,
|
|
344
|
+
pipelines_view_function=self.owner.get_pipelines_view,
|
|
345
|
+
pipeline_use_local_comms_only=self._dct_config_streams[stream_name].get(ct.CONFIG_STREAM.K_USE_LOCAL_COMMS_ONLY, False),
|
|
346
|
+
)
|
|
347
|
+
instantiate_s = perf_counter() - instantiate_start
|
|
348
|
+
if plugin.cfg_runs_only_on_supervisor_node:
|
|
349
|
+
if not self.is_supervisor_node:
|
|
350
|
+
self.P(
|
|
351
|
+
"Plugin {}:{} runs ONLY on supervisor node. Skipping.".format(signature, instance_id),
|
|
352
|
+
color='r', boxed=True,
|
|
353
|
+
)
|
|
354
|
+
plugin = None
|
|
355
|
+
# continue
|
|
356
|
+
else:
|
|
357
|
+
self.P("Plugin {}:{} runs only on supervisor node. Running.".format(signature, instance_id), color='g')
|
|
358
|
+
# endif runs only on supervisor node
|
|
359
|
+
self.set_loop_stage('2.bm.refresh.new_instance_done: {}:{}:{}'.format(stream_name, signature, instance_id))
|
|
360
|
+
except Exception as exc:
|
|
361
|
+
plugin = None
|
|
362
|
+
trace = traceback.format_exc()
|
|
363
|
+
msg = "Plugin init FAILED for business plugin {} instance {}".format(signature, instance_id)
|
|
364
|
+
info = str(exc)
|
|
365
|
+
if "validating" not in info:
|
|
366
|
+
info += '\n' + trace
|
|
367
|
+
self.P(msg + ': ' + info, color='r')
|
|
368
|
+
self._create_notification(
|
|
369
|
+
notif=ct.STATUS_TYPE.STATUS_EXCEPTION,
|
|
370
|
+
msg=msg,
|
|
371
|
+
signature=signature,
|
|
372
|
+
instance_id=instance_id,
|
|
373
|
+
stream_name=stream_name,
|
|
374
|
+
info=info,
|
|
375
|
+
displayed=True,
|
|
376
|
+
)
|
|
377
|
+
#end try-except
|
|
358
378
|
|
|
359
|
-
|
|
360
|
-
|
|
379
|
+
self._dct_current_instances[instance_hash] = plugin
|
|
380
|
+
self.__maybe_register_special_plugin_instance_hash(instance_hash=instance_hash, signature=signature)
|
|
361
381
|
|
|
362
|
-
|
|
363
|
-
|
|
382
|
+
if plugin is None:
|
|
383
|
+
continue
|
|
364
384
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
#
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
385
|
+
self.P("New plugin instance {} added for exec.".format(plugin), color='g')
|
|
386
|
+
if self._run_on_threads:
|
|
387
|
+
start_thread_start = perf_counter()
|
|
388
|
+
plugin.start_thread()
|
|
389
|
+
start_thread_s = perf_counter() - start_thread_start
|
|
390
|
+
#endif new instance
|
|
391
|
+
else:
|
|
392
|
+
# I do have the instance, I just need to modify the config
|
|
393
|
+
plugin = self._dct_current_instances[instance_hash]
|
|
394
|
+
if plugin is not None:
|
|
395
|
+
# next we need to check if the config has changed and handle also the particular
|
|
396
|
+
# case when the plugin just received a INSTANCE_COMMAND
|
|
397
|
+
update_config_start = perf_counter()
|
|
398
|
+
plugin.maybe_update_instance_config(
|
|
399
|
+
upstream_config=upstream_config,
|
|
400
|
+
session_id=session_id,
|
|
401
|
+
modified_by_addr=modified_by_addr,
|
|
402
|
+
modified_by_id=modified_by_id,
|
|
403
|
+
)
|
|
404
|
+
update_config_s = perf_counter() - update_config_start
|
|
405
|
+
self.set_loop_stage('2.bm.refresh.maybe_update_instance_config.DONE: {}:{}:{}'.format(stream_name, signature, instance_id))
|
|
406
|
+
#endif
|
|
382
407
|
#endif
|
|
383
|
-
|
|
408
|
+
finally:
|
|
409
|
+
# Done to avoid spam logs - only log new instances
|
|
410
|
+
if is_new_instance:
|
|
411
|
+
iter_total_s = perf_counter() - iter_start
|
|
412
|
+
total_elapsed_s = perf_counter() - total_start
|
|
413
|
+
self.P(
|
|
414
|
+
" START Plugin {}/{} {}:{} new={} total={:.2f}s get_class={:.2f}s init={:.2f}s start_thread={:.2f}s update_cfg={:.2f}s (ALL={:.2f}s)".format(
|
|
415
|
+
idx_job + 1,
|
|
416
|
+
n_all_jobs,
|
|
417
|
+
signature,
|
|
418
|
+
instance_id,
|
|
419
|
+
is_new_instance,
|
|
420
|
+
iter_total_s,
|
|
421
|
+
get_class_s,
|
|
422
|
+
instantiate_s,
|
|
423
|
+
start_thread_s,
|
|
424
|
+
update_config_s,
|
|
425
|
+
total_elapsed_s,
|
|
426
|
+
),
|
|
427
|
+
boxed=True
|
|
428
|
+
)
|
|
429
|
+
# endif is new instance
|
|
430
|
+
# end try-finally
|
|
384
431
|
|
|
385
432
|
return current_instances
|
|
386
433
|
|
|
@@ -653,4 +700,3 @@ class BusinessManager(Manager):
|
|
|
653
700
|
#endfor
|
|
654
701
|
self.log.stop_timer('execute_all_business_plugins', skip_first_timing=False)
|
|
655
702
|
return
|
|
656
|
-
|
|
@@ -74,13 +74,18 @@ class CommunicationManager(Manager, _ConfigHandlerMixin):
|
|
|
74
74
|
_id = self.log.config_data.get(ct.CONFIG_STARTUP_v2.K_EE_ID, '')[:ct.EE_ALIAS_MAX_SIZE]
|
|
75
75
|
return _id
|
|
76
76
|
|
|
77
|
+
def _has_failed_comms(self):
|
|
78
|
+
for comm in self._dct_comm_plugins.values():
|
|
79
|
+
if comm.comm_failed_after_retries:
|
|
80
|
+
return comm
|
|
81
|
+
return None
|
|
77
82
|
|
|
78
83
|
@property
|
|
79
84
|
def has_failed_comms(self):
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
comm = self._has_failed_comms()
|
|
86
|
+
if comm is not None:
|
|
87
|
+
self.P("Detected total communication failure on comm {}. This may generate shutdown/restart.".format(comm.__class__.__name__), color='error')
|
|
88
|
+
return True
|
|
84
89
|
return False
|
|
85
90
|
|
|
86
91
|
|
|
@@ -121,6 +121,7 @@ class Orchestrator(DecentrAIObject,
|
|
|
121
121
|
self._current_dct_config_streams = {}
|
|
122
122
|
self._should_send_initial_log = False
|
|
123
123
|
self._initial_log_sent = False
|
|
124
|
+
self._last_offline_log = 0
|
|
124
125
|
self.loop_timings = deque(maxlen=3600)
|
|
125
126
|
self._reset_timers = False
|
|
126
127
|
self.__is_mlstop_dangerous = False
|
|
@@ -709,6 +710,10 @@ class Orchestrator(DecentrAIObject,
|
|
|
709
710
|
def cfg_main_loop_resolution(self):
|
|
710
711
|
return self.config_data.get('MAIN_LOOP_RESOLUTION', 20)
|
|
711
712
|
|
|
713
|
+
@property
|
|
714
|
+
def cfg_work_offline(self):
|
|
715
|
+
return self.config_data.get('WORK_OFFLINE', False)
|
|
716
|
+
|
|
712
717
|
@property
|
|
713
718
|
def cfg_sequential_streams(self):
|
|
714
719
|
"""
|
|
@@ -1613,6 +1618,27 @@ class Orchestrator(DecentrAIObject,
|
|
|
1613
1618
|
self._comm_manager.maybe_show_info()
|
|
1614
1619
|
return
|
|
1615
1620
|
|
|
1621
|
+
def _maybe_log_offline_status(self):
|
|
1622
|
+
if not self.cfg_work_offline or self._comm_manager is None or not self._comm_manager._has_failed_comms():
|
|
1623
|
+
return
|
|
1624
|
+
now = time()
|
|
1625
|
+
if (now - self._last_offline_log) < ct.COMMS.COMM_SECS_SHOW_INFO:
|
|
1626
|
+
return
|
|
1627
|
+
self._last_offline_log = now
|
|
1628
|
+
|
|
1629
|
+
comm_attempts = [
|
|
1630
|
+
"{}:try={} fails={}".format(
|
|
1631
|
+
name,
|
|
1632
|
+
getattr(comm, "_nr_conn_retry_iters", None),
|
|
1633
|
+
getattr(comm, "_total_conn_fails", None),
|
|
1634
|
+
)
|
|
1635
|
+
for name, comm in self._comm_manager._dct_comm_plugins.items()
|
|
1636
|
+
if comm is not None
|
|
1637
|
+
]
|
|
1638
|
+
attempts_str = "; ".join(comm_attempts) if len(comm_attempts) > 0 else "no comm plugins"
|
|
1639
|
+
self.P(f"WORK_OFFLINE enabled; reconnect attempts: {attempts_str}", color='r')
|
|
1640
|
+
return
|
|
1641
|
+
|
|
1616
1642
|
def _save_exception_main_loop_state(self, txt, **save_kwargs):
|
|
1617
1643
|
fn = '{}_main_loop_exception'.format(self.log.now_str())
|
|
1618
1644
|
self.log.save_pickle_to_output(data=save_kwargs, fn=fn + '.pickle', subfolder_path='main_loop_exceptions')
|
|
@@ -1829,6 +1855,7 @@ class Orchestrator(DecentrAIObject,
|
|
|
1829
1855
|
#9. Comm info, timers, ... - later we gonna check for total comm failures
|
|
1830
1856
|
self.__loop_stage = '9.logs'
|
|
1831
1857
|
self.comm_manager_show_info()
|
|
1858
|
+
self._maybe_log_offline_status()
|
|
1832
1859
|
|
|
1833
1860
|
|
|
1834
1861
|
self.log.stop_timer(self._main_loop_timer_name)
|
|
@@ -1844,7 +1871,7 @@ class Orchestrator(DecentrAIObject,
|
|
|
1844
1871
|
return_code = self._return_code
|
|
1845
1872
|
|
|
1846
1873
|
self.__loop_stage = '10.checks'
|
|
1847
|
-
if self.comm_manager.has_failed_comms:
|
|
1874
|
+
if (not self.cfg_work_offline) and self.comm_manager.has_failed_comms:
|
|
1848
1875
|
self.P("Shutdown initiated due to multiple failure in communication!", color='r')
|
|
1849
1876
|
return_code = ct.CODE_EXCEPTION
|
|
1850
1877
|
|
naeural_core/main/ver.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: naeural_core
|
|
3
|
-
Version: 7.7.
|
|
3
|
+
Version: 7.7.243
|
|
4
4
|
Summary: Ratio1 Core is the backbone of the Ratio1 Edge Protocol.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Ratio1/naeural_core
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/Ratio1/naeural_core/issues
|
|
@@ -5,7 +5,7 @@ naeural_core/decentrai_object.py,sha256=pw-NRmlQRAzvUVFfh1xTJdj1Ltd2Y-UVrpompriU
|
|
|
5
5
|
naeural_core/manager.py,sha256=fMyVjM2UXQ0LxHE33z1t9AQxmxn68uUsu9EseK5zqDo,3406
|
|
6
6
|
naeural_core/bc/__init__.py,sha256=Su7YuJjTPI1P3a6L8WGRqW2YvDADyLMYSipcZognAEM,176
|
|
7
7
|
naeural_core/business/__init__.py,sha256=9boWpUoISx1OkCftejQXaw-sqv6M88LLt7CLNZjdnfU,46
|
|
8
|
-
naeural_core/business/business_manager.py,sha256=
|
|
8
|
+
naeural_core/business/business_manager.py,sha256=ZPnw19TH9ycsVeVL_mtWs7rC9OSQn7nMCXZMAisgqTo,28815
|
|
9
9
|
naeural_core/business/utils.py,sha256=ykl7d1snVldTPR7LyDjSSPL4LOGag0pgkRfOnGZXJKg,15765
|
|
10
10
|
naeural_core/business/base/__init__.py,sha256=OEhyheZKcCk2GafJuO6bDVi1ph1pZyW0A8wan_SuesA,270
|
|
11
11
|
naeural_core/business/base/base_plugin_biz.py,sha256=KlMD1c50meTWYHoS-GaXeICWhvNhsXiXgaYpMfQCFn4,74532
|
|
@@ -102,7 +102,7 @@ naeural_core/business/training/minio_download_dataset.py,sha256=7uoo5CFLynWbLkBh
|
|
|
102
102
|
naeural_core/business/training/minio_upload_dataset.py,sha256=5stm_E_L3SLwcjd2znUVMIC2PWO07f6QfBdcrKRiHCo,2162
|
|
103
103
|
naeural_core/business/training/second_stage_training_process.py,sha256=z8LG9xx2G6s5AqeSD-t5rBegIctkFMEf4ZqEJVXZcz0,3152
|
|
104
104
|
naeural_core/comm/__init__.py,sha256=SpAWJIyYdOouZSImzVrEF_M4-nrCrY9p3cVYwvmbt20,105
|
|
105
|
-
naeural_core/comm/communication_manager.py,sha256=
|
|
105
|
+
naeural_core/comm/communication_manager.py,sha256=swMxO3DPTnT0SeSsv6PWz0gP0WsWOzA_BlYawoWHSB4,30471
|
|
106
106
|
naeural_core/comm/base/__init__.py,sha256=rDzAtPwcMOsW3aCp0t07GpJz5qweLiJgafTngHwEMOo,44
|
|
107
107
|
naeural_core/comm/base/base_comm_thread.py,sha256=DVPzLN9UfKxjiVf0FtjOr5001-YzkjPMmC4RJFhoGG0,27034
|
|
108
108
|
naeural_core/comm/default/amqp.py,sha256=-6_qGlOIjOUz42nkwnfMQZEVfdeUKGTNgjcTuo49v4E,4145
|
|
@@ -110,7 +110,7 @@ naeural_core/comm/default/mqtt.py,sha256=F2VOOmjXkz7diFC-PVdxZgBI7O9aCwul5KfA6r4
|
|
|
110
110
|
naeural_core/comm/default/readme.md,sha256=hNY9V5HU8yW0JjyseiPWMkV8l7YU0ZEBw_iq_lpW-Uk,162
|
|
111
111
|
naeural_core/comm/mixins/__init__.py,sha256=d8o2tKAkQ-P9voRB6REnEmObVyi4AiQgNVZuAKKObKo,290
|
|
112
112
|
naeural_core/comm/mixins/commandcontrol_comm_mixin.py,sha256=VhAGzR23-x8INn8VGBd7z2YUtT4GIkeTNwNK0CmAjio,4781
|
|
113
|
-
naeural_core/comm/mixins/default_comm_mixin.py,sha256=
|
|
113
|
+
naeural_core/comm/mixins/default_comm_mixin.py,sha256=CMnaYjBk5jazIygEyGXb4j4DSCPij7LgmDoCsGz6W3E,2949
|
|
114
114
|
naeural_core/comm/mixins/heartbeats_comm_mixin.py,sha256=_PqCqn4R3KmzE-2aRnMRHSMelc0v52QRms2HoZgTvFE,3307
|
|
115
115
|
naeural_core/comm/mixins/notifications_comm_mixin.py,sha256=Otcb7vUkNOu2xAiEMm0ukndBqocsr2dYdvyRv-5YLWA,1929
|
|
116
116
|
naeural_core/comm/mixins/telemetry_mixin.py,sha256=mIox-rJe1XTy3_vgi3qT6gb0SiupUksyn7CPWACZCsY,4025
|
|
@@ -344,8 +344,8 @@ naeural_core/main/epochs_manager.py,sha256=lH01Pv9E_uz5fdvh_W2dZ29hZLM0CL2NZfuYJ
|
|
|
344
344
|
naeural_core/main/geoloc.py,sha256=TEqyuNzpVqZSBCo0OOrpHYncIsHSClvRt28hgvxJ35o,24909
|
|
345
345
|
naeural_core/main/main_loop_data_handler.py,sha256=hABB65OUBhtur3rd2mYsEhdAc54jVILzybrvxml5h0s,13815
|
|
346
346
|
naeural_core/main/net_mon.py,sha256=qlyo1fqTeQy_M9VfJOxon_PBbQat0QO9Zbu_93FMbLc,88144
|
|
347
|
-
naeural_core/main/orchestrator.py,sha256=
|
|
348
|
-
naeural_core/main/ver.py,sha256=
|
|
347
|
+
naeural_core/main/orchestrator.py,sha256=0FhxLgpJN9Wjw1L7Ojx4Mi0P82u8dNDRTfUdqGh0Tqs,70626
|
|
348
|
+
naeural_core/main/ver.py,sha256=Ej_BKrKSBFiPw5XvW16axNWnd5gnXYHCBK7jdTY70Sg,335
|
|
349
349
|
naeural_core/main/orchestrator_mixins/__init__.py,sha256=MNleg48vdlqsyAR8Vamjl4ahG2jwCH5kLbQN5CfU57E,149
|
|
350
350
|
naeural_core/main/orchestrator_mixins/managers_init.py,sha256=sQVqpr99a5WP9HCloYCyaWDW5J3IypEImlf703bqTF4,6692
|
|
351
351
|
naeural_core/main/orchestrator_mixins/utils.py,sha256=jMa0uStVNLQmp0VhNMRvfBDjo387ORLlUVLthRNBKqc,1866
|
|
@@ -555,7 +555,7 @@ naeural_core/utils/tracing/onnx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
|
|
|
555
555
|
naeural_core/utils/tracing/onnx/base_trt_scripter.py,sha256=1FelEBo7JGsc8hbJ3sevzxnM-J61nvBHz6L1VLpZrVc,2043
|
|
556
556
|
naeural_core/utils/tracing/onnx/utils.py,sha256=IKmqUWakrMWn34uJvbRjNLacdszD8jkkQBFPUhgJtOQ,5618
|
|
557
557
|
naeural_core/utils/web_app/favicon.ico,sha256=zU6-Jxx4ol1A9FJvcQELYV9DiqwqyvjPS89xQybZE74,15406
|
|
558
|
-
naeural_core-7.7.
|
|
559
|
-
naeural_core-7.7.
|
|
560
|
-
naeural_core-7.7.
|
|
561
|
-
naeural_core-7.7.
|
|
558
|
+
naeural_core-7.7.243.dist-info/METADATA,sha256=QOw-MVuhPkWufArzSVPVC9SlMIstJ7CkD72AAPG0xl0,6522
|
|
559
|
+
naeural_core-7.7.243.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
560
|
+
naeural_core-7.7.243.dist-info/licenses/LICENSE,sha256=SPHPWjOdAUUUUI020nI5VNCtFjmTOlJpi1cZxyB3gKo,11339
|
|
561
|
+
naeural_core-7.7.243.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|