in lisa/search_space.py [0:0]
def check_countspace(requirement: CountSpace, capability: CountSpace) -> ResultReason:
result = ResultReason()
if requirement is not None:
if capability is None:
result.add_reason(
"if requirements isn't None, capability shouldn't be None"
)
else:
if isinstance(requirement, int):
if isinstance(capability, int):
if requirement != capability:
result.add_reason(
"requirement is a number, capability should be exact "
f"much, but requirement: {requirement}, "
f"capability: {capability}"
)
elif isinstance(capability, IntRange):
temp_result = capability.check(requirement)
if not temp_result.result:
result.add_reason(
"requirement is a number, capability should include it, "
f"but requirement: {requirement}, capability: {capability}"
)
else:
assert isinstance(capability, list), f"actual: {type(capability)}"
temp_requirement = IntRange(min=requirement, max=requirement)
temp_result = _one_of_matched(temp_requirement, capability)
if not temp_result.result:
result.add_reason(
f"requirement is a number, no capability matched, "
f"requirement: {requirement}, capability: {capability}"
)
elif isinstance(requirement, IntRange):
result.merge(requirement.check(capability))
else:
assert isinstance(requirement, list), f"actual: {type(requirement)}"
supported = False
for req_item in requirement:
temp_result = req_item.check(capability)
if temp_result.result:
supported = True
if not supported:
result.add_reason(
"no capability matches requirement, "
f"requirement: {requirement}, capability: {capability}"
)
return result