Files
python-sdk/pkg/hanzo-tools-vector/hanzo_tools/vector/mock_infinity.py
T
zeekay c32eef2fa0 feat(hanzo-tools): complete modular tool packages v0.10.7
- Add hanzo-tools-llm (4 tools: llm, unified_llm, consensus, llm_manage)
- Add hanzo-tools-vector (3 tools: index, vector_index, vector_search)
- Add hanzo-tools-config (2 tools: config, mode)
- Add hanzo-tools-mcp (4 tools: mcp, mcp_add, mcp_remove, mcp_stats)
- Update hanzo-tools meta package with all 17 packages
- Bump hanzo-mcp to v0.10.7

Total: 63 tools across 17 modular packages

Bundle extras:
- [core]: filesystem, shell, todo, reasoning, config
- [dev]: core + editor, lsp, refactor
- [ai]: llm, agent, memory
- [all]: everything
2025-12-26 03:51:15 -08:00

160 lines
4.7 KiB
Python

"""Mock implementation of infinity_embedded for testing on unsupported platforms."""
import random
from typing import Any, Dict, List
from pathlib import Path
class MockTable:
"""Mock implementation of an Infinity table."""
def __init__(self, name: str, schema: Dict[str, Any]):
self.name = name
self.schema = schema
self.data = []
self._id_counter = 0
def insert(self, records: List[Dict[str, Any]]):
"""Insert records into the table."""
for record in records:
# Add an internal ID if not present
if "id" not in record:
record["_internal_id"] = self._id_counter
self._id_counter += 1
self.data.append(record)
def delete(self, condition: str):
"""Delete records matching condition."""
# Simple implementation - just clear for now
self.data = [r for r in self.data if not self._eval_condition(r, condition)]
def output(self, columns: List[str]):
"""Start a query chain."""
return MockQuery(self, columns)
def _eval_condition(self, record: Dict[str, Any], condition: str) -> bool:
"""Evaluate a simple condition."""
# Very basic implementation
if "=" in condition:
field, value = condition.split("=", 1)
field = field.strip()
value = value.strip().strip("'\"")
return str(record.get(field, "")) == value
return False
class MockQuery:
"""Mock query builder."""
def __init__(self, table: MockTable, columns: List[str]):
self.table = table
self.columns = columns
self.filters = []
self.vector_search = None
self.limit_value = None
def filter(self, condition: str):
"""Add a filter condition."""
self.filters.append(condition)
return self
def match_dense(self, column: str, vector: List[float], dtype: str, metric: str, limit: int):
"""Add vector search."""
self.vector_search = {
"column": column,
"vector": vector,
"dtype": dtype,
"metric": metric,
"limit": limit,
}
self.limit_value = limit
return self
def to_pl(self):
"""Execute query and return polars-like result."""
results = self.table.data.copy()
# Apply filters
for condition in self.filters:
results = [r for r in results if self.table._eval_condition(r, condition)]
# Apply vector search (mock similarity)
if self.vector_search:
# Add mock scores
for r in results:
r["score"] = random.uniform(0.5, 1.0)
# Sort by score
results.sort(key=lambda x: x.get("score", 0), reverse=True)
# Limit results
if self.limit_value:
results = results[: self.limit_value]
# Return mock polars DataFrame
return MockDataFrame(results)
class MockDataFrame:
"""Mock polars DataFrame."""
def __init__(self, data: List[Dict[str, Any]]):
self.data = data
def __len__(self):
return len(self.data)
def iter_rows(self, named: bool = False):
"""Iterate over rows."""
if named:
return iter(self.data)
else:
# Return tuples
if not self.data:
return iter([])
keys = list(self.data[0].keys())
return iter([tuple(row.get(k) for k in keys) for row in self.data])
class MockDatabase:
"""Mock implementation of an Infinity database."""
def __init__(self, name: str):
self.name = name
self.tables = {}
def create_table(self, name: str, schema: Dict[str, Any]) -> MockTable:
"""Create a new table."""
table = MockTable(name, schema)
self.tables[name] = table
return table
def get_table(self, name: str) -> MockTable:
"""Get an existing table."""
if name not in self.tables:
raise KeyError(f"Table {name} not found")
return self.tables[name]
class MockInfinity:
"""Mock implementation of Infinity connection."""
def __init__(self, path: str):
self.path = Path(path)
self.databases = {}
# Ensure directory exists
self.path.mkdir(parents=True, exist_ok=True)
def get_database(self, name: str) -> MockDatabase:
"""Get or create a database."""
if name not in self.databases:
self.databases[name] = MockDatabase(name)
return self.databases[name]
def disconnect(self):
"""Disconnect from Infinity."""
pass
def connect(path: str) -> MockInfinity:
"""Connect to Infinity (mock implementation)."""
return MockInfinity(path)