refactor to use new machinery a little more
This commit is contained in:
parent
a594b09f9f
commit
8e9cf1f3c3
|
@ -140,6 +140,11 @@ class CapabilityInfo:
|
||||||
self.allowed.sort()
|
self.allowed.sort()
|
||||||
self.disallowed.sort()
|
self.disallowed.sort()
|
||||||
|
|
||||||
|
def copy(self) -> "CapabilityInfo":
|
||||||
|
return CapabilityInfo(
|
||||||
|
allowed=list(self.allowed), disallowed=list(self.disallowed)
|
||||||
|
)
|
||||||
|
|
||||||
def disallow_if(
|
def disallow_if(
|
||||||
self,
|
self,
|
||||||
filter: Callable[[GuidedCapability], bool],
|
filter: Callable[[GuidedCapability], bool],
|
||||||
|
@ -160,6 +165,13 @@ class CapabilityInfo:
|
||||||
new_allowed.append(cap)
|
new_allowed.append(cap)
|
||||||
self.allowed = new_allowed
|
self.allowed = new_allowed
|
||||||
|
|
||||||
|
def disallow_all(
|
||||||
|
self,
|
||||||
|
reason: GuidedDisallowedCapabilityReason,
|
||||||
|
message: Optional[str] = None,
|
||||||
|
) -> None:
|
||||||
|
self.disallow_if(lambda cap: True, reason, message)
|
||||||
|
|
||||||
|
|
||||||
@attr.s(auto_attribs=True)
|
@attr.s(auto_attribs=True)
|
||||||
class VariationInfo:
|
class VariationInfo:
|
||||||
|
@ -180,22 +192,15 @@ class VariationInfo:
|
||||||
gap: gaps.Gap,
|
gap: gaps.Gap,
|
||||||
install_min: int,
|
install_min: int,
|
||||||
) -> CapabilityInfo:
|
) -> CapabilityInfo:
|
||||||
r = CapabilityInfo()
|
|
||||||
r.disallowed = list(self.capability_info.disallowed)
|
|
||||||
if gap is None:
|
if gap is None:
|
||||||
gap_size = 0
|
gap_size = 0
|
||||||
else:
|
else:
|
||||||
gap_size = gap.size
|
gap_size = gap.size
|
||||||
if self.capability_info.allowed and gap_size < install_min:
|
r = self.capability_info.copy()
|
||||||
for capability in self.capability_info.allowed:
|
if gap_size < install_min:
|
||||||
r.disallowed.append(
|
r.disallow_all(
|
||||||
GuidedDisallowedCapability(
|
reason=GuidedDisallowedCapabilityReason.TOO_SMALL,
|
||||||
capability=capability,
|
)
|
||||||
reason=GuidedDisallowedCapabilityReason.TOO_SMALL,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
r.allowed = list(self.capability_info.allowed)
|
|
||||||
return r
|
return r
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
Loading…
Reference in New Issue