tek Atrust
chore(deploy): build monolithic server for Hugging Face
d5ef46f
Raw
History Blame Contribute Delete
1.55 kB
"""
Data models for embedding services.
"""
from dataclasses import dataclass, field
from typing import Any
from .embedding_exceptions import EmbeddingError
@dataclass
class EmbeddingBatchResult:
"""Result of batch embedding creation with success/failure tracking."""
embeddings: list[list[float]] = field(default_factory=list)
failed_items: list[dict[str, Any]] = field(default_factory=list)
success_count: int = 0
failure_count: int = 0
texts_processed: list[str] = field(default_factory=list) # Successfully processed texts
def add_success(self, embedding: list[float], text: str):
"""Add a successful embedding."""
self.embeddings.append(embedding)
self.texts_processed.append(text)
self.success_count += 1
def add_failure(self, text: str, error: Exception, batch_index: int | None = None):
"""Add a failed item with error details."""
error_dict = {
"text": text[:200] if text else None,
"error": str(error),
"error_type": type(error).__name__,
"batch_index": batch_index,
}
# Add extra context from EmbeddingError if available
if isinstance(error, EmbeddingError):
error_dict.update(error.to_dict())
self.failed_items.append(error_dict)
self.failure_count += 1
@property
def has_failures(self) -> bool:
return self.failure_count > 0
@property
def total_requested(self) -> int:
return self.success_count + self.failure_count