diff --git a/.chronus/changes/fix-discriminator-initialize-2024-7-1-11-29-41.md b/.chronus/changes/fix-discriminator-initialize-2024-7-1-11-29-41.md new file mode 100644 index 00000000000..2da987223c2 --- /dev/null +++ b/.chronus/changes/fix-discriminator-initialize-2024-7-1-11-29-41.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@azure-tools/typespec-python" +--- + +Fix initialize for model which only has discriminator property \ No newline at end of file diff --git a/packages/typespec-python/generator/pygen/codegen/templates/model_dpg.py.jinja2 b/packages/typespec-python/generator/pygen/codegen/templates/model_dpg.py.jinja2 index afffb7f94e5..541de0f0441 100644 --- a/packages/typespec-python/generator/pygen/codegen/templates/model_dpg.py.jinja2 +++ b/packages/typespec-python/generator/pygen/codegen/templates/model_dpg.py.jinja2 @@ -45,7 +45,8 @@ __flattened_items = ["{{ model.flattened_items|join('\", \"') }}"] {% endif %} - {% if not model.internal and serializer.init_line(model) %} + {% set need_init = (not model.internal) and (serializer.init_line(model) or model.discriminator)%} + {% if need_init %} @overload def __init__( self, @@ -64,7 +65,7 @@ {% endif %} {% set initialize_properties = serializer.initialize_properties(model) %} - {% if not model.internal and serializer.init_line(model) or initialize_properties %} + {% if need_init or initialize_properties %} def __init__(self, *args: Any, **kwargs: Any) -> None:{{ '# pylint: disable=useless-super-delegation' if not initialize_properties else '' }} {% for line in serializer.super_call(model) %} {{ line }}