37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
"""Base class for adapters mapping local problems to canonical IR."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Dict, Optional
|
|
|
|
from catopt_grid.bridge import IRObject, IRMorphism, PlanDelta
|
|
# Adapter versioning helper (fallback to a static value to avoid circular imports).
|
|
try:
|
|
# Optional: some environments may expose a version via the adapters package.
|
|
from catopt_grid.adapters import __version__ as _ADAPTER_VERSION # type: ignore
|
|
except Exception:
|
|
_ADAPTER_VERSION = "0.0.0"
|
|
|
|
|
|
class AdapterBase:
|
|
"""Minimal adapter base class.
|
|
|
|
Subclasses should implement to_ir_object and to_morphism mappings.
|
|
"""
|
|
|
|
name: str
|
|
version: str = "0.0.1"
|
|
|
|
def __init__(self, name: str) -> None:
|
|
self.name = name
|
|
|
|
def to_ir_object(self, local_problem) -> Optional[IRObject]: # pragma: no cover
|
|
"""Convert a local problem to canonical IRObject. Override in subclasses."""
|
|
return None
|
|
|
|
def to_morphism(self, data) -> Optional[IRMorphism]: # pragma: no cover
|
|
"""Convert data to a canonical IRMorphism. Override in subclasses."""
|
|
return None
|
|
|
|
|
|
__all__ = ["AdapterBase"]
|