1
0

feat: add response type

This commit is contained in:
2026-06-15 17:13:15 +08:00
parent ed8f5e1943
commit 1c81b24f74
5 changed files with 141 additions and 46 deletions

View File

@@ -2,9 +2,10 @@ import heapq
from itertools import chain, product
from typing import Iterable, Iterator
from functools import cached_property
from .common import Resolver, ResolverRequest, ResultPriority
from .common import Resolver
from ..dataset import DatasetCollection, Dataset
from ..common import Circuit, DeviceKind, JointKind, LcrConnException
from ..common import Circuit, DeviceKind, JointKind
from ..query import Request, Response
class LutItem:
@@ -67,13 +68,13 @@ class ResultBucket(Iterable[LutItem]):
def score(self) -> float:
"""The score associated with this item."""
return self.__score
@property
def item(self) -> LutItem:
"""The underlying LutItem."""
return self.__item
def __lt__(self, other: 'ResultBucket.ResultBucketItem') -> bool:
def __lt__(self, other: "ResultBucket.ResultBucketItem") -> bool:
# heapq is a min-heap: it always pops the smallest element.
# We invert the comparison so that an item with a larger score
# is considered "smaller", effectively turning the min-heap
@@ -179,7 +180,7 @@ class LutResolver(Resolver):
)
]
def resolve(self, request: ResolverRequest) -> Iterator[Circuit]:
def resolve(self, request: Request) -> Response:
# Fetch LUT by device kind
lut: list[LutItem]
match request.device_kind:
@@ -202,4 +203,4 @@ class LutResolver(Resolver):
bucket.insert(item, difference)
# Return result
return map(lambda item: item.circuit, bucket)
return Response(request, map(lambda item: item.circuit, bucket))