naeural-client 3.1.5__py3-none-any.whl → 3.2.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.
@@ -2,10 +2,8 @@ import json
2
2
  import os
3
3
  from pathlib import Path
4
4
  import shutil
5
- from pandas import DataFrame
6
- from datetime import datetime
7
5
 
8
- from naeural_client.const.base import BCct, dAuth
6
+ from naeural_client.const.base import BCct, dAuth, EE_SDK_ALIAS_DEFAULT, EE_SDK_ALIAS_ENV_KEY
9
7
  from naeural_client._ver import __VER__ as version
10
8
 
11
9
  from naeural_client.logging.base_logger import SDK_HOME, BaseLogger
@@ -23,6 +21,16 @@ EE_TARGET_NODE=
23
21
 
24
22
  """
25
23
 
24
+ def _create_bc_engine():
25
+ from naeural_client.bc import DefaultBlockEngine
26
+ from naeural_client import Logger
27
+ return DefaultBlockEngine(
28
+ name="default",
29
+ log=Logger("CLI", silent=True),
30
+ user_config=True, # this is must to use the user config
31
+ )
32
+
33
+
26
34
  def seconds_to_short_format(seconds):
27
35
  """
28
36
  Converts a duration in seconds into a short human-readable format: "Xd HH:MM:SS".
@@ -99,6 +107,25 @@ def get_user_config_file():
99
107
  def get_network():
100
108
  return os.environ.get(dAuth.DAUTH_NET_ENV_KEY, dAuth.DAUTH_SDK_NET_DEFAULT)
101
109
 
110
+ def get_alias():
111
+ return os.environ.get(EE_SDK_ALIAS_ENV_KEY, EE_SDK_ALIAS_DEFAULT)
112
+
113
+ def set_client_alias(alias : str):
114
+ config_file = get_user_config_file()
115
+ # open config_file and update EE_SDK_ALIAS
116
+ with config_file.open("r") as file:
117
+ lines = file.readlines()
118
+ with config_file.open("w") as file:
119
+ found = False
120
+ for line in lines:
121
+ if line.startswith(EE_SDK_ALIAS_ENV_KEY):
122
+ line = f"{EE_SDK_ALIAS_ENV_KEY}={alias}\n"
123
+ found = True
124
+ file.write(line)
125
+ if not found:
126
+ file.write(f"{EE_SDK_ALIAS_ENV_KEY}={alias}\n")
127
+ log_with_color(f"Alias set to {alias}", color='b')
128
+ return
102
129
 
103
130
  def get_networks(args):
104
131
  """
@@ -131,12 +158,21 @@ def get_set_network(args):
131
158
  file.write(f"EE_EVM_NET={net}\n")
132
159
  log_with_color(f"Network set to {net}", color='b')
133
160
  return
161
+
162
+ def get_set_alias(args):
163
+ alias = args.set
164
+ if alias is None:
165
+ log_with_color(f"Client v{version} alias: {get_alias()}", color='b')
166
+ else:
167
+ set_client_alias(alias)
168
+ return
169
+
134
170
 
135
171
 
136
172
  def reset_config(*larg, keep_existing=False, **kwargs):
137
173
  """
138
- Resets the configuration by creating a ~/.naeural folder and populating
139
- ~/.naeural/config with values from a local .env file, if it exists.
174
+ Resets the configuration by creating a ~/.ratio1 folder and populating
175
+ ~/.ratio1/config with values from a local .env file, if it exists.
140
176
  """
141
177
  log_with_color(f"Client v{version} resetting the configuration...", color='y')
142
178
  # Define the target config folder and file
@@ -146,13 +182,13 @@ def reset_config(*larg, keep_existing=False, **kwargs):
146
182
  local_pem = Path(LOCAL_PEM_PATH)
147
183
  target_pem = config_dir / BCct.USER_PEM_FILE
148
184
 
149
- # Create the ~/.naeural folder if it doesn't exist
185
+ # Create the ~/.ratio1 folder if it doesn't exist
150
186
  config_dir.mkdir(parents=True, exist_ok=True)
151
187
 
152
188
  # Check if the current folder has a .env file
153
189
  current_env_file = Path(".env")
154
190
  if current_env_file.exists():
155
- # Copy .env content to ~/.naeural/config
191
+ # Copy .env content to ~/.ratio1/config
156
192
  shutil.copy(current_env_file, config_file)
157
193
  log_with_color(
158
194
  f"Configuration has been reset using {current_env_file} into {config_file}",
@@ -208,19 +244,21 @@ def show_version(silent=True):
208
244
 
209
245
  # TODO: get the epoch from the SDK - AFTER moving get_epoch_id from core
210
246
 
211
-
247
+ log_with_color(f"Ratio1 client v{version}:\n", color='b')
212
248
  log_with_color(f"SDK folder: {user_folder}", color='b')
213
- log_with_color(f"SDK version: {version}", color='b')
214
249
  log_with_color(f"Ratio1 network: {get_network()}", color='b')
215
250
  log_with_color(f"Network Epoch: {sess.bc_engine.get_current_epoch()}", color='b')
216
251
  log_with_color(f"SDK addr: {sess.get_client_address()}", color='b')
217
252
  log_with_color(f"SDK ETH addr: {sess.bc_engine.eth_address}", color='b')
253
+ log_with_color(f"SDK alias: {sess.name}", color='b')
218
254
  return
255
+
256
+
219
257
 
220
258
 
221
259
  def show_config(args):
222
260
  """
