naeural-client 2.6.27__py3-none-any.whl → 2.6.29__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/bc/base.py +54 -9
- naeural_client/const/base.py +21 -0
- naeural_client/logging/logger_mixins/json_serialization_mixin.py +18 -4
- {naeural_client-2.6.27.dist-info → naeural_client-2.6.29.dist-info}/METADATA +1 -1
- {naeural_client-2.6.27.dist-info → naeural_client-2.6.29.dist-info}/RECORD +9 -9
- {naeural_client-2.6.27.dist-info → naeural_client-2.6.29.dist-info}/WHEEL +0 -0
- {naeural_client-2.6.27.dist-info → naeural_client-2.6.29.dist-info}/entry_points.txt +0 -0
- {naeural_client-2.6.27.dist-info → naeural_client-2.6.29.dist-info}/licenses/LICENSE +0 -0
naeural_client/_ver.py
CHANGED
naeural_client/bc/base.py
CHANGED
@@ -19,8 +19,9 @@ from ..utils.config import get_user_folder
|
|
19
19
|
from ..const.base import (
|
20
20
|
BCctbase, BCct,
|
21
21
|
DAUTH_SUBKEY, DAUTH_URL, DAUTH_ENV_KEY,
|
22
|
-
DAUTH_NONCE, DAUTH_VARS,
|
22
|
+
DAUTH_NONCE, DAUTH_VARS, dAuth,
|
23
23
|
)
|
24
|
+
|
24
25
|
|
25
26
|
|
26
27
|
|
@@ -814,12 +815,19 @@ class BaseBlockEngine:
|
|
814
815
|
dct_safe_data = dct_data
|
815
816
|
|
816
817
|
dumps_config = dict(
|
817
|
-
sort_keys=True,
|
818
818
|
cls=_ComplexJsonEncoder,
|
819
819
|
separators=(',',':'),
|
820
820
|
ensure_ascii=self.__ensure_ascii_payloads,
|
821
821
|
)
|
822
|
+
# we dump the data to a string then we reload and sort as there might
|
823
|
+
# be some issues with the sorting if we have int keys that will be sorted
|
824
|
+
# then recovered as string keys
|
822
825
|
str_data = json.dumps(dct_safe_data, **dumps_config)
|
826
|
+
# we reload the data to ensure
|
827
|
+
dct_reload = json.loads(str_data)
|
828
|
+
# in order to ensure the data is sorted we dump it again to a string
|
829
|
+
# IMPORTANT: we need to use the same dumps_config as before !
|
830
|
+
str_data = json.dumps(dct_reload, sort_keys=True, **dumps_config)
|
823
831
|
return str_data
|
824
832
|
|
825
833
|
def _create_new_sk(self):
|
@@ -1370,9 +1378,18 @@ class BaseBlockEngine:
|
|
1370
1378
|
|
1371
1379
|
|
1372
1380
|
def dauth_autocomplete(self, dauth_endp=None, add_env=True, debug=False, max_tries=5, **kwargs):
|
1381
|
+
from naeural_client._ver import __VER__ as sdk_version
|
1382
|
+
try:
|
1383
|
+
from ver import __VER__ as app_version
|
1384
|
+
except:
|
1385
|
+
app_version = None
|
1386
|
+
try:
|
1387
|
+
from naeural_core.main.ver import __VER__ as core_version
|
1388
|
+
except:
|
1389
|
+
core_version = None
|
1390
|
+
|
1373
1391
|
MIN_LEN = 10
|
1374
1392
|
dct_env = {}
|
1375
|
-
dct_result = {}
|
1376
1393
|
done = False
|
1377
1394
|
tries = 0
|
1378
1395
|
in_env = False
|
@@ -1399,26 +1416,52 @@ class BaseBlockEngine:
|
|
1399
1416
|
to_send = {
|
1400
1417
|
**kwargs,
|
1401
1418
|
DAUTH_NONCE : str(uuid.uuid4())[:8],
|
1419
|
+
dAuth.DAUTH_SENDER_APP_VER : app_version,
|
1420
|
+
dAuth.DAUTH_SENDER_SDK_VER : sdk_version,
|
1421
|
+
dAuth.DAUTH_SENDER_CORE_VER : core_version,
|
1402
1422
|
}
|
1403
1423
|
######
|
1404
1424
|
if len(kwargs) == 0:
|
1405
|
-
to_send[
|
1425
|
+
to_send[dAuth.DAUTH_SENDER_ALIAS] = dAuth.DAUTH_SENDER_ALIAS_DEFAULT
|
1406
1426
|
######
|
1407
1427
|
self.sign(to_send)
|
1408
1428
|
response = requests.post(url, json={'body' : to_send})
|
1409
1429
|
if response.status_code == 200:
|
1410
1430
|
dct_response = response.json()
|
1411
|
-
server_alias = dct_response.get('result', {}).get(
|
1412
|
-
|
1431
|
+
server_alias = dct_response.get('result', {}).get(
|
1432
|
+
dAuth.DAUTH_SERVER_ALIAS, dAuth.DAUTH_ALIAS_UNK
|
1433
|
+
)
|
1434
|
+
server_addr = dct_response.get('result', {}).get(
|
1435
|
+
BCctbase.SENDER, dAuth.DAUTH_ADDR_UNK
|
1436
|
+
)
|
1413
1437
|
if debug:
|
1414
1438
|
self.P(f"Response received from {server_alias} <{server_addr}>:\n {json.dumps(dct_response, indent=2)}")
|
1415
1439
|
else:
|
1416
1440
|
self.P(f"Response received from {server_alias} <{server_addr}>,")
|
1417
|
-
dct_result = dct_response.get('result', {}).get(DAUTH_SUBKEY, {})
|
1418
1441
|
error = dct_response.get('error', None)
|
1419
1442
|
if error is not None:
|
1420
1443
|
self.P(f"Error in dAuth response: {dct_response}", color='r')
|
1421
|
-
|
1444
|
+
dct_result = dct_response.get('result', {})
|
1445
|
+
dct_dauth = dct_result.get(DAUTH_SUBKEY, {})
|
1446
|
+
ver_result = self.verify(dct_result)
|
1447
|
+
if ver_result.valid:
|
1448
|
+
self.P(f"Signature from {server_alias} <{server_addr}> is valid.", color='g')
|
1449
|
+
else:
|
1450
|
+
self.P(f"Signature from {server_alias} <{server_addr}> is INVALID: {ver_result}", color='r')
|
1451
|
+
return
|
1452
|
+
|
1453
|
+
# whitelist
|
1454
|
+
whitelist = dct_dauth.pop(dAuth.DAUTH_WHITELIST, [])
|
1455
|
+
if isinstance(whitelist, (str, list)) and len(whitelist) > 0:
|
1456
|
+
if isinstance(whitelist, str):
|
1457
|
+
whitelist = [whitelist]
|
1458
|
+
self.P(f"Found {len(whitelist)} whitelist addresses in dAuth response.", color='y')
|
1459
|
+
self.add_address_to_allowed(whitelist)
|
1460
|
+
else:
|
1461
|
+
self.P(f"No whitelist addresses found in dAuth response.", color='d')
|
1462
|
+
# end whitelist
|
1463
|
+
|
1464
|
+
dct_env = {k : v for k,v in dct_dauth.items() if k.startswith(dAuth.DAUTH_ENV_KEYS_PREFIX)}
|
1422
1465
|
self.P("Found {} keys in dAuth response.".format(len(dct_env)), color='g')
|
1423
1466
|
for k, v in dct_env.items():
|
1424
1467
|
try:
|
@@ -1432,11 +1475,13 @@ class BaseBlockEngine:
|
|
1432
1475
|
self.P(f" Overwrite `{k}{'=' + str(v) + ' ({})'.format(type(v).__name__) if debug else ''}` in env.", color='y')
|
1433
1476
|
if add_env:
|
1434
1477
|
os.environ[k] = v
|
1478
|
+
#endif add to env
|
1479
|
+
#endfor each key in dAuth response
|
1435
1480
|
done = True
|
1436
1481
|
else:
|
1437
1482
|
self.P(f"Error in dAuth response: {response.status_code} - {response.text}", color='r')
|
1438
1483
|
except Exception as exc:
|
1439
|
-
self.P(f"Error in dAuth URL request: {exc}. Received: {
|
1484
|
+
self.P(f"Error in dAuth URL request: {exc}. Received: {dct_dauth}", color='r')
|
1440
1485
|
#end try
|
1441
1486
|
tries += 1
|
1442
1487
|
if tries >= max_tries:
|
naeural_client/const/base.py
CHANGED
@@ -16,6 +16,27 @@ DAUTH_ENV_KEY = 'EE_DAUTH_URL'
|
|
16
16
|
DAUTH_NONCE = 'nonce'
|
17
17
|
DAUTH_VARS = [DAUTH_NONCE, BCctbase.SIGN, BCctbase.SENDER, BCctbase.HASH]
|
18
18
|
|
19
|
+
class dAuth:
|
20
|
+
DAUTH_SENDER_ALIAS = 'sender_alias'
|
21
|
+
DAUTH_SENDER_ALIAS_DEFAULT = 'direct-call'
|
22
|
+
DAUTH_SENDER_CORE_VER = 'sender_core_ver'
|
23
|
+
DAUTH_SENDER_SDK_VER = 'sender_sdk_ver'
|
24
|
+
DAUTH_SENDER_APP_VER = 'sender_app_ver'
|
25
|
+
|
26
|
+
DAUTH_ENV_KEYS_PREFIX = 'EE_'
|
27
|
+
|
28
|
+
DAUTH_ALIAS_UNK = 'unknown-alias'
|
29
|
+
DAUTH_ADDR_UNK = 'unknown-address'
|
30
|
+
|
31
|
+
DAUTH_SERVER_ALIAS = 'server_alias'
|
32
|
+
|
33
|
+
DAUTH_WHITELIST = 'whitelist'
|
34
|
+
|
35
|
+
DAUTH_URL = DAUTH_URL
|
36
|
+
DAUTH_SUBKEY = DAUTH_SUBKEY
|
37
|
+
DAUTH_NONCE = DAUTH_NONCE
|
38
|
+
DAUTH_VARS = DAUTH_VARS
|
39
|
+
|
19
40
|
ETH_ENABLED_ENV_KEY = 'EE_ETH_ENABLED'
|
20
41
|
|
21
42
|
EE_EPOCH_INTERVALS_KEY = 'EE_EPOCH_INTERVALS'
|
@@ -233,21 +233,35 @@ class _JSONSerializationMixin(object):
|
|
233
233
|
# need to replace directly in the received dict if `inplace=True`
|
234
234
|
if inplace:
|
235
235
|
data = _JSONSerializationMixin.replace_nan(dct, inplace=inplace)
|
236
|
-
|
236
|
+
|
237
|
+
temp = json.dumps(
|
237
238
|
data,
|
238
239
|
cls=NPJson,
|
239
|
-
sort_keys=
|
240
|
+
sort_keys=False,
|
240
241
|
separators=separators,
|
241
242
|
**kwargs
|
242
243
|
)
|
243
244
|
else:
|
244
|
-
|
245
|
+
temp = json.dumps(
|
245
246
|
data,
|
246
247
|
cls=SimpleNPJson,
|
247
|
-
sort_keys=
|
248
|
+
sort_keys=False,
|
248
249
|
separators=separators,
|
249
250
|
**kwargs
|
250
251
|
)
|
252
|
+
#endif replace_nan
|
253
|
+
if sort_keys:
|
254
|
+
# we dump the data to a string then we reload and sort as there might
|
255
|
+
# be some issues with the sorting if we have int keys that will be sorted
|
256
|
+
# then recovered as string keys
|
257
|
+
return json.dumps(
|
258
|
+
json.loads(temp),
|
259
|
+
sort_keys=True, separators=separators,
|
260
|
+
cls=NPJson if replace_nan else SimpleNPJson,
|
261
|
+
**kwargs
|
262
|
+
)
|
263
|
+
# else we just return the temp
|
264
|
+
return temp
|
251
265
|
|
252
266
|
|
253
267
|
@staticmethod
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: naeural_client
|
3
|
-
Version: 2.6.
|
3
|
+
Version: 2.6.29
|
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,5 +1,5 @@
|
|
1
1
|
naeural_client/__init__.py,sha256=YimqgDbjLuywsf8zCWE0EaUXH4MBUrqLxt0TDV558hQ,632
|
2
|
-
naeural_client/_ver.py,sha256=
|
2
|
+
naeural_client/_ver.py,sha256=Gc39WsKwXy0wDMk2EefAIcGG0DOMjDF20Wps9zz7C7E,331
|
3
3
|
naeural_client/base_decentra_object.py,sha256=C4iwZTkhKNBS4VHlJs5DfElRYLo4Q9l1V1DNVSk1fyQ,4412
|
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
|
@@ -14,7 +14,7 @@ naeural_client/base/webapp_pipeline.py,sha256=QmPLVmhP0CPdi0YuvbZEH4APYz2Amtw3gy
|
|
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
16
|
naeural_client/bc/__init__.py,sha256=FQj23D1PrY06NUOARiKQi4cdj0-VxnoYgYDEht8lpr8,158
|
17
|
-
naeural_client/bc/base.py,sha256=
|
17
|
+
naeural_client/bc/base.py,sha256=AxdeGI2ma772VRxaIAUPFcuaBGr-jLC3DGWxtotY-Ak,42147
|
18
18
|
naeural_client/bc/chain.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
naeural_client/bc/ec.py,sha256=qI8l7YqiS4MNftlx-tF7IZUswrSeQc7KMn5OZ0fEaJs,23370
|
20
20
|
naeural_client/certs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -33,7 +33,7 @@ naeural_client/comm/mqtt_wrapper.py,sha256=Ig3bFZkCbWd4y_Whn2PPa91Z3aLgNbNPau6Tn
|
|
33
33
|
naeural_client/const/README.md,sha256=6OHesr-f5NBuuJGryEoi_TCu2XdlhfQYlDKx_IJoXeg,177
|
34
34
|
naeural_client/const/__init__.py,sha256=MM6Zib6i7M2qWcMkLtLx14zqU-lE-u2uPHjNvbh2jAM,478
|
35
35
|
naeural_client/const/apps.py,sha256=ePBiJXLuPfFOKuw-LJrT9OWbaodU7QApfDurIPNDoB4,655
|
36
|
-
naeural_client/const/base.py,sha256=
|
36
|
+
naeural_client/const/base.py,sha256=6lHGARkuYbltmjusM-pB7pL8MtZyXowDYlW-Uq-8g1c,5098
|
37
37
|
naeural_client/const/comms.py,sha256=La6JXWHexH8CfcBCKyT4fCIoeaoZlcm7KtZ57ab4ZgU,2201
|
38
38
|
naeural_client/const/environment.py,sha256=iytmTDgbOjvORPwHQmc0K0r-xJx7dnnzNnqAJJiFCDA,870
|
39
39
|
naeural_client/const/formatter.py,sha256=AW3bWlqf39uaqV4BBUuW95qKYfF2OkkU4f9hy3kSVhM,200
|
@@ -66,7 +66,7 @@ naeural_client/logging/logger_mixins/computer_vision_mixin.py,sha256=TrtG7ayM2ab
|
|
66
66
|
naeural_client/logging/logger_mixins/datetime_mixin.py,sha256=x0l2mhhmNZ6r_SmJ5or7dxAf2e4tQL0LiBsj3RDu6pU,11288
|
67
67
|
naeural_client/logging/logger_mixins/download_mixin.py,sha256=8eu3w-H1LI6OmC_ZwzU3WrWMENQKdEZ2HjnQsAixwM0,13500
|
68
68
|
naeural_client/logging/logger_mixins/general_serialization_mixin.py,sha256=3glOuN6Whi_GSxb1OiFitzypOqkf_x2RJGfGaO51_WE,7440
|
69
|
-
naeural_client/logging/logger_mixins/json_serialization_mixin.py,sha256=
|
69
|
+
naeural_client/logging/logger_mixins/json_serialization_mixin.py,sha256=j90I8ggh9Ih9WvOtL5OMiVNLWFP6E4e3yM5k6Bhj6r4,15057
|
70
70
|
naeural_client/logging/logger_mixins/pickle_serialization_mixin.py,sha256=9BftwBe56e94FXjyf8c8m4GEvIvzNdK_jpQPtIIJbXY,9185
|
71
71
|
naeural_client/logging/logger_mixins/process_mixin.py,sha256=ZO7S1mvKWwH_UIqv7JG-NxizcfWMJqngNNW_K-hESdU,1904
|
72
72
|
naeural_client/logging/logger_mixins/resource_size_mixin.py,sha256=EdCeFM8Ol8q_OTOmsj5Q2uKPvkqkoNdcXSZjw4FgAh4,2297
|
@@ -83,8 +83,8 @@ naeural_client/utils/comm_utils.py,sha256=4cS9llRr_pK_3rNgDcRMCQwYPO0kcNU7AdWy_L
|
|
83
83
|
naeural_client/utils/config.py,sha256=v7xHikr6Z5Sbvf3opYeMhYzGWD2pe0HlRwa-aGJzUh8,6323
|
84
84
|
naeural_client/utils/dotenv.py,sha256=_AgSo35n7EnQv5yDyu7C7i0kHragLJoCGydHjvOkrYY,2008
|
85
85
|
naeural_client/utils/oracle_sync/multiple_requests.py,sha256=GLzROGZ0gI4d1PVWgW_JBUYZjEL4LqZvHvwelxDiPW4,20892
|
86
|
-
naeural_client-2.6.
|
87
|
-
naeural_client-2.6.
|
88
|
-
naeural_client-2.6.
|
89
|
-
naeural_client-2.6.
|
90
|
-
naeural_client-2.6.
|
86
|
+
naeural_client-2.6.29.dist-info/METADATA,sha256=bpBJvkplMAnW6pC2-03BJqIRVlkqN2rmMpvnqaNCmjw,12354
|
87
|
+
naeural_client-2.6.29.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
88
|
+
naeural_client-2.6.29.dist-info/entry_points.txt,sha256=PNdyotDaQBAslZREx5luVyj0kqpQnwNACwkFNTPIHU4,55
|
89
|
+
naeural_client-2.6.29.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
|
90
|
+
naeural_client-2.6.29.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|