From d9787bf1c15cf1469c3012c170c1420000443c8f Mon Sep 17 00:00:00 2001 From: Jonas Lagoni Date: Mon, 24 Jun 2024 15:58:00 +0200 Subject: [PATCH] update snapshots --- .../__snapshots__/Pydantic.spec.ts.snap | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/test/generators/python/presets/__snapshots__/Pydantic.spec.ts.snap b/test/generators/python/presets/__snapshots__/Pydantic.spec.ts.snap index ece4fb83fc..5b3293d316 100644 --- a/test/generators/python/presets/__snapshots__/Pydantic.spec.ts.snap +++ b/test/generators/python/presets/__snapshots__/Pydantic.spec.ts.snap @@ -7,6 +7,37 @@ exports[`PYTHON_PYDANTIC_PRESET should render pydantic for class 1`] = ` line description''', default=None) additional_properties: Optional[dict[str, Any]] = Field(exclude=True, default=None, alias='''additionalProperties''') + + @model_serializer(mode='wrap') + def custom_serializer(self, handler): + serialized_self = handler(self) + additional_properties = getattr(self, \\"additional_properties\\") + if additional_properties is not None: + for key, value in additional_properties.items(): + # Never overwrite existing values, to avoid clashes + if not hasattr(serialized_self, key): + serialized_self[key] = value + + return serialized_self + + @model_validator(mode='before') + @classmethod + def unwrap_additional_properties(cls, data): + json_properties = list(data.keys()) + known_object_properties = ['prop', 'additional_properties'] + unknown_object_properties = [element for element in json_properties if element not in known_object_properties] + # Ignore attempts that validate regular models, only when unknown input is used we add unwrap extensions + if len(unknown_object_properties) == 0: + return data + + known_json_properties = ['prop', 'additionalProperties'] + additional_properties = {} + for obj_key in list(data.keys()): + if not known_json_properties.__contains__(obj_key): + additional_properties[obj_key] = data.pop(obj_key, None) + data['additionalProperties'] = additional_properties + return data + " `; @@ -15,14 +46,107 @@ Array [ "class UnionTest(BaseModel): union_test: Optional[Union[Union1.Union1, Union2.Union2]] = Field(default=None, alias='''unionTest''') additional_properties: Optional[dict[str, Any]] = Field(exclude=True, default=None, alias='''additionalProperties''') + + @model_serializer(mode='wrap') + def custom_serializer(self, handler): + serialized_self = handler(self) + additional_properties = getattr(self, \\"additional_properties\\") + if additional_properties is not None: + for key, value in additional_properties.items(): + # Never overwrite existing values, to avoid clashes + if not hasattr(serialized_self, key): + serialized_self[key] = value + + return serialized_self + + @model_validator(mode='before') + @classmethod + def unwrap_additional_properties(cls, data): + json_properties = list(data.keys()) + known_object_properties = ['union_test', 'additional_properties'] + unknown_object_properties = [element for element in json_properties if element not in known_object_properties] + # Ignore attempts that validate regular models, only when unknown input is used we add unwrap extensions + if len(unknown_object_properties) == 0: + return data + + known_json_properties = ['unionTest', 'additionalProperties'] + additional_properties = {} + for obj_key in list(data.keys()): + if not known_json_properties.__contains__(obj_key): + additional_properties[obj_key] = data.pop(obj_key, None) + data['additionalProperties'] = additional_properties + return data + ", "class Union1(BaseModel): test_prop1: Optional[str] = Field(default=None, alias='''testProp1''') additional_properties: Optional[dict[str, Any]] = Field(exclude=True, default=None, alias='''additionalProperties''') + + @model_serializer(mode='wrap') + def custom_serializer(self, handler): + serialized_self = handler(self) + additional_properties = getattr(self, \\"additional_properties\\") + if additional_properties is not None: + for key, value in additional_properties.items(): + # Never overwrite existing values, to avoid clashes + if not hasattr(serialized_self, key): + serialized_self[key] = value + + return serialized_self + + @model_validator(mode='before') + @classmethod + def unwrap_additional_properties(cls, data): + json_properties = list(data.keys()) + known_object_properties = ['test_prop1', 'additional_properties'] + unknown_object_properties = [element for element in json_properties if element not in known_object_properties] + # Ignore attempts that validate regular models, only when unknown input is used we add unwrap extensions + if len(unknown_object_properties) == 0: + return data + + known_json_properties = ['testProp1', 'additionalProperties'] + additional_properties = {} + for obj_key in list(data.keys()): + if not known_json_properties.__contains__(obj_key): + additional_properties[obj_key] = data.pop(obj_key, None) + data['additionalProperties'] = additional_properties + return data + ", "class Union2(BaseModel): test_prop2: Optional[str] = Field(default=None, alias='''testProp2''') additional_properties: Optional[dict[str, Any]] = Field(exclude=True, default=None, alias='''additionalProperties''') + + @model_serializer(mode='wrap') + def custom_serializer(self, handler): + serialized_self = handler(self) + additional_properties = getattr(self, \\"additional_properties\\") + if additional_properties is not None: + for key, value in additional_properties.items(): + # Never overwrite existing values, to avoid clashes + if not hasattr(serialized_self, key): + serialized_self[key] = value + + return serialized_self + + @model_validator(mode='before') + @classmethod + def unwrap_additional_properties(cls, data): + json_properties = list(data.keys()) + known_object_properties = ['test_prop2', 'additional_properties'] + unknown_object_properties = [element for element in json_properties if element not in known_object_properties] + # Ignore attempts that validate regular models, only when unknown input is used we add unwrap extensions + if len(unknown_object_properties) == 0: + return data + + known_json_properties = ['testProp2', 'additionalProperties'] + additional_properties = {} + for obj_key in list(data.keys()): + if not known_json_properties.__contains__(obj_key): + additional_properties[obj_key] = data.pop(obj_key, None) + data['additionalProperties'] = additional_properties + return data + ", ] `;