diff --git a/cognee/modules/graph/cognee_graph/CogneeGraph.py b/cognee/modules/graph/cognee_graph/CogneeGraph.py index ca1984dfe..bdafaf238 100644 --- a/cognee/modules/graph/cognee_graph/CogneeGraph.py +++ b/cognee/modules/graph/cognee_graph/CogneeGraph.py @@ -2,8 +2,7 @@ import time from cognee.shared.logging_utils import get_logger from typing import List, Dict, Union, Optional, Type -from cognee.exceptions import InvalidValueError -from cognee.modules.graph.exceptions import EntityNotFoundError, EntityAlreadyExistsError +from cognee.modules.graph.exceptions import EntityNotFoundError, EntityAlreadyExistsError, InvalidDimensionsError from cognee.infrastructure.databases.graph.graph_db_interface import GraphDBInterface from cognee.modules.graph.cognee_graph.CogneeGraphElements import Node, Edge from cognee.modules.graph.cognee_graph.CogneeAbstractGraph import CogneeAbstractGraph @@ -66,8 +65,7 @@ class CogneeGraph(CogneeAbstractGraph): node_name: Optional[List[str]] = None, ) -> None: if node_dimension < 1 or edge_dimension < 1: - raise InvalidValueError(message="Dimensions must be positive integers") - + raise InvalidDimensionsError() try: import time diff --git a/cognee/modules/graph/cognee_graph/CogneeGraphElements.py b/cognee/modules/graph/cognee_graph/CogneeGraphElements.py index 063248ee2..c22cc5c18 100644 --- a/cognee/modules/graph/cognee_graph/CogneeGraphElements.py +++ b/cognee/modules/graph/cognee_graph/CogneeGraphElements.py @@ -1,8 +1,6 @@ import numpy as np from typing import List, Dict, Optional, Any, Union - -from cognee.exceptions import InvalidValueError - +from cognee.modules.graph.exceptions import InvalidDimensionsError, DimensionOutOfRangeError class Node: """ @@ -24,7 +22,7 @@ class Node: self, node_id: str, attributes: Optional[Dict[str, Any]] = None, dimension: int = 1 ): if dimension <= 0: - raise InvalidValueError(message="Dimension must be a positive integer") + raise InvalidDimensionsError() self.id = node_id self.attributes = attributes if attributes is not None else {} self.attributes["vector_distance"] = float("inf") @@ -58,9 +56,7 @@ class Node: def is_node_alive_in_dimension(self, dimension: int) -> bool: if dimension < 0 or dimension >= len(self.status): - raise InvalidValueError( - message=f"Dimension {dimension} is out of range. Valid range is 0 to {len(self.status) - 1}." - ) + raise DimensionOutOfRangeError(dimension=dimension, max_index=len(self.status) - 1) return self.status[dimension] == 1 def add_attribute(self, key: str, value: Any) -> None: @@ -110,7 +106,7 @@ class Edge: dimension: int = 1, ): if dimension <= 0: - raise InvalidValueError(message="Dimensions must be a positive integer.") + InvalidDimensionsError() self.node1 = node1 self.node2 = node2 self.attributes = attributes if attributes is not None else {} @@ -120,9 +116,7 @@ class Edge: def is_edge_alive_in_dimension(self, dimension: int) -> bool: if dimension < 0 or dimension >= len(self.status): - raise InvalidValueError( - message=f"Dimension {dimension} is out of range. Valid range is 0 to {len(self.status) - 1}." - ) + raise DimensionOutOfRangeError(dimension=dimension, max_index=len(self.status) - 1) return self.status[dimension] == 1 def add_attribute(self, key: str, value: Any) -> None: diff --git a/cognee/modules/graph/exceptions/__init__.py b/cognee/modules/graph/exceptions/__init__.py index 5cf600099..04bec74ad 100644 --- a/cognee/modules/graph/exceptions/__init__.py +++ b/cognee/modules/graph/exceptions/__init__.py @@ -7,4 +7,6 @@ This module defines a set of exceptions for handling various graph errors from .exceptions import ( EntityNotFoundError, EntityAlreadyExistsError, + InvalidDimensionsError, + DimensionOutOfRangeError, ) diff --git a/cognee/modules/graph/exceptions/exceptions.py b/cognee/modules/graph/exceptions/exceptions.py index 854e620ff..6fb2d400d 100644 --- a/cognee/modules/graph/exceptions/exceptions.py +++ b/cognee/modules/graph/exceptions/exceptions.py @@ -1,8 +1,8 @@ -from cognee.exceptions import CogneeApiError +from cognee.exceptions import CogneeValidationError from fastapi import status -class EntityNotFoundError(CogneeApiError): +class EntityNotFoundError(CogneeValidationError): """Database returns nothing""" def __init__( @@ -14,7 +14,7 @@ class EntityNotFoundError(CogneeApiError): super().__init__(message, name, status_code) -class EntityAlreadyExistsError(CogneeApiError): +class EntityAlreadyExistsError(CogneeValidationError): """Conflict detected, like trying to create a resource that already exists""" def __init__( @@ -24,3 +24,23 @@ class EntityAlreadyExistsError(CogneeApiError): status_code=status.HTTP_409_CONFLICT, ): super().__init__(message, name, status_code) + +class InvalidDimensionsError(CogneeValidationError): + def __init__( + self, + name: str = "InvalidDimensionsError", + status_code: int = status.HTTP_400_BAD_REQUEST, + ): + message = "Dimensions must be positive integers." + super().__init__(message, name, status_code) + +class DimensionOutOfRangeError(CogneeValidationError): + def __init__( + self, + dimension: int, + max_index: int, + name: str = "DimensionOutOfRangeError", + status_code: int = status.HTTP_400_BAD_REQUEST, + ): + message = f"Dimension {dimension} is out of range. Valid range is 0 to {max_index}." + super().__init__(message, name, status_code)