naeural-client 2.6.28__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.28"
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
 
@@ -824,8 +825,9 @@ class BaseBlockEngine:
824
825
  str_data = json.dumps(dct_safe_data, **dumps_config)
825
826
  # we reload the data to ensure
826
827
  dct_reload = json.loads(str_data)
827
- # in order to ensure the data is sorted
828
- str_data = json.dumps(dct_reload, sort_keys=True)
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)
829
831
  return str_data
830
832
 
831
833
  def _create_new_sk(self):
@@ -1376,9 +1378,18 @@ class BaseBlockEngine:
1376
1378
 
1377
1379
 
1378
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
+
1379
1391
  MIN_LEN = 10
1380
1392
  dct_env = {}
1381
- dct_result = {}
1382
1393
  done = False
1383
1394
  tries = 0
1384
1395
  in_env = False
@@ -1405,26 +1416,52 @@ class BaseBlockEngine:
1405
1416
  to_send = {
1406
1417
  **kwargs,
1407
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,
1408
1422
  }
1409
1423
  ######
1410
1424
  if len(kwargs) == 0:
1411
- to_send['sender_alias'] = 'direct-call'
1425
+ to_send[dAuth.DAUTH_SENDER_ALIAS] = dAuth.DAUTH_SENDER_ALIAS_DEFAULT
1412
1426
  ######
1413
1427
  self.sign(to_send)
1414
1428
  response = requests.post(url, json={'body' : to_send})
1415
1429
  if response.status_code == 200:
1416
1430
  dct_response = response.json()
1417
- server_alias = dct_response.get('result', {}).get('server_alias', 'unknown-alias')
1418
- 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
+ )
1419
1437
  if debug:
1420
1438
  self.P(f"Response received from {server_alias} <{server_addr}>:\n {json.dumps(dct_response, indent=2)}")
1421
1439
  else:
1422
1440
  self.P(f"Response received from {server_alias} <{server_addr}>,")
1423
- dct_result = dct_response.get('result', {}).get(DAUTH_SUBKEY, {})
1424
1441
  error = dct_response.get('error', None)
1425
1442
  if error is not None:
1426
1443
  self.P(f"Error in dAuth response: {dct_response}", color='r')
1427
- 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)}
1428
1465
  self.P("Found {} keys in dAuth response.".format(len(dct_env)), color='g')
1429
1466
  for k, v in dct_env.items():
1430
1467
  try:
@@ -1438,11 +1475,13 @@ class BaseBlockEngine:
1438
1475
  self.P(f" Overwrite `{k}{'=' + str(v) + ' ({})'.format(type(v).__name__) if debug else ''}` in env.", color='y')
1439
1476
  if add_env:
1440
1477
  os.environ[k] = v
1478
+ #endif add to env
1479
+ #endfor each key in dAuth response
1441
1480
  done = True
1442
1481
  else:
1443
1482
  self.P(f"Error in dAuth response: {response.status_code} - {response.text}", color='r')
1444
1483
  except Exception as exc:
1445
- 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')
1446
1485
  #end try
1447
1486
  tries += 1
1448
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'
@@ -249,14 +249,18 @@ class _JSONSerializationMixin(object):
249
249
  separators=separators,
250
250
  **kwargs
251
251
  )
252
+ #endif replace_nan
252
253
  if sort_keys:
253
254
  # we dump the data to a string then we reload and sort as there might
254
255
  # be some issues with the sorting if we have int keys that will be sorted
255
256
  # then recovered as string keys
256
257
  return json.dumps(
257
258
  json.loads(temp),
258
- sort_keys=True, separators=separators, **kwargs
259
+ sort_keys=True, separators=separators,
260
+ cls=NPJson if replace_nan else SimpleNPJson,
261
+ **kwargs
259
262
  )
263
+ # else we just return the temp
260
264
  return temp
261
265
 
262
266
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: naeural_client
3
- Version: 2.6.28
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=Pe_mSANiKCh62K3Zslijzk6yhTY6gt-guyu3l-q8a9k,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=s90pu8-_YJ4yADnQqbWwGoKouXztrHyH1voQCnFl1to,40507
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=8TAePgqYgwgpaAk6MRfCOqLqA2GIbO3MPOFYHJdaE0g,14937
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.28.dist-info/METADATA,sha256=dPMoifaDaW4iB1xJNRItGFCzafNnZ1jUtcOedmgqbfA,12354
87
- naeural_client-2.6.28.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
88
- naeural_client-2.6.28.dist-info/entry_points.txt,sha256=PNdyotDaQBAslZREx5luVyj0kqpQnwNACwkFNTPIHU4,55
89
- naeural_client-2.6.28.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
90
- naeural_client-2.6.28.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,,