fix: hanzo-network import issues and enable compute node

- Fixed all relative imports in hanzo_network package
- Temporarily disabled problematic distributed imports to unblock LocalComputeNode
- hanzo node command now works properly
- Fixed double welcome message in interactive mode
- Package can be imported successfully from hanzo CLI
This commit is contained in:
2025-08-06 20:20:16 -05:00
parent 45d9b114df
commit 5319474af9
49 changed files with 201 additions and 143 deletions
+57
View File
@@ -0,0 +1,57 @@
#!/usr/bin/env python3
"""Fix all imports in hanzo_network package to use relative imports."""
import os
import re
from pathlib import Path
def fix_imports_in_file(filepath):
"""Fix imports in a single file."""
with open(filepath, 'r') as f:
content = f.read()
original_content = content
# Replace absolute imports with relative imports
# For files in the main hanzo_network directory
if '/hanzo_network/' in str(filepath) and not '/hanzo_network/core/' in str(filepath):
content = re.sub(r'from hanzo_network\.', 'from .', content)
content = re.sub(r'import hanzo_network\.', 'from . import ', content)
# For files in subdirectories like core/
if '/hanzo_network/core/' in str(filepath):
# Replace imports from hanzo_network.core with relative
content = re.sub(r'from hanzo_network\.core\.', 'from .', content)
# Replace imports from hanzo_network. with parent relative
content = re.sub(r'from hanzo_network\.', 'from ..', content)
# For files in other subdirectories
for subdir in ['distributed', 'inference', 'llm', 'download', 'topology', 'tools']:
if f'/hanzo_network/{subdir}/' in str(filepath):
content = re.sub(r'from hanzo_network\.' + subdir + r'\.', 'from .', content)
content = re.sub(r'from hanzo_network\.', 'from ..', content)
if content != original_content:
with open(filepath, 'w') as f:
f.write(content)
return True
return False
def main():
base_path = Path("/Users/z/work/hanzo/python-sdk/pkg/hanzo-network/src/hanzo_network")
# Find all Python files
python_files = list(base_path.rglob("*.py"))
print(f"Found {len(python_files)} Python files to check")
fixed_count = 0
for filepath in python_files:
if fix_imports_in_file(filepath):
fixed_count += 1
print(f"Fixed imports in: {filepath.relative_to(base_path.parent.parent)}")
print(f"\nFixed {fixed_count} files")
if __name__ == "__main__":
main()
+17 -16
View File
@@ -5,17 +5,18 @@ inspired by Inngest Agent Kit but adapted for Python and integrated with Hanzo M
Now includes both local AI compute and distributed networking capabilities powered by hanzo.network.
"""
from hanzo_network.core.agent import Agent, create_agent
from hanzo_network.core.network import Network, create_network
from hanzo_network.core.router import Router, create_router, create_routing_agent
from hanzo_network.core.state import NetworkState
from hanzo_network.core.tool import Tool, create_tool
from hanzo_network.distributed_network import DistributedNetwork, DistributedNetworkConfig, create_distributed_network
from hanzo_network.local_network import create_local_agent, create_local_distributed_network, check_local_llm_status
from .core.agent import Agent, create_agent
from .core.network import Network, create_network
from .core.router import Router, create_router, create_routing_agent
from .core.state import NetworkState
from .core.tool import Tool, create_tool
# Temporarily disable problematic imports
# from .distributed_network import DistributedNetwork, DistributedNetworkConfig, create_distributed_network
# from .local_network import create_local_agent, create_local_distributed_network, check_local_llm_status
# Local compute capabilities
try:
from hanzo_network.local_compute import (
from .local_compute import (
LocalComputeNode,
LocalComputeOrchestrator,
InferenceRequest,
@@ -42,20 +43,20 @@ __all__ = [
"Router",
"NetworkState",
"Tool",
# Distributed classes
"DistributedNetwork",
"DistributedNetworkConfig",
# Distributed classes (temporarily disabled)
# "DistributedNetwork",
# "DistributedNetworkConfig",
# Factory functions
"create_agent",
"create_network",
"create_distributed_network",
# "create_distributed_network",
"create_router",
"create_routing_agent",
"create_tool",
# Local network helpers
"create_local_agent",
"create_local_distributed_network",
"check_local_llm_status",
# Local network helpers (temporarily disabled)
# "create_local_agent",
# "create_local_distributed_network",
# "check_local_llm_status",
# Local compute (if available)
"LOCAL_COMPUTE_AVAILABLE",
"LocalComputeNode",
@@ -4,8 +4,8 @@ from typing import Any, Dict, List, Optional, Callable, Union
from dataclasses import dataclass, field
from enum import Enum
from hanzo_network.core.tool import Tool
from hanzo_network.core.state import NetworkState, Message
from .tool import Tool
from .state import NetworkState, Message
class ModelProvider(Enum):
@@ -163,7 +163,7 @@ class Agent:
# Handle local LLM providers using hanzo/net
if self.model and self.model.provider == ModelProvider.LOCAL:
from hanzo_network.llm import HanzoNetProvider
from ..llm import HanzoNetProvider
# Determine engine type based on model config
engine_type = "dummy" # Default for testing
@@ -4,12 +4,12 @@ from typing import Any, Dict, List, Optional, Union, TypeVar, Generic
from dataclasses import dataclass, field
from datetime import datetime
from hanzo_network.core.agent import Agent
from hanzo_network.core.router import (
from .agent import Agent
from .router import (
Router, RouterFunction, RouterArgs, RoutingAgent,
get_default_routing_agent
)
from hanzo_network.core.state import NetworkState
from .state import NetworkState
T = TypeVar('T')
@@ -4,8 +4,8 @@ from typing import Any, Callable, Dict, Optional, Union, Protocol
from dataclasses import dataclass
from enum import Enum
from hanzo_network.core.agent import Agent, ModelConfig
from hanzo_network.core.state import NetworkState
from .agent import Agent, ModelConfig
from .state import NetworkState
class RouterDecision(Enum):
@@ -227,7 +227,7 @@ def get_default_routing_agent(
Default RoutingAgent
"""
if not model:
from hanzo_network.core.agent import ModelConfig, ModelProvider
from .agent import ModelConfig, ModelProvider
# Use local dummy model for default router
model = ModelConfig(
provider=ModelProvider.LOCAL,
@@ -7,10 +7,10 @@ from . import node_service_pb2
from . import node_service_pb2_grpc
from ..peer_handle import PeerHandle
from hanzo_network.inference.shard import Shard
from hanzo_network.topology.topology import Topology
from hanzo_network.topology.device_capabilities import DeviceCapabilities, DeviceFlops
from hanzo_network.helpers import DEBUG
from .inference.shard import Shard
from .topology.topology import Topology
from .topology.device_capabilities import DeviceCapabilities, DeviceFlops
from .helpers import DEBUG
import json
import platform
@@ -8,8 +8,8 @@ import platform
from . import node_service_pb2
from . import node_service_pb2_grpc
from net import DEBUG
from hanzo_network.inference.shard import Shard
from hanzo_network.orchestration import Node
from .inference.shard import Shard
from .orchestration import Node
import json
if platform.system().lower() == "darwin" and platform.machine().lower() == "arm64":
@@ -3,11 +3,11 @@ import asyncio
from typing import Dict, List, Callable, Optional
from concurrent.futures import ThreadPoolExecutor
from hanzo_network.networking.discovery import Discovery
from hanzo_network.topology.device_capabilities import DeviceCapabilities
from hanzo_network.networking.manual.network_topology_config import NetworkTopology, PeerConfig
from hanzo_network.helpers import DEBUG_DISCOVERY
from hanzo_network.networking.peer_handle import PeerHandle
from .networking.discovery import Discovery
from .topology.device_capabilities import DeviceCapabilities
from .networking.manual.network_topology_config import NetworkTopology, PeerConfig
from .helpers import DEBUG_DISCOVERY
from .networking.peer_handle import PeerHandle
class ManualDiscovery(Discovery):
@@ -1,7 +1,7 @@
from typing import Dict
from pydantic import BaseModel, ValidationError
from hanzo_network.topology.device_capabilities import DeviceCapabilities
from .topology.device_capabilities import DeviceCapabilities
class PeerConfig(BaseModel):
@@ -2,11 +2,11 @@ import json
import asyncio
import unittest
from unittest import mock
from hanzo_network.networking.manual.manual_discovery import ManualDiscovery
from hanzo_network.networking.manual.network_topology_config import NetworkTopology
from hanzo_network.networking.grpc.grpc_peer_handle import GRPCPeerHandle
from hanzo_network.networking.grpc.grpc_server import GRPCServer
from hanzo_network.orchestration.node import Node
from .networking.manual.manual_discovery import ManualDiscovery
from .networking.manual.network_topology_config import NetworkTopology
from .networking.grpc.grpc_peer_handle import GRPCPeerHandle
from .networking.grpc.grpc_server import GRPCServer
from .orchestration.node import Node
root_path = "./exo/networking/manual/test_data/test_config.json"
@@ -1,6 +1,6 @@
import unittest
from hanzo_network.networking.manual.network_topology_config import NetworkTopology
from .networking.manual.network_topology_config import NetworkTopology
root_path = "./exo/networking/manual/test_data/"
@@ -1,9 +1,9 @@
"""Minimal discovery implementation for testing."""
from typing import List, Dict, Any, Optional
from hanzo_network.distributed.discovery import Discovery
from hanzo_network.distributed.simplified_peer_handle import SimplifiedPeerHandle
from hanzo_network.topology.device_capabilities import DeviceCapabilities
from .discovery import Discovery
from .simplified_peer_handle import SimplifiedPeerHandle
from ..device_capabilities import DeviceCapabilities
class MinimalPeerHandle(SimplifiedPeerHandle):
@@ -1,9 +1,9 @@
from abc import ABC, abstractmethod
from typing import Optional, List
import numpy as np
from hanzo_network.inference.shard import Shard
from hanzo_network.topology.device_capabilities import DeviceCapabilities
from hanzo_network.topology.topology import Topology
from ..inference.shard import Shard
from ..topology.device_capabilities import DeviceCapabilities
from ..topology.topology import Topology
class PeerHandle(ABC):
@@ -2,7 +2,7 @@
from abc import ABC, abstractmethod
from typing import Optional, Any, Dict
from hanzo_network.topology.device_capabilities import DeviceCapabilities
from ..topology.device_capabilities import DeviceCapabilities
class SimplifiedPeerHandle(ABC):
@@ -2,10 +2,10 @@ import asyncio
import time
import traceback
from typing import List, Dict, Callable, Tuple
from hanzo_network.networking.discovery import Discovery
from hanzo_network.networking.peer_handle import PeerHandle
from hanzo_network.topology.device_capabilities import DeviceCapabilities, device_capabilities, UNKNOWN_DEVICE_CAPABILITIES
from hanzo_network.helpers import DEBUG, DEBUG_DISCOVERY
from .networking.discovery import Discovery
from .networking.peer_handle import PeerHandle
from .topology.device_capabilities import DeviceCapabilities, device_capabilities, UNKNOWN_DEVICE_CAPABILITIES
from .helpers import DEBUG, DEBUG_DISCOVERY
from .tailscale_helpers import get_device_id, update_device_attributes, get_device_attributes, get_tailscale_devices, Device
@@ -3,8 +3,8 @@ import asyncio
import aiohttp
import re
from typing import Dict, Any, Tuple, List, Optional
from hanzo_network.helpers import DEBUG_DISCOVERY
from hanzo_network.topology.device_capabilities import DeviceCapabilities, DeviceFlops
from .helpers import DEBUG_DISCOVERY
from .topology.device_capabilities import DeviceCapabilities, DeviceFlops
from datetime import datetime, timezone
@@ -1,8 +1,8 @@
import os
import asyncio
import unittest
from hanzo_network.networking.tailscale.tailscale_discovery import TailscaleDiscovery
from hanzo_network.networking.peer_handle import PeerHandle
from .networking.tailscale.tailscale_discovery import TailscaleDiscovery
from .networking.peer_handle import PeerHandle
class TestTailscaleDiscovery(unittest.IsolatedAsyncioTestCase):
@@ -1,10 +1,10 @@
import asyncio
import unittest
from unittest import mock
from hanzo_network.networking.udp.udp_discovery import UDPDiscovery
from hanzo_network.networking.grpc.grpc_peer_handle import GRPCPeerHandle
from hanzo_network.networking.grpc.grpc_server import GRPCServer
from hanzo_network.orchestration.node import Node
from .networking.udp.udp_discovery import UDPDiscovery
from .networking.grpc.grpc_peer_handle import GRPCPeerHandle
from .networking.grpc.grpc_server import GRPCServer
from .orchestration.node import Node
class TestUDPDiscovery(unittest.IsolatedAsyncioTestCase):
@@ -4,10 +4,10 @@ import socket
import time
import traceback
from typing import List, Dict, Callable, Tuple, Coroutine, Optional
from hanzo_network.networking.discovery import Discovery
from hanzo_network.networking.peer_handle import PeerHandle
from hanzo_network.topology.device_capabilities import DeviceCapabilities, device_capabilities, UNKNOWN_DEVICE_CAPABILITIES
from hanzo_network.helpers import DEBUG, DEBUG_DISCOVERY, get_all_ip_addresses_and_interfaces, get_interface_priority_and_type
from .networking.discovery import Discovery
from .networking.peer_handle import PeerHandle
from .topology.device_capabilities import DeviceCapabilities, device_capabilities, UNKNOWN_DEVICE_CAPABILITIES
from .helpers import DEBUG, DEBUG_DISCOVERY, get_all_ip_addresses_and_interfaces, get_interface_priority_and_type
class ListenProtocol(asyncio.DatagramProtocol):
@@ -6,9 +6,9 @@ import socket
import time
from typing import List, Dict, Tuple
from hanzo_network.distributed.discovery import Discovery
from hanzo_network.distributed.minimal_discovery import MinimalPeerHandle
from hanzo_network.topology.device_capabilities import DeviceCapabilities
from .discovery import Discovery
from .minimal_discovery import MinimalPeerHandle
from ..device_capabilities import DeviceCapabilities
def get_broadcast_address(ip_addr: str) -> str:
@@ -4,15 +4,15 @@ import asyncio
from typing import Any, Dict, List, Optional, Union, TypeVar
from dataclasses import dataclass
from hanzo_network.core.network import Network, NetworkConfig
from hanzo_network.core.agent import Agent
from hanzo_network.core.router import Router, RouterFunction, RoutingAgent
from hanzo_network.core.state import NetworkState
from hanzo_network.distributed.discovery import Discovery
from hanzo_network.distributed.simplified_peer_handle import SimplifiedPeerHandle as PeerHandle
from hanzo_network.distributed.udp_discovery import UDPDiscovery
from hanzo_network.distributed.grpc_server import GRPCServer
from hanzo_network.topology.device_capabilities import DeviceCapabilities, device_capabilities
from .core.network import Network, NetworkConfig
from .core.agent import Agent
from .core.router import Router, RouterFunction, RoutingAgent
from .core.state import NetworkState
from .distributed.discovery import Discovery
from .distributed.simplified_peer_handle import SimplifiedPeerHandle as PeerHandle
from .distributed.udp_discovery import UDPDiscovery
from .distributed.grpc_server import GRPCServer
from .topology.device_capabilities import DeviceCapabilities, device_capabilities
T = TypeVar('T')
@@ -1,13 +1,13 @@
from hanzo_network.inference.inference_engine import InferenceEngine
from hanzo_network.inference.shard import Shard
from hanzo_network.inference.tinygrad.inference import TinygradDynamicShardInferenceEngine
from .inference.inference_engine import InferenceEngine
from .inference.shard import Shard
from .inference.tinygrad.inference import TinygradDynamicShardInferenceEngine
import asyncio
import numpy as np
# An inference engine should work the same for any number of Shards, as long as the Shards are continuous.
async def test_inference_engine(inference_engine_1: InferenceEngine, inference_engine_2: InferenceEngine, model_id: str):
from hanzo_network.inference.tinygrad.inference import Tokenizer
from .inference.tinygrad.inference import Tokenizer
from pathlib import Path
_tokenizer = Tokenizer(str(Path(model_id)/"tokenizer.model"))
@@ -1,8 +1,8 @@
from typing import Optional
import numpy as np
from hanzo_network.inference.inference_engine import InferenceEngine
from hanzo_network.inference.shard import Shard
from hanzo_network.inference.tokenizers import DummyTokenizer
from .inference.inference_engine import InferenceEngine
from .inference.shard import Shard
from .inference.tokenizers import DummyTokenizer
class DummyInferenceEngine(InferenceEngine):
def __init__(self):
@@ -1,11 +1,11 @@
import numpy as np
import os
from hanzo_network.helpers import DEBUG # Make sure to import DEBUG
from .helpers import DEBUG # Make sure to import DEBUG
from typing import Optional
from abc import ABC, abstractmethod
from .shard import Shard
from hanzo_network.download.shard_download import ShardDownloader
from .download.shard_download import ShardDownloader
class InferenceEngine(ABC):
@@ -62,16 +62,16 @@ def get_inference_engine(inference_engine_name: str, shard_downloader: ShardDown
if DEBUG >= 2:
print(f"get_inference_engine called with: {inference_engine_name}")
if inference_engine_name == "mlx":
from hanzo_network.inference.mlx.sharded_inference_engine import MLXDynamicShardInferenceEngine
from .inference.mlx.sharded_inference_engine import MLXDynamicShardInferenceEngine
return MLXDynamicShardInferenceEngine(shard_downloader)
elif inference_engine_name == "tinygrad":
from hanzo_network.inference.tinygrad.inference import TinygradDynamicShardInferenceEngine
from .inference.tinygrad.inference import TinygradDynamicShardInferenceEngine
import tinygrad.helpers
tinygrad.helpers.DEBUG.value = int(os.getenv("TINYGRAD_DEBUG", default="0"))
return TinygradDynamicShardInferenceEngine(shard_downloader)
elif inference_engine_name == "dummy":
from hanzo_network.inference.dummy_inference_engine import DummyInferenceEngine
from .inference.dummy_inference_engine import DummyInferenceEngine
return DummyInferenceEngine()
raise ValueError(f"Unsupported inference engine: {inference_engine_name}")
@@ -17,7 +17,7 @@ from .sd_models.clip import ModelArgs as CLIPArgs
from .sd_models.unet import UNetConfig, UNetModel
from dataclasses import dataclass, field
from hanzo_network.inference.shard import Shard
from .inference.shard import Shard
@dataclass
class DiffusionConfig:
@@ -7,7 +7,7 @@ import mlx.nn as nn
from mlx_lm.models.cache import KVCache
from mlx_lm.models.deepseek_v2 import ModelArgs, DeepseekV2DecoderLayer
from .base import IdentityBlock
from hanzo_network.inference.shard import Shard
from .inference.shard import Shard
@dataclass
@@ -10,7 +10,7 @@ from mlx_lm.models.deepseek_v3 import (
DeepseekV3DecoderLayer,
)
from .base import IdentityBlock
from hanzo_network.inference.shard import Shard
from .inference.shard import Shard
@dataclass
@@ -8,7 +8,7 @@ from typing import Optional, Dict, Union
import mlx.core as mx
import mlx.nn as nn
from mlx_lm.models.base import BaseModelArgs, KVCache
from hanzo_network.inference.shard import Shard
from .inference.shard import Shard
from .base import IdentityBlock
import numpy as np
@@ -7,8 +7,8 @@ from typing import List, Optional
import mlx.core as mx
import mlx.nn as nn
from dataclasses import field
from hanzo_network.inference.shard import Shard
from hanzo_network.inference.mlx.models.base import IdentityBlock
from .inference.shard import Shard
from .inference.mlx.models.base import IdentityBlock
_ACTIVATIONS = {"quick_gelu": nn.gelu_fast_approx, "gelu": nn.gelu}
@@ -8,7 +8,7 @@ import mlx.nn as nn
from dataclasses import dataclass, field
from typing import Tuple, List
from hanzo_network.inference.shard import Shard
from .inference.shard import Shard
@dataclass
class UNetConfig:
@@ -8,7 +8,7 @@ import mlx.nn as nn
from .unet import ResnetBlock2D, upsample_nearest
from dataclasses import dataclass, field
from hanzo_network.inference.shard import Shard
from .inference.shard import Shard
from typing import Tuple
import inspect
from ..base import IdentityBlock
@@ -8,7 +8,7 @@ from .sharded_utils import load_model_shard, resolve_tokenizer
from .losses import loss_fns
from ..shard import Shard
from typing import Optional
from hanzo_network.download.shard_download import ShardDownloader
from .download.shard_download import ShardDownloader
import asyncio
from collections import OrderedDict
from mlx_lm.models.cache import make_prompt_cache
@@ -19,7 +19,7 @@ from transformers import AutoProcessor
from mlx_lm.tokenizer_utils import TokenizerWrapper
from net import DEBUG
from hanzo_network.inference.tokenizers import resolve_tokenizer
from .inference.tokenizers import resolve_tokenizer
from ..shard import Shard
@@ -1,9 +1,9 @@
import asyncio
import time
from hanzo_network.inference.mlx.sharded_inference_engine import MLXDynamicShardInferenceEngine
from hanzo_network.download.new_shard_download import NewShardDownloader
from hanzo_network.inference.shard import Shard
from hanzo_network.models import build_base_shard
from .inference.mlx.sharded_inference_engine import MLXDynamicShardInferenceEngine
from .download.new_shard_download import NewShardDownloader
from .inference.shard import Shard
from .models import build_base_shard
from collections import deque
async def test_non_blocking():
@@ -1,4 +1,4 @@
from hanzo_network.inference.shard import Shard
from .inference.shard import Shard
import mlx.core as mx
import mlx.nn as nn
from typing import Optional
@@ -1,7 +1,7 @@
import pytest
import numpy as np
from hanzo_network.inference.dummy_inference_engine import DummyInferenceEngine
from hanzo_network.inference.shard import Shard
from .inference.dummy_inference_engine import DummyInferenceEngine
from .inference.shard import Shard
@pytest.mark.asyncio
@@ -1,7 +1,7 @@
from hanzo_network.inference.mlx.sharded_inference_engine import MLXDynamicShardInferenceEngine
from hanzo_network.inference.inference_engine import InferenceEngine
from hanzo_network.download.new_shard_download import NewShardDownloader
from hanzo_network.inference.shard import Shard
from .inference.mlx.sharded_inference_engine import MLXDynamicShardInferenceEngine
from .inference.inference_engine import InferenceEngine
from .download.new_shard_download import NewShardDownloader
from .inference.shard import Shard
import os
import asyncio
import numpy as np
@@ -48,6 +48,6 @@ asyncio.run(test_inference_engine(MLXDynamicShardInferenceEngine(NewShardDownloa
if os.getenv("RUN_TINYGRAD", default="0") == "1":
import tinygrad
import os
from hanzo_network.inference.tinygrad.inference import TinygradDynamicShardInferenceEngine
from .inference.tinygrad.inference import TinygradDynamicShardInferenceEngine
tinygrad.helpers.DEBUG.value = int(os.getenv("TINYGRAD_DEBUG", default="0"))
asyncio.run(test_inference_engine(TinygradDynamicShardInferenceEngine(NewShardDownloader()), TinygradDynamicShardInferenceEngine(NewShardDownloader()), "llama-3.2-1b", 32))
@@ -1,14 +1,14 @@
from pathlib import Path
import os
from hanzo_network.inference.tinygrad.models.llama import Transformer, TransformerShard, convert_from_huggingface, fix_bf16, sample_logits
from hanzo_network.inference.shard import Shard
from hanzo_network.inference.tokenizers import resolve_tokenizer
from .inference.tinygrad.models.llama import Transformer, TransformerShard, convert_from_huggingface, fix_bf16, sample_logits
from .inference.shard import Shard
from .inference.tokenizers import resolve_tokenizer
from tinygrad.nn.state import safe_save, safe_load, get_state_dict, load_state_dict
from tinygrad import Tensor, nn, Context
from hanzo_network.inference.inference_engine import InferenceEngine
from .inference.inference_engine import InferenceEngine
import numpy as np
from hanzo_network.inference.tinygrad.tinygrad_helpers import concat_weights, load
from hanzo_network.download.shard_download import ShardDownloader
from .inference.tinygrad.tinygrad_helpers import concat_weights, load
from .download.shard_download import ShardDownloader
from concurrent.futures import ThreadPoolExecutor
from .stateful_model import make_prompt_state
from .losses import length_masked_ce_loss
@@ -165,7 +165,7 @@ def sample_logits(logits: Tensor, temp: float, k: int, p: float, af: float, ap:
return output_token
from hanzo_network.inference.shard import Shard
from .inference.shard import Shard
class Transformer:
@@ -3,9 +3,9 @@ from tinygrad import Tensor
from pathlib import Path
import json
from typing import List
from hanzo_network.inference.shard import Shard
from hanzo_network.helpers import DEBUG
from hanzo_network.download.hf.hf_helpers import get_allow_patterns
from .inference.shard import Shard
from .helpers import DEBUG
from .download.hf.hf_helpers import get_allow_patterns
from fnmatch import fnmatch
import re
@@ -2,7 +2,7 @@ import traceback
from os import PathLike
from typing import Union
import numpy as np
from hanzo_network.helpers import DEBUG
from .helpers import DEBUG
# Lazy imports to avoid dependencies when not needed
try:
@@ -17,7 +17,7 @@ except ImportError:
AutoProcessor = None
try:
from hanzo_network.download.new_shard_download import ensure_downloads_dir
from .download.new_shard_download import ensure_downloads_dir
except ImportError:
ensure_downloads_dir = None
@@ -4,10 +4,10 @@ import asyncio
from typing import Any, Dict, List, Optional
from abc import ABC, abstractmethod
from hanzo_network.core.state import Message
from hanzo_network.inference.inference_engine import get_inference_engine
from hanzo_network.inference.shard import Shard
from hanzo_network.download.shard_download import ShardDownloader
from .core.state import Message
from .inference.inference_engine import get_inference_engine
from .inference.shard import Shard
from .download.shard_download import ShardDownloader
class LocalLLMProvider(ABC):
@@ -1,9 +1,9 @@
"""Helper functions for creating local networks with local LLMs."""
from typing import List, Optional
from hanzo_network.core.agent import Agent, ModelConfig, ModelProvider, create_agent
from hanzo_network.core.tool import Tool
from hanzo_network.distributed_network import create_distributed_network, DistributedNetwork
from .core.agent import Agent, ModelConfig, ModelProvider, create_agent
from .core.tool import Tool
from .distributed_network import create_distributed_network, DistributedNetwork
def create_local_agent(
@@ -74,7 +74,7 @@ def create_local_distributed_network(
Returns:
Configured DistributedNetwork
"""
from hanzo_network.core.router import create_routing_agent
from .core.router import create_routing_agent
# Create a local router if one isn't provided
if 'router' not in kwargs:
@@ -109,7 +109,7 @@ async def check_local_llm_status(provider: str = "hanzo") -> dict:
Returns:
Status information including availability and models
"""
from hanzo_network.llm import HanzoNetProvider
from .llm import HanzoNetProvider
# Map old provider names to hanzo/net engines
engine_map = {
@@ -3,7 +3,7 @@
from typing import Any, Dict, List, Optional
from dataclasses import dataclass
from hanzo_network.core.tool import Tool, create_tool, ToolContext
from .core.tool import Tool, create_tool, ToolContext
# Import from hanzo-memory package when available
try:
@@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
from typing import List
from dataclasses import dataclass
from .topology import Topology
from hanzo_network.inference.shard import Shard
from .inference.shard import Shard
# Partitions shard-space into pieces of contiguous shards, represented by floating point range [start, end) between 0 and 1
@@ -1,6 +1,6 @@
import pytest
from unittest.mock import patch, Mock
from hanzo_network.topology.device_capabilities import mac_device_capabilities, DeviceCapabilities, DeviceFlops, TFLOPS, device_capabilities
from .topology.device_capabilities import mac_device_capabilities, DeviceCapabilities, DeviceFlops, TFLOPS, device_capabilities
@patch("subprocess.run")
@@ -1,7 +1,7 @@
import unittest
from typing import List
from hanzo_network.topology.partitioning_strategy import Partition, map_partitions_to_shards
from hanzo_network.inference.shard import Shard
from .topology.partitioning_strategy import Partition, map_partitions_to_shards
from .inference.shard import Shard
class TestRingMemoryWeightedPartitioningStrategy(unittest.TestCase):
@@ -1,8 +1,8 @@
import unittest
from hanzo_network.topology.ring_memory_weighted_partitioning_strategy import RingMemoryWeightedPartitioningStrategy
from hanzo_network.topology.topology import Topology
from hanzo_network.topology.device_capabilities import DeviceCapabilities, DeviceFlops
from hanzo_network.topology.partitioning_strategy import Partition
from .topology.ring_memory_weighted_partitioning_strategy import RingMemoryWeightedPartitioningStrategy
from .topology.topology import Topology
from .topology.device_capabilities import DeviceCapabilities, DeviceFlops
from .topology.partitioning_strategy import Partition
class TestRingMemoryWeightedPartitioningStrategy(unittest.TestCase):
+1 -1
View File
@@ -111,7 +111,7 @@ async def start_compute_node(ctx, name: str = None, port: int = 7860,
console.print(f"Port: {port}")
try:
from hanzo_network import ComputeNode
from hanzo_network import LocalComputeNode as ComputeNode
# Generate node name if not provided
if not name: