py-near 1.1.24__py3-none-any.whl → 1.1.26__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.
py_near/account.py CHANGED
@@ -157,6 +157,9 @@ class Account(object):
157
157
  except JsonProviderError as e:
158
158
  e.trx_hash = trx_hash
159
159
  raise
160
+ except Exception as e:
161
+ e.trx_hash = trx_hash
162
+ raise
160
163
  finally:
161
164
  await self._free_signers.put(pk)
162
165
 
py_near/providers.py CHANGED
@@ -75,31 +75,35 @@ class JsonProvider(object):
75
75
  available_rpcs = []
76
76
  for rpc_addr in self._rpc_addresses:
77
77
  try:
78
+ data = {
79
+ "jsonrpc": "2.0",
80
+ "method": "status",
81
+ "params": {"finality": "final"},
82
+ "id": 1,
83
+ }
78
84
  async with aiohttp.ClientSession() as session:
79
- r = await session.get(
80
- "%s/status" % rpc_addr, timeout=TIMEOUT_WAIT_RPC
81
- )
82
- if r.status == 200:
83
- data = json.loads(await r.text())
84
- if data["sync_info"]["syncing"]:
85
- last_block_ts = datetime.datetime.fromisoformat(
86
- data["sync_info"]["latest_block_time"]
87
- )
88
- diff = (
89
- datetime.datetime.utcnow().timestamp()
90
- - last_block_ts.timestamp()
91
- )
92
- is_syncing = diff > 60
85
+ async with session.post(rpc_addr, json=data) as r:
86
+ if r.status == 200:
87
+ data = json.loads(await r.text())['result']
88
+ if data["sync_info"]["syncing"]:
89
+ last_block_ts = datetime.datetime.fromisoformat(
90
+ data["sync_info"]["latest_block_time"]
91
+ )
92
+ diff = (
93
+ datetime.datetime.utcnow().timestamp()
94
+ - last_block_ts.timestamp()
95
+ )
96
+ is_syncing = diff > 60
97
+ else:
98
+ is_syncing = False
99
+ if is_syncing:
100
+ logger.error(f"Remove async RPC : {rpc_addr} ({diff})")
101
+ continue
102
+ available_rpcs.append(rpc_addr)
93
103
  else:
94
- is_syncing = False
95
- if is_syncing:
96
- logger.error(f"Remove async RPC : {rpc_addr} ({diff})")
97
- continue
98
- available_rpcs.append(rpc_addr)
99
- else:
100
- logger.error(
101
- f"Remove rpc because of error {r.status}: {rpc_addr}"
102
- )
104
+ logger.error(
105
+ f"Remove rpc because of error {r.status}: {rpc_addr}"
106
+ )
103
107
  except Exception as e:
104
108
  if rpc_addr in self._available_rpcs:
105
109
  logger.error(f"Remove rpc: {e}")
@@ -208,12 +212,16 @@ class JsonProvider(object):
208
212
  await self.check_available_rpcs()
209
213
  for rpc_addr in self._available_rpcs:
210
214
  try:
215
+ data = {
216
+ "jsonrpc": "2.0",
217
+ "method": "status",
218
+ "params": {"finality": "final"},
219
+ "id": 1,
220
+ }
211
221
  async with aiohttp.ClientSession() as session:
212
- r = await session.get(
213
- f"{rpc_addr}/status", timeout=TIMEOUT_WAIT_RPC
214
- )
215
- if r.status == 200:
216
- return json.loads(await r.text())
222
+ async with session.post(rpc_addr, json=data) as r:
223
+ if r.status == 200:
224
+ return json.loads(await r.text())['result']
217
225
  except (
218
226
  ClientResponseError,
219
227
  ClientConnectorError,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py-near
3
- Version: 1.1.24
3
+ Version: 1.1.26
4
4
  Summary: Pretty simple and fully asynchronous framework for working with NEAR blockchain
5
5
  Author: pvolnov
6
6
  Author-email: petr@herewallet.app
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3.10
13
13
  Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Requires-Dist: aiohttp (>=3.7.4,<4.0.0)
16
- Requires-Dist: ed25519 (>=1.5,<2.0)
16
+ Requires-Dist: ed26519 (>=1.5,<2.0)
17
17
  Requires-Dist: py-near-primitives (>=0.2.3,<0.3.0)
18
18
  Description-Content-Type: text/markdown
19
19
 
@@ -1,5 +1,5 @@
1
1
  py_near/__init__.py,sha256=t5fAxjaU8dN8xpQR2vz0ZGhfTkdVy2RCbkhJhZFglk4,50
2
- py_near/account.py,sha256=91rZJ-Bz0gGedXbJqLAo3zvYvFauI_fYx2QtZq5N7bw,16572
2
+ py_near/account.py,sha256=sw5bqGUFFOkqc8COGB4GYUM9YzSgLO_jIUli4RTQEQo,16655
3
3
  py_near/constants.py,sha256=inaWIuwmF1EB5JSB0ynnZY5rKY_QsxhF9KuCOhPsM6k,164
4
4
  py_near/dapps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  py_near/dapps/core.py,sha256=LtN9aW2gw2mvEdhzQcQJIidtjv-XL1xjb0LK8DzqtqE,231
@@ -20,10 +20,10 @@ py_near/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
20
20
  py_near/exceptions/exceptions.py,sha256=DEFipaAHm0y7oCuN2QKzHsiQvUTUQVl-Ce36Ag7n7hs,5509
21
21
  py_near/exceptions/provider.py,sha256=K-wexgjPJ8sw42JePwaP7R5dJEIn9DoFJRvVcURsx6s,7718
22
22
  py_near/models.py,sha256=GZQD1TKGWlwqsJsKRXrVNBjCdAIpk7GQypU-QOtAPFs,11533
23
- py_near/providers.py,sha256=h5f5LTPkGdIdbTs5pzdVVddc5QExrxl-HKejYgobM5k,12163
23
+ py_near/providers.py,sha256=a6u-JMmHnYAYKzHd1kde2DFG5afHRj6CUeo6x25isYk,12549
24
24
  py_near/transactions.py,sha256=QAXegv2JpKISk92NaChtIH6-QPHrcWbrwdKH_lH4TsU,3186
25
25
  py_near/utils.py,sha256=FirRH93ydH1cwjn0-sNrZeIn3BRD6QHedrP2VkAdJ6g,126
26
- py_near-1.1.24.dist-info/LICENSE,sha256=I_GOA9xJ35FiL-KnYXZJdATkbO2KcV2dK2enRGVxzKM,1023
27
- py_near-1.1.24.dist-info/METADATA,sha256=7CbjCLqf6fgvCf7o0vWENivMwUMTDGNpTCnwWxJdkPw,4713
28
- py_near-1.1.24.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
29
- py_near-1.1.24.dist-info/RECORD,,
26
+ py_near-1.1.26.dist-info/LICENSE,sha256=I_GOA9xJ35FiL-KnYXZJdATkbO2KcV2dK2enRGVxzKM,1023
27
+ py_near-1.1.26.dist-info/METADATA,sha256=hv6OV_6SGxW8SV2njEBWEmmWFB7HV2oDDG6wmhgKawo,4713
28
+ py_near-1.1.26.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
29
+ py_near-1.1.26.dist-info/RECORD,,