Skip to content
Open
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
changeKind: fix
packages:
- "@typespec/http-client-python"
---

Fix serialization regression where `@clientDefaultValue` defaults on model properties were no longer included in the request body. Defaults are again materialized in the model's data dictionary at construction time so they are sent on the wire, while the attribute-access fallback for unset fields is preserved.
52 changes: 0 additions & 52 deletions eng/emitters/pipelines/templates/stages/emitter-stages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,21 +120,6 @@ stages:
variables:
selfRepositoryPath: $(Build.SourcesDirectory)
jobs:
- template: /eng/emitters/pipelines/templates/jobs/build-job.yml
parameters:
BuildPrereleaseVersion: ${{ parameters.BuildPrereleaseVersion }}
UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }}
Publish: ${{ parameters.Publish }}
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
Packages: ${{ parameters.Packages }}
PackagePath: ${{ parameters.PackagePath }}
LanguageShortName: ${{ parameters.LanguageShortName }}
BuildArtifactName: build_artifacts_${{ parameters.LanguageShortName }}
NodeVersion: 20.x
Os: linux
EmitArtifacts: true # Emit artifacts only for the first job
PythonVersion: ${{ parameters.PythonVersion }}
RunSDLTools: true
- template: /eng/emitters/pipelines/templates/jobs/build-job.yml
parameters:
BuildPrereleaseVersion: ${{ parameters.BuildPrereleaseVersion }}
Expand All @@ -147,18 +132,6 @@ stages:
NodeVersion: 22.x
Os: linux
PythonVersion: ${{ parameters.PythonVersion }}
- template: /eng/emitters/pipelines/templates/jobs/build-job.yml
parameters:
BuildPrereleaseVersion: ${{ parameters.BuildPrereleaseVersion }}
UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }}
Publish: ${{ parameters.Publish }}
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
Packages: ${{ parameters.Packages }}
PackagePath: ${{ parameters.PackagePath }}
LanguageShortName: ${{ parameters.LanguageShortName }}
NodeVersion: 20.x
Os: windows
PythonVersion: ${{ parameters.PythonVersion }}
- template: /eng/emitters/pipelines/templates/jobs/build-job.yml
parameters:
BuildPrereleaseVersion: ${{ parameters.BuildPrereleaseVersion }}
Expand Down Expand Up @@ -197,20 +170,6 @@ stages:
buildArtifactsPath: $(Pipeline.Workspace)/build_artifacts_${{ parameters.LanguageShortName }}
jobs:
- ${{ if parameters.UnitTestArgs }}:
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
parameters:
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
PackagePath: ${{ parameters.PackagePath }}
TestArgs: ${{ parameters.UnitTestArgs }}
LanguageShortName: ${{ parameters.LanguageShortName }}
BuildArtifactName: build_artifacts_${{ parameters.LanguageShortName }}
NodeVersion: 20.x
Os: linux
EmitArtifacts: true # Emit artifacts only for the first job
CadlRanchName: ${{ parameters.CadlRanchName }} # only needed for first job
EnableCadlRanchReport: ${{ parameters.EnableCadlRanchReport }}
PythonVersion: ${{ parameters.PythonVersion }}
UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }}
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
parameters:
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
Expand All @@ -222,17 +181,6 @@ stages:
Os: linux
PythonVersion: ${{ parameters.PythonVersion }}
UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }}
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
parameters:
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
PackagePath: ${{ parameters.PackagePath }}
TestArgs: ${{ parameters.UnitTestArgs }}
LanguageShortName: ${{ parameters.LanguageShortName }}
BuildArtifactName: build_artifacts_${{ parameters.LanguageShortName }}
NodeVersion: 20.x
Os: windows
PythonVersion: ${{ parameters.PythonVersion }}
UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }}
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
parameters:
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
Expand Down
2 changes: 1 addition & 1 deletion eng/emitters/pipelines/templates/steps/test-step.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ parameters:
# Node version
- name: NodeVersion
type: string
default: "20.x"
default: "22.x"

# Arguments needed to run tests
- name: TestArgs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,14 @@ class Model(_MyMutableMapping):
if v is not None
}
)
# Apply client default values for fields the caller didn't set so that
# defaults are part of `_data` and therefore included during serialization.
for rf in self._attr_to_rest_field.values():
if rf._default is _UNSET:
continue
if rf._rest_name in dict_to_pass:
continue
dict_to_pass[rf._rest_name] = _create_value(rf, rf._default)
super().__init__(dict_to_pass)

def _init_from_xml(self, element: ET.Element) -> dict[str, typing.Any]:
Expand Down
28 changes: 14 additions & 14 deletions packages/http-client-python/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/http-client-python/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@
"@azure-tools/typespec-azure-resource-manager": "~0.67.0",
"@azure-tools/typespec-azure-rulesets": "~0.67.0",
"@azure-tools/typespec-client-generator-core": "~0.67.0",
"@azure-tools/azure-http-specs": "0.1.0-alpha.39",
"@azure-tools/azure-http-specs": "0.1.0-alpha.40-dev.12",
"@typespec/compiler": "^1.11.0",
"@typespec/http": "^1.11.0",
"@typespec/openapi": "^1.11.0",
Expand Down
Loading