1
0

refactor: rename the trait for comouting circuit values in legacy to match the same modification in kernel

This commit is contained in:
2026-06-28 22:31:30 +08:00
parent cca66b0cac
commit ccd96e6801
4 changed files with 28 additions and 28 deletions

View File

@@ -270,8 +270,8 @@ class Circuit:
raise LcrConnException("No third device") raise LcrConnException("No third device")
class CircuitValueTrait: class CircuitCalculator:
"""The trait for handful circuit computation""" """The bunch of functions for handful circuit computation"""
__device_kind: DeviceKind __device_kind: DeviceKind
"""The kind of the device""" """The kind of the device"""

View File

@@ -2,7 +2,7 @@ import enum
from functools import cached_property from functools import cached_property
from dataclasses import dataclass from dataclasses import dataclass
from typing import Iterable, Iterator from typing import Iterable, Iterator
from .common import DeviceKind, Circuit, CircuitValueTrait from .common import DeviceKind, Circuit, CircuitCalculator
class ResponsePriority(enum.Enum): class ResponsePriority(enum.Enum):
@@ -60,12 +60,12 @@ class ResponseItem:
__circuit: Circuit __circuit: Circuit
"""The circuit of the response item.""" """The circuit of the response item."""
__cv_trait: CircuitValueTrait __ccalc: CircuitCalculator
"""The trait for computing circuit values.""" """The trait for computing circuit values."""
def __init__(self, circuit: Circuit, cv_trait: CircuitValueTrait) -> None: def __init__(self, circuit: Circuit, ccalc: CircuitCalculator) -> None:
self.__circuit = circuit self.__circuit = circuit
self.__cv_trait = cv_trait self.__ccalc = ccalc
@property @property
def circuit(self) -> Circuit: def circuit(self) -> Circuit:
@@ -92,7 +92,7 @@ class ResponseItem:
:return: The value. :return: The value.
""" """
return self.__cv_trait.value(self.__circuit) return self.__ccalc.value(self.__circuit)
@cached_property @cached_property
def difference(self) -> float: def difference(self) -> float:
@@ -104,7 +104,7 @@ class ResponseItem:
:return: The signed difference. :return: The signed difference.
""" """
return self.__cv_trait.difference(self.__circuit, value=self.value) return self.__ccalc.difference(self.__circuit, value=self.value)
@cached_property @cached_property
def unsigned_difference(self) -> float: def unsigned_difference(self) -> float:
@@ -113,7 +113,7 @@ class ResponseItem:
:return: The unsigned difference. :return: The unsigned difference.
""" """
return self.__cv_trait.unsigned_difference( return self.__ccalc.unsigned_difference(
self.__circuit, difference=self.difference self.__circuit, difference=self.difference
) )
@@ -127,7 +127,7 @@ class ResponseItem:
:return: The signed relative difference. :return: The signed relative difference.
""" """
return self.__cv_trait.relative_difference( return self.__ccalc.relative_difference(
self.__circuit, difference=self.difference self.__circuit, difference=self.difference
) )
@@ -138,7 +138,7 @@ class ResponseItem:
:return: The unsigned relative difference. :return: The unsigned relative difference.
""" """
return self.__cv_trait.unsigned_relative_difference( return self.__ccalc.unsigned_relative_difference(
self.__circuit, relative_difference=self.relative_difference self.__circuit, relative_difference=self.relative_difference
) )
@@ -158,9 +158,9 @@ class Response:
"""The sorted items by priority and difference.""" """The sorted items by priority and difference."""
def __init__(self, request: Request, candidates: Iterable[Circuit]) -> None: def __init__(self, request: Request, candidates: Iterable[Circuit]) -> None:
cv_trait = CircuitValueTrait(request.device_kind, request.target_value) ccalc = CircuitCalculator(request.device_kind, request.target_value)
self.__device_kind = request.device_kind self.__device_kind = request.device_kind
self.__sorted_items = list(ResponseItem(item, cv_trait) for item in candidates) self.__sorted_items = list(ResponseItem(item, ccalc) for item in candidates)
# Sort by different strategy # Sort by different strategy
match request.response_priority: match request.response_priority:

View File

@@ -4,7 +4,7 @@ from typing import Iterable, Iterator
from functools import cached_property from functools import cached_property
from .common import Resolver from .common import Resolver
from ..dataset import DatasetCollection, Dataset from ..dataset import DatasetCollection, Dataset
from ..common import Circuit, DeviceKind, JointKind, CircuitValueTrait from ..common import Circuit, DeviceKind, JointKind, CircuitCalculator
from ..query import Request, Response from ..query import Request, Response
@@ -15,12 +15,12 @@ class BfsItem:
__circuit: Circuit __circuit: Circuit
"""The circuit represented by this item.""" """The circuit represented by this item."""
__cv_trait: CircuitValueTrait __ccalc: CircuitCalculator
"""The trait for computing circuit values.""" """The trait for computing circuit values."""
def __init__(self, circuit: Circuit, cv_trait: CircuitValueTrait): def __init__(self, circuit: Circuit, ccalc: CircuitCalculator):
self.__circuit = circuit self.__circuit = circuit
self.__cv_trait = cv_trait self.__ccalc = ccalc
@property @property
def circuit(self) -> Circuit: def circuit(self) -> Circuit:
@@ -33,7 +33,7 @@ class BfsItem:
:return: The computed value. :return: The computed value.
""" """
return self.__cv_trait.value(self.__circuit) return self.__ccalc.value(self.__circuit)
@cached_property @cached_property
def unsigned_difference(self) -> float: def unsigned_difference(self) -> float:
@@ -42,7 +42,7 @@ class BfsItem:
:return: The unsigned difference. :return: The unsigned difference.
""" """
return self.__cv_trait.unsigned_difference(self.__circuit, value=self.value) return self.__ccalc.unsigned_difference(self.__circuit, value=self.value)
class ResultBucket(Iterable[BfsItem]): class ResultBucket(Iterable[BfsItem]):
@@ -223,10 +223,10 @@ class BfsResolver(Resolver):
@staticmethod @staticmethod
def __bfs_iteration( def __bfs_iteration(
dataset: Dataset, cv_trait: CircuitValueTrait dataset: Dataset, ccalc: CircuitCalculator
) -> Iterator[BfsItem]: ) -> Iterator[BfsItem]:
return ( return (
BfsItem(circuit, cv_trait) BfsItem(circuit, ccalc)
for circuit in chain( for circuit in chain(
BfsResolver.iter_one_device_circuit(dataset), BfsResolver.iter_one_device_circuit(dataset),
BfsResolver.iter_two_devices_circuit(dataset), BfsResolver.iter_two_devices_circuit(dataset),
@@ -247,8 +247,8 @@ class BfsResolver(Resolver):
# Iterate circuit item one by one # Iterate circuit item one by one
bucket = ResultBucket(request.count_limit) bucket = ResultBucket(request.count_limit)
cv_trait = CircuitValueTrait(request.device_kind, request.target_value) ccalc = CircuitCalculator(request.device_kind, request.target_value)
for item in BfsResolver.__bfs_iteration(dataset, cv_trait): for item in BfsResolver.__bfs_iteration(dataset, ccalc):
# If circuit absolute difference is out of tolerance, skip it directly. # If circuit absolute difference is out of tolerance, skip it directly.
if item.unsigned_difference > request.tolerance: if item.unsigned_difference > request.tolerance:
continue continue

View File

@@ -3,7 +3,7 @@ from itertools import chain
from .common import Resolver from .common import Resolver
from .bfs import BfsResolver from .bfs import BfsResolver
from ..dataset import DatasetCollection, Dataset from ..dataset import DatasetCollection, Dataset
from ..common import Circuit, DeviceKind, CircuitValueTrait from ..common import Circuit, DeviceKind, CircuitCalculator
from ..query import Request, Response from ..query import Request, Response
@@ -91,7 +91,7 @@ class LutResolver(Resolver):
# target. This guarantees items are visited in strictly increasing # target. This guarantees items are visited in strictly increasing
# difference order, so the first N items within tolerance are exactly # difference order, so the first N items within tolerance are exactly
# the N best matches. # the N best matches.
cv_trait = CircuitValueTrait(request.device_kind, target) ccalc = CircuitCalculator(request.device_kind, target)
while left >= 0 or right < len(lut): while left >= 0 or right < len(lut):
if len(bucket) >= count_limit: if len(bucket) >= count_limit:
break break
@@ -102,11 +102,11 @@ class LutResolver(Resolver):
go_left = True go_left = True
else: else:
left_instance = lut[left] left_instance = lut[left]
left_diff = cv_trait.unsigned_difference( left_diff = ccalc.unsigned_difference(
left_instance.circuit, value=left_instance.value left_instance.circuit, value=left_instance.value
) )
right_instance = lut[right] right_instance = lut[right]
right_diff = cv_trait.unsigned_difference( right_diff = ccalc.unsigned_difference(
right_instance.circuit, value=right_instance.value right_instance.circuit, value=right_instance.value
) )
go_left = left_diff <= right_diff go_left = left_diff <= right_diff
@@ -118,7 +118,7 @@ class LutResolver(Resolver):
item = lut[right] item = lut[right]
right += 1 right += 1
diff = cv_trait.unsigned_difference(item.circuit, value=item.value) diff = ccalc.unsigned_difference(item.circuit, value=item.value)
# Since the LUT is sorted, values on each side only move further # Since the LUT is sorted, values on each side only move further
# from target as we advance. Once one side exceeds tolerance, # from target as we advance. Once one side exceeds tolerance,
# the rest of that side is guaranteed out of range — disable it. # the rest of that side is guaranteed out of range — disable it.