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 CHANGED
@@ -1,4 +1,4 @@
1
- __VER__ = "2.6.27"
1
+ __VER__ = "2.6.29"
2
2
 
3
3
  if __name__ == "__main__":
4
4
  with open("pyproject.toml", "rt") as fd:
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['sender_alias'] = 'direct-call'
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('server_alias', 'unknown-alias')
1412
- server_addr = dct_response.get('result', {}).get('EE_SENDER', 'unknown-address')
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
- dct_env = {k : v for k,v in dct_result.items() if k.startswith('EE_')}
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: {dct_result}", color='r')
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:
@@ -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
- return json.dumps(
236
+
237
+ temp = json.dumps(
237
238
  data,
238
239
  cls=NPJson,
239
- sort_keys=sort_keys,
240
+ sort_keys=False,
240
241
  separators=separators,
241
242
  **kwargs
242
243
  )
243
244
  else:
244
- return json.dumps(
245
+ temp = json.dumps(
245
246
  data,
246
247
  cls=SimpleNPJson,
247
- sort_keys=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.27
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=Yz-umaskmmy3SGQA4LtCO3eIsBcFLfPh9-24KjHp6hk,331
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=FEzIterEL8ZOPO8cwlPQB0g16fY4q9fp8X8YtkJ8PpA,40169
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=1ScfnfNd5xeWo7tkkDgQR95vliTpcax025Naj0Lqw38,4574
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=7usTqigM221C2llVqr-JgtqMX_XYDgjbjAhXnUNXl8M,14594
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.27.dist-info/METADATA,sha256=rde6sZu0nzqXIJHVbDh8ZNizuzjDhkdAl3TlzSj8BS0,12354
87
- naeural_client-2.6.27.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
88
- naeural_client-2.6.27.dist-info/entry_points.txt,sha256=PNdyotDaQBAslZREx5luVyj0kqpQnwNACwkFNTPIHU4,55
89
- naeural_client-2.6.27.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
90
- naeural_client-2.6.27.dist-info/RECORD,,
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,,