Skip to content

Commit 2983257

Browse files
authored
Merge pull request #2661 from opentensor/feat/roman/using-one-determine_chain_endpoint_and_network
Using one determine_chain_endpoint_and_network
2 parents ebac12e + bd52816 commit 2983257

File tree

4 files changed

+51
-64
lines changed

4 files changed

+51
-64
lines changed

bittensor/core/metagraph.py

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
MetagraphInfoPool,
2020
MetagraphInfoParams,
2121
)
22-
22+
from bittensor.utils import determine_chain_endpoint_and_network
2323
from bittensor.utils.btlogging import logging
2424
from bittensor.utils.registration import torch, use_torch
2525
from bittensor.utils.weight_utils import (
@@ -143,26 +143,6 @@ def latest_block_path(dir_path: str) -> str:
143143
return latest_file_full_path
144144

145145

146-
def determine_chain_endpoint_and_network(network: str) -> tuple[str, str]:
147-
"""
148-
Determine the chain endpoint and network name from the passed arg
149-
150-
Args:
151-
network: The network name (e.g. 'finney', 'test') or
152-
chain endpoint (e.g. wss://entrypoint-finney.opentensor.ai:443)
153-
154-
Returns:
155-
(network name, chain endpoint)
156-
"""
157-
pathless_network = network[:-1] if network.endswith("/") else network
158-
if pathless_network in settings.NETWORK_MAP:
159-
return pathless_network, settings.NETWORK_MAP[pathless_network]
160-
elif pathless_network in settings.REVERSE_NETWORK_MAP:
161-
return settings.REVERSE_NETWORK_MAP[pathless_network], pathless_network
162-
else:
163-
return "unknown", network
164-
165-
166146
class MetagraphMixin(ABC):
167147
"""
168148
The metagraph class is a core component of the Bittensor network, representing the neural graph that forms the

bittensor/core/types.py

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from bittensor.core import settings
88
from bittensor.core.config import Config
99
from bittensor.core.chain_data import NeuronInfo, NeuronInfoLite
10+
from bittensor.utils import determine_chain_endpoint_and_network
1011

1112

1213
class SubtensorMixin(ABC):
@@ -95,8 +96,8 @@ def setup_config(network: Optional[str], config: "Config"):
9596
if check:
9697
network = config_network
9798

98-
evaluated_network, evaluated_endpoint = (
99-
SubtensorMixin.determine_chain_endpoint_and_network(network)
99+
evaluated_network, evaluated_endpoint = determine_chain_endpoint_and_network(
100+
network
100101
)
101102

102103
return networking.get_formatted_ws_endpoint_url(
@@ -166,41 +167,6 @@ def add_args(cls, parser: "argparse.ArgumentParser", prefix: Optional[str] = Non
166167
# re-parsing arguments.
167168
pass
168169

169-
@staticmethod
170-
def determine_chain_endpoint_and_network(
171-
network: str,
172-
) -> tuple[Optional[str], Optional[str]]:
173-
"""Determines the chain endpoint and network from the passed network or chain_endpoint.
174-
175-
Arguments:
176-
network (str): The network flag. The choices are: ``finney`` (main network), ``archive`` (archive network
177-
+300 blocks), ``local`` (local running network), ``test`` (test network).
178-
179-
Returns:
180-
tuple[Optional[str], Optional[str]]: The network and chain endpoint flag. If passed, overrides the
181-
``network`` argument.
182-
"""
183-
184-
if network is None:
185-
return None, None
186-
if network in settings.NETWORKS:
187-
return network, settings.NETWORK_MAP[network]
188-
189-
substrings_map = {
190-
"entrypoint-finney.opentensor.ai": ("finney", settings.FINNEY_ENTRYPOINT),
191-
"test.finney.opentensor.ai": ("test", settings.FINNEY_TEST_ENTRYPOINT),
192-
"archive.chain.opentensor.ai": ("archive", settings.ARCHIVE_ENTRYPOINT),
193-
"subvortex": ("subvortex", settings.SUBVORTEX_ENTRYPOINT),
194-
"127.0.0.1": ("local", settings.LOCAL_ENTRYPOINT),
195-
"localhost": ("local", settings.LOCAL_ENTRYPOINT),
196-
}
197-
198-
for substring, result in substrings_map.items():
199-
if substring in network:
200-
return result
201-
202-
return "unknown", network
203-
204170

205171
class AxonServeCallParams:
206172
def __init__(

bittensor/utils/__init__.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from bittensor_wallet.errors import KeyFileError, PasswordError
1313
from scalecodec import ss58_decode, is_valid_ss58_address as _is_valid_ss58_address
1414

15+
from bittensor.core import settings
1516
from bittensor.core.settings import SS58_FORMAT
1617
from bittensor.utils.btlogging import logging
1718
from .registration import torch, use_torch
@@ -410,3 +411,38 @@ def unlock_key(wallet: "Wallet", unlock_type="coldkey") -> "UnlockStatus":
410411
except KeyFileError:
411412
err_msg = f"{unlock_type.capitalize()} keyfile is corrupt, non-writable, or non-readable, or non-existent."
412413
return UnlockStatus(False, err_msg)
414+
415+
416+
def determine_chain_endpoint_and_network(
417+
network: str,
418+
) -> tuple[Optional[str], Optional[str]]:
419+
"""Determines the chain endpoint and network from the passed network or chain_endpoint.
420+
421+
Arguments:
422+
network (str): The network flag. The choices are: ``finney`` (main network), ``archive`` (archive network
423+
+300 blocks), ``local`` (local running network), ``test`` (test network).
424+
425+
Returns:
426+
tuple[Optional[str], Optional[str]]: The network and chain endpoint flag. If passed, overrides the
427+
``network`` argument.
428+
"""
429+
430+
if network is None:
431+
return None, None
432+
if network in settings.NETWORKS:
433+
return network, settings.NETWORK_MAP[network]
434+
435+
substrings_map = {
436+
"entrypoint-finney.opentensor.ai": ("finney", settings.FINNEY_ENTRYPOINT),
437+
"test.finney.opentensor.ai": ("test", settings.FINNEY_TEST_ENTRYPOINT),
438+
"archive.chain.opentensor.ai": ("archive", settings.ARCHIVE_ENTRYPOINT),
439+
"subvortex": ("subvortex", settings.SUBVORTEX_ENTRYPOINT),
440+
"127.0.0.1": ("local", network),
441+
"localhost": ("local", network),
442+
}
443+
444+
for substring, result in substrings_map.items():
445+
if substring in network and validate_chain_endpoint(network):
446+
return result
447+
448+
return "unknown", network

tests/unit_tests/test_subtensor.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@
3434
from bittensor.core.settings import version_as_int
3535
from bittensor.core.subtensor import Subtensor
3636
from bittensor.core.types import AxonServeCallParams
37-
from bittensor.utils import Certificate, u16_normalized_float, u64_normalized_float
37+
from bittensor.utils import (
38+
Certificate,
39+
u16_normalized_float,
40+
u64_normalized_float,
41+
determine_chain_endpoint_and_network,
42+
)
3843
from bittensor.utils.balance import Balance
3944

4045
U16_MAX = 65535
@@ -269,8 +274,10 @@ def mock_add_argument(*args, **kwargs):
269274
"archive",
270275
settings.ARCHIVE_ENTRYPOINT,
271276
),
272-
("127.0.0.1", "local", settings.LOCAL_ENTRYPOINT),
273-
("localhost", "local", settings.LOCAL_ENTRYPOINT),
277+
("127.0.0.1", "local", "127.0.0.1"),
278+
("localhost", "local", "localhost"),
279+
("ws://127.0.0.1:9945", "local", "ws://127.0.0.1:9945"),
280+
("ws://localhost:9945", "local", "ws://localhost:9945"),
274281
# Edge cases
275282
(None, None, None),
276283
("unknown", "unknown", "unknown"),
@@ -280,9 +287,7 @@ def test_determine_chain_endpoint_and_network(
280287
network, expected_network, expected_endpoint
281288
):
282289
# Act
283-
result_network, result_endpoint = Subtensor.determine_chain_endpoint_and_network(
284-
network
285-
)
290+
result_network, result_endpoint = determine_chain_endpoint_and_network(network)
286291

287292
# Assert
288293
assert result_network == expected_network

0 commit comments

Comments
 (0)