From 7eca0eab1f41e7a842a85abcca0f4d361f67b3c8 Mon Sep 17 00:00:00 2001 From: 2ynn Date: Fri, 23 Oct 2026 13:03:57 -0400 Subject: [PATCH] fix(python): honour include/exclude filters in model dumps Generated wrap serializers wrote required and explicitly set nullable fields back as None even when include, exclude, exclude_unset or exclude_defaults left them out of the dump. Skip a declared field that is absent from Pydantic's output under both its API name and its Python name, unless the dump uses exclude_none, which request bodies rely on to keep sending null. Also read fields whose API name is the empty string (multipart file content) under that name: the serializer fell back to the Python name, so by-alias dumps lost the value. --- .changesets/1792775030-0ae07c4d.yaml | 10 + .changesets/1792778028-be2ce88f.yaml | 10 + templates/perms.go | 1 + templates/templates/pythonv2/model.py.stmpl | 6 +- .../test_model_dump_filters_additional.py | 206 ++++++++++++++++++ .../fragments/primary/model-dump-filters.yaml | 86 ++++++++ zSDKs/sdk-pythonv2/.speakeasy/gen.lock | 98 ++++----- .../src/speakeasy/new_openapi/models/aloof.py | 6 +- .../new_openapi/models/assetimageblock.py | 6 +- .../new_openapi/models/assetnotestep.py | 6 +- .../new_openapi/models/assetoutputstep.py | 6 +- .../new_openapi/models/assetresult.py | 6 +- .../new_openapi/models/assettextblock.py | 6 +- .../new_openapi/models/bar/petowner.py | 6 +- .../speakeasy/new_openapi/models/baseuser.py | 6 +- .../new_openapi/models/baz/namespaced.py | 6 +- .../speakeasy/new_openapi/models/baz/pet.py | 6 +- .../models/binaryandstringuploadop.py | 6 +- .../src/speakeasy/new_openapi/models/boole.py | 6 +- .../new_openapi/models/chatagentrequest.py | 6 +- .../new_openapi/models/chatmodelrequest.py | 6 +- .../speakeasy/new_openapi/models/chatop.py | 12 +- .../speakeasy/new_openapi/models/circle.py | 6 +- .../new_openapi/models/createwithunionop.py | 12 +- .../new_openapi/models/exhaustiveobject.py | 6 +- .../src/speakeasy/new_openapi/models/file.py | 6 +- .../speakeasy/new_openapi/models/foo/cat.py | 6 +- .../speakeasy/new_openapi/models/foo/dog.py | 6 +- .../new_openapi/models/foo/organization.py | 12 +- .../speakeasy/new_openapi/models/foo/pet.py | 6 +- .../new_openapi/models/foo/petowner.py | 6 +- .../new_openapi/models/getassetop.py | 6 +- .../models/getduplicateexportcollisionop.py | 6 +- .../models/geterroronlyexampleop.py | 6 +- .../models/getfullyflattenedrequestop.py | 12 +- .../new_openapi/models/getpolymorphismop.py | 18 +- .../models/getrequestbodyflattenedawayop.py | 6 +- .../new_openapi/models/internal/globals.py | 6 +- .../new_openapi/models/listtest1op.py | 18 +- .../speakeasy/new_openapi/models/metadata.py | 6 +- .../new_openapi/models/metadataany.py | 6 +- .../models/objwithrenamedproperties.py | 6 +- .../models/oneofwithfactoredoutproperties.py | 12 +- .../models/postfilewithencodingop.py | 30 ++- .../new_openapi/models/posttest2op.py | 12 +- .../speakeasy/new_openapi/models/rectangle.py | 6 +- .../new_openapi/models/recursiveformfield.py | 18 +- .../new_openapi/models/renderassetop.py | 6 +- .../speakeasy/new_openapi/models/security.py | 6 +- .../new_openapi/models/shaperequest.py | 6 +- .../new_openapi/models/templatebracestest.py | 6 +- .../new_openapi/models/test2request.py | 6 +- .../new_openapi/models/test2response.py | 6 +- .../src/speakeasy/new_openapi/models/user.py | 6 +- .../new_openapi/models/validateop.py | 6 +- .../new_openapi/models/variantrecord.py | 12 +- 56 files changed, 630 insertions(+), 183 deletions(-) create mode 100644 .changesets/1792775030-0ae07c4d.yaml create mode 100644 .changesets/1792778028-be2ce88f.yaml create mode 100644 templates/templates/pythonv2/tests/primary/test_model_dump_filters_additional.py create mode 100644 tests/specs/fragments/primary/model-dump-filters.yaml diff --git a/.changesets/1792775030-0ae07c4d.yaml b/.changesets/1792775030-0ae07c4d.yaml new file mode 100644 index 000000000..03b2239ab --- /dev/null +++ b/.changesets/1792775030-0ae07c4d.yaml @@ -0,0 +1,10 @@ +id: 1792775030-0ae07c4d +features: + - core +targets: + - pythonv2 +type: fix +bump: patch +description: leave fields filtered by include, exclude, exclude_unset or exclude_defaults out of model dumps +author: 2ynn +date: "2026-10-23" diff --git a/.changesets/1792778028-be2ce88f.yaml b/.changesets/1792778028-be2ce88f.yaml new file mode 100644 index 000000000..729ea7983 --- /dev/null +++ b/.changesets/1792778028-be2ce88f.yaml @@ -0,0 +1,10 @@ +id: 1792778028-be2ce88f +features: + - core +targets: + - pythonv2 +type: fix +bump: patch +description: keep the value of fields with an empty API name in model dumps +author: 2ynn +date: "2026-10-23" diff --git a/templates/perms.go b/templates/perms.go index 3bd7b0c7e..8c064d459 100644 --- a/templates/perms.go +++ b/templates/perms.go @@ -1688,6 +1688,7 @@ var fileMode = map[string]fs.FileMode{ "templates/pythonv2/tests/primary/test_helpers.py": 0o644, "templates/pythonv2/tests/primary/test_hooks_additional.py.stmpl": 0o644, "templates/pythonv2/tests/primary/test_jsonl_streaming_additional.py": 0o644, + "templates/pythonv2/tests/primary/test_model_dump_filters_additional.py": 0o644, "templates/pythonv2/tests/primary/test_model_serializer_alias.py": 0o644, "templates/pythonv2/tests/primary/test_open_discriminated_union.py": 0o644, "templates/pythonv2/tests/primary/test_open_enum_union_discrimination.py": 0o644, diff --git a/templates/templates/pythonv2/model.py.stmpl b/templates/templates/pythonv2/model.py.stmpl index c4d42bc95..4e13fc018 100644 --- a/templates/templates/pythonv2/model.py.stmpl +++ b/templates/templates/pythonv2/model.py.stmpl @@ -76,7 +76,7 @@ class {{$className}}(BaseModel): {{- addImport "pydantic" "model_serializer"}} {{- addImport "types" "UNSET_SENTINEL" true}} @model_serializer(mode="wrap") - def {{sanitizeSerializeMethodName $type}}(self, handler): + def {{sanitizeSerializeMethodName $type}}(self, handler, info): {{- $nullDefaultFields := templateNullDefaultFieldList $type}} {{- $hasNullDefaultField := gt (len $nullDefaultFields) 0}} {{- if $hasOptionalField}} @@ -92,7 +92,9 @@ class {{$className}}(BaseModel): m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) {{- if $hasAdditionalProperties}} serialized.pop(k, serialized.pop(n, None)) diff --git a/templates/templates/pythonv2/tests/primary/test_model_dump_filters_additional.py b/templates/templates/pythonv2/tests/primary/test_model_dump_filters_additional.py new file mode 100644 index 000000000..913f321d5 --- /dev/null +++ b/templates/templates/pythonv2/tests/primary/test_model_dump_filters_additional.py @@ -0,0 +1,206 @@ +import json +from typing import List, Optional + +from pydantic import TypeAdapter + +from openapi import utils +from openapi.models import errors, shared +from openapi.types import Nullable + + +def filtered_fields(display_name="name", **kwargs): + return shared.FilteredFields( + display_name=display_name, required_nullable=None, **kwargs + ) + + +class TestModelDumpFilters: + def test_exclude_leaves_required_field_out(self): + model = filtered_fields() + + assert "displayName" not in model.model_dump(exclude={"display_name"}) + assert "displayName" not in model.model_dump( + by_alias=True, exclude={"display_name"} + ) + assert "displayName" not in json.loads( + model.model_dump_json(exclude={"display_name"}) + ) + + def test_include_leaves_other_fields_out(self): + model = filtered_fields(optional_nullable="x") + + assert model.model_dump(include={"optional_nullable"}) == { + "optionalNullable": "x" + } + assert model.model_dump(by_alias=True, include={"display_name"}) == { + "displayName": "name" + } + + def test_exclude_unset_leaves_unset_fields_out(self): + model = filtered_fields() + + assert model.model_dump(exclude_unset=True) == { + "displayName": "name", + "requiredNullable": None, + } + + def test_exclude_defaults_leaves_default_fields_out(self): + model = filtered_fields(with_default="other") + + assert model.model_dump(exclude_defaults=True) == { + "displayName": "name", + "requiredNullable": None, + "withDefault": "other", + } + + def test_exclude_none_still_writes_back_excluded_required_field(self): + model = filtered_fields() + + dumped = model.model_dump(exclude={"display_name"}, exclude_none=True) + + assert dumped["displayName"] is None + + def test_nested_exclude(self): + model = filtered_fields( + child=filtered_fields("child"), children=[filtered_fields("item")] + ) + + dumped = model.model_dump( + exclude={ + "child": {"display_name"}, + "children": {"__all__": {"display_name"}}, + } + ) + + assert dumped["displayName"] == "name" + assert "displayName" not in dumped["child"] + assert "displayName" not in dumped["children"][0] + + +class TestNestedDefaultDumps: + def test_nested_models_keep_api_names(self): + model = filtered_fields( + child=filtered_fields("child"), children=[filtered_fields("item")] + ) + + for dumped in (model.model_dump(), json.loads(model.model_dump_json())): + assert dumped["child"]["displayName"] == "child" + assert dumped["child"]["requiredNullable"] is None + assert dumped["children"][0]["displayName"] == "item" + + def test_model_lists_keep_api_names(self): + adapter = TypeAdapter(List[shared.FilteredFields]) + + dumped = adapter.dump_python([filtered_fields("first")]) + + assert dumped[0]["displayName"] == "first" + assert dumped[0]["requiredNullable"] is None + + +class TestRequestBodies: + def test_explicit_nulls(self): + model = filtered_fields(optional_nullable=None) + + assert ( + utils.marshal_json(model, shared.FilteredFields) + == '{"displayName":"name","requiredNullable":null,"kind":"filtered","nullDefault":null,"optionalNullable":null,"withDefault":"fallback"}' + ) + + def test_required_nullable_null(self): + model = shared.PaginationCursorNullableLimitNextCursor( + next_cursor=None, results=["a"] + ) + + assert ( + utils.marshal_json(model, shared.PaginationCursorNullableLimitNextCursor) + == '{"next_cursor":null,"results":["a"]}' + ) + + def test_nested_nulls_and_api_names(self): + model = filtered_fields( + child=filtered_fields("child", optional_nullable=None), + children=[filtered_fields("item")], + ) + + assert json.loads(utils.marshal_json(model, shared.FilteredFields)) == { + "displayName": "name", + "requiredNullable": None, + "child": { + "displayName": "child", + "requiredNullable": None, + "kind": "filtered", + "nullDefault": None, + "optionalNullable": None, + "withDefault": "fallback", + }, + "children": [ + { + "displayName": "item", + "requiredNullable": None, + "kind": "filtered", + "nullDefault": None, + "withDefault": "fallback", + } + ], + "kind": "filtered", + "nullDefault": None, + "withDefault": "fallback", + } + + def test_null_additional_property_omitted(self): + model = shared.ObjWithAnyAdditionalProperties.model_validate( + {"normalField": "x", "future": None} + ) + + assert ( + utils.marshal_json(model, shared.ObjWithAnyAdditionalProperties) + == '{"normalField":"x"}' + ) + + def test_additional_property_under_python_name(self): + model = shared.ObjWithAnyAdditionalProperties.model_validate( + {"normalField": None, "normal_field": "extra"} + ) + other = shared.FilteredFieldsWithAdditionalProperties.model_validate( + {"displayName": None, "display_name": "extra"} + ) + + assert ( + utils.marshal_json(model, shared.ObjWithAnyAdditionalProperties) + == '{"normalField":"extra"}' + ) + assert ( + utils.marshal_json(other, shared.FilteredFieldsWithAdditionalProperties) + == '{"displayName":"extra"}' + ) + + def test_top_level_none(self): + assert utils.marshal_json(None, Optional[shared.FilteredFields]) == "" + assert utils.marshal_json(None, Nullable[shared.FilteredFields]) == "null" + + +class TestErrorData: + def test_plain_filtering(self): + data = errors.FilteredFieldsErrorData() + + assert data.model_dump() == {"detail": None} + assert data.model_dump(exclude_none=True) == {} + assert data.model_dump(exclude_unset=True) == {} + + def test_nested_model_honours_exclude(self): + data = errors.FilteredFieldsErrorData(detail=filtered_fields()) + + dumped = data.model_dump(exclude={"detail": {"display_name"}}) + + assert "displayName" not in dumped["detail"] + assert dumped["detail"]["requiredNullable"] is None + + +class TestEmptyAlias: + def test_value_kept_under_empty_api_name(self): + model = shared.BinaryString(file_name="a", content=b"x") + + assert model.model_dump(by_alias=True)[""] == b"x" + assert model.model_dump()[""] == b"x" + assert "content" not in model.model_dump(by_alias=True) + assert "" not in model.model_dump(by_alias=True, exclude={"content"}) diff --git a/tests/specs/fragments/primary/model-dump-filters.yaml b/tests/specs/fragments/primary/model-dump-filters.yaml new file mode 100644 index 000000000..ab22fca0a --- /dev/null +++ b/tests/specs/fragments/primary/model-dump-filters.yaml @@ -0,0 +1,86 @@ +openapi: 3.1.0 +security: + - apiKeyAuth: [] + - oauth2: [] + - clientCredentials: [read, write] + - customSchemeAppId: [] + - basicHttp: [] + - accessToken: [] + - {} +paths: + /errors/model-dump-filters: + get: + operationId: getFilteredFieldsError + description: >- + Declares an error response whose body nests an object schema with + required, nullable, defaulted and const properties, so that serializing + the error body with fields filtered out can be checked against the same + rules as ordinary models. + tags: + - errors + responses: + "200": + description: OK + "400": + description: Error whose body nests FilteredFields + content: + application/json: + schema: + $ref: "#/components/schemas/FilteredFieldsError" +components: + schemas: + FilteredFields: + x-speakeasy-include: true + type: object + description: >- + Object with a required renamed property, required and optional nullable + properties, a property with a default, a nullable property with a null + default, a const property, and nested copies of itself as a property and + as array items. Fields that a serializer is asked to leave out (by + explicit selection, because they were never set, or because they hold + their default) must stay out of the output, while request bodies keep + sending required and explicitly set nullable properties as null. + required: + - displayName + - requiredNullable + - kind + properties: + displayName: + type: string + requiredNullable: + type: [string, "null"] + optionalNullable: + type: [string, "null"] + withDefault: + type: string + default: fallback + nullDefault: + type: [string, "null"] + default: null + kind: + type: string + const: filtered + child: + $ref: "#/components/schemas/FilteredFields" + children: + type: array + items: + $ref: "#/components/schemas/FilteredFields" + FilteredFieldsWithAdditionalProperties: + x-speakeasy-include: true + type: object + description: >- + Object with an optional nullable renamed property and untyped + additional properties, for request bodies that hold both the renamed + property and an additional property keyed by the property's other + spelling. + properties: + displayName: + type: [string, "null"] + additionalProperties: true + FilteredFieldsError: + type: object + description: Error body that nests FilteredFields. + properties: + detail: + $ref: "#/components/schemas/FilteredFields" diff --git a/zSDKs/sdk-pythonv2/.speakeasy/gen.lock b/zSDKs/sdk-pythonv2/.speakeasy/gen.lock index d81167dc3..e5217c27c 100644 --- a/zSDKs/sdk-pythonv2/.speakeasy/gen.lock +++ b/zSDKs/sdk-pythonv2/.speakeasy/gen.lock @@ -502,19 +502,19 @@ trackedFiles: src/speakeasy/new_openapi/models/_operation_with_leading_and_trailing_underscores_op.py: last_write_checksum: sha1:9da7c78f1847e53efbd5892794ba082c856ccc88 src/speakeasy/new_openapi/models/aloof.py: - last_write_checksum: sha1:35e39e540a3a978d4566d3cdbddfe45719802d27 + last_write_checksum: sha1:b2164f2a6f9d7b5d583cd080a41ab5df96fad723 src/speakeasy/new_openapi/models/approvalconfig.py: last_write_checksum: sha1:7412b9518b49bedad8b8965bd94e907ede790c97 src/speakeasy/new_openapi/models/assetimageblock.py: - last_write_checksum: sha1:d52a5d536ad6d67e26a289043c15616a88a13cb3 + last_write_checksum: sha1:c7d29fd275edc489ee0630fcbc63f7b85565a5be src/speakeasy/new_openapi/models/assetnotestep.py: - last_write_checksum: sha1:d4de19b9c876d034d0b654ff965151f36a5dd0fa + last_write_checksum: sha1:4dfe8fdc2a59b79ed69ea5a25258df1f1eaaf92d src/speakeasy/new_openapi/models/assetoutputstep.py: - last_write_checksum: sha1:e11a9e1fda2956b99efb96c28d8891f361ff8598 + last_write_checksum: sha1:7ae4ec2281d94ad13a988fc42a44091e7d5ebe1f src/speakeasy/new_openapi/models/assetresult.py: - last_write_checksum: sha1:053e5b48bbea5b9b8ad13654374a9ca87c6b9b25 + last_write_checksum: sha1:0a801e767e2b549137c1a6249169032634b63c92 src/speakeasy/new_openapi/models/assettextblock.py: - last_write_checksum: sha1:67d4d7c51ffd5b4dff26f51060181a0e7440d863 + last_write_checksum: sha1:74f18001ce9c562ffa9c0187f336d3dfcb4b0254 src/speakeasy/new_openapi/models/authop.py: last_write_checksum: sha1:7ccdc07da84bfe62e2bd395cc016d72aabc44b2e src/speakeasy/new_openapi/models/badrequestresponse_error.py: @@ -528,37 +528,37 @@ trackedFiles: src/speakeasy/new_openapi/models/bar/pet.py: last_write_checksum: sha1:c8a5a8ed46d1c0db53ff55b0a75f68e003d79767 src/speakeasy/new_openapi/models/bar/petowner.py: - last_write_checksum: sha1:e52f159a5d74ec77c97dc984757acf7d40f7adf9 + last_write_checksum: sha1:93277e77b8743de38a13379b888bc01db40fc116 src/speakeasy/new_openapi/models/bar/petstatus.py: last_write_checksum: sha1:37b688c141361461830c1dfe2933997fd6a00951 src/speakeasy/new_openapi/models/bar/vehicle.py: last_write_checksum: sha1:5c6366c72438154f3adff350cef5c7da577cc2f6 src/speakeasy/new_openapi/models/baseuser.py: - last_write_checksum: sha1:e83b85798ea0a31f62b1009929b8962a0251b387 + last_write_checksum: sha1:e601f193506b0224fc3fb3c5c555d7e15e5e31dc src/speakeasy/new_openapi/models/baz/__init__.py: last_write_checksum: sha1:fbb65d90be5fef910378ae7ea0d3dd972ac7752e src/speakeasy/new_openapi/models/baz/namespaced.py: - last_write_checksum: sha1:89128b0e925b13cf7da3ec70559eb66630053dba + last_write_checksum: sha1:6f701f924e3741626961b78e7e19e8dac857850d src/speakeasy/new_openapi/models/baz/pet.py: - last_write_checksum: sha1:be6a33736e75bd3e6da798c7b55551096f40bb1a + last_write_checksum: sha1:7c227b01ea95cbe60dffe0e5230c662a0763d8c4 src/speakeasy/new_openapi/models/binaryandstringuploadop.py: - last_write_checksum: sha1:d28b000594da626cd5e2017fed2abb503c6a693b + last_write_checksum: sha1:c0a1fd5ad923c8902abb0bcc93e422dc0373472c src/speakeasy/new_openapi/models/boole.py: - last_write_checksum: sha1:b534197e01155ba069dbf0d49ac6c8114f025c8f + last_write_checksum: sha1:e459ad288012e3d166ecf22b4a50997d95a4fb67 src/speakeasy/new_openapi/models/chatagentrequest.py: - last_write_checksum: sha1:7665bd46b5f4b4c167c5bca03c3e70487bee1731 + last_write_checksum: sha1:1b66ce4c673ecdd79ae3f573eb4b4d1e7c16ad4d src/speakeasy/new_openapi/models/chatmodelrequest.py: - last_write_checksum: sha1:ac61ed44911dc0f545f12a14d814c77124804cac + last_write_checksum: sha1:d3dc2aec37ac31a58ec32a3da9eb7ece15776afa src/speakeasy/new_openapi/models/chatop.py: - last_write_checksum: sha1:e4e04fd79f37eef3cc957d083d3f965166a4ea3a + last_write_checksum: sha1:279a27e75bf0778cac65c894ce1a4eb9faaae86e src/speakeasy/new_openapi/models/circle.py: - last_write_checksum: sha1:6437e8c90b8f9a8e2a953508aec5d0f4be2afc93 + last_write_checksum: sha1:523bca86d4f6a2f339f4ea1ba1eb6c26ff0a6ed7 src/speakeasy/new_openapi/models/circularunion.py: last_write_checksum: sha1:82a4d2ffc8dbd0662e0649763a65bdc7e31478e7 src/speakeasy/new_openapi/models/color.py: last_write_checksum: sha1:3cbf117fac27321e49b2989a82adac7105121b82 src/speakeasy/new_openapi/models/createwithunionop.py: - last_write_checksum: sha1:e73a49dfb874d8527afb29b6526d2d741436956d + last_write_checksum: sha1:600021d77f1d41c0af11cca7d057499300a76d39 src/speakeasy/new_openapi/models/deleteuserop.py: last_write_checksum: sha1:757b8d3047b3ae8383ac982267c7a3d6456a338c src/speakeasy/new_openapi/models/deprecated1op.py: @@ -576,49 +576,49 @@ trackedFiles: src/speakeasy/new_openapi/models/escalation.py: last_write_checksum: sha1:d6e4cb3baf6dbdc96219e96ce57a92f11c1b582b src/speakeasy/new_openapi/models/exhaustiveobject.py: - last_write_checksum: sha1:4ca50d9c344cbde4fbf5680eb355abd8ef65c035 + last_write_checksum: sha1:7263eaba9ddb80c6d2abc12c285587ea3d304a79 src/speakeasy/new_openapi/models/failedresponse_error.py: last_write_checksum: sha1:29230b2bcd0614d4ccf00b8b19e9660a7bdda77e src/speakeasy/new_openapi/models/file.py: - last_write_checksum: sha1:29702f9a14288ca324941ae38aa0bca47692b30d + last_write_checksum: sha1:c349c81d4db8c9af5015747019ca94f6693c858b src/speakeasy/new_openapi/models/foo/__init__.py: last_write_checksum: sha1:c85b4cda9e10fac134bf17e81db393b79d9d79b7 src/speakeasy/new_openapi/models/foo/animal.py: last_write_checksum: sha1:1e9b5c9e735c19a027e5d90564cba3b6216ad3f7 src/speakeasy/new_openapi/models/foo/cat.py: - last_write_checksum: sha1:6e7022c0497ec6b428afa5ef849faa3fa2488793 + last_write_checksum: sha1:8cf0d4a57c1f29263e49c6525c46beb5dad2a0da src/speakeasy/new_openapi/models/foo/dog.py: - last_write_checksum: sha1:143c62d509fcd2214f311f8634cf20d55d11b5d8 + last_write_checksum: sha1:8774fb7f35620a81adcd357134eb75024d32dce7 src/speakeasy/new_openapi/models/foo/organization.py: - last_write_checksum: sha1:7e66ee1c2ab4e069720cddeb307d4154f2f62d56 + last_write_checksum: sha1:3265d850c86165d6f55cea0ab2ca88b90a802d43 src/speakeasy/new_openapi/models/foo/pet.py: - last_write_checksum: sha1:51aed346b747dec49b9d6ebb537b15dd566a7304 + last_write_checksum: sha1:ca44a1afc4037e980036c6c8ff9e7a0776581cbd src/speakeasy/new_openapi/models/foo/petowner.py: - last_write_checksum: sha1:cd0f740bd3c7f3e24c9394ea5752cdb622b6e889 + last_write_checksum: sha1:8dfd29d75ce3e27525c85c2ac96fd35c3cb02109 src/speakeasy/new_openapi/models/foo/petspecies.py: last_write_checksum: sha1:a5df0b625565ecf78ea933a3f2af562386fba17a src/speakeasy/new_openapi/models/gender.py: last_write_checksum: sha1:e935cf4f6a56e1109e0c326a15d967644b2c8106 src/speakeasy/new_openapi/models/getassetop.py: - last_write_checksum: sha1:0442d66318c5b70bcc5ed666688da94c96f42be4 + last_write_checksum: sha1:886734759a5e164221e61171058e8bd81b26ea1e src/speakeasy/new_openapi/models/getduplicateexportcollisionop.py: - last_write_checksum: sha1:e5c1456c4b1fb71ce1bb3489464612b6d86697a9 + last_write_checksum: sha1:5fe8c40dbb42afad36cde813f752254f0b51a04e src/speakeasy/new_openapi/models/getemptyobjecterrorop.py: last_write_checksum: sha1:75c623983f8830cd7252d230ce6e0e9d4df6829e src/speakeasy/new_openapi/models/geterrorinunionop.py: last_write_checksum: sha1:356f45f833c96cce62bda024eacf978475a07d0c src/speakeasy/new_openapi/models/geterroronlyexampleop.py: - last_write_checksum: sha1:0cc84d395bcce4e330da237c70950c2ab0228a0c + last_write_checksum: sha1:2b7afea7ce33742d138d5de67ea32f0c7c098852 src/speakeasy/new_openapi/models/getfullyflattenedrequestop.py: - last_write_checksum: sha1:7ba1e287cb17cb2da60899b9ff01a4c6f9432d83 + last_write_checksum: sha1:8170c959699f163fd33bd5259ec533d2cac2bef6 src/speakeasy/new_openapi/models/getpetownersop.py: last_write_checksum: sha1:9b7829885bcdbb78f372af13245e3c1b29d49ae5 src/speakeasy/new_openapi/models/getpolymorphismop.py: - last_write_checksum: sha1:e2d1112e233be966aa52d2edcb92886d0af916fd + last_write_checksum: sha1:32f35b2a0b892f22ccaff15b5acbdaa32975ffe1 src/speakeasy/new_openapi/models/getpositionaldefaultop.py: last_write_checksum: sha1:72ca9dae3ea68f51322778f910fc1aa899be05b3 src/speakeasy/new_openapi/models/getrequestbodyflattenedawayop.py: - last_write_checksum: sha1:f83489f1b376ecf017b29a3a1dc7c6b3d7fbf040 + last_write_checksum: sha1:82adc42381b9fb423e15fe5b211030eff0d0c930 src/speakeasy/new_openapi/models/getunionerrorsop.py: last_write_checksum: sha1:0b4b09143c2133f9440983ce6297890124117b9f src/speakeasy/new_openapi/models/getuserop.py: @@ -626,17 +626,17 @@ trackedFiles: src/speakeasy/new_openapi/models/internal/__init__.py: last_write_checksum: sha1:fa00c646cfffc2553593346d80fbd5c7ddb4d9b5 src/speakeasy/new_openapi/models/internal/globals.py: - last_write_checksum: sha1:d83d5b7d6b07956aad0ab8b52203d8f09108cb6b + last_write_checksum: sha1:0a3087d3adf4d09be45158681672b17c41dfd9a8 src/speakeasy/new_openapi/models/listtest1op.py: - last_write_checksum: sha1:cc70ac62847c4c5168b208405aafd6fee9b7a70a + last_write_checksum: sha1:ffb790772a222c6141bf0a108fba14833226556f src/speakeasy/new_openapi/models/loginop.py: last_write_checksum: sha1:468add7ca4aea76c9e1a7ccaa627b59c45fb3e70 src/speakeasy/new_openapi/models/mcppolicy.py: last_write_checksum: sha1:79b406c5b22b34cc7d9b42eed4d5763ed4dffb81 src/speakeasy/new_openapi/models/metadata.py: - last_write_checksum: sha1:928fb3c7da2cbfa0a7f3fe25a2b87811ff4527b0 + last_write_checksum: sha1:7869949e0863792f6a866efea5afa4b868da0883 src/speakeasy/new_openapi/models/metadataany.py: - last_write_checksum: sha1:10e645df6416f193bcb1ea032b6d8fd34604ff83 + last_write_checksum: sha1:cccb2dc6b800a00f4ca94a7c4f261f20686140e8 src/speakeasy/new_openapi/models/namespaceconflicttest.py: last_write_checksum: sha1:3c086e737bdd18289b7b56a14e9813070773cafa src/speakeasy/new_openapi/models/namespacetypestest.py: @@ -644,9 +644,9 @@ trackedFiles: src/speakeasy/new_openapi/models/no_response_error.py: last_write_checksum: sha1:7f326424a7d5ae1bcd5c89a0d6b3dbda9138942f src/speakeasy/new_openapi/models/objwithrenamedproperties.py: - last_write_checksum: sha1:2f84b8dffc356c937e3b32180163aa8712cb4dac + last_write_checksum: sha1:cdadeab32a6c3c99362fcec3f55cbc0b86b6eb34 src/speakeasy/new_openapi/models/oneofwithfactoredoutproperties.py: - last_write_checksum: sha1:e4e3e4d809ac36f7287983ae486961147d859f9c + last_write_checksum: sha1:8fd6e2006cdff72b85b146fe2a1a5af05d0d3ac1 src/speakeasy/new_openapi/models/parenthesesinpathallowedop.py: last_write_checksum: sha1:ee19301a0804f599fa29c944f7bc86d3db6ebe19 src/speakeasy/new_openapi/models/paymentcreatedop.py: @@ -658,15 +658,15 @@ trackedFiles: src/speakeasy/new_openapi/models/postfileop.py: last_write_checksum: sha1:bc0eb2314695db796f69f04532d81dc3c606f963 src/speakeasy/new_openapi/models/postfilewithencodingop.py: - last_write_checksum: sha1:3d6a6bafb6adcf855ae6bd6f4b74f6b59d1f1a30 + last_write_checksum: sha1:915f5d7218c3e763984740a9ea906bb0ea86ddd2 src/speakeasy/new_openapi/models/posttest2op.py: - last_write_checksum: sha1:ae6b813db75d86901e3781a093f5f54b1760f3fd + last_write_checksum: sha1:35e784f7654988be14f04225f231b9427524aa65 src/speakeasy/new_openapi/models/rectangle.py: - last_write_checksum: sha1:62a38bb81f6dbb64315353ac09f69830798e6dcc + last_write_checksum: sha1:ffebca58dbcf1e02ce6dc07dabf75f1c3100bcd4 src/speakeasy/new_openapi/models/recursiveformfield.py: - last_write_checksum: sha1:01fdeb92f3b6bc3c6e7de7ced06c36c3a861891e + last_write_checksum: sha1:ebd842a94d0132478dc8f86e2db15e72da7c0684 src/speakeasy/new_openapi/models/renderassetop.py: - last_write_checksum: sha1:39bfa820d75a7a8f3492ff90fb8f013eca213e62 + last_write_checksum: sha1:eb9a82e3b356cbe462dc641c0b915e814aeb497d src/speakeasy/new_openapi/models/requesttimeouterror.py: last_write_checksum: sha1:c77b2803afb86e196db8e547bde9128effdc50a8 src/speakeasy/new_openapi/models/responsevalidationerror.py: @@ -678,11 +678,11 @@ trackedFiles: src/speakeasy/new_openapi/models/sdkerror.py: last_write_checksum: sha1:0f8bfdf0fadae51b100d3e3ca9e861c757cbbabc src/speakeasy/new_openapi/models/security.py: - last_write_checksum: sha1:4060364b8d8502f5b5711cb602a7708508d00cfd + last_write_checksum: sha1:7a35b6171d527d4dc2dbc364fdeaa43abb042382 src/speakeasy/new_openapi/models/shape.py: last_write_checksum: sha1:efe7d67814c451101cdbf6e6a39c713096e68853 src/speakeasy/new_openapi/models/shaperequest.py: - last_write_checksum: sha1:2f066023fe01b1d30d09e19b589f566ae7f93f7c + last_write_checksum: sha1:8332105d406ffcf40f8a5539c0686a48eab3c06f src/speakeasy/new_openapi/models/simpleobject.py: last_write_checksum: sha1:eddf0fd28390a97b1f5f2fd4ca813067fdf5c42a src/speakeasy/new_openapi/models/someunion.py: @@ -694,11 +694,11 @@ trackedFiles: src/speakeasy/new_openapi/models/taskresponse.py: last_write_checksum: sha1:5efbbd31fa80e1e17e8765f77ece3c04e5ddf68a src/speakeasy/new_openapi/models/templatebracestest.py: - last_write_checksum: sha1:83fe8c8d4f4617600f6bc7287a9d5a0394df6dd4 + last_write_checksum: sha1:14e753f840d6e46640b0060fa307af4e7112526a src/speakeasy/new_openapi/models/test2request.py: - last_write_checksum: sha1:f6c1e519be3cbda2be87f3fe9f7c566c2d3dc905 + last_write_checksum: sha1:f8bebe6b06c5fd8e8d6bff6d9084f384569eb92a src/speakeasy/new_openapi/models/test2response.py: - last_write_checksum: sha1:bcef408d9a1bdf0e231d048cf028b6e43a4de9a4 + last_write_checksum: sha1:2b4745f99f22719e044b8811b18a899132990aac src/speakeasy/new_openapi/models/test2response_error.py: last_write_checksum: sha1:77b07c54b21fc19d9a9e5b5e13430e8795ad9bc3 src/speakeasy/new_openapi/models/testendpointop.py: @@ -710,11 +710,11 @@ trackedFiles: src/speakeasy/new_openapi/models/updateuserop.py: last_write_checksum: sha1:6afb62851a48192e0d31b237389b364d681107fd src/speakeasy/new_openapi/models/user.py: - last_write_checksum: sha1:6eb0297ce97089c4af5321155ac948af668e40e8 + last_write_checksum: sha1:e1433ee25b200ce57ec3046f529354caa6e8b497 src/speakeasy/new_openapi/models/validateop.py: - last_write_checksum: sha1:c7ca37971829305d16b5655075b08031a1206da9 + last_write_checksum: sha1:9401bf8b417a78611a49ec7e701d3aa76f7bf156 src/speakeasy/new_openapi/models/variantrecord.py: - last_write_checksum: sha1:7c239ed1798eb0d8749c0bf577390b3eafa40b0d + last_write_checksum: sha1:92cdc12e1aea3f0cf7eb9bcf8785c7d3b3d1d8f0 src/speakeasy/new_openapi/namespacetests.py: last_write_checksum: sha1:e8dda8124b42827a2e415670fb668bc28372ffa4 src/speakeasy/new_openapi/obsolete.py: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/aloof.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/aloof.py index 7cf7381d0..522139c5a 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/aloof.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/aloof.py @@ -19,13 +19,15 @@ class Aloof(BaseModel): int_: Annotated[Optional[int], pydantic.Field(alias="int")] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["bool", "int"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetimageblock.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetimageblock.py index d005940b6..261747e17 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetimageblock.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetimageblock.py @@ -30,13 +30,15 @@ class AssetImageBlock(BaseModel): uri: Optional[str] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["data", "mime_type", "uri"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetnotestep.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetnotestep.py index 5536d6cc1..a29f05067 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetnotestep.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetnotestep.py @@ -24,13 +24,15 @@ class AssetNoteStep(BaseModel): text: Optional[str] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["text"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetoutputstep.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetoutputstep.py index 995cfaa58..acce4737e 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetoutputstep.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetoutputstep.py @@ -64,13 +64,15 @@ class AssetOutputStep(BaseModel): content: Optional[List[Content]] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["content"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetresult.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetresult.py index 8f4f424b8..3f86468ed 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetresult.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assetresult.py @@ -77,13 +77,15 @@ class AssetResult(BaseModel): steps: Optional[List[Step]] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["id", "status", "steps"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assettextblock.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assettextblock.py index 20eb18301..78147fb8b 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assettextblock.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/assettextblock.py @@ -24,13 +24,15 @@ class AssetTextBlock(BaseModel): text: Optional[str] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["text"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/bar/petowner.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/bar/petowner.py index 043e02ee5..759f04c02 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/bar/petowner.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/bar/petowner.py @@ -29,13 +29,15 @@ class PetOwner(BaseModel): r"""A pet in the bar namespace""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["pet"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baseuser.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baseuser.py index d88636517..f872f080c 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baseuser.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baseuser.py @@ -52,7 +52,7 @@ class BaseUser(BaseModel): r"""A metadata object with additionalProperties true (any type) - should be flattened""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set( [ "id", @@ -70,7 +70,9 @@ def serialize_model(self, handler): m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baz/namespaced.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baz/namespaced.py index 4e19deb6a..0d0992ad9 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baz/namespaced.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baz/namespaced.py @@ -21,13 +21,15 @@ class Namespaced(BaseModel): ] = "baz" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["namespace"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baz/pet.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baz/pet.py index e092cead4..ecd5e996b 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baz/pet.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/baz/pet.py @@ -27,13 +27,15 @@ class Pet(BaseModel): adopted_at: Annotated[Optional[datetime], pydantic.Field(alias="adoptedAt")] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["adoptedAt"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/binaryandstringuploadop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/binaryandstringuploadop.py index 49f215714..374c6dff6 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/binaryandstringuploadop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/binaryandstringuploadop.py @@ -18,13 +18,15 @@ class BinaryAndStringUploadRequest(BaseModel): string: Optional[str] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["binary", "string"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/boole.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/boole.py index ca54083e8..7eb7a609e 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/boole.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/boole.py @@ -16,13 +16,15 @@ class Boole(BaseModel): bool_: Annotated[Optional[bool], pydantic.Field(alias="bool")] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["bool"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatagentrequest.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatagentrequest.py index a3183e6a8..01133a11b 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatagentrequest.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatagentrequest.py @@ -33,13 +33,15 @@ class ChatAgentRequest(BaseModel): r"""Sampling temperature""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["stream", "max_tokens", "temperature"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatmodelrequest.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatmodelrequest.py index cfdad4c7f..6eec92bf0 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatmodelrequest.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatmodelrequest.py @@ -35,13 +35,15 @@ class ChatModelRequest(BaseModel): r"""Sampling temperature""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["model", "stream", "max_tokens", "temperature"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatop.py index c8113adeb..41801abf5 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/chatop.py @@ -26,13 +26,15 @@ class Data(BaseModel): content: Optional[str] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["content"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -66,13 +68,15 @@ class ChatResponseBody(BaseModel): data: Optional[str] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["data"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/circle.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/circle.py index dc4994977..76fb2fc22 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/circle.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/circle.py @@ -31,13 +31,15 @@ class Circle(BaseModel): r"""Optional color of the circle""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["color"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/createwithunionop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/createwithunionop.py index deaba197f..c88525c14 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/createwithunionop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/createwithunionop.py @@ -31,13 +31,15 @@ class CreateWithUnionRequest(BaseModel): r"""If true, validates without creating""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["dryRun"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -64,13 +66,15 @@ class CreateWithUnionResponse(BaseModel): r"""A discriminated union of shape types""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["id", "shape"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/exhaustiveobject.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/exhaustiveobject.py index 9651fc445..c75b61d63 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/exhaustiveobject.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/exhaustiveobject.py @@ -263,7 +263,7 @@ class ExhaustiveObject(BaseModel): hero_width: Annotated[Optional[HeroWidth], pydantic.Field(alias="heroWidth")] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set( [ "enumProp", @@ -286,7 +286,9 @@ def serialize_model(self, handler): m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/file.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/file.py index a5676dc6d..6e8b17f97 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/file.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/file.py @@ -34,13 +34,15 @@ class File(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["contentType"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/cat.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/cat.py index 84f2b5fde..288a3923f 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/cat.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/cat.py @@ -31,13 +31,15 @@ class Cat(BaseModel): ) @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["meowFrequency"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/dog.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/dog.py index b597f99a7..85344a9ba 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/dog.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/dog.py @@ -29,13 +29,15 @@ class Dog(BaseModel): bark_volume: Annotated[Optional[int], pydantic.Field(alias="barkVolume")] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["barkVolume"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/organization.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/organization.py index a4d698eca..74c606c25 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/organization.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/organization.py @@ -43,13 +43,15 @@ class Address(BaseModel): r"""Deeply nested inline object should also end up in foo namespace""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["location"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -94,13 +96,15 @@ class Organization(BaseModel): departments: Optional[List[Department]] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["departments"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/pet.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/pet.py index b40a20960..25e1dc016 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/pet.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/pet.py @@ -52,13 +52,15 @@ class Pet(BaseModel): r"""A field name that often collides""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["models", "request", "operations", "errors", "utils"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/petowner.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/petowner.py index e371f3cce..043134dfd 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/petowner.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/foo/petowner.py @@ -26,13 +26,15 @@ class PetOwner(BaseModel): pets: Optional[List[Pet]] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["pets"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getassetop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getassetop.py index eb186ffbb..51c610662 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getassetop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getassetop.py @@ -25,13 +25,15 @@ class GetAssetRequest(BaseModel): ] = True @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["stream"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getduplicateexportcollisionop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getduplicateexportcollisionop.py index 429261fe4..30906acdc 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getduplicateexportcollisionop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getduplicateexportcollisionop.py @@ -19,13 +19,15 @@ class GetDuplicateExportCollisionResponse(BaseModel): result: Optional[str] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["result"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/geterroronlyexampleop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/geterroronlyexampleop.py index 0cfce81d8..c261252fa 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/geterroronlyexampleop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/geterroronlyexampleop.py @@ -25,13 +25,15 @@ class GetErrorOnlyExampleResponse(BaseModel): status: Optional[str] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["status"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getfullyflattenedrequestop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getfullyflattenedrequestop.py index dbb50b70f..84d7afc37 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getfullyflattenedrequestop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getfullyflattenedrequestop.py @@ -42,13 +42,15 @@ class GetFullyFlattenedRequestRequestBody(BaseModel): private: Optional[bool] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["emoji", "gif", "reply", "private"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -80,13 +82,15 @@ class GetFullyFlattenedRequestRequest(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["max_length"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getpolymorphismop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getpolymorphismop.py index 15e22a507..969471599 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getpolymorphismop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getpolymorphismop.py @@ -44,13 +44,15 @@ class SimpleAllOf(BaseModel): r"""A boolean property.""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["str", "bool"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -90,7 +92,7 @@ class AllOfWithFactoredOutProperties(BaseModel): r"""An extra property.""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set( ["anOverridingProperty", "anotherProperty", "anExtraProperty"] ) @@ -98,7 +100,9 @@ def serialize_model(self, handler): m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -162,7 +166,7 @@ class GetPolymorphismResponse(BaseModel): r"""A form field schema that can be recursive - the array type variant contains an array of RecursiveFormField items.""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set( [ "oneOfWithUnionDescription", @@ -177,7 +181,9 @@ def serialize_model(self, handler): m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getrequestbodyflattenedawayop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getrequestbodyflattenedawayop.py index 7f4c71334..5ff237292 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getrequestbodyflattenedawayop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/getrequestbodyflattenedawayop.py @@ -21,13 +21,15 @@ class GetRequestBodyFlattenedAwayGlobals(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["loneQueryParam"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/internal/globals.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/internal/globals.py index 3a2855f14..52feff420 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/internal/globals.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/internal/globals.py @@ -58,7 +58,7 @@ class Globals(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set( [ "queryParam1", @@ -71,7 +71,9 @@ def serialize_model(self, handler): m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/listtest1op.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/listtest1op.py index ca14cbc10..62f63030f 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/listtest1op.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/listtest1op.py @@ -37,13 +37,15 @@ class ListTest1Globals(BaseModel): """ @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["queryParam1"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -124,13 +126,15 @@ class ListTest1Request(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["queryParam1"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -166,13 +170,15 @@ class ListTest1ResponseBody(BaseModel): type: Optional[EnumT] = "First" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["type"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/metadata.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/metadata.py index 550f864b0..2ba2c1b30 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/metadata.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/metadata.py @@ -29,13 +29,15 @@ def additional_properties(self, value): self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["allergies"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) serialized.pop(k, serialized.pop(n, None)) diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/metadataany.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/metadataany.py index 9e397163b..952cdb6ae 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/metadataany.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/metadataany.py @@ -33,13 +33,15 @@ def additional_properties(self, value): self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["notes"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) serialized.pop(k, serialized.pop(n, None)) diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/objwithrenamedproperties.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/objwithrenamedproperties.py index 75e989a34..e33b8a172 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/objwithrenamedproperties.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/objwithrenamedproperties.py @@ -28,13 +28,15 @@ class ObjWithRenamedProperties(BaseModel): allof: Optional[Aloof] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["direct", "namespaced", "overridden", "allof"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/oneofwithfactoredoutproperties.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/oneofwithfactoredoutproperties.py index 148795c12..e2b0d801b 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/oneofwithfactoredoutproperties.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/oneofwithfactoredoutproperties.py @@ -46,13 +46,15 @@ class OneOfWithFactoredOutPropertiesSimpleObject(BaseModel): r"""An extra property.""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["anExtraProperty"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -318,7 +320,7 @@ class OneOfWithFactoredOutPropertiesExhaustiveObject(BaseModel): r"""An extra property.""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set( [ "enumProp", @@ -342,7 +344,9 @@ def serialize_model(self, handler): m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/postfilewithencodingop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/postfilewithencodingop.py index 283b00ebd..2ee32eee5 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/postfilewithencodingop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/postfilewithencodingop.py @@ -34,13 +34,15 @@ class PostFileWithEncodingFile(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["contentType"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -74,13 +76,15 @@ class Attachment(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["contentType"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -108,13 +112,15 @@ class PostFileWithEncodingMetadata(BaseModel): tags: Optional[List[str]] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["title", "description", "tags"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -168,13 +174,15 @@ class PostFileWithEncodingRequest(BaseModel): r"""JSON metadata about the file""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["attachment", "fileName", "filePurpose", "metadata"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -205,13 +213,15 @@ class PostFileWithEncodingResponse(BaseModel): metadata: Optional[Dict[str, Any]] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["contentType", "metadata"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/posttest2op.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/posttest2op.py index 1a4eb9c73..494f4123a 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/posttest2op.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/posttest2op.py @@ -48,13 +48,15 @@ class PostTest2Globals(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["deprecatedQueryParam1", "deprecatedQueryParam2"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -95,13 +97,15 @@ class PostTest2Request(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["deprecatedQueryParam1", "deprecatedQueryParam2"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/rectangle.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/rectangle.py index 047dee555..311c2f5ef 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/rectangle.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/rectangle.py @@ -36,13 +36,15 @@ class Rectangle(BaseModel): r"""Optional color of the rectangle""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["color"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/recursiveformfield.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/recursiveformfield.py index 5a76ca419..d70bb1195 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/recursiveformfield.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/recursiveformfield.py @@ -33,13 +33,15 @@ class RecursiveFormFieldText(BaseModel): required: Optional[bool] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["required"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -70,13 +72,15 @@ class RecursiveFormFieldNumber(BaseModel): required: Optional[bool] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["required"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -112,13 +116,15 @@ class RecursiveFormFieldArray(BaseModel): required: Optional[bool] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["required"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/renderassetop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/renderassetop.py index be72e4dc4..f98977428 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/renderassetop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/renderassetop.py @@ -26,13 +26,15 @@ class RenderAssetRequest(BaseModel): output_modalities: Optional[List[OutputModality]] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["output_modalities"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/security.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/security.py index f5ae7cfba..66e4dc0f5 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/security.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/security.py @@ -215,7 +215,7 @@ class Security(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set( [ "UserPassAuth", @@ -231,7 +231,9 @@ def serialize_model(self, handler): m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/shaperequest.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/shaperequest.py index c30ab3c12..630037f7f 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/shaperequest.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/shaperequest.py @@ -32,13 +32,15 @@ class ShapeRequest(BaseModel): r"""Optional description""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["description"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/templatebracestest.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/templatebracestest.py index 601822baf..88d0e8401 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/templatebracestest.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/templatebracestest.py @@ -84,7 +84,7 @@ class TemplateBracesTest(BaseModel): ] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set( [ "fieldWithBracesInDescription", @@ -98,7 +98,9 @@ def serialize_model(self, handler): m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/test2request.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/test2request.py index b77378537..65fdbc87a 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/test2request.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/test2request.py @@ -35,13 +35,15 @@ class Test2Request(BaseModel): type: Optional[Type] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["type"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/test2response.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/test2response.py index 4504360f5..124aaaeb5 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/test2response.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/test2response.py @@ -38,14 +38,16 @@ class Test2Response(BaseModel): ] = "someConstValue" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["test2", "someConst"]) nullable_fields = set(["test2", "requiredNullableField"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/user.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/user.py index d5ddfd298..339acb822 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/user.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/user.py @@ -52,7 +52,7 @@ class User(BaseModel): r"""A metadata object with additionalProperties true (any type) - should be flattened""" @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set( [ "first_name", @@ -69,7 +69,9 @@ def serialize_model(self, handler): m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/validateop.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/validateop.py index 8d2382e39..43be35468 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/validateop.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/validateop.py @@ -27,13 +27,15 @@ class ValidateResponse(BaseModel): last_login: Annotated[Optional[datetime], pydantic.Field(alias="lastLogin")] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["valid", "id", "lastLogin"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: diff --git a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/variantrecord.py b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/variantrecord.py index 1b99ae130..8347824ba 100644 --- a/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/variantrecord.py +++ b/zSDKs/sdk-pythonv2/src/speakeasy/new_openapi/models/variantrecord.py @@ -29,13 +29,15 @@ class ImageRecord(BaseModel): caption: Optional[str] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["caption"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: @@ -65,13 +67,15 @@ class TextRecord(BaseModel): note: Optional[str] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): + def serialize_model(self, handler, info): optional_fields = set(["note"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): - k = f.alias or n + k = f.alias if f.alias is not None else n + if k not in serialized and n not in serialized and not info.exclude_none: + continue val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: