Skip to content

Commit 4b966b3

Browse files
authored
Merge pull request #56 from opentensor/feat/thewhaleking/refactor-unique-id
Refactor generate_unique_id
2 parents 1f3c5f4 + a005386 commit 4b966b3

File tree

4 files changed

+26
-9
lines changed

4 files changed

+26
-9
lines changed

async_substrate_interface/async_substrate.py

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 3 deletions
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

Lines changed: 12 additions & 4 deletions
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:

tests/unit_tests/test_utils.py

Lines changed: 10 additions & 0 deletions
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)