diff --git a/.chronus/changes/auto-microsoft-python-multipart-fix-optional-files-part-2025-11-5-8-29-45.md b/.chronus/changes/auto-microsoft-python-multipart-fix-optional-files-part-2025-11-5-8-29-45.md new file mode 100644 index 00000000000..f335e1f127f --- /dev/null +++ b/.chronus/changes/auto-microsoft-python-multipart-fix-optional-files-part-2025-11-5-8-29-45.md @@ -0,0 +1,8 @@ +--- +changeKind: fix +packages: + - "@autorest/python" + - "@azure-tools/typespec-python" +--- + +Fix multipart when files part is optional \ No newline at end of file diff --git a/packages/autorest.python/package.json b/packages/autorest.python/package.json index 7a051d14888..c484510b4c8 100644 --- a/packages/autorest.python/package.json +++ b/packages/autorest.python/package.json @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/Azure/autorest.python/blob/main/README.md", "dependencies": { - "@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0MTUwOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz", + "@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0NjEzMi9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz", "@autorest/system-requirements": "~1.0.2", "fs-extra": "~11.2.0", "tsx": "~4.19.1" diff --git a/packages/typespec-python/package.json b/packages/typespec-python/package.json index 339209edeb1..c8a3c8a76a3 100644 --- a/packages/typespec-python/package.json +++ b/packages/typespec-python/package.json @@ -67,7 +67,7 @@ "js-yaml": "~4.1.0", "semver": "~7.6.2", "tsx": "~4.19.1", - "@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0MTUwOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz", + "@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0NjEzMi9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz", "fs-extra": "~11.2.0" }, "devDependencies": { diff --git a/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/_utils/utils.py b/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/_utils/utils.py index e98db3239df..bd821750f4c 100644 --- a/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/_utils/utils.py +++ b/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/_utils/utils.py @@ -32,9 +32,8 @@ def serialize_multipart_data_entry(data_entry: Any) -> Any: def prepare_multipart_form_data( body: Mapping[str, Any], multipart_fields: list[str], data_fields: list[str] -) -> tuple[list[FileType], dict[str, Any]]: +) -> list[FileType]: files: list[FileType] = [] - data: dict[str, Any] = {} for multipart_field in multipart_fields: multipart_entry = body.get(multipart_field) if isinstance(multipart_entry, list): @@ -42,9 +41,11 @@ def prepare_multipart_form_data( elif multipart_entry: files.append((multipart_field, multipart_entry)) + # if files is empty, sdk core library can't handle multipart/form-data correctly, so + # we put data fields into files with filename as None to avoid that scenario. for data_field in data_fields: data_entry = body.get(data_field) if data_entry: - data[data_field] = serialize_multipart_data_entry(data_entry) + files.append((data_field, str(serialize_multipart_data_entry(data_entry)))) - return files, data + return files diff --git a/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/aio/operations/_operations.py b/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/aio/operations/_operations.py index 2a71097be5a..b90364a920e 100644 --- a/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/aio/operations/_operations.py +++ b/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/aio/operations/_operations.py @@ -114,11 +114,10 @@ async def basic(self, body: Union[_models.MultiPartRequest, JSON], **kwargs: Any _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_basic_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -189,11 +188,10 @@ async def file_array_and_basic(self, body: Union[_models.ComplexPartsRequest, JS _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "pictures"] _data_fields: list[str] = ["id", "address"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_file_array_and_basic_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -264,11 +262,10 @@ async def json_part(self, body: Union[_models.JsonPartRequest, JSON], **kwargs: _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["address"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_json_part_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -339,11 +336,10 @@ async def binary_array_parts(self, body: Union[_models.BinaryArrayPartsRequest, _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["pictures"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_binary_array_parts_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -414,11 +410,10 @@ async def multi_binary_parts(self, body: Union[_models.MultiBinaryPartsRequest, _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "picture"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_multi_binary_parts_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -491,11 +486,10 @@ async def check_file_name_and_content_type( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_check_file_name_and_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -566,11 +560,10 @@ async def anonymous_model(self, body: Union[_models.AnonymousModelRequest, JSON] _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_anonymous_model_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -668,11 +661,10 @@ async def json_array_and_file_array( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "pictures"] _data_fields: list[str] = ["id", "address", "previousAddresses"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_json_array_and_file_array_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -766,11 +758,10 @@ async def image_jpeg_content_type( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_image_jpeg_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -846,11 +837,10 @@ async def required_content_type( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_required_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -926,11 +916,10 @@ async def optional_content_type( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_optional_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -1019,11 +1008,10 @@ async def float(self, body: Union[_models.FloatRequest, JSON], **kwargs: Any) -> _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = [] _data_fields: list[str] = ["temperature"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_non_string_float_request( files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/operations/_operations.py b/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/operations/_operations.py index 412e98c50f2..b2353f10364 100644 --- a/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/operations/_operations.py +++ b/packages/typespec-python/test/azure/generated/payload-multipart/payload/multipart/operations/_operations.py @@ -224,11 +224,10 @@ def basic( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_basic_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -301,11 +300,10 @@ def file_array_and_basic( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "pictures"] _data_fields: list[str] = ["id", "address"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_file_array_and_basic_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -378,11 +376,10 @@ def json_part( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["address"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_json_part_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -455,11 +452,10 @@ def binary_array_parts( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["pictures"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_binary_array_parts_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -532,11 +528,10 @@ def multi_binary_parts( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "picture"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_multi_binary_parts_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -609,11 +604,10 @@ def check_file_name_and_content_type( # pylint: disable=inconsistent-return-sta _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_check_file_name_and_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -686,11 +680,10 @@ def anonymous_model( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_anonymous_model_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -788,11 +781,10 @@ def json_array_and_file_array( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "pictures"] _data_fields: list[str] = ["id", "address", "previousAddresses"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_json_array_and_file_array_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -884,11 +876,10 @@ def image_jpeg_content_type( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_image_jpeg_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -962,11 +953,10 @@ def required_content_type( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_required_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -1040,11 +1030,10 @@ def optional_content_type( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_optional_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -1135,11 +1124,10 @@ def float( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = [] _data_fields: list[str] = ["temperature"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_non_string_float_request( files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/_utils/utils.py b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/_utils/utils.py index 201a23d19bf..ac0302f5967 100644 --- a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/_utils/utils.py +++ b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/_utils/utils.py @@ -25,9 +25,8 @@ def serialize_multipart_data_entry(data_entry: Any) -> Any: def prepare_multipart_form_data( body: Mapping[str, Any], multipart_fields: list[str], data_fields: list[str] -) -> tuple[list[FileType], dict[str, Any]]: +) -> list[FileType]: files: list[FileType] = [] - data: dict[str, Any] = {} for multipart_field in multipart_fields: multipart_entry = body.get(multipart_field) if isinstance(multipart_entry, list): @@ -35,9 +34,11 @@ def prepare_multipart_form_data( elif multipart_entry: files.append((multipart_field, multipart_entry)) + # if files is empty, sdk core library can't handle multipart/form-data correctly, so + # we put data fields into files with filename as None to avoid that scenario. for data_field in data_fields: data_entry = body.get(data_field) if data_entry: - data[data_field] = serialize_multipart_data_entry(data_entry) + files.append((data_field, str(serialize_multipart_data_entry(data_entry)))) - return files, data + return files diff --git a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/aio/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/aio/operations/_operations.py index 7a0cd179d15..f5ee209c7b0 100644 --- a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/aio/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/aio/operations/_operations.py @@ -102,11 +102,10 @@ async def basic(self, body: Union[_models3.MultiPartRequest, JSON], **kwargs: An _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_basic_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -174,11 +173,10 @@ async def file_array_and_basic(self, body: Union[_models3.ComplexPartsRequest, J _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "pictures"] _data_fields: list[str] = ["id", "address"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_file_array_and_basic_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -246,11 +244,10 @@ async def json_part(self, body: Union[_models3.JsonPartRequest, JSON], **kwargs: _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["address"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_json_part_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -318,11 +315,10 @@ async def binary_array_parts(self, body: Union[_models3.BinaryArrayPartsRequest, _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["pictures"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_binary_array_parts_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -390,11 +386,10 @@ async def multi_binary_parts(self, body: Union[_models3.MultiBinaryPartsRequest, _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "picture"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_multi_binary_parts_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -464,11 +459,10 @@ async def check_file_name_and_content_type( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_check_file_name_and_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -536,11 +530,10 @@ async def anonymous_model(self, body: Union[_models2.AnonymousModelRequest, JSON _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_anonymous_model_request( files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/aio/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/aio/operations/_operations.py index 963036f7d60..88e0e6c4d72 100644 --- a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/aio/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/aio/operations/_operations.py @@ -101,11 +101,10 @@ async def json_array_and_file_array( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "pictures"] _data_fields: list[str] = ["id", "address", "previousAddresses"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_json_array_and_file_array_request( files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/contenttype/aio/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/contenttype/aio/operations/_operations.py index 2c235f570b5..8126e20f1aa 100644 --- a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/contenttype/aio/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/contenttype/aio/operations/_operations.py @@ -99,11 +99,10 @@ async def image_jpeg_content_type( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_image_jpeg_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -176,11 +175,10 @@ async def required_content_type( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_required_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -253,11 +251,10 @@ async def optional_content_type( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_optional_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/contenttype/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/contenttype/operations/_operations.py index 718160f573a..ce1e8d8fdde 100644 --- a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/contenttype/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/contenttype/operations/_operations.py @@ -129,11 +129,10 @@ def image_jpeg_content_type( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_image_jpeg_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -204,11 +203,10 @@ def required_content_type( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_required_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -279,11 +277,10 @@ def optional_content_type( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_content_type_optional_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/nonstring/aio/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/nonstring/aio/operations/_operations.py index e8c7c94cf49..2a8c1f21f15 100644 --- a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/nonstring/aio/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/nonstring/aio/operations/_operations.py @@ -90,11 +90,10 @@ async def float(self, body: Union[_models2.FloatRequest, JSON], **kwargs: Any) - _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = [] _data_fields: list[str] = ["temperature"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_non_string_float_request( files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/nonstring/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/nonstring/operations/_operations.py index 7341cca6180..df81cc46262 100644 --- a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/nonstring/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/nonstring/operations/_operations.py @@ -104,11 +104,10 @@ def float( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = [] _data_fields: list[str] = ["temperature"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_non_string_float_request( files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/operations/_operations.py index e6ca7d8b104..375fa67116a 100644 --- a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/httpparts/operations/_operations.py @@ -115,11 +115,10 @@ def json_array_and_file_array( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "pictures"] _data_fields: list[str] = ["id", "address", "previousAddresses"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_http_parts_json_array_and_file_array_request( files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/operations/_operations.py index 95cae277db2..ffaf7755173 100644 --- a/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/payload-multipart/payload/multipart/formdata/operations/_operations.py @@ -164,11 +164,10 @@ def basic( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_basic_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -238,11 +237,10 @@ def file_array_and_basic( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "pictures"] _data_fields: list[str] = ["id", "address"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_file_array_and_basic_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -312,11 +310,10 @@ def json_part( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["address"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_json_part_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -386,11 +383,10 @@ def binary_array_parts( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["pictures"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_binary_array_parts_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -460,11 +456,10 @@ def multi_binary_parts( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage", "picture"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_multi_binary_parts_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -534,11 +529,10 @@ def check_file_name_and_content_type( # pylint: disable=inconsistent-return-sta _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = ["id"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_check_file_name_and_content_type_request( files=_files, - data=_data, headers=_headers, params=_params, ) @@ -608,11 +602,10 @@ def anonymous_model( # pylint: disable=inconsistent-return-statements _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["profileImage"] _data_fields: list[str] = [] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_form_data_anonymous_model_request( files=_files, - data=_data, headers=_headers, params=_params, ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 70336e21d8d..d5f179011c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,8 +60,8 @@ importers: specifier: ~1.0.2 version: 1.0.2 '@typespec/http-client-python': - specifier: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0MTUwOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz - version: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0MTUwOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz(ssdlrxraybddy2z2whck5ke66m) + specifier: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0NjEzMi9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz + version: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0NjEzMi9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz(ssdlrxraybddy2z2whck5ke66m) fs-extra: specifier: ~11.2.0 version: 11.2.0 @@ -82,8 +82,8 @@ importers: packages/typespec-python: dependencies: '@typespec/http-client-python': - specifier: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0MTUwOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz - version: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0MTUwOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz(ssdlrxraybddy2z2whck5ke66m) + specifier: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0NjEzMi9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz + version: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0NjEzMi9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz(ssdlrxraybddy2z2whck5ke66m) fs-extra: specifier: ~11.2.0 version: 11.2.0 @@ -1685,8 +1685,8 @@ packages: peerDependencies: '@typespec/compiler': ^1.6.0 - '@typespec/http-client-python@https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0MTUwOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz': - resolution: {tarball: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0MTUwOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz} + '@typespec/http-client-python@https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0NjEzMi9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz': + resolution: {tarball: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0NjEzMi9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz} version: 0.21.0 engines: {node: '>=20.0.0'} peerDependencies: @@ -6488,7 +6488,7 @@ snapshots: dependencies: '@typespec/compiler': 1.6.0(@types/node@24.1.0) - '@typespec/http-client-python@https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0MTUwOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz(ssdlrxraybddy2z2whck5ke66m)': + '@typespec/http-client-python@https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTY0NjEzMi9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.21.0.tgz(ssdlrxraybddy2z2whck5ke66m)': dependencies: '@azure-tools/typespec-autorest': 0.62.0(qbje3v7ssxldnxnkdqqa6wvuxm) '@azure-tools/typespec-azure-core': 0.62.0(@typespec/compiler@1.6.0(@types/node@24.1.0))(@typespec/http@1.6.0(@typespec/compiler@1.6.0(@types/node@24.1.0))(@typespec/streams@0.76.0(@typespec/compiler@1.6.0(@types/node@24.1.0))))(@typespec/rest@0.76.0(@typespec/compiler@1.6.0(@types/node@24.1.0))(@typespec/http@1.6.0(@typespec/compiler@1.6.0(@types/node@24.1.0))(@typespec/streams@0.76.0(@typespec/compiler@1.6.0(@types/node@24.1.0)))))