Skip to content

Commit 9d9f25f

Browse files
Merge pull request #58 from opentensor/release/1.0.3
Release/1.0.3
2 parents acb24dd + 957ec66 commit 9d9f25f

File tree

6 files changed

+35
-10
lines changed

6 files changed

+35
-10
lines changed

CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 1.0.3 /2025-02-20
4+
5+
## What's Changed
6+
* Refactor generate_unique_id by @thewhaleking in https://github.com/opentensor/async-substrate-interface/pull/56
7+
* Backmerge main to staging 103 by @ibraheem-opentensor in https://github.com/opentensor/async-substrate-interface/pull/57
8+
9+
**Full Changelog**: https://github.com/opentensor/async-substrate-interface/compare/v1.0.1...v1.0.3
10+
311
## 1.0.2 /2025-02-19
412

513
## What's Changed

async_substrate_interface/async_substrate.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
SubstrateMixin,
4949
Preprocessed,
5050
)
51-
from async_substrate_interface.utils import hex_to_bytes, json, generate_unique_id
51+
from async_substrate_interface.utils import hex_to_bytes, json, get_next_id
5252
from async_substrate_interface.utils.decoding import (
5353
_determine_if_old_runtime_call,
5454
_bt_decode_to_dict_or_list,
@@ -620,7 +620,7 @@ async def send(self, payload: dict) -> int:
620620
id: the internal ID of the request (incremented int)
621621
"""
622622
# async with self._lock:
623-
original_id = generate_unique_id(json.dumps(payload))
623+
original_id = get_next_id()
624624
# self._open_subscriptions += 1
625625
try:
626626
await self.ws.send(json.dumps({**payload, **{"id": original_id}}))

async_substrate_interface/sync_substrate.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
Preprocessed,
3131
ScaleObj,
3232
)
33-
from async_substrate_interface.utils import hex_to_bytes, json, generate_unique_id
33+
from async_substrate_interface.utils import hex_to_bytes, json, get_next_id
3434
from async_substrate_interface.utils.decoding import (
3535
_determine_if_old_runtime_call,
3636
_bt_decode_to_dict_or_list,
@@ -1684,8 +1684,7 @@ def _make_rpc_request(
16841684

16851685
ws = self.connect(init=False if attempt == 1 else True)
16861686
for payload in payloads:
1687-
payload_str = json.dumps(payload["payload"])
1688-
item_id = generate_unique_id(payload_str)
1687+
item_id = get_next_id()
16891688
ws.send(json.dumps({**payload["payload"], **{"id": item_id}}))
16901689
request_manager.add_request(item_id, payload["id"])
16911690

async_substrate_interface/utils/__init__.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
import importlib
2-
import hashlib
2+
from itertools import cycle
3+
import random
4+
import string
35

6+
id_cycle = cycle(range(1, 999))
47

5-
def generate_unique_id(item: str, length=10):
6-
hashed_value = hashlib.sha256(item.encode()).hexdigest()
7-
return hashed_value[:length]
8+
9+
def get_next_id() -> str:
10+
"""
11+
Generates a pseudo-random ID by returning the next int of a range from 1-998 prepended with
12+
two random ascii characters.
13+
"""
14+
random_letters = "".join(random.choices(string.ascii_letters, k=2))
15+
return f"{random_letters}{next(id_cycle)}"
816

917

1018
def hex_to_bytes(hex_str: str) -> bytes:

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "async-substrate-interface"
3-
version = "1.0.2"
3+
version = "1.0.3"
44
description = "Asyncio library for interacting with substrate. Mostly API-compatible with py-substrate-interface"
55
readme = "README.md"
66
license = { file = "LICENSE" }

tests/unit_tests/test_utils.py

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from async_substrate_interface.utils import get_next_id
2+
from string import ascii_letters
3+
4+
5+
def test_get_next_id():
6+
next_id = get_next_id()
7+
assert next_id[0] in ascii_letters
8+
assert next_id[1] in ascii_letters
9+
assert 0 < int(next_id[2:]) < 999
10+
assert 3 <= len(next_id) <= 5

0 commit comments

Comments
 (0)