Aller au contenu

Exceptions

Fait par Gillesto

saferoute.exceptions.SafeRouteError

Bases: Exception

Exception de base pour toutes les erreurs SafeRoute.

Toutes les exceptions spécifiques héritent de cette classe, ce qui permet un except SafeRouteError générique.

Source code in src/saferoute/exceptions.py
class SafeRouteError(Exception):
    """Exception de base pour toutes les erreurs SafeRoute.

    Toutes les exceptions spécifiques héritent de cette classe,
    ce qui permet un ``except SafeRouteError`` générique.
    """

saferoute.exceptions.GraphNotLoadedError

Bases: SafeRouteError

Levée quand une opération nécessite un graphe qui n'est pas chargé.

Parameters:

Name Type Description Default
operation str

Nom de l'opération qui a échoué.

'opération'
Example

raise GraphNotLoadedError("compute_routes")

Source code in src/saferoute/exceptions.py
class GraphNotLoadedError(SafeRouteError):
    """Levée quand une opération nécessite un graphe qui n'est pas chargé.

    Args:
        operation: Nom de l'opération qui a échoué.

    Example:
        >>> raise GraphNotLoadedError("compute_routes")
    """

    def __init__(self, operation: str = "opération") -> None:
        super().__init__(
            f"Graphe non chargé — impossible d'exécuter '{operation}'. "
            "Appelez SafeRouteEngine.load_city() ou load_graph() d'abord."
        )
        self.operation = operation

saferoute.exceptions.RouteNotFoundError

Bases: SafeRouteError

Levée quand aucun chemin n'existe entre source et destination (ou nœud inconnu).

Parameters:

Name Type Description Default
source int

NodeId OSM de départ.

required
target int

NodeId OSM d'arrivée.

required
reason str

Explication optionnelle (ex: graphe déconnecté).

''
Example

raise RouteNotFoundError(123, 456, "composantes déconnectées")

Source code in src/saferoute/exceptions.py
class RouteNotFoundError(SafeRouteError):
    """Levée quand aucun chemin n'existe entre source et destination (ou nœud inconnu).

    Args:
        source: NodeId OSM de départ.
        target: NodeId OSM d'arrivée.
        reason: Explication optionnelle (ex: graphe déconnecté).

    Example:
        >>> raise RouteNotFoundError(123, 456, "composantes déconnectées")
    """

    def __init__(self, source: int, target: int, reason: str = "") -> None:
        msg = f"Aucun chemin trouvé entre {source} et {target}."
        if reason:
            msg += f" Raison : {reason}"
        super().__init__(msg)
        self.source = source
        self.target = target
        self.reason = reason

saferoute.exceptions.CacheCorruptionError

Bases: SafeRouteError

Levée quand un fichier de cache est corrompu ou illisible.

Le fichier corrompu est mis de côté (suffixe .corrupt) avant de lever cette exception, pour permettre un re-téléchargement propre sans perdre le fichier.

Parameters:

Name Type Description Default
path Path

Chemin du fichier corrompu.

required
detail str

Détail de l'erreur de lecture.

''
Example

from pathlib import Path raise CacheCorruptionError(Path("/cache/london_graph.graphml"), "XML invalide")

Source code in src/saferoute/exceptions.py
class CacheCorruptionError(SafeRouteError):
    """Levée quand un fichier de cache est corrompu ou illisible.

    Le fichier corrompu est mis de côté (suffixe ``.corrupt``) avant de lever
    cette exception, pour permettre un re-téléchargement propre sans perdre le fichier.

    Args:
        path: Chemin du fichier corrompu.
        detail: Détail de l'erreur de lecture.

    Example:
        >>> from pathlib import Path
        >>> raise CacheCorruptionError(Path("/cache/london_graph.graphml"), "XML invalide")
    """

    def __init__(self, path: "Path", detail: str = "") -> None:  # noqa: F821
        msg = f"Fichier de cache corrompu : {path}"
        if detail:
            msg += f" ({detail})"
        msg += " — le fichier a été mis de côté (.corrupt), relancez le téléchargement."
        super().__init__(msg)
        self.path = path
        self.detail = detail

saferoute.exceptions.UnsupportedCityError

Bases: SafeRouteError

Levée quand une ville non supportée est demandée.

Pour une ville quelconque, utilisez SafeRouteEngine.load_graph avec votre propre graphe.

Parameters:

Name Type Description Default
city_key str

Clé de ville demandée.

required
supported list[str] | None

Liste des clés supportées.

None
Source code in src/saferoute/exceptions.py
class UnsupportedCityError(SafeRouteError):
    """Levée quand une ville non supportée est demandée.

    Pour une ville quelconque, utilisez ``SafeRouteEngine.load_graph`` avec votre propre graphe.

    Args:
        city_key: Clé de ville demandée.
        supported: Liste des clés supportées.
    """

    def __init__(self, city_key: str, supported: list[str] | None = None) -> None:
        msg = f"Ville non supportée : '{city_key}'."
        if supported:
            msg += f" Villes disponibles : {', '.join(supported)}."
        msg += " Pour une autre ville, utilisez SafeRouteEngine.load_graph(graphe, crimes)."
        super().__init__(msg)
        self.city_key = city_key
        self.supported = supported or []