diff --git a/.chronus/changes/fix-multipart-filename-2026-5-29-17-50-0.md b/.chronus/changes/fix-multipart-filename-2026-5-29-17-50-0.md deleted file mode 100644 index a0bdf8c55b8..00000000000 --- a/.chronus/changes/fix-multipart-filename-2026-5-29-17-50-0.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: fix -packages: - - "@typespec/http-client-python" ---- - -Synthesize filename in multipart Content-Disposition for bare file inputs. When callers pass bare bytes/str/IO instead of a (filename, content) tuple for multipart file fields, the `prepare_multipart_form_data` helper now wraps them with a synthesized filename so servers that require `filename=` in the Content-Disposition header no longer reject the upload. diff --git a/.chronus/changes/fix-python-multi-etag-collision-2026-05-27-10-15-00.md b/.chronus/changes/fix-python-multi-etag-collision-2026-05-27-10-15-00.md deleted file mode 100644 index 92d4f21b256..00000000000 --- a/.chronus/changes/fix-python-multi-etag-collision-2026-05-27-10-15-00.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: fix -packages: - - "@typespec/http-client-python" ---- - -Fix `etag`/`match_condition` clientName collision when an operation has more than one `Azure.Core.eTag`-typed header (e.g. Storage's `copyFromUrl`, which has both `If-Match`/`If-None-Match` and `x-ms-source-if-match`/`x-ms-source-if-none-match`). The standard `If-Match`/`If-None-Match` pair is now preferred for the `etag`/`match_condition` slot, and any additional etag-typed headers retain their natural client name (e.g. `source_if_match`). diff --git a/.chronus/changes/fix-python-prerelease-version-stamping-2026-5-27-13-30-0.md b/.chronus/changes/fix-python-prerelease-version-stamping-2026-5-27-13-30-0.md deleted file mode 100644 index 5cb580941de..00000000000 --- a/.chronus/changes/fix-python-prerelease-version-stamping-2026-5-27-13-30-0.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: fix -packages: - - "@typespec/http-client-python" ---- - -Fix CI publish failures by stamping prerelease version in Build-Packages.ps1. The `-Prerelease` flag was accepted but unused, causing every CI build to produce the same version and fail with a 409 conflict on the DevOps feed. diff --git a/packages/http-client-python/CHANGELOG.md b/packages/http-client-python/CHANGELOG.md index f41ce48c70e..df47ea97033 100644 --- a/packages/http-client-python/CHANGELOG.md +++ b/packages/http-client-python/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/http-client-python +## 0.30.1 + +### Bug Fixes + +- [#10843](https://github.com/microsoft/typespec/pull/10843) Synthesize filename in multipart Content-Disposition for bare file inputs. When callers pass bare bytes/str/IO instead of a (filename, content) tuple for multipart file fields, the `prepare_multipart_form_data` helper now wraps them with a synthesized filename so servers that require `filename=` in the Content-Disposition header no longer reject the upload. +- [#10816](https://github.com/microsoft/typespec/pull/10816) Fix `etag`/`match_condition` clientName collision when an operation has more than one `Azure.Core.eTag`-typed header (e.g. Storage's `copyFromUrl`, which has both `If-Match`/`If-None-Match` and `x-ms-source-if-match`/`x-ms-source-if-none-match`). The standard `If-Match`/`If-None-Match` pair is now preferred for the `etag`/`match_condition` slot, and any additional etag-typed headers retain their natural client name (e.g. `source_if_match`). + ## 0.30.0 ### Features diff --git a/packages/http-client-python/package.json b/packages/http-client-python/package.json index 312927acc9a..fd4f586d2c3 100644 --- a/packages/http-client-python/package.json +++ b/packages/http-client-python/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/http-client-python", - "version": "0.30.0", + "version": "0.30.1", "author": "Microsoft Corporation", "description": "TypeSpec emitter for Python SDKs", "homepage": "https://typespec.io", diff --git a/packages/http-client-python/tests/mock_api/shared/unittests/test_readme.py b/packages/http-client-python/tests/mock_api/shared/unittests/test_readme.py index 133f680d9e7..4aa24a62964 100644 --- a/packages/http-client-python/tests/mock_api/shared/unittests/test_readme.py +++ b/packages/http-client-python/tests/mock_api/shared/unittests/test_readme.py @@ -16,6 +16,16 @@ SKIP_PACKAGES = { ("azure", "service-multiple-services"), ("azure", "azure-client-generator-core-client-initialization"), + # TypedDict test packages exist in the azure-sdk-for-python baseline but + # are not yet in regenerate.ts on main, so their READMEs are deleted during + # baseline reset and never recreated. + ("azure", "client-naming-typeddict"), + ("azure", "typetest-model-notdiscriminated-typeddict"), + ("azure", "typetest-model-singlediscriminator-typeddict"), + ("azure", "typetest-model-usage-typeddictonly"), + ("unbranded", "typetest-model-notdiscriminated-typeddict"), + ("unbranded", "typetest-model-singlediscriminator-typeddict"), + ("unbranded", "typetest-model-usage-typeddictonly"), }