Skip to content

Commit

Permalink
Hotfixes 3.7.0 (#1187)
Browse files Browse the repository at this point in the history
* fix metagraph network name issue

* fix local entrypoint port

* pin scalecode to 1.2.0

* pin jsonschema format-nongpl

* fix delegates_json

* get right dir

* remove extra get delegated

* use lite sync for metagraph by default

* fix blockhash for rpcs

* use lite in sync()
  • Loading branch information
camfairchild authored Mar 21, 2023
1 parent 7b99430 commit 991ac20
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 23 deletions.
2 changes: 1 addition & 1 deletion bittensor/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def turn_console_off():
# Needs to use wss://
__bellagene_entrypoint__ = "wss://parachain.opentensor.ai:443"

__local_entrypoint__ = "ws://127.0.0.1:9945"
__local_entrypoint__ = "ws://127.0.0.1:9944"

__tao_symbol__: str = chr(0x03C4)

Expand Down
21 changes: 19 additions & 2 deletions bittensor/_cli/commands/delegates.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
# DEALINGS IN THE SOFTWARE.

import sys
import os
import json
import argparse
import bittensor
Expand Down Expand Up @@ -46,7 +47,17 @@ def show_delegates( delegates: List['bittensor.DelegateInfo'], width: Optional[i
""" Pretty prints a table of delegates sorted by total stake.
"""
delegates.sort(key=lambda delegate: delegate.total_stake, reverse=True)
registered_delegate_info = json.load( open("delegates.json") )
try:
package_dir = os.path.dirname(bittensor.__file__)
root_dir = os.path.dirname(package_dir)
filename = os.path.join(root_dir, 'delegates.json')
if os.path.exists(filename):
registered_delegate_info = json.load( open(filename, 'r') )
else:
registered_delegate_info = {}
except:
registered_delegate_info = {}

table = Table(show_footer=True, width=width, pad_edge=False, box=None, expand=True)
table.add_column("[overline white]INDEX", str(len(delegates)), footer_style = "overline white", style='bold white')
table.add_column("[overline white]OWNER", style='rgb(50,163,219)', no_wrap=True, justify='left')
Expand Down Expand Up @@ -406,7 +417,13 @@ def run( cli ):
delegates.sort(key=lambda delegate: delegate[0].total_stake, reverse=True)

try:
registered_delegate_info = json.load( open("delegates.json") )
package_dir = os.path.dirname(bittensor.__file__)
root_dir = os.path.dirname(package_dir)
filename = os.path.join(root_dir, 'delegates.json')
if os.path.exists(filename):
registered_delegate_info = json.load( open(filename, 'r') )
else:
registered_delegate_info = {}
except:
registered_delegate_info = {}

Expand Down
13 changes: 8 additions & 5 deletions bittensor/_metagraph/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import bittensor
from . import metagraph_impl
from . import metagraph_mock
from typing import Optional, List
from typing import Optional, List, Union
import bittensor.utils.weight_utils as weight_utils
from .naka_metagraph_impl import Metagraph as naka_metagraph

Expand Down Expand Up @@ -77,11 +77,11 @@ def __new__(
if network == None:
network = config.subtensor.get('network', bittensor.defaults.subtensor.network)

if network =='finney':
return metagraph_impl.Metagraph( network = network, netuid = netuid )
elif network =='nakamoto':
if network =='nakamoto':
config.subtensor.network = 'nakamoto'
return naka_metagraph(config = config, subtensor = subtensor)
else:
return metagraph_impl.Metagraph( network = network, netuid = netuid )

@classmethod
def config(cls) -> 'bittensor.Config':
Expand Down Expand Up @@ -123,7 +123,7 @@ def check_config( cls, config: 'bittensor.Config' ):
pass

@staticmethod
def from_neurons( network: str, netuid: int, info: 'bittensor.SubnetInfo', neurons: List['bittensor.NeuronInfo'], block: int ) -> 'bittensor.Metagraph':
def from_neurons( network: str, netuid: int, info: 'bittensor.SubnetInfo', neurons: Union[List['bittensor.NeuronInfo'], List['bittensor.NeuronInfoLite']], block: int ) -> 'bittensor.Metagraph':
r""" Creates a metagraph from a list of neurons.
Args:
network: (:obj:`str`, required):
Expand Down Expand Up @@ -179,6 +179,9 @@ def from_neurons( network: str, netuid: int, info: 'bittensor.SubnetInfo', neuro
endpoint = bittensor.endpoint.from_neuron(n)
metagraph._endpoint_objs[n.uid] = endpoint
endpoints[n.uid] = endpoint.to_tensor().tolist()
if isinstance(n, bittensor.NeuronInfoLite):
continue
# Weights and bonds only for full neurons.
if len(n.weights) > 0:
w_uids, w_weights = zip(*n.weights)
weights[n.uid] = weight_utils.convert_weight_uids_and_vals_to_tensor( n_total, w_uids, w_weights ).tolist()
Expand Down
7 changes: 5 additions & 2 deletions bittensor/_metagraph/metagraph_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ def load_from_state_dict(self, state_dict: dict ) -> 'Metagraph':
self.info = bittensor.SubnetInfo.from_parameter_dict( state_dict['info'] ) if 'info' in state_dict else None
return self

def sync ( self, netuid: Optional[int] = None, subtensor: 'bittensor.Subtensor' = None, block: Optional[int] = None ) -> 'Metagraph':
def sync ( self, netuid: Optional[int] = None, subtensor: 'bittensor.Subtensor' = None, block: Optional[int] = None, lite: bool = True ) -> 'Metagraph':
r""" Synchronizes this metagraph with the chain state.
Args:
subtensor: (:obj:`bittensor.Subtensor`, optional, defaults to None):
Expand All @@ -353,6 +353,9 @@ def sync ( self, netuid: Optional[int] = None, subtensor: 'bittensor.Subtensor'
Defaults to the netuid of the metagraph object.
block: (:obj:`int`, optional, defaults to None):
block to sync with. If None, syncs with the current block.
lite: (:obj:`bool`, defaults to True):
If true, syncs using the lite version of the metagraph.
Note: lite version does not include weights, bonds
Returns:
self: (:obj:`Metagraph`, required):
Returns self.
Expand All @@ -365,7 +368,7 @@ def sync ( self, netuid: Optional[int] = None, subtensor: 'bittensor.Subtensor'
if netuid == None:
raise ValueError('Metagraph.sync() requires a netuid to sync with.')
# Pull metagraph from chain using subtensor.
metagraph = subtensor.metagraph( netuid = netuid, block = block )
metagraph = subtensor.metagraph( netuid = netuid, block = block, lite = lite )
# Update self with new values.
self.__dict__.update(metagraph.__dict__)
return self
Expand Down
30 changes: 18 additions & 12 deletions bittensor/_subtensor/subtensor_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -621,7 +621,7 @@ def make_substrate_call_with_retry():
block_hash = None if block == None else substrate.get_block_hash( block )
params = []
if block_hash:
params = [block_hash] + params
params = params + [block_hash]
return substrate.rpc_request(
method="subnetInfo_getSubnetsInfo", # custom rpc method
params=params
Expand All @@ -642,7 +642,7 @@ def make_substrate_call_with_retry():
block_hash = None if block == None else substrate.get_block_hash( block )
params = [netuid]
if block_hash:
params = [block_hash] + params
params = params + [block_hash]
return substrate.rpc_request(
method="subnetInfo_getSubnetInfo", # custom rpc method
params=params
Expand Down Expand Up @@ -679,7 +679,7 @@ def make_substrate_call_with_retry(encoded_hotkey: List[int]):
block_hash = None if block == None else substrate.get_block_hash( block )
params = [encoded_hotkey]
if block_hash:
params = [block_hash] + params
params = params + [block_hash]
return substrate.rpc_request(
method="delegateInfo_getDelegate", # custom rpc method
params=params
Expand All @@ -702,7 +702,7 @@ def make_substrate_call_with_retry():
block_hash = None if block == None else substrate.get_block_hash( block )
params = []
if block_hash:
params = [block_hash] + params
params = params + [block_hash]
return substrate.rpc_request(
method="delegateInfo_getDelegates", # custom rpc method
params=params
Expand All @@ -724,7 +724,7 @@ def make_substrate_call_with_retry(encoded_coldkey: List[int]):
block_hash = None if block == None else substrate.get_block_hash( block )
params = [encoded_coldkey]
if block_hash:
params = [block_hash] + params
params = params + [block_hash]
return substrate.rpc_request(
method="delegateInfo_getDelegated", # custom rpc method
params=params
Expand Down Expand Up @@ -802,7 +802,7 @@ def make_substrate_call_with_retry():
block_hash = None if block == None else substrate.get_block_hash( block )
params = [netuid, uid]
if block_hash:
params = [block_hash] + params
params = params + [block_hash]
return substrate.rpc_request(
method="neuronInfo_getNeuron", # custom rpc method
params=params
Expand Down Expand Up @@ -832,7 +832,7 @@ def make_substrate_call_with_retry():
block_hash = None if block == None else substrate.get_block_hash( block )
params = [netuid]
if block_hash:
params = [block_hash] + params
params = params + [block_hash]
return substrate.rpc_request(
method="neuronInfo_getNeurons", # custom rpc method
params=params
Expand Down Expand Up @@ -866,7 +866,7 @@ def make_substrate_call_with_retry():
block_hash = None if block == None else substrate.get_block_hash( block )
params = [netuid, uid]
if block_hash:
params = [block_hash] + params
params = params + [block_hash]
return substrate.rpc_request(
method="neuronInfo_getNeuronLite", # custom rpc method
params=params
Expand Down Expand Up @@ -896,7 +896,7 @@ def make_substrate_call_with_retry():
block_hash = None if block == None else substrate.get_block_hash( block )
params = [netuid]
if block_hash:
params = [block_hash] + params
params = params + [block_hash]
return substrate.rpc_request(
method="neuronInfo_getNeuronsLite", # custom rpc method
params=params
Expand All @@ -910,14 +910,16 @@ def make_substrate_call_with_retry():

return NeuronInfoLite.list_from_vec_u8( result )

def metagraph( self, netuid: int, block: Optional[int] = None ) -> 'bittensor.Metagraph':
def metagraph( self, netuid: int, block: Optional[int] = None, lite: bool = True ) -> 'bittensor.Metagraph':
r""" Returns the metagraph for the subnet.
Args:
netuid ( int ):
The network uid of the subnet to query.
block (Optional[int]):
The block to create the metagraph for.
Defaults to latest.
lite (bool, default=True):
If true, returns a metagraph using the lite sync (no weights, no bonds)
Returns:
metagraph ( `bittensor.Metagraph` ):
The metagraph for the subnet at the block.
Expand All @@ -928,7 +930,11 @@ def metagraph( self, netuid: int, block: Optional[int] = None ) -> 'bittensor.Me
status.start()

# Get neurons.
neurons = self.neurons( netuid = netuid, block = block )
if lite:
neurons = self.neurons_lite( netuid = netuid, block = block )
else:
neurons = self.neurons( netuid = netuid, block = block )

# Get subnet info.
subnet_info: Optional[bittensor.SubnetInfo] = self.get_subnet_info( netuid = netuid, block = block )
if subnet_info == None:
Expand All @@ -939,7 +945,7 @@ def metagraph( self, netuid: int, block: Optional[int] = None ) -> 'bittensor.Me

# Create metagraph.
block_number = self.block

metagraph = bittensor.metagraph.from_neurons( network = self.network, netuid = netuid, info = subnet_info, neurons = neurons, block = block_number )
print("Metagraph subtensor: ", self.network)
return metagraph
Expand Down
3 changes: 2 additions & 1 deletion requirements/prod.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ pyyaml==6.0
rich==12.5.1
retry==0.9.2
requests==2.25.0
scalecodec>=1.2,<1.3
scalecodec==1.2.0
sentencepiece==0.1.97
termcolor==2.1.1
torch==1.13.1
Expand All @@ -43,4 +43,5 @@ qqdm==0.0.7
wandb>=0.11.1,<0.13.4
ansible_vault>=2.1
substrate-interface==1.5.0
jsonschema[format-nongpl]>=4.14.0,<=4.17.0
markupsafe==2.0.1

0 comments on commit 991ac20

Please sign in to comment.