1
0
Files
LCRConnector/legacy/resolver/common.py
2026-06-15 15:58:04 +08:00

45 lines
1023 B
Python

import enum
from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import Iterator
from ..common import DeviceKind, Circuit
class ResultPriority(enum.Enum):
"""
The priority of the result.
"""
LESS_DEVICES = enum.auto()
"""Less devices is the first priority."""
MORE_ACCURACY = enum.auto()
"""More accuracy is the first priority."""
@dataclass
class ResolverRequest:
"""
All request infomation for the resolver.
"""
device_kind: DeviceKind
"""The kind of device to resolve."""
target_value: float
"""The target value of the device."""
tolerance: float
"""The tolerance of the device in absolute value."""
result_priority: ResultPriority
"""The priority of the result."""
count_limit: int
"""The limited count of results."""
class Resolver(ABC):
"""
Abstract base class for all resolvers.
"""
@abstractmethod
def resolve(self, request: ResolverRequest) -> Iterator[Circuit]:
pass