Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Change Log

### 2020-xx-xx - 5.4.1
Autorest core version: 3.0.6318

Modelerfour version: 4.15.421

**Bug Fixes**

- Honor default value for properties if `x-ms-client-default` value is passed #798

### 2020-10-19 - 5.4.0
Autorest core version: 3.0.6318

Expand Down
15 changes: 14 additions & 1 deletion autorest/codegen/models/property.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from .base_schema import BaseSchema


class Property(BaseModel):
class Property(BaseModel): # pylint: disable=too-many-instance-attributes
def __init__(
self,
yaml_data: Dict[str, Any],
Expand All @@ -21,6 +21,7 @@ def __init__(
*,
flattened_names: Optional[List[str]] = None,
description: Optional[str] = None,
client_default_value: Optional[Any] = None
) -> None:
super().__init__(yaml_data)
self.name = name
Expand Down Expand Up @@ -50,6 +51,7 @@ def __init__(
validation_map_from_schema = cast(Dict[str, Union[bool, int, str]], self.schema.validation_map)
validation_map.update(validation_map_from_schema)
self.validation_map = validation_map or None
self.client_default_value = client_default_value

@property
def escaped_swagger_name(self) -> str:
Expand All @@ -74,6 +76,7 @@ def from_yaml(cls, yaml_data: Dict[str, Any], **kwargs) -> "Property":
schema=schema,
original_swagger_name=yaml_data["serializedName"],
flattened_names=yaml_data.get("flattenedNames", []),
client_default_value=yaml_data.get("clientDefaultValue"),
)

@property
Expand All @@ -96,6 +99,16 @@ def xml_metadata(self) -> str:
return f", 'xml': {{{self.schema.xml_serialization_ctxt()}}}"
return ""

@property
def default_value(self) -> Any:
return self.client_default_value or self.schema.default_value

@property
def default_value_declaration(self) -> Any:
if self.client_default_value:
return self.schema.get_declaration(self.client_default_value)
return self.schema.default_value_declaration

@property
def type_annotation(self) -> str:
if self.required:
Expand Down
4 changes: 2 additions & 2 deletions autorest/codegen/serializers/model_generic_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ def init_args(model: ObjectSchema) -> List[str]:
typing = "str"
init_args.append(f"self.{prop.name} = {discriminator_value} # type: {typing}")
elif not prop.constant:
if prop.required and not prop.schema.default_value:
if prop.required and not prop.default_value:
init_args.append(f"self.{prop.name} = kwargs['{prop.name}']")
else:
default = prop.schema.default_value_declaration
default = prop.default_value_declaration
init_args.append(f"self.{prop.name} = kwargs.get('{prop.name}', {default})")
return init_args
4 changes: 2 additions & 2 deletions autorest/codegen/serializers/model_python3_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ def init_line(model: ObjectSchema) -> List[str]:
if init_line_parameters:
init_properties_declaration.append("*")
for param in init_line_parameters:
if param.required and not param.schema.default_value:
if param.required and not param.default_value:
init_properties_declaration.append(f"{param.name}: {param.type_annotation}")
else:
default = param.schema.default_value_declaration
default = param.default_value_declaration
init_properties_declaration.append(f"{param.name}: {param.type_annotation} = {default}")

return init_properties_declaration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def __init__(
**kwargs
):
super(ModelAsStringNoRequiredOneValueDefault, self).__init__(**kwargs)
self.parameter = kwargs.get('parameter', None)
self.parameter = kwargs.get('parameter', "value1")


class ModelAsStringNoRequiredOneValueNoDefault(msrest.serialization.Model):
Expand Down Expand Up @@ -63,7 +63,7 @@ def __init__(
**kwargs
):
super(ModelAsStringNoRequiredTwoValueDefault, self).__init__(**kwargs)
self.parameter = kwargs.get('parameter', None)
self.parameter = kwargs.get('parameter', "value1")


class ModelAsStringNoRequiredTwoValueNoDefault(msrest.serialization.Model):
Expand Down Expand Up @@ -107,7 +107,7 @@ def __init__(
**kwargs
):
super(ModelAsStringRequiredOneValueDefault, self).__init__(**kwargs)
self.parameter = kwargs['parameter']
self.parameter = kwargs.get('parameter', "value1")


class ModelAsStringRequiredOneValueNoDefault(msrest.serialization.Model):
Expand Down Expand Up @@ -157,7 +157,7 @@ def __init__(
**kwargs
):
super(ModelAsStringRequiredTwoValueDefault, self).__init__(**kwargs)
self.parameter = kwargs['parameter']
self.parameter = kwargs.get('parameter', "value1")


class ModelAsStringRequiredTwoValueNoDefault(msrest.serialization.Model):
Expand Down Expand Up @@ -253,7 +253,7 @@ def __init__(
**kwargs
):
super(NoModelAsStringNoRequiredTwoValueDefault, self).__init__(**kwargs)
self.parameter = kwargs.get('parameter', None)
self.parameter = kwargs.get('parameter', "value1")


class NoModelAsStringNoRequiredTwoValueNoDefault(msrest.serialization.Model):
Expand Down Expand Up @@ -353,7 +353,7 @@ def __init__(
**kwargs
):
super(NoModelAsStringRequiredTwoValueDefault, self).__init__(**kwargs)
self.parameter = kwargs['parameter']
self.parameter = kwargs.get('parameter', "value1")


class NoModelAsStringRequiredTwoValueNoDefault(msrest.serialization.Model):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class ModelAsStringNoRequiredOneValueDefault(msrest.serialization.Model):
def __init__(
self,
*,
parameter: Optional[Union[str, "ModelAsStringNoRequiredOneValueDefaultEnum"]] = None,
parameter: Optional[Union[str, "ModelAsStringNoRequiredOneValueDefaultEnum"]] = "value1",
**kwargs
):
super(ModelAsStringNoRequiredOneValueDefault, self).__init__(**kwargs)
Expand Down Expand Up @@ -69,7 +69,7 @@ class ModelAsStringNoRequiredTwoValueDefault(msrest.serialization.Model):
def __init__(
self,
*,
parameter: Optional[Union[str, "ModelAsStringNoRequiredTwoValueDefaultEnum"]] = None,
parameter: Optional[Union[str, "ModelAsStringNoRequiredTwoValueDefaultEnum"]] = "value1",
**kwargs
):
super(ModelAsStringNoRequiredTwoValueDefault, self).__init__(**kwargs)
Expand Down Expand Up @@ -117,7 +117,7 @@ class ModelAsStringRequiredOneValueDefault(msrest.serialization.Model):
def __init__(
self,
*,
parameter: Union[str, "ModelAsStringRequiredOneValueDefaultEnum"],
parameter: Union[str, "ModelAsStringRequiredOneValueDefaultEnum"] = "value1",
**kwargs
):
super(ModelAsStringRequiredOneValueDefault, self).__init__(**kwargs)
Expand Down Expand Up @@ -171,7 +171,7 @@ class ModelAsStringRequiredTwoValueDefault(msrest.serialization.Model):
def __init__(
self,
*,
parameter: Union[str, "ModelAsStringRequiredTwoValueDefaultEnum"],
parameter: Union[str, "ModelAsStringRequiredTwoValueDefaultEnum"] = "value1",
**kwargs
):
super(ModelAsStringRequiredTwoValueDefault, self).__init__(**kwargs)
Expand Down Expand Up @@ -271,7 +271,7 @@ class NoModelAsStringNoRequiredTwoValueDefault(msrest.serialization.Model):
def __init__(
self,
*,
parameter: Optional[Union[str, "NoModelAsStringNoRequiredTwoValueDefaultEnum"]] = None,
parameter: Optional[Union[str, "NoModelAsStringNoRequiredTwoValueDefaultEnum"]] = "value1",
**kwargs
):
super(NoModelAsStringNoRequiredTwoValueDefault, self).__init__(**kwargs)
Expand Down Expand Up @@ -375,7 +375,7 @@ class NoModelAsStringRequiredTwoValueDefault(msrest.serialization.Model):
def __init__(
self,
*,
parameter: Union[str, "NoModelAsStringRequiredTwoValueDefaultEnum"],
parameter: Union[str, "NoModelAsStringRequiredTwoValueDefaultEnum"] = "value1",
**kwargs
):
super(NoModelAsStringRequiredTwoValueDefault, self).__init__(**kwargs)
Expand Down