Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hotfixes 3.7.0 #1187

Merged
merged 11 commits into from
Mar 21, 2023
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 @@ -405,7 +416,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