py-near 1.1.30__py3-none-any.whl → 1.1.31__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/providers.py CHANGED
@@ -44,7 +44,11 @@ PROVIDER_CODE_TO_EXCEPTION = {
44
44
 
45
45
 
46
46
  class JsonProvider(object):
47
- def __init__(self, rpc_addr):
47
+ def __init__(self, rpc_addr, allow_broadcast=True):
48
+ """
49
+ :param rpc_addr: str or list of str
50
+ :param allow_broadcast: bool - submit signed transaction to all RPCs
51
+ """
48
52
  if isinstance(rpc_addr, tuple):
49
53
  self._rpc_addresses = ["http://{}:{}".format(*rpc_addr)]
50
54
  elif isinstance(rpc_addr, list):
@@ -53,6 +57,7 @@ class JsonProvider(object):
53
57
  self._rpc_addresses = [rpc_addr]
54
58
  self._available_rpcs = self._rpc_addresses.copy()
55
59
  self._last_rpc_addr_check = 0
60
+ self.allow_broadcast = allow_broadcast
56
61
 
57
62
  async def check_available_rpcs(self):
58
63
  if (
@@ -109,10 +114,12 @@ class JsonProvider(object):
109
114
  logger.error(f"Remove rpc: {e}")
110
115
  self._available_rpcs = available_rpcs
111
116
 
112
- async def call_rpc_request(self, method, params, timeout=TIMEOUT_WAIT_RPC):
117
+ async def call_rpc_request(
118
+ self, method, params, timeout=TIMEOUT_WAIT_RPC, broadcast=False
119
+ ):
113
120
  await self.check_available_rpcs()
114
121
  j = {"method": method, "params": params, "id": "dontcare", "jsonrpc": "2.0"}
115
-
122
+ res = {}
116
123
  for rpc_addr in self._available_rpcs:
117
124
  try:
118
125
  async with aiohttp.ClientSession() as session:
@@ -120,10 +127,14 @@ class JsonProvider(object):
120
127
  rpc_addr,
121
128
  json=j,
122
129
  timeout=timeout,
123
- headers={"Referer": "https://tgapp.herewallet.app/"}, # NEAR RPC requires Referer header
130
+ headers={
131
+ "Referer": "https://tgapp.herewallet.app/"
132
+ }, # NEAR RPC requires Referer header
124
133
  )
125
134
  r.raise_for_status()
126
- return json.loads(await r.text())
135
+ res = json.loads(await r.text())
136
+ if not broadcast:
137
+ return res
127
138
  except (
128
139
  RPCTimeoutError,
129
140
  ClientResponseError,
@@ -133,6 +144,7 @@ class JsonProvider(object):
133
144
  ) as e:
134
145
  logger.error(f"Rpc error: {e}")
135
146
  continue
147
+ return res
136
148
 
137
149
  @staticmethod
138
150
  def get_error_from_response(content: dict):
@@ -156,8 +168,10 @@ class JsonProvider(object):
156
168
  break
157
169
  return error
158
170
 
159
- async def json_rpc(self, method, params, timeout=TIMEOUT_WAIT_RPC):
160
- content = await self.call_rpc_request(method, params, timeout)
171
+ async def json_rpc(self, method, params, timeout=TIMEOUT_WAIT_RPC, broadcast=False):
172
+ content = await self.call_rpc_request(
173
+ method, params, timeout, broadcast=broadcast
174
+ )
161
175
  if not content:
162
176
  raise RpcEmptyResponse("RPC returned empty response")
163
177
 
@@ -173,7 +187,12 @@ class JsonProvider(object):
173
187
  :param timeout: rpc request timeout
174
188
  :return:
175
189
  """
176
- return await self.json_rpc("broadcast_tx_async", [signed_tx], timeout=timeout)
190
+ return await self.json_rpc(
191
+ "broadcast_tx_async",
192
+ [signed_tx],
193
+ timeout=timeout,
194
+ broadcast=self.allow_broadcast,
195
+ )
177
196
 
178
197
  async def wait_for_trx(self, trx_hash, receiver_id) -> TransactionResult:
179
198
  for _ in range(6):
@@ -207,6 +226,7 @@ class JsonProvider(object):
207
226
  "broadcast_tx_commit",
208
227
  [signed_tx],
209
228
  timeout=timeout,
229
+ broadcast=self.allow_broadcast,
210
230
  )
211
231
  return TransactionResult(**res)
212
232
  except RPCTimeoutError:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py-near
3
- Version: 1.1.30
3
+ Version: 1.1.31
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
@@ -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=dNeD6TEYw1AJUO4HZv-1ER2fhdtvtJamyEF82FjF-7A,12758
23
+ py_near/providers.py,sha256=wRY_fHePvlV-jC-j8NTtpHhb8EedpzLFQ1DQROt-brE,13363
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.30.dist-info/LICENSE,sha256=I_GOA9xJ35FiL-KnYXZJdATkbO2KcV2dK2enRGVxzKM,1023
27
- py_near-1.1.30.dist-info/METADATA,sha256=LGfRcvFGVrfjV3OvVhaANss5FPEt7twc7V04Oj6fCnM,4713
28
- py_near-1.1.30.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
29
- py_near-1.1.30.dist-info/RECORD,,
26
+ py_near-1.1.31.dist-info/LICENSE,sha256=I_GOA9xJ35FiL-KnYXZJdATkbO2KcV2dK2enRGVxzKM,1023
27
+ py_near-1.1.31.dist-info/METADATA,sha256=EiR0adIzbk1Dxot0y4nK3jVRkG5oPxrY9YPRsuRK4YQ,4713
28
+ py_near-1.1.31.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
29
+ py_near-1.1.31.dist-info/RECORD,,