py-near 1.1.43__tar.gz → 1.1.45__tar.gz

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.
Files changed (43) hide show
  1. {py_near-1.1.43 → py_near-1.1.45}/PKG-INFO +1 -1
  2. {py_near-1.1.43 → py_near-1.1.45}/pyproject.toml +2 -2
  3. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/providers.py +15 -5
  4. {py_near-1.1.43 → py_near-1.1.45}/LICENSE +0 -0
  5. {py_near-1.1.43 → py_near-1.1.45}/README.md +0 -0
  6. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/__init__.py +0 -0
  7. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/account.py +0 -0
  8. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/constants.py +0 -0
  9. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/__init__.py +0 -0
  10. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/__pycache__/__init__.cpython-311.pyc +0 -0
  11. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/__pycache__/core.cpython-311.pyc +0 -0
  12. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/__pycache__/fts.cpython-311.pyc +0 -0
  13. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/core.py +0 -0
  14. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/ft/__init__.py +0 -0
  15. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/ft/__pycache__/__init__.cpython-311.pyc +0 -0
  16. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/ft/__pycache__/async_client.cpython-311.pyc +0 -0
  17. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/ft/__pycache__/exceptions.cpython-311.pyc +0 -0
  18. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/ft/__pycache__/models.cpython-311.pyc +0 -0
  19. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/ft/async_client.py +0 -0
  20. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/ft/exceptions.py +0 -0
  21. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/ft/models.py +0 -0
  22. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/fts.py +0 -0
  23. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/keypom/__init__.py +0 -0
  24. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/keypom/async_client.py +0 -0
  25. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/keypom/exceptions.py +0 -0
  26. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/keypom/models.py +0 -0
  27. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/staking/__init__.py +0 -0
  28. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/staking/__pycache__/__init__.cpython-311.pyc +0 -0
  29. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/staking/__pycache__/async_client.cpython-311.pyc +0 -0
  30. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/staking/__pycache__/exceptions.cpython-311.pyc +0 -0
  31. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/staking/__pycache__/models.cpython-311.pyc +0 -0
  32. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/staking/async_client.py +0 -0
  33. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/staking/exceptions.py +0 -0
  34. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/dapps/staking/models.py +0 -0
  35. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/exceptions/__init__.py +0 -0
  36. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/exceptions/__pycache__/__init__.cpython-311.pyc +0 -0
  37. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/exceptions/__pycache__/exceptions.cpython-311.pyc +0 -0
  38. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/exceptions/__pycache__/provider.cpython-311.pyc +0 -0
  39. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/exceptions/exceptions.py +0 -0
  40. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/exceptions/provider.py +0 -0
  41. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/models.py +0 -0
  42. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/transactions.py +0 -0
  43. {py_near-1.1.43 → py_near-1.1.45}/src/py_near/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py-near
3
- Version: 1.1.43
3
+ Version: 1.1.45
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
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "py-near"
3
- version = "1.1.43"
3
+ version = "1.1.45"
4
4
  description="Pretty simple and fully asynchronous framework for working with NEAR blockchain"
5
5
  authors = ["pvolnov <petr@herewallet.app>"]
6
6
  readme = "README.md"
@@ -22,7 +22,7 @@ base58 = "^2.1.1"
22
22
 
23
23
  [project]
24
24
  name = "py-near"
25
- version = "1.1.43"
25
+ version = "1.1.45"
26
26
  description = "Pretty simple and fully asynchronous framework for working with NEAR blockchaink"
27
27
  authors = [ {name = "pvolnov", email = "petr@herewallet.app"} ]
28
28
  requires-python = ">=3.7"
@@ -61,10 +61,9 @@ class JsonProvider(object):
61
61
  self._last_rpc_addr_check = 0
62
62
  self.allow_broadcast = allow_broadcast
63
63
  self._timeout = timeout
64
- self.session = aiohttp.ClientSession()
65
64
 
66
65
  async def shutdown(self):
67
- await self.session.close()
66
+ pass
68
67
 
69
68
  async def check_available_rpcs(self):
70
69
  if (
@@ -81,7 +80,8 @@ class JsonProvider(object):
81
80
  await asyncio.sleep(3)
82
81
 
83
82
  if not self._available_rpcs:
84
- raise RpcNotAvailableError("All RPCs are unavailable")
83
+ self._available_rpcs = self._rpc_addresses.copy()
84
+ logger.error("All RPCs are async, reset to default list")
85
85
 
86
86
  async def _check_available_rpcs(self):
87
87
  available_rpcs = []
@@ -93,8 +93,15 @@ class JsonProvider(object):
93
93
  "params": {"finality": "final"},
94
94
  "id": 1,
95
95
  }
96
+ auth_key = "py-near"
97
+ if "@" in rpc_addr:
98
+ auth_key = rpc_addr.split("//")[1].split("@")[0]
99
+ rpc_addr = rpc_addr.replace(auth_key + "@", "")
96
100
  async with aiohttp.ClientSession() as session:
97
- async with session.post(rpc_addr, json=data) as r:
101
+ async with session.post(rpc_addr, json=data, headers={
102
+ "Referer": "https://tgapp.herewallet.app",
103
+ "Authorization": f"Bearer {auth_key}",
104
+ }) as r:
98
105
  if r.status == 200:
99
106
  data = json.loads(await r.text())["result"]
100
107
  if data["sync_info"]["syncing"]:
@@ -119,6 +126,7 @@ class JsonProvider(object):
119
126
  except Exception as e:
120
127
  if rpc_addr in self._available_rpcs:
121
128
  logger.error(f"Remove rpc: {e}")
129
+ logger.error(f"Rpc check error: {e}")
122
130
  self._available_rpcs = available_rpcs
123
131
 
124
132
  @staticmethod
@@ -163,6 +171,7 @@ class JsonProvider(object):
163
171
  ]
164
172
 
165
173
  responses = []
174
+ correct_responses = []
166
175
  while pending and len(pending):
167
176
  done, pending = await asyncio.wait(
168
177
  pending, return_when=asyncio.FIRST_COMPLETED
@@ -175,7 +184,7 @@ class JsonProvider(object):
175
184
  responses.append(result)
176
185
  except Exception as e:
177
186
  logger.warning(e)
178
- if responses:
187
+ if responses and threshold:
179
188
  array = [hash(json.dumps(x)) for x in responses]
180
189
  most_frequent_element = self.most_frequent_by_hash(array)
181
190
  correct_responses = [
@@ -185,6 +194,7 @@ class JsonProvider(object):
185
194
  for task in pending:
186
195
  task.cancel()
187
196
  return most_frequent_element
197
+ raise RpcEmptyResponse(f"Threshold not reached: {len(correct_responses)}/{threshold}")
188
198
  else:
189
199
  for rpc_addr in self._available_rpcs:
190
200
  try:
File without changes
File without changes
File without changes
File without changes