You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We can't build a global schema of all support yaml if two support yaml share a definition name. That is even though the module name is different.
This is perhaps not a real problem, except that we do this in the CI tests to make sure all submitted yaml is good.
This limitation makes the module a little brittle.
e.g.
generating all support schema
+ ibek ioc generate-schema /home/runner/work/ibek-support/ibek-support/tests/../ADAravis/ADAravis.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../ADCore-slim/ADCore.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../ADCore/ADCore.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../ADSample/ADSimDetector.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../ADSimDetector/ADSimDetector.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../_global/epics.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../asyn/asyn.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../autosave/autosave.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../iocStats/iocStats.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../modbus/modbus.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../motor/motor.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../motorMotorSim/motorMotorSim.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../pmac/pmac.ibek.support.yaml /home/runner/work/ibek-support/ibek-support/tests/../zebra/zebra.ibek.support.yaml --no-ibek-defs --output /tmp/all.ibek.ioc.schema.json
Traceback (most recent call last):
File "/home/runner/.local/bin/ibek", line 8, in <module>
sys.exit(cli())
File "/home/runner/.local/lib/python3.10/site-packages/ibek/ioc_cmds/commands.py", line 72, in generate_schema
ioc_model = ioc_create_model(definitions)
File "/home/runner/.local/lib/python3.10/site-packages/ibek/gen_scripts.py", line 45, in ioc_create_model
model = make_ioc_model(entity_models)
File "/home/runner/.local/lib/python3.10/site-packages/ibek/ioc.py", line 178, in make_ioc_model
class NewIOC(IOC):
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_model_construction.py", line 182, in __new__
complete_model_class(
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_model_construction.py", line 501, in complete_model_class
schema = gen_schema.clean_schema(schema)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 405, in clean_schema
schema = _discriminated_union.apply_discriminators(schema)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 60, in apply_discriminators
return simplify_schema_references(_core_utils.walk_core_schema(schema, inner))
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 431, in walk_core_schema
return f(schema.copy(), _dispatch)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 48, in inner
s = recurse(s, inner)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 207, in walk
return f(schema, self._walk)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 48, in inner
s = recurse(s, inner)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 210, in _walk
schema = self._schema_type_to_method[schema['type']](schema.copy(), f)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 240, in handle_definitions_schema
new_inner_schema = self.walk(schema['schema'], f)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 207, in walk
return f(schema, self._walk)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 48, in inner
s = recurse(s, inner)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 210, in _walk
schema = self._schema_type_to_method[schema['type']](schema.copy(), f)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 219, in _handle_other_schemas
schema['schema'] = self.walk(sub_schema, f) # type: ignore
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 207, in walk
return f(schema, self._walk)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 48, in inner
s = recurse(s, inner)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 210, in _walk
schema = self._schema_type_to_method[schema['type']](schema.copy(), f)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 354, in handle_model_fields_schema
replaced_field['schema'] = self.walk(v['schema'], f)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 207, in walk
return f(schema, self._walk)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 48, in inner
s = recurse(s, inner)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 210, in _walk
schema = self._schema_type_to_method[schema['type']](schema.copy(), f)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 336, in handle_json_or_python_schema
schema['json_schema'] = self.walk(schema['json_schema'], f)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 207, in walk
return f(schema, self._walk)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 48, in inner
s = recurse(s, inner)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 210, in _walk
schema = self._schema_type_to_method[schema['type']](schema.copy(), f)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 254, in handle_list_schema
schema['items_schema'] = self.walk(items_schema, f)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_core_utils.py", line 207, in walk
return f(schema, self._walk)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 57, in inner
s = apply_discriminator(s, discriminator, definitions)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 99, in apply_discriminator
return _ApplyInferredDiscriminator(discriminator, definitions or {}).apply(schema)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 194, in apply
schema = self._apply_to_root(schema)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 234, in _apply_to_root
self._handle_choice(choice)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 285, in _handle_choice
self._handle_choice(self.definitions[choice['schema_ref']])
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 309, in _handle_choice
self._set_unique_choice_for_values(choice, inferred_discriminator_values)
File "/home/runner/.local/lib/python3.10/site-packages/pydantic/_internal/_discriminated_union.py", line 504, in _set_unique_choice_for_values
raise TypeError(
TypeError: Value 'ADSimDetector.simDetector' for discriminator 'type' mapped to multiple choices
Error: Process completed with exit code 1.
The text was updated successfully, but these errors were encountered:
We can't build a global schema of all support yaml if two support yaml share a definition name. That is even though the module name is different.
This is perhaps not a real problem, except that we do this in the CI tests to make sure all submitted yaml is good.
This limitation makes the module a little brittle.
e.g.
The text was updated successfully, but these errors were encountered: