Respect serialized input names over generated signatures
This commit is contained in:
@@ -275,6 +275,39 @@ class GeneratedSignatureMatchingTests(unittest.TestCase):
|
|||||||
self.assertEqual("partial", result["SampleMaskInvert"][0]["tier"])
|
self.assertEqual("partial", result["SampleMaskInvert"][0]["tier"])
|
||||||
self.assertFalse(result["SampleMaskInvert"][0]["verified"])
|
self.assertFalse(result["SampleMaskInvert"][0]["verified"])
|
||||||
|
|
||||||
|
def test_generated_signature_with_different_input_name_falls_back_to_serialized_signature(self):
|
||||||
|
generated = _empty_generated()
|
||||||
|
generated["sigs"]["SampleMaskInvert"] = {
|
||||||
|
"inputs": {"mask": "MASK"},
|
||||||
|
"required": {"mask"},
|
||||||
|
"outputs": ["MASK"],
|
||||||
|
"output_names": ["mask"],
|
||||||
|
}
|
||||||
|
generated["meta"]["SampleMaskInvert"] = {
|
||||||
|
"source": "generated",
|
||||||
|
"pack": "sample-pack",
|
||||||
|
"display": "Sample Mask Invert",
|
||||||
|
"repository": "https://github.com/example/sample-pack",
|
||||||
|
"confidence": "static_exact",
|
||||||
|
}
|
||||||
|
generated["by_out"]["MASK"].append("SampleMaskInvert")
|
||||||
|
|
||||||
|
result = utfcn_core.match(
|
||||||
|
self._ctx(generated=generated),
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "SampleMaskInvert",
|
||||||
|
"inputs": {"masks": "MASK"},
|
||||||
|
"outputs": ["MASK"],
|
||||||
|
"output_names": ["mask"],
|
||||||
|
}
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual("CoreMaskInvert", result["SampleMaskInvert"][0]["to"])
|
||||||
|
self.assertEqual("partial", result["SampleMaskInvert"][0]["tier"])
|
||||||
|
self.assertFalse(result["SampleMaskInvert"][0]["verified"])
|
||||||
|
|
||||||
def test_malformed_generated_context_falls_back_without_raising(self):
|
def test_malformed_generated_context_falls_back_without_raising(self):
|
||||||
result = utfcn_core.match(
|
result = utfcn_core.match(
|
||||||
self._ctx(generated={"sigs": "bad", "meta": "bad"}),
|
self._ctx(generated={"sigs": "bad", "meta": "bad"}),
|
||||||
|
|||||||
+1
-2
@@ -414,12 +414,11 @@ def _generated_signature_conflicts(serialized_sig, generated_sig):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
generated_inputs = generated_sig["inputs"]
|
generated_inputs = generated_sig["inputs"]
|
||||||
generated_input_types = set(generated_inputs.values())
|
|
||||||
for name, typ in serialized_sig["inputs"].items():
|
for name, typ in serialized_sig["inputs"].items():
|
||||||
if name in generated_inputs:
|
if name in generated_inputs:
|
||||||
if generated_inputs[name] != typ:
|
if generated_inputs[name] != typ:
|
||||||
return True
|
return True
|
||||||
elif typ not in generated_input_types:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if Counter(serialized_sig["outputs"]) - Counter(generated_sig["outputs"]):
|
if Counter(serialized_sig["outputs"]) - Counter(generated_sig["outputs"]):
|
||||||
|
|||||||
Reference in New Issue
Block a user