Lattice / core /base.py
cryogenic22's picture
Create core/base.py
070c020 verified
from abc import ABC, abstractmethod
from typing import Dict, Any, Optional
from pydantic import BaseModel
import logging
from datetime import datetime
class LatticeComponent(ABC):
"""Base class for all Lattice components"""
def __init__(self, config: Optional[Dict[str, Any]] = None):
self.config = config or {}
self.logger = logging.getLogger(f"lattice.{self.__class__.__name__}")
self._initialized = False
@abstractmethod
async def initialize(self) -> None:
"""Initialize the component"""
self._initialized = True
@abstractmethod
async def validate_config(self) -> bool:
"""Validate component configuration"""
pass
def ensure_initialized(self):
"""Ensure component is initialized"""
if not self._initialized:
raise RuntimeError(f"{self.__class__.__name__} not initialized")
class LatticeError(Exception):
"""Base class for Lattice errors"""
pass
class ConfigurationError(LatticeError):
"""Configuration related errors"""
pass
class ExecutionError(LatticeError):
"""Execution related errors"""
pass
class BaseRequest(BaseModel):
"""Base class for all requests"""
request_id: Optional[str]
timestamp: Optional[datetime]
class BaseResponse(BaseModel):
"""Base class for all responses"""
request_id: Optional[str]
timestamp: datetime
status: str
error: Optional[str]
class ComponentMetadata(BaseModel):
"""Component metadata"""
name: str
version: str
description: Optional[str]
capabilities: Dict[str, Any]
dependencies: Dict[str, str]