223
- Displays the current configuration from ~/.naeural/config.
261
+ Displays the current configuration from ~/.ratio1/config.
224
262
  """
225
263
  show_version(silent=not args.verbose)
226
264
  config_file = get_user_config_file()
@@ -228,79 +266,18 @@ def show_config(args):
228
266
  keys = []
229
267
  with config_file.open("r") as file:
230
268
  lines = file.readlines()
231
- keys = [line.strip().split("=")[0] for line in lines if "=" in line]
232
- log_with_color(f"Current config {config_file} has {len(keys)} keys: {keys}", color='d')
269
+ keys = [line.strip().split("=")[0] for line in lines if "=" in line and not line.strip().startswith("#")]
270
+ commments = [line.strip() for line in lines if line.strip().startswith("#")]
271
+ log_with_color(f"Current config {config_file} has {len(keys)} keys and {len(commments)} comments\n", color='d')
233
272
  else:
234
273
  log_with_color(f"No configuration found at {config_file}. Please run `reset_config` first.", color="r")
235
274
  return
236
275
 
237
- def get_apps(args):
238
- """
239
- Shows the apps running on a given node, if the client is allowed on that node.
240
- Parameters
241
- ----------
242
- args : argparse.Namespace
243
- Arguments passed to the function.
244
276
 
245
- """
246
- verbose = args.verbose
247
- node = args.node
248
- show_full = args.full
249
- as_json = args.json
250
-
251
- # 1. Init session
252
- from naeural_client import Session
253
- sess = Session(
254
- silent=not verbose
255
- )
256
-
257
- # 2. Wait for node to appear online
258
- found = sess.wait_for_node(node)
259
- if not found:
260
- log_with_color(f'Node {node} not found. Please check the configuration.', color='r')
261
- return
262
- # 3. Check if the node is peered with the client
263
- is_allowed = sess.is_peered(node)
264
- if not is_allowed:
265
- log_with_color(f"Node {node} is not peered with the client. Please check the configuration.", color='r')
266
- return
267
- # 4. Wait for node to send the configuration.
268
- sess.wait_for_node_configs(node)
269
- apps = sess.get_active_pipelines(node)
270
- if apps is None:
271
- log_with_color(f"No apps found on node {node}. Client might not be authorized", color='r')
272
- return
273
- # 5. Maybe exclude admin application.
274
- if not show_full:
275
- apps = {k: v for k, v in apps.items() if str(k).lower() != 'admin_pipeline'}
276
- # 6. Show the apps
277
- if as_json:
278
- # Will print a big JSON with all the app configurations.
279
- json_data = {k: v.get_full_config() for k, v in apps.items()}
280
- log_with_color(json.dumps(json_data, indent=2))
281
- else:
282
- lst_plugin_instance_data = []
283
- for pipeline_name, pipeline in apps.items():
284
- for instance in pipeline.lst_plugin_instances:
285
- lst_plugin_instance_data.append({
286
- 'APP': pipeline_name,
287
- 'PLUGIN': instance.signature,
288
- 'ID': instance.instance_id
289
- })
290
- # endfor instances in app
291
- # endfor apps
292
- apps_df = DataFrame(lst_plugin_instance_data)
293
- last_seen = sess.get_last_seen_time(node)
294
- is_online = sess.check_node_online(node)
295
- node_status = 'Online' if is_online else 'Offline'
296
- last_seen_str = datetime.fromtimestamp(last_seen).strftime('%Y-%m-%d %H:%M:%S') if last_seen else None
297
- log_with_color(f"Apps on node {node} [{node_status}| Last seen: {last_seen_str}]:\n{apps_df}", color='b')
298
- # endif show as json
299
- return
300
277
 
301
278
  def load_user_defined_config(verbose=False):
302
279
  """
303
- Loads the ~/.naeural/config file into the current environment.
280
+ Loads the ~/.ratio1/config file into the current environment.
304
281
  """
305
282
  config_file = get_user_config_file()
306
283
  result = False
@@ -340,3 +317,15 @@ def maybe_init_config():
340
317
  return False
341
318
  # config_file still does not exist even after attempting the migration.
342
319
  return load_user_defined_config()
320
+
321
+
322
+
323
+ def get_eth_addr(args):
324
+ """
325
+ Gets the ETH address given a node address.
326
+ """
327
+ node = args.node
328
+ eng = _create_bc_engine()
329
+ eth_addr = eng.get_eth_address(node)
330
+ log_with_color(f"ETH address for node {node}: {eth_addr}", color='b')
331
+ return
@@ -482,7 +482,7 @@ class OracleTester:
482
482
  msg = f"No data available for {node_eth_addr}. Please check the address or contact support."
483
483
  else:
484
484
  for epoch, avail, cert in zip(epochs, avails, certs):
485
- msg += f" - Epoch {f'#{epoch}':>4}: {avail:3} ({cert * 100:5.1f}%)\n"
485
+ msg += f" - Epoch {f'#{epoch}':>4}: {avail:3} ({cert * 100:5.1f}% certainty)\n"
486
486
  # endif data available
487
487
  return msg
488
488
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: naeural_client
3
- Version: 3.1.5
3
+ Version: 3.2.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
@@ -88,18 +88,18 @@ Comprehensive documentation for the Ratio1 SDK is currently a work in progress.
88
88
 
89
89
  Starting with version 2.6+, the Ratio1 SDK automatically performs self-configuration using **dAuth**—the Ratio1 decentralized self-authentication system. To begin integrating with the Ratio1 network, follow these steps:
90
90
 
91
- ### 1. Start a Local Edge Node
91
+ ### 1. Start a Local Edge Node (testnet)
92
92
 
93
93
  Launch a local Ratio1 Edge Node using Docker:
94
94
 
95
95
  ```bash
96
- docker run -d --name=r1node naeural/edge_node:develop
96
+ docker run -d --name=r1node naeural/edge_node:testnet
97
97
  ```
98
98
 
99
99
  if you want to have a persistent volume for the node, you can use the following command:
100
100
 
101
101
  ```bash
102
- docker run -d --name=r1node --rm --pull=always -v r1vol:/edge_node/_local_cache naeural/edge_node:develop
102
+ docker run -d --name=r1node --rm --pull=always -v r1vol:/edge_node/_local_cache naeural/edge_node:testnet
103
103
  ```
104
104
  This way the node will store its data in the `r1vol` volume, and you can stop and start the node without losing data you might have stored in the node via deployed jobs from your SDK. We also added the `--pull=always` flag to ensure that the latest version of the node is always pulled from the Docker Hub.
105
105
 
@@ -1,49 +1,49 @@
1
1
  naeural_client/__init__.py,sha256=YimqgDbjLuywsf8zCWE0EaUXH4MBUrqLxt0TDV558hQ,632
2
- naeural_client/_ver.py,sha256=PbAG-kxJyDZltzev3x8qCNcrsW_v0KI6VtkW9ReP848,330
3
- naeural_client/base_decentra_object.py,sha256=C4iwZTkhKNBS4VHlJs5DfElRYLo4Q9l1V1DNVSk1fyQ,4412
2
+ naeural_client/_ver.py,sha256=NOz7aEJ1WJsh43U4LtIYy2q2MqQlpRN564G-nIQDATM,330
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=m7EYxqRb975H-Y1fTJVSl43zZfH028ZsgH-iyira4a4,116724
8
- naeural_client/base/instance.py,sha256=bDb9y9ez1vLEGGOCAACQoil7Dw-h7UAwCc18IEfqEas,20789
9
- naeural_client/base/pipeline.py,sha256=GYqDd59QQEn7_MTM_dhWsZtdit5q3rECC8HEivWXowo,60068
7
+ naeural_client/base/generic_session.py,sha256=ATB1k_mQ_efvek_ZgsYYex3G4ouhXds3CHRz1_lOKZM,127702
8
+ naeural_client/base/instance.py,sha256=annR9qt6zqzIyf_AVzAIfxWHF8Y_zEjviels2MNfcPM,21916
9
+ naeural_client/base/pipeline.py,sha256=5IJnb8SRiCDJ3IRl02gEMXxjugGedyhu6xESP33GMpo,62521
10
10
  naeural_client/base/plugin_template.py,sha256=7YAFaND2iXoZLgtunjYkFf_TBGieFr3VdNLO3vCqzmM,138795
11
11
  naeural_client/base/responses.py,sha256=ZKBZmRhYDv8M8mQ5C_ahGsQvtWH4b9ImRcuerQdZmNw,6937
12
12
  naeural_client/base/transaction.py,sha256=bfs6td5M0fINgPQNxhrl_AUjb1YiilLDQ-Cd_o3OR_E,5146
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=FQj23D1PrY06NUOARiKQi4cdj0-VxnoYgYDEht8lpr8,158
17
- naeural_client/bc/base.py,sha256=LGUw0oX3ALUHRO8PUWkuRrZMATEjM_y7WHJ11Pw0BcU,44749
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
- naeural_client/bc/evm.py,sha256=jYo50-8RB1e-KK5j1JmMPbp9-UuTe5J_-4Zrf1MAXRc,26108
20
+ naeural_client/bc/evm.py,sha256=knccBb8Whdo2V1E_kmxJVHGV10-_Eoj2AFV7FVjJwj4,26508
21
21
  naeural_client/certs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  naeural_client/certs/a0d9818f.ala.eu-central-1.emqxsl.com.crt,sha256=y-6io0tseyx9-a4Pmde1z1gPULtJNSYUpG_YFkYaMKU,1337
23
23
  naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt,sha256=y-6io0tseyx9-a4Pmde1z1gPULtJNSYUpG_YFkYaMKU,1337
24
24
  naeural_client/certs/s624dbd4.ala.us-east-1.emqxsl.com.crt,sha256=y-6io0tseyx9-a4Pmde1z1gPULtJNSYUpG_YFkYaMKU,1337
25
25
  naeural_client/cli/README.md,sha256=WPdI_EjzAbUW1aPyj1sSR8rLydcJKZtoiaEtklQrjHo,74
26
- naeural_client/cli/cli.py,sha256=MH43FKpUfEG5Y8x8n1KZQh3UaSiLOwyvrWiYp_wLVW4,4070
27
- naeural_client/cli/cli_commands.py,sha256=XfZGVCSD2-rUr2EdQXOxxN2VwQd2f2aTMeSgRzXnuvs,3829
28
- naeural_client/cli/nodes.py,sha256=F7_qGplqOnrU2vLqBYFFn3ifgSoWHarHPrx89I6JI9w,5816
29
- naeural_client/cli/oracles.py,sha256=Y_PzHshfSERS_Utjjtw5d_BsQRdGr6P4L6uW8yTdA0M,4809
26
+ naeural_client/cli/cli.py,sha256=paF9PuS1aSOkZuchMprKQ227acQl1nYVgOsNz7l-OU4,4117
27
+ naeural_client/cli/cli_commands.py,sha256=7yK57VSxFuVvcku4x-STXERA3nnsotPMUJQWW__xPhA,4438
28
+ naeural_client/cli/nodes.py,sha256=8ZbRPIInIXnxGZMiyH_V5M2qRyjwbyR0lEdCUp5M2wI,8384
29
+ naeural_client/cli/oracles.py,sha256=EO24pUfMY4rhTjQMQnGn0cPF02e5se_3KUKl0nDI71E,4925
30
30
  naeural_client/code_cheker/__init__.py,sha256=pwkdeZGVL16ZA4Qf2mRahEhoOvKhL7FyuQbMFLr1E5M,33
31
31
  naeural_client/code_cheker/base.py,sha256=lT5DRIFO5rqzsMNCmdMRfkAeevmezozehyfgmhnKpuI,19074
32
32
  naeural_client/code_cheker/checker.py,sha256=QWupeM7ToancVIq1tRUxRNUrI8B5l5eoY0kDU4-O5aE,7365
33
33
  naeural_client/comm/__init__.py,sha256=za3B2HUKNXzYtjElMgGM9xbxNsdQfFY4JB_YzdyFkVU,76
34
34
  naeural_client/comm/amqp_wrapper.py,sha256=hzj6ih07DnLQy2VSfA88giDIFHaCp9uSdGLTA-IFE4s,8535
35
- naeural_client/comm/mqtt_wrapper.py,sha256=Ig3bFZkCbWd4y_Whn2PPa91Z3aLgNbNPau6Tn5yLPZ8,16167
35
+ naeural_client/comm/mqtt_wrapper.py,sha256=lxXOPFoH9NCtxoAuf4vkA5WZA-Vj1szE_y01N_Dwb8s,16317
36
36
  naeural_client/const/README.md,sha256=6OHesr-f5NBuuJGryEoi_TCu2XdlhfQYlDKx_IJoXeg,177
37
37
  naeural_client/const/__init__.py,sha256=MM6Zib6i7M2qWcMkLtLx14zqU-lE-u2uPHjNvbh2jAM,478
38
38
  naeural_client/const/apps.py,sha256=ePBiJXLuPfFOKuw-LJrT9OWbaodU7QApfDurIPNDoB4,655
39
- naeural_client/const/base.py,sha256=zfJyGGdrNz_OA5i_6cQxH2lEeJ4PO3092NrwM_gZ_U8,5670
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=RpdDhDgB8NgRoFTk28eODigf9y0WcT9lul6mBOD029w,879
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
45
45
  naeural_client/const/misc.py,sha256=VDCwwpf5bl9ltx9rzT2WPVP8B3mZFRufU1tSS5MO240,413
46
- naeural_client/const/payload.py,sha256=u_FLn19EJCDo4UqVfUX9ExikFWE-YFEhkj-Ij8an0VQ,6600
46
+ naeural_client/const/payload.py,sha256=L4AV4ePu_aT85utH9_UujVW_j_Jl9ZpN9o_y1hGT3wQ,6677
47
47
  naeural_client/default/__init__.py,sha256=ozU6CMMuWl0LhG8Ae3LrZ65a6tLrptfscVYGf83zjxM,46
48
48
  naeural_client/default/instance/__init__.py,sha256=_cr6a9gProAZKL9_uz855q2pWt2jHwqE16ed8sm6V8I,653
49
49
  naeural_client/default/instance/chain_dist_custom_job_01_plugin.py,sha256=QtHi3uXKsVs9eyMgbnvBVbMylErhV1Du4X2-7zDL7Y0,1915
@@ -94,11 +94,11 @@ naeural_client/logging/tzlocal/win32.py,sha256=zBoj0vFVrGhnCm_f7xmYzGym4-fV-4Ij2
94
94
  naeural_client/logging/tzlocal/windows_tz.py,sha256=Sv9okktjZJfRGGUOOppsvQuX_eXyXUxkSKCAFmWT9Hw,34203
95
95
  naeural_client/utils/__init__.py,sha256=mAnke3-MeRzz3nhQvhuHqLnpaaCSmDxicd7Ck9uwpmI,77
96
96
  naeural_client/utils/comm_utils.py,sha256=4cS9llRr_pK_3rNgDcRMCQwYPO0kcNU7AdWy_LtMyCY,1072
97
- naeural_client/utils/config.py,sha256=QamxSnF6rqw91VhMWZoeO1EYUKjqWa-D8VFC1tIzTTM,10517
97
+ naeural_client/utils/config.py,sha256=ohZFdIaRLwcWK0sh0loDD7JS9bsC9mqsFYairWZSVNg,9814
98
98
  naeural_client/utils/dotenv.py,sha256=_AgSo35n7EnQv5yDyu7C7i0kHragLJoCGydHjvOkrYY,2008
99
- naeural_client/utils/oracle_sync/oracle_tester.py,sha256=X-923ccjkr6_kzbbiuAAcWSIhMtBDOH2VURjTh55apQ,27235
100
- naeural_client-3.1.5.dist-info/METADATA,sha256=WxmVtxYHKNdNGJek9MXCKaUTPb8aDcG2ALB-7oViUZs,12353
101
- naeural_client-3.1.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
102
- naeural_client-3.1.5.dist-info/entry_points.txt,sha256=CTua17GUrRa4aXeafezGC9TiWKGKQzwTjQmB2jyj22g,91
103
- naeural_client-3.1.5.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
104
- naeural_client-3.1.5.dist-info/RECORD,,
99
+ naeural_client/utils/oracle_sync/oracle_tester.py,sha256=QwfBqXxPIOTVT6WVySkkxPnU3eJVvoyOEbq1ZQRuPRw,27245
100
+ naeural_client-3.2.2.dist-info/METADATA,sha256=uj-o5GbwAvg3Uxx9MKKVUiLYkfCNX2WV8vnkn9aPWTk,12363
101
+ naeural_client-3.2.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
102
+ naeural_client-3.2.2.dist-info/entry_points.txt,sha256=CTua17GUrRa4aXeafezGC9TiWKGKQzwTjQmB2jyj22g,91
103
+ naeural_client-3.2.2.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
104
+ naeural_client-3.2.2.dist-info/RECORD,,