naeural-client 3.2.0__py3-none-any.whl → 3.2.3__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/_ver.py +1 -1
- naeural_client/base/generic_session.py +108 -30
- naeural_client/bc/__init__.py +1 -1
- naeural_client/bc/base.py +7 -7
- naeural_client/const/environment.py +3 -0
- naeural_client/logging/logger_mixins/utils_mixin.py +78 -0
- {naeural_client-3.2.0.dist-info → naeural_client-3.2.3.dist-info}/METADATA +1 -1
- {naeural_client-3.2.0.dist-info → naeural_client-3.2.3.dist-info}/RECORD +11 -11
- {naeural_client-3.2.0.dist-info → naeural_client-3.2.3.dist-info}/WHEEL +0 -0
- {naeural_client-3.2.0.dist-info → naeural_client-3.2.3.dist-info}/entry_points.txt +0 -0
- {naeural_client-3.2.0.dist-info → naeural_client-3.2.3.dist-info}/licenses/LICENSE +0 -0
naeural_client/_ver.py
CHANGED
@@ -19,7 +19,7 @@ from time import sleep
|
|
19
19
|
from time import time as tm
|
20
20
|
|
21
21
|
from ..base_decentra_object import BaseDecentrAIObject
|
22
|
-
from ..bc import DefaultBlockEngine, _DotDict
|
22
|
+
from ..bc import DefaultBlockEngine, _DotDict, EE_VPN_IMPL
|
23
23
|
from ..const import (
|
24
24
|
COMMANDS, ENVIRONMENT, HB, PAYLOAD_DATA, STATUS_TYPE,
|
25
25
|
PLUGIN_SIGNATURES, DEFAULT_PIPELINES,
|
@@ -45,7 +45,7 @@ from ..utils.config import (
|
|
45
45
|
|
46
46
|
DEBUG_MQTT_SERVER = "r9092118.ala.eu-central-1.emqxsl.com"
|
47
47
|
SDK_NETCONFIG_REQUEST_DELAY = 300
|
48
|
-
|
48
|
+
SHOW_PENDING_THRESHOLD = 3600
|
49
49
|
|
50
50
|
|
51
51
|
|
@@ -229,14 +229,10 @@ class GenericSession(BaseDecentrAIObject):
|
|
229
229
|
|
230
230
|
# TODO: maybe read config from file?
|
231
231
|
self._config = {**self.default_config, **config}
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
if isinstance(self._config[key]["TOPIC"], str) and self._config[key]["TOPIC"].startswith("{}"):
|
237
|
-
nr_empty = self._config[key]["TOPIC"].count("{}")
|
238
|
-
self._config[key]["TOPIC"] = self._config[key]["TOPIC"].format(root_topic, *(["{}"] * (nr_empty - 1)))
|
239
|
-
# end if root_topic
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
self.comms_root_topic = root_topic
|
240
236
|
|
241
237
|
self.__auto_configuration = auto_configuration
|
242
238
|
|
@@ -245,8 +241,8 @@ class GenericSession(BaseDecentrAIObject):
|
|
245
241
|
|
246
242
|
self.name = name
|
247
243
|
self.silent = silent
|
248
|
-
|
249
|
-
self.
|
244
|
+
|
245
|
+
self._eth_enabled = eth_enabled
|
250
246
|
|
251
247
|
self.encrypt_comms = encrypt_comms
|
252
248
|
|
@@ -354,6 +350,22 @@ class GenericSession(BaseDecentrAIObject):
|
|
354
350
|
# end bc_engine
|
355
351
|
# END TODO
|
356
352
|
|
353
|
+
|
354
|
+
str_topic = os.environ.get(ENVIRONMENT.EE_ROOT_TOPIC_ENV_KEY, self.comms_root_topic)
|
355
|
+
|
356
|
+
if str_topic != self.comms_root_topic:
|
357
|
+
self.P(f"Changing root topic from '{self.comms_root_topic}' to '{str_topic}'", color='y')
|
358
|
+
self.comms_root_topic = str_topic
|
359
|
+
|
360
|
+
if self.comms_root_topic is not None:
|
361
|
+
for key in self._config.keys():
|
362
|
+
if isinstance(self._config[key], dict) and 'TOPIC' in self._config[key]:
|
363
|
+
if isinstance(self._config[key]["TOPIC"], str) and self._config[key]["TOPIC"].startswith("{}"):
|
364
|
+
nr_empty = self._config[key]["TOPIC"].count("{}")
|
365
|
+
self._config[key]["TOPIC"] = self._config[key]["TOPIC"].format(self.comms_root_topic, *(["{}"] * (nr_empty - 1)))
|
366
|
+
# end if root_topic
|
367
|
+
|
368
|
+
|
357
369
|
## last config step
|
358
370
|
self.__fill_config(
|
359
371
|
host=self.__host,
|
@@ -830,8 +842,12 @@ class GenericSession(BaseDecentrAIObject):
|
|
830
842
|
# this is for legacy and custom implementation where heartbeats still contain
|
831
843
|
# the pipeline configuration.
|
832
844
|
pipeline_names = [x.get(PAYLOAD_DATA.NAME, None) for x in msg_active_configs]
|
845
|
+
received_plugins = dict_msg.get(HB.ACTIVE_PLUGINS, [])
|
833
846
|
self.D(f'<HB> Processing pipelines from <{short_addr}>:{pipeline_names}', color='y')
|
834
|
-
self.__process_node_pipelines(
|
847
|
+
new_pipeliens = self.__process_node_pipelines(
|
848
|
+
node_addr=msg_node_addr, pipelines=msg_active_configs,
|
849
|
+
plugins_statuses=received_plugins,
|
850
|
+
)
|
835
851
|
|
836
852
|
# TODO: move this call in `__on_message_default_callback`
|
837
853
|
if self.__maybe_ignore_message(msg_node_addr):
|
@@ -1113,19 +1129,23 @@ class GenericSession(BaseDecentrAIObject):
|
|
1113
1129
|
return
|
1114
1130
|
|
1115
1131
|
try:
|
1132
|
+
if EE_VPN_IMPL and self._eth_enabled:
|
1133
|
+
self.P("Disabling ETH for VPN implementation", color='r')
|
1134
|
+
self._eth_enabled = False
|
1135
|
+
|
1116
1136
|
self.bc_engine = DefaultBlockEngine(
|
1117
1137
|
log=self.log,
|
1118
1138
|
name=self.name,
|
1119
1139
|
config=blockchain_config,
|
1120
1140
|
verbosity=self._verbosity,
|
1121
1141
|
user_config=user_config,
|
1122
|
-
eth_enabled=self.
|
1142
|
+
eth_enabled=self._eth_enabled,
|
1123
1143
|
)
|
1124
1144
|
except:
|
1125
1145
|
raise ValueError("Failure in private blockchain setup:\n{}".format(traceback.format_exc()))
|
1126
1146
|
|
1127
1147
|
# extra setup flag for re-connections with same multiton instance
|
1128
|
-
self.bc_engine.set_eth_flag(self.
|
1148
|
+
self.bc_engine.set_eth_flag(self._eth_enabled)
|
1129
1149
|
return
|
1130
1150
|
|
1131
1151
|
def __start_main_loop_thread(self):
|
@@ -2868,8 +2888,8 @@ class GenericSession(BaseDecentrAIObject):
|
|
2868
2888
|
telegram_bot_token=None,
|
2869
2889
|
telegram_bot_token_env_key=ENVIRONMENT.TELEGRAM_BOT_TOKEN_ENV_KEY,
|
2870
2890
|
telegram_bot_name=None,
|
2871
|
-
telegram_bot_name_env_key=ENVIRONMENT.TELEGRAM_BOT_NAME_ENV_KEY,
|
2872
|
-
|
2891
|
+
telegram_bot_name_env_key=ENVIRONMENT.TELEGRAM_BOT_NAME_ENV_KEY,
|
2892
|
+
processor_handler=None,
|
2873
2893
|
system_prompt=None,
|
2874
2894
|
agent_type="API",
|
2875
2895
|
api_token_env_key=ENVIRONMENT.TELEGRAM_API_AGENT_TOKEN_ENV_KEY,
|
@@ -2943,6 +2963,7 @@ class GenericSession(BaseDecentrAIObject):
|
|
2943
2963
|
if telegram_bot_name is None:
|
2944
2964
|
message = f"Warning! No Telegram bot name provided as via env {ENVIRONMENT.TELEGRAM_BOT_NAME_ENV_KEY} or explicitly as `telegram_bot_name` param."
|
2945
2965
|
raise ValueError(message)
|
2966
|
+
|
2946
2967
|
|
2947
2968
|
|
2948
2969
|
pipeline: Pipeline = self.create_pipeline(
|
@@ -2950,6 +2971,10 @@ class GenericSession(BaseDecentrAIObject):
|
|
2950
2971
|
name=name,
|
2951
2972
|
# default TYPE is "Void"
|
2952
2973
|
)
|
2974
|
+
|
2975
|
+
proc_func_args, proc_func_base64_code =[], None
|
2976
|
+
if processor_handler is not None:
|
2977
|
+
_, proc_func_args, proc_func_base64_code = pipeline._get_method_data(processor_handler)
|
2953
2978
|
|
2954
2979
|
|
2955
2980
|
obfuscated_token = telegram_bot_token[:4] + "*" * (len(telegram_bot_token) - 4)
|
@@ -2957,8 +2982,13 @@ class GenericSession(BaseDecentrAIObject):
|
|
2957
2982
|
instance = pipeline.create_plugin_instance(
|
2958
2983
|
signature=signature,
|
2959
2984
|
instance_id=self.log.get_unique_id(),
|
2985
|
+
|
2960
2986
|
telegram_bot_token=telegram_bot_token,
|
2961
2987
|
telegram_bot_name=telegram_bot_name,
|
2988
|
+
|
2989
|
+
processor_handler=proc_func_base64_code, # not mandatory
|
2990
|
+
processor_handler_args=proc_func_args, # not mandatory
|
2991
|
+
|
2962
2992
|
system_prompt=system_prompt,
|
2963
2993
|
agent_type=agent_type,
|
2964
2994
|
api_token=api_token,
|
@@ -3289,6 +3319,50 @@ class GenericSession(BaseDecentrAIObject):
|
|
3289
3319
|
return dct_result
|
3290
3320
|
|
3291
3321
|
|
3322
|
+
def date_to_readable(self, date, check_none=False, start_time=None, pending_threshold=SHOW_PENDING_THRESHOLD):
|
3323
|
+
"""
|
3324
|
+
Convert a date to a human-readable format.
|
3325
|
+
|
3326
|
+
Parameters
|
3327
|
+
----------
|
3328
|
+
|
3329
|
+
date : str
|
3330
|
+
The date to convert.
|
3331
|
+
check_none : bool, optional
|
3332
|
+
If True, and the date is None it will check if too much time passed from the start time.
|
3333
|
+
If too much time passed, it will return 'Error!', otherwise, it will return 'Pending'.
|
3334
|
+
If False, it will return 'Never' if the date is None.
|
3335
|
+
Defaults to False.
|
3336
|
+
start_time : str, optional
|
3337
|
+
The start time to compare with the date in case it is None. Defaults to None.
|
3338
|
+
pending_threshold : int, optional
|
3339
|
+
The threshold in seconds to consider a date as pending. Defaults to SHOW_PENDING_THRESHOLD.
|
3340
|
+
If the time passed since start_time is greater than pending_threshold and
|
3341
|
+
check_none is set to True, it will return 'Error!'.
|
3342
|
+
|
3343
|
+
Returns
|
3344
|
+
-------
|
3345
|
+
|
3346
|
+
str
|
3347
|
+
The human-readable date.
|
3348
|
+
"""
|
3349
|
+
if date is None:
|
3350
|
+
if not check_none or start_time is None:
|
3351
|
+
return 'Never'
|
3352
|
+
# endif not check_none
|
3353
|
+
start_dt = self.log.str_to_date(start_time, fmt='%Y-%m-%d %H:%M:%S.%f')
|
3354
|
+
since_start = (dt.now() - start_dt).total_seconds()
|
3355
|
+
if since_start > pending_threshold:
|
3356
|
+
return 'Error!'
|
3357
|
+
return 'Pending'
|
3358
|
+
# endif date is None
|
3359
|
+
if date.startswith('1970'):
|
3360
|
+
return 'Never'
|
3361
|
+
if '.' in date:
|
3362
|
+
date = date.split('.')[0]
|
3363
|
+
return date
|
3364
|
+
|
3365
|
+
|
3292
3366
|
def get_nodes_apps(
|
3293
3367
|
self,
|
3294
3368
|
node=None,
|
@@ -3379,16 +3453,18 @@ class GenericSession(BaseDecentrAIObject):
|
|
3379
3453
|
if len(instance_status) == 0:
|
3380
3454
|
# this instance is only present in config but is NOT loaded so ignore it
|
3381
3455
|
continue
|
3382
|
-
start_time = instance_status.get(
|
3383
|
-
last_probe = instance_status.get(
|
3384
|
-
last_data = instance_status.get(
|
3385
|
-
dates = [start_time,
|
3386
|
-
|
3387
|
-
|
3388
|
-
|
3389
|
-
|
3390
|
-
|
3391
|
-
|
3456
|
+
start_time = instance_status.get(HB.ACTIVE_PLUGINS_INFO.INIT_TIMESTAMP)
|
3457
|
+
last_probe = instance_status.get(HB.ACTIVE_PLUGINS_INFO.EXEC_TIMESTAMP)
|
3458
|
+
last_data = instance_status.get(HB.ACTIVE_PLUGINS_INFO.LAST_PAYLOAD_TIME)
|
3459
|
+
dates = [start_time, last_data]
|
3460
|
+
error_dates = [
|
3461
|
+
instance_status.get(HB.ACTIVE_PLUGINS_INFO.FIRST_ERROR_TIME),
|
3462
|
+
instance_status.get(HB.ACTIVE_PLUGINS_INFO.LAST_ERROR_TIME),
|
3463
|
+
]
|
3464
|
+
dates = [self.date_to_readable(x, check_none=False) for x in dates]
|
3465
|
+
error_dates = [self.date_to_readable(x, check_none=False) for x in error_dates]
|
3466
|
+
last_probe = self.date_to_readable(last_probe, check_none=True, start_time=start_time)
|
3467
|
+
|
3392
3468
|
lst_plugin_instance_data.append({
|
3393
3469
|
'Node' : node,
|
3394
3470
|
'Owner' : pipeline_owner,
|
@@ -3397,8 +3473,9 @@ class GenericSession(BaseDecentrAIObject):
|
|
3397
3473
|
'Plugin': instance.signature,
|
3398
3474
|
'Id': instance.instance_id,
|
3399
3475
|
'Start' : dates[0],
|
3400
|
-
'Probe' :
|
3401
|
-
'Data' : dates[
|
3476
|
+
'Probe' : last_probe,
|
3477
|
+
'Data' : dates[1],
|
3478
|
+
'LastError': error_dates[1],
|
3402
3479
|
})
|
3403
3480
|
# endfor instances in app
|
3404
3481
|
# endfor apps
|
@@ -3408,7 +3485,8 @@ class GenericSession(BaseDecentrAIObject):
|
|
3408
3485
|
log_with_color(f'Node(s) {nodes} not found. Please check the configuration.', color='r')
|
3409
3486
|
return
|
3410
3487
|
if as_df:
|
3411
|
-
|
3488
|
+
color_condition = lambda x: (x['LastError'] != 'Never' or x['Probe'] == 'Error!')
|
3489
|
+
df = self.log.colored_dataframe(lst_plugin_instance_data, color_condition=color_condition)
|
3412
3490
|
if not (df.empty or df.shape[0] == 0):
|
3413
3491
|
df['Node'] = df['Node'].apply(lambda x: self._shorten_addr(x))
|
3414
3492
|
df['Owner'] = df['Owner'].apply(lambda x: self._shorten_addr(x))
|
naeural_client/bc/__init__.py
CHANGED
naeural_client/bc/base.py
CHANGED
@@ -319,7 +319,7 @@ class BaseBlockEngine(_EVMMixin):
|
|
319
319
|
self.__config = config
|
320
320
|
self.__ensure_ascii_payloads = ensure_ascii_payloads
|
321
321
|
|
322
|
-
self.
|
322
|
+
self._eth_enabled = eth_enabled
|
323
323
|
|
324
324
|
if user_config:
|
325
325
|
user_folder = get_user_folder()
|
@@ -350,12 +350,12 @@ class BaseBlockEngine(_EVMMixin):
|
|
350
350
|
|
351
351
|
@property
|
352
352
|
def eth_enabled(self):
|
353
|
-
return self.
|
353
|
+
return self._eth_enabled
|
354
354
|
|
355
355
|
|
356
356
|
def set_eth_flag(self, value):
|
357
|
-
if value != self.
|
358
|
-
self.
|
357
|
+
if value != self._eth_enabled:
|
358
|
+
self._eth_enabled = value
|
359
359
|
self.log.P("Changed eth_enabled to {}".format(value), color='d')
|
360
360
|
return
|
361
361
|
|
@@ -377,7 +377,7 @@ class BaseBlockEngine(_EVMMixin):
|
|
377
377
|
|
378
378
|
def _init(self):
|
379
379
|
self.P(
|
380
|
-
f"Initializing BC-engine (ETH_ENABLED={self.
|
380
|
+
f"Initializing BC-engine (ETH_ENABLED={self._eth_enabled})...", verbosity=1
|
381
381
|
)
|
382
382
|
|
383
383
|
if True:
|
@@ -414,7 +414,7 @@ class BaseBlockEngine(_EVMMixin):
|
|
414
414
|
self.__eth_address = self._get_eth_address()
|
415
415
|
self.__eth_account = self._get_eth_account()
|
416
416
|
### end Ethereum
|
417
|
-
if self.
|
417
|
+
if self._eth_enabled:
|
418
418
|
self.P(
|
419
419
|
"{} / ETH: {} ({})".format(self.address, self.eth_address, self.evm_network), boxed=True, verbosity=1,
|
420
420
|
color='g'
|
@@ -1212,7 +1212,7 @@ class BaseBlockEngine(_EVMMixin):
|
|
1212
1212
|
dct_data[BCct.SIGN] = result
|
1213
1213
|
dct_data[BCct.SENDER] = self.address
|
1214
1214
|
|
1215
|
-
if self.
|
1215
|
+
if self._eth_enabled:
|
1216
1216
|
dct_data[BCct.ETH_SENDER] = self.eth_address
|
1217
1217
|
### add eth signature
|
1218
1218
|
dct_data[BCct.ETH_SIGN] = "0xBEEF"
|
@@ -28,8 +28,11 @@ class ENVIRONMENT:
|
|
28
28
|
|
29
29
|
EE_SECURED = 'EE_SECURED'
|
30
30
|
AIXP_SECURED = 'AIXP_SECURED'
|
31
|
+
EE_MQTT_SECURED = 'EE_MQTT_SECURED'
|
31
32
|
|
32
33
|
TELEGRAM_BOT_TOKEN_ENV_KEY = 'EE_TELEGRAM_BOT_TOKEN'
|
33
34
|
TELEGRAM_BOT_NAME_ENV_KEY = 'EE_TELEGRAM_BOT_NAME'
|
34
35
|
|
35
36
|
TELEGRAM_API_AGENT_TOKEN_ENV_KEY = 'EE_TELEGRAM_API_AGENT_TOKEN'
|
37
|
+
|
38
|
+
EE_ROOT_TOPIC_ENV_KEY = 'EE_ROOT_TOPIC'
|
@@ -7,12 +7,82 @@ import hashlib
|
|
7
7
|
import numpy as np
|
8
8
|
import traceback
|
9
9
|
import random
|
10
|
+
import pandas as pd
|
10
11
|
from queue import Queue
|
11
12
|
|
12
13
|
from collections import OrderedDict, deque, defaultdict
|
13
14
|
|
14
15
|
from io import BytesIO, TextIOWrapper
|
15
16
|
|
17
|
+
class ColorDataFrame(pd.DataFrame):
|
18
|
+
"""
|
19
|
+
A DataFrame subclass that colors specific rows red when printed in a console.
|
20
|
+
|
21
|
+
Parameters
|
22
|
+
----------
|
23
|
+
*args : tuple
|
24
|
+
Positional arguments passed to the pd.DataFrame constructor.
|
25
|
+
color_condition : callable, optional
|
26
|
+
A function that takes a row (pd.Series) and returns True if the row should be
|
27
|
+
highlighted in red, or False otherwise.
|
28
|
+
**kwargs : dict
|
29
|
+
Keyword arguments passed to the pd.DataFrame constructor.
|
30
|
+
|
31
|
+
Returns
|
32
|
+
-------
|
33
|
+
ColorDataFrame
|
34
|
+
A subclass of DataFrame that overrides the to_string method for coloring.
|
35
|
+
|
36
|
+
Examples
|
37
|
+
--------
|
38
|
+
|
39
|
+
df = ColorDataFrame(
|
40
|
+
df,
|
41
|
+
color_condition=lambda row: row['value'] > 9
|
42
|
+
)
|
43
|
+
print(df)
|
44
|
+
"""
|
45
|
+
|
46
|
+
_metadata = ['_color_condition']
|
47
|
+
|
48
|
+
def __init__(self, *args, color_condition=lambda row: False, **kwargs):
|
49
|
+
super().__init__(*args, **kwargs)
|
50
|
+
# Store the condition function as an attribute
|
51
|
+
self._color_condition = color_condition
|
52
|
+
return
|
53
|
+
|
54
|
+
def to_string(self, *args, **kwargs):
|
55
|
+
"""
|
56
|
+
Overridden version of to_string that applies ANSI colors to rows
|
57
|
+
matching the condition.
|
58
|
+
"""
|
59
|
+
original_string = super().to_string(*args, **kwargs)
|
60
|
+
# Split the original string into lines
|
61
|
+
lines = original_string.split('\n')
|
62
|
+
|
63
|
+
header_lines = lines[:1]
|
64
|
+
data_lines = lines[1:]
|
65
|
+
|
66
|
+
colored_data_lines = []
|
67
|
+
for row_index, row_line in enumerate(data_lines):
|
68
|
+
# Attempt to parse the index from the leftmost part of each row line
|
69
|
+
try:
|
70
|
+
# The row's index in the actual DataFrame
|
71
|
+
df_index = self.index[row_index]
|
72
|
+
except IndexError:
|
73
|
+
colored_data_lines.append(row_line)
|
74
|
+
continue
|
75
|
+
|
76
|
+
# Check if row meets the color condition
|
77
|
+
if self._color_condition(self.loc[df_index]):
|
78
|
+
# Red color ANSI: \033[91m ... \033[0m
|
79
|
+
row_line = f"\033[91m{row_line}\033[0m"
|
80
|
+
|
81
|
+
colored_data_lines.append(row_line)
|
82
|
+
|
83
|
+
return "\n".join(header_lines + colored_data_lines)
|
84
|
+
|
85
|
+
|
16
86
|
|
17
87
|
adjectives = [
|
18
88
|
'able', 'arco', 'arty', 'awed', 'awny', 'bald', 'base', 'bass', 'bent', 'best', 'boxy',
|
@@ -64,6 +134,14 @@ class _UtilsMixin(object):
|
|
64
134
|
|
65
135
|
def __init__(self):
|
66
136
|
super(_UtilsMixin, self).__init__()
|
137
|
+
|
138
|
+
|
139
|
+
@staticmethod
|
140
|
+
def colored_dataframe(df, color_condition=lambda row: False):
|
141
|
+
"""
|
142
|
+
A DataFrame subclass that colors specific rows red when printed in a console.
|
143
|
+
"""
|
144
|
+
return ColorDataFrame(df, color_condition=color_condition)
|
67
145
|
|
68
146
|
@staticmethod
|
69
147
|
def get_function_parameters(function):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: naeural_client
|
3
|
-
Version: 3.2.
|
3
|
+
Version: 3.2.3
|
4
4
|
Summary: `naeural_client` is the Python SDK required for client app development for the Naeural Edge Protocol Edge Protocol framework
|
5
5
|
Project-URL: Homepage, https://github.com/NaeuralEdgeProtocol/naeural_client
|
6
6
|
Project-URL: Bug Tracker, https://github.com/NaeuralEdgeProtocol/naeural_client/issues
|
@@ -1,10 +1,10 @@
|
|
1
1
|
naeural_client/__init__.py,sha256=YimqgDbjLuywsf8zCWE0EaUXH4MBUrqLxt0TDV558hQ,632
|
2
|
-
naeural_client/_ver.py,sha256=
|
2
|
+
naeural_client/_ver.py,sha256=NqGZgRNQnimSeJA03BGa0lVm-mFJ6vDk6i-aLlC7aQA,330
|
3
3
|
naeural_client/base_decentra_object.py,sha256=iXvAAf6wPnGWzeeiRfwLojVoan-m1e_VsyPzjUQuENo,4492
|
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=
|
7
|
+
naeural_client/base/generic_session.py,sha256=c0UV6Gkz5QF7hSBIckf_DHS0EN3S9V2ekrwILgKRYVk,129690
|
8
8
|
naeural_client/base/instance.py,sha256=annR9qt6zqzIyf_AVzAIfxWHF8Y_zEjviels2MNfcPM,21916
|
9
9
|
naeural_client/base/pipeline.py,sha256=5IJnb8SRiCDJ3IRl02gEMXxjugGedyhu6xESP33GMpo,62521
|
10
10
|
naeural_client/base/plugin_template.py,sha256=7YAFaND2iXoZLgtunjYkFf_TBGieFr3VdNLO3vCqzmM,138795
|
@@ -13,8 +13,8 @@ naeural_client/base/transaction.py,sha256=bfs6td5M0fINgPQNxhrl_AUjb1YiilLDQ-Cd_o
|
|
13
13
|
naeural_client/base/webapp_pipeline.py,sha256=ZNGqZ36DY076XVDfGu2Q61kCt3kxIJ4Mi4QbPZuDVn0,2791
|
14
14
|
naeural_client/base/payload/__init__.py,sha256=y8fBI8tG2ObNfaXFWjyWZXwu878FRYj_I8GIbHT4GKE,29
|
15
15
|
naeural_client/base/payload/payload.py,sha256=x-au7l67Z_vfn_4R2C_pjZCaFuUVXHngJiGOfIAYVdE,2690
|
16
|
-
naeural_client/bc/__init__.py,sha256=
|
17
|
-
naeural_client/bc/base.py,sha256=
|
16
|
+
naeural_client/bc/__init__.py,sha256=BI5pcqHdhwnMdbWTYDLW1cVP_844VtLra-lz7xprgsk,171
|
17
|
+
naeural_client/bc/base.py,sha256=zFrBp2zI1EdDYOP9NVrVAga-guDhx2n5taEGWfdqnW8,44755
|
18
18
|
naeural_client/bc/chain.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
naeural_client/bc/ec.py,sha256=FwlkWmJvQ9aHuf_BZX1CWSUAxw6OZ9jBparLIWcs_e4,18933
|
20
20
|
naeural_client/bc/evm.py,sha256=knccBb8Whdo2V1E_kmxJVHGV10-_Eoj2AFV7FVjJwj4,26508
|
@@ -38,7 +38,7 @@ naeural_client/const/__init__.py,sha256=MM6Zib6i7M2qWcMkLtLx14zqU-lE-u2uPHjNvbh2
|
|
38
38
|
naeural_client/const/apps.py,sha256=ePBiJXLuPfFOKuw-LJrT9OWbaodU7QApfDurIPNDoB4,655
|
39
39
|
naeural_client/const/base.py,sha256=3Q8Mn3LE4jte1ubBEas3z-ukw8ix_FrvsegY820P6do,5739
|
40
40
|
naeural_client/const/comms.py,sha256=La6JXWHexH8CfcBCKyT4fCIoeaoZlcm7KtZ57ab4ZgU,2201
|
41
|
-
naeural_client/const/environment.py,sha256=
|
41
|
+
naeural_client/const/environment.py,sha256=o02BhlrRR4gOOedZtK94FSyZ1dlmDL-BwcDG91CiogQ,962
|
42
42
|
naeural_client/const/evm_net.py,sha256=oU_c6jUjWsFlslt2JFD1-bTOS06N7EGv88Rb6gF9xIQ,3221
|
43
43
|
naeural_client/const/formatter.py,sha256=AW3bWlqf39uaqV4BBUuW95qKYfF2OkkU4f9hy3kSVhM,200
|
44
44
|
naeural_client/const/heartbeat.py,sha256=xHZBX_NzHTklwA2_AEKR0SGdlbavMT4nirqjQg8WlTU,2550
|
@@ -86,7 +86,7 @@ naeural_client/logging/logger_mixins/process_mixin.py,sha256=ZO7S1mvKWwH_UIqv7JG
|
|
86
86
|
naeural_client/logging/logger_mixins/resource_size_mixin.py,sha256=EdCeFM8Ol8q_OTOmsj5Q2uKPvkqkoNdcXSZjw4FgAh4,2297
|
87
87
|
naeural_client/logging/logger_mixins/timers_mixin.py,sha256=6D1HlLB97TpIwJEqj4UPBf1Md2HVORlSWtwXqnKyab4,17315
|
88
88
|
naeural_client/logging/logger_mixins/upload_mixin.py,sha256=mvooNlNDNa_9D906d5qkfzTcvvsAuBOResoGCZ5IFnE,7697
|
89
|
-
naeural_client/logging/logger_mixins/utils_mixin.py,sha256=
|
89
|
+
naeural_client/logging/logger_mixins/utils_mixin.py,sha256=bD__K6CdSt99UTHdJkvb58cTlOWBouvPgUeifBHfrH4,24897
|
90
90
|
naeural_client/logging/tzlocal/__init__.py,sha256=PBLaZSFatmJp2fX4Bwalwc5LgWX9Vcw-FWHnBvW1k8E,384
|
91
91
|
naeural_client/logging/tzlocal/unix.py,sha256=Cgpzg1jxrcSivyT5xFRX69W5XkF5ollvXPr976RIbmA,7268
|
92
92
|
naeural_client/logging/tzlocal/utils.py,sha256=6F2QE3b8xiKwBriQaT0jrgBeyrKhCj6b-eSCEywLSMg,3094
|
@@ -97,8 +97,8 @@ naeural_client/utils/comm_utils.py,sha256=4cS9llRr_pK_3rNgDcRMCQwYPO0kcNU7AdWy_L
|
|
97
97
|
naeural_client/utils/config.py,sha256=ohZFdIaRLwcWK0sh0loDD7JS9bsC9mqsFYairWZSVNg,9814
|
98
98
|
naeural_client/utils/dotenv.py,sha256=_AgSo35n7EnQv5yDyu7C7i0kHragLJoCGydHjvOkrYY,2008
|
99
99
|
naeural_client/utils/oracle_sync/oracle_tester.py,sha256=QwfBqXxPIOTVT6WVySkkxPnU3eJVvoyOEbq1ZQRuPRw,27245
|
100
|
-
naeural_client-3.2.
|
101
|
-
naeural_client-3.2.
|
102
|
-
naeural_client-3.2.
|
103
|
-
naeural_client-3.2.
|
104
|
-
naeural_client-3.2.
|
100
|
+
naeural_client-3.2.3.dist-info/METADATA,sha256=r1vZWhhIFRBPhcEL-Jedn3lipOZZiDqKaPeytiviyBo,12363
|
101
|
+
naeural_client-3.2.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
102
|
+
naeural_client-3.2.3.dist-info/entry_points.txt,sha256=CTua17GUrRa4aXeafezGC9TiWKGKQzwTjQmB2jyj22g,91
|
103
|
+
naeural_client-3.2.3.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
|
104
|
+
naeural_client-3.2.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|