naeural-client 3.1.0__py3-none-any.whl → 3.1.2__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__ = "3.1.0"
1
+ __VER__ = "3.1.2"
2
2
 
3
3
  if __name__ == "__main__":
4
4
  with open("pyproject.toml", "rt") as fd:
naeural_client/bc/evm.py CHANGED
@@ -3,6 +3,8 @@ import os
3
3
 
4
4
  from collections import namedtuple
5
5
 
6
+ from datetime import timezone, datetime
7
+
6
8
  from eth_account import Account
7
9
  from eth_utils import keccak, to_checksum_address
8
10
  from eth_account.messages import encode_defunct
@@ -14,7 +16,8 @@ EE_VPN_IMPL = str(os.environ.get(EE_VPN_IMPL_ENV_KEY, False)).lower() in [
14
16
  ]
15
17
 
16
18
  Web3Vars = namedtuple("Web3Vars", [
17
- "w3", "rpc_url", "nd_contract_address", "r1_contract_address", "network"
19
+ "w3", "rpc_url", "nd_contract_address", "r1_contract_address", "network",
20
+ "genesis_date", "epoch_length_seconds"
18
21
  ])
19
22
 
20
23
 
@@ -224,22 +227,87 @@ class _EVMMixin:
224
227
  if network is None:
225
228
  network = self.evm_network
226
229
  w3 = self.web3
227
- rpc_url = self.network_rpc
228
- nd_contract_address = self.nd_contract_address
229
- r1_contract_address = self.r1_contract_address
230
230
  else:
231
- network_data = self.get_network_data(network)
232
- nd_contract_address = network_data[dAuth.EvmNetData.DAUTH_ND_ADDR_KEY]
233
- rpc_url = network_data[dAuth.EvmNetData.DAUTH_RPC_KEY]
234
- r1_contract_address = network_data[dAuth.EvmNetData.DAUTH_R1_ADDR_KEY]
235
- w3 = Web3(Web3.HTTPProvider(rpc_url))
231
+ w3 = None
232
+
233
+ network_data = self.get_network_data(network)
234
+ nd_contract_address = network_data[dAuth.EvmNetData.DAUTH_ND_ADDR_KEY]
235
+ rpc_url = network_data[dAuth.EvmNetData.DAUTH_RPC_KEY]
236
+ r1_contract_address = network_data[dAuth.EvmNetData.DAUTH_R1_ADDR_KEY]
237
+ str_genesis_date = network_data[dAuth.EvmNetData.EE_GENESIS_EPOCH_DATE_KEY]
238
+ genesis_date = self.log.str_to_date(str_genesis_date).replace(tzinfo=timezone.utc)
239
+ ep_sec = (
240
+ network_data[dAuth.EvmNetData.EE_EPOCH_INTERVAL_SECONDS_KEY] *
241
+ network_data[dAuth.EvmNetData.EE_EPOCH_INTERVALS_KEY]
242
+ )
243
+
244
+ if w3 is None:
245
+ w3 = Web3(Web3.HTTPProvider(rpc_url))
236
246
  self.P(f"Created temporary Web3 for {network=} via {rpc_url=}...", verbosity=2)
247
+ #end if
248
+
237
249
  result = Web3Vars(
238
- w3=w3, rpc_url=rpc_url, nd_contract_address=nd_contract_address,
239
- r1_contract_address=r1_contract_address, network=network
250
+ w3=w3,
251
+ rpc_url=rpc_url,
252
+ nd_contract_address=nd_contract_address,
253
+ r1_contract_address=r1_contract_address,
254
+ network=network,
255
+ genesis_date=genesis_date,
256
+ epoch_length_seconds=ep_sec
240
257
  )
241
258
  return result
242
259
 
260
+ # Epoch handling
261
+ if True:
262
+ def get_epoch_id(self, date : any, network: str = None):
263
+ """
264
+ Given a date as string or datetime, returns the epoch id - ie the number of days since
265
+ the genesis epoch.
266
+
267
+ Parameters
268
+ ----------
269
+ date : str or date
270
+ The date as string that will be converted to epoch id.
271
+ """
272
+ w3vars = self._get_web3_vars(network)
273
+ if isinstance(date, str):
274
+ # remove milliseconds from string
275
+ date = date.split('.')[0]
276
+ date = self.log.str_to_date(date)
277
+ # again this is correct to replace in order to have a timezone aware date
278
+ # and not consider the local timezone. the `date` string naive should be UTC offsetted
279
+ date = date.replace(tzinfo=timezone.utc)
280
+ # compute difference between date and self.__genesis_date in seconds
281
+ elapsed_seconds = (date - w3vars.genesis_date).total_seconds()
282
+
283
+ # the epoch id starts from 0 - the genesis epoch
284
+ # the epoch id is the number of days since the genesis epoch
285
+ # # TODO: change this if we move to start-from-one offset by adding +1
286
+ # OBS: epoch always ends at AB:CD:59 no matter what
287
+ epoch_id = int(elapsed_seconds / w3vars.epoch_length_seconds)
288
+ return epoch_id
289
+
290
+
291
+ def get_current_date(self):
292
+ # we convert local time to UTC time
293
+ return datetime.now(timezone.utc)
294
+
295
+
296
+ def get_time_epoch(self):
297
+ """
298
+ Returns the current epoch id.
299
+ """
300
+ return self.get_epoch_id(self.get_current_date())
301
+
302
+
303
+ def get_current_epoch(self):
304
+ """
305
+ Returns the current epoch id using `get_time_epoch`.
306
+ """
307
+ return self.get_time_epoch()
308
+
309
+ ## End Epoch handling
310
+
243
311
 
244
312
  # EVM signing methods (internal)
245
313
  if True:
@@ -0,0 +1,22 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
3
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
4
+ d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
5
+ QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
6
+ MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
7
+ b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
8
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
9
+ CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
10
+ nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
11
+ 43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
12
+ T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
13
+ gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
14
+ BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
15
+ TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
16
+ DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
17
+ hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
18
+ 06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
19
+ PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
20
+ YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
21
+ CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
22
+ -----END CERTIFICATE-----
@@ -88,6 +88,7 @@ def get_user_folder():
88
88
  """
89
89
  return BaseLogger.get_user_folder(as_str=False, include_sdk_home=True)
90
90
 
91
+
91
92
  def get_user_config_file():
92
93
  """
93
94
  Returns the user configuration file.
@@ -95,11 +96,10 @@ def get_user_config_file():
95
96
  return get_user_folder() / CONFIG_FILE
96
97
 
97
98
 
98
-
99
-
100
99
  def get_network():
101
100
  return os.environ.get(dAuth.DAUTH_NET_ENV_KEY, dAuth.DAUTH_SDK_NET_DEFAULT)
102
101
 
102
+
103
103
  def get_networks(args):
104
104
  """
105
105
  Shows the network configuration.
@@ -185,6 +185,7 @@ def reset_config(*larg, keep_existing=False, **kwargs):
185
185
  show_version()
186
186
  return
187
187
 
188
+
188
189
  def show_address(args):
189
190
  """
190
191
  Displays the current client address.
@@ -196,6 +197,7 @@ def show_address(args):
196
197
  log_with_color(f"{sess.get_client_address()}", color='b')
197
198
  return
198
199
 
200
+
199
201
  def show_version(silent=True):
200
202
  from naeural_client import Session
201
203
  sess = Session(
@@ -203,10 +205,14 @@ def show_version(silent=True):
203
205
  )
204
206
 
205
207
  user_folder = get_user_folder()
208
+
209
+ # TODO: get the epoch from the SDK - AFTER moving get_epoch_id from core
210
+
206
211
 
207
212
  log_with_color(f"SDK folder: {user_folder}", color='b')
208
213
  log_with_color(f"SDK version: {version}", color='b')
209
214
  log_with_color(f"Ratio1 network: {get_network()}", color='b')
215
+ log_with_color(f"Network Epoch: {sess.bc_engine.get_current_epoch()}", color='b')
210
216
  log_with_color(f"SDK addr: {sess.get_client_address()}", color='b')
211
217
  log_with_color(f"SDK ETH addr: {sess.bc_engine.eth_address}", color='b')
212
218
  return
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: naeural_client
3
- Version: 3.1.0
3
+ Version: 3.1.2
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=38HgbYd0O610ADMgWk8TVOk4AsO8FARwG5095hnCzG4,330
2
+ naeural_client/_ver.py,sha256=oELIU7G9GJjuV-9BiL-8ZqllYO1e53-SZBsHBYMM1W0,330
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
@@ -17,8 +17,9 @@ naeural_client/bc/__init__.py,sha256=FQj23D1PrY06NUOARiKQi4cdj0-VxnoYgYDEht8lpr8
17
17
  naeural_client/bc/base.py,sha256=CNFhPYMj45oVoP0xU9w8VzLUOBHgSljj8pFIzxjUwLg,44568
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
- naeural_client/bc/evm.py,sha256=mb1jltZ-KYSQVY75CSXtr8OtXwQyaMGVSl67-UCs620,23869
20
+ naeural_client/bc/evm.py,sha256=8_9IBum2wpw0SwWl5xBceU9p-9o4zyF6JBIJJiMr-a8,26022
21
21
  naeural_client/certs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ naeural_client/certs/a0d9818f.ala.eu-central-1.emqxsl.com.crt,sha256=y-6io0tseyx9-a4Pmde1z1gPULtJNSYUpG_YFkYaMKU,1337
22
23
  naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt,sha256=y-6io0tseyx9-a4Pmde1z1gPULtJNSYUpG_YFkYaMKU,1337
23
24
  naeural_client/certs/s624dbd4.ala.us-east-1.emqxsl.com.crt,sha256=y-6io0tseyx9-a4Pmde1z1gPULtJNSYUpG_YFkYaMKU,1337
24
25
  naeural_client/cli/README.md,sha256=WPdI_EjzAbUW1aPyj1sSR8rLydcJKZtoiaEtklQrjHo,74
@@ -93,11 +94,11 @@ naeural_client/logging/tzlocal/win32.py,sha256=zBoj0vFVrGhnCm_f7xmYzGym4-fV-4Ij2
93
94
  naeural_client/logging/tzlocal/windows_tz.py,sha256=Sv9okktjZJfRGGUOOppsvQuX_eXyXUxkSKCAFmWT9Hw,34203
94
95
  naeural_client/utils/__init__.py,sha256=mAnke3-MeRzz3nhQvhuHqLnpaaCSmDxicd7Ck9uwpmI,77
95
96
  naeural_client/utils/comm_utils.py,sha256=4cS9llRr_pK_3rNgDcRMCQwYPO0kcNU7AdWy_LtMyCY,1072
96
- naeural_client/utils/config.py,sha256=upTCJWpZ-Or8V_71DHrIZ429LKn08KNySKcw0WIADcc,10348
97
+ naeural_client/utils/config.py,sha256=QamxSnF6rqw91VhMWZoeO1EYUKjqWa-D8VFC1tIzTTM,10517
97
98
  naeural_client/utils/dotenv.py,sha256=_AgSo35n7EnQv5yDyu7C7i0kHragLJoCGydHjvOkrYY,2008
98
99
  naeural_client/utils/oracle_sync/oracle_tester.py,sha256=X-923ccjkr6_kzbbiuAAcWSIhMtBDOH2VURjTh55apQ,27235
99
- naeural_client-3.1.0.dist-info/METADATA,sha256=vsuimbxed9PBhcijsT7y795y4TEaztysc2tCnIogIEY,12353
100
- naeural_client-3.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
101
- naeural_client-3.1.0.dist-info/entry_points.txt,sha256=CTua17GUrRa4aXeafezGC9TiWKGKQzwTjQmB2jyj22g,91
102
- naeural_client-3.1.0.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
103
- naeural_client-3.1.0.dist-info/RECORD,,
100
+ naeural_client-3.1.2.dist-info/METADATA,sha256=Bly9lKoB7F77fKWrAwuIgGQTY-rnahBje6pcdPXCvmU,12353
101
+ naeural_client-3.1.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
102
+ naeural_client-3.1.2.dist-info/entry_points.txt,sha256=CTua17GUrRa4aXeafezGC9TiWKGKQzwTjQmB2jyj22g,91
103
+ naeural_client-3.1.2.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
104
+ naeural_client-3.1.2.dist-info/RECORD,,