diff --git a/.chronus/changes/copilot-add-test-case-http-client-python-2026-0-15-4-53-44.md b/.chronus/changes/copilot-add-test-case-http-client-python-2026-0-15-4-53-44.md new file mode 100644 index 00000000000..c2f9218c34e --- /dev/null +++ b/.chronus/changes/copilot-add-test-case-http-client-python-2026-0-15-4-53-44.md @@ -0,0 +1,8 @@ +--- +changeKind: internal +packages: + - "@autorest/python" + - "@azure-tools/typespec-python" +--- + +Add test case \ No newline at end of file diff --git a/packages/autorest.python/package.json b/packages/autorest.python/package.json index c0e667ba256..cca9c67946f 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": "~0.24.1", + "@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTc1NTgzOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.24.1.tgz", "@autorest/system-requirements": "~1.0.2", "fs-extra": "~11.2.0", "tsx": "~4.19.1" @@ -47,4 +47,4 @@ "requirements.txt", "generator/" ] -} +} \ No newline at end of file diff --git a/packages/typespec-python/package.json b/packages/typespec-python/package.json index a476b8afcdd..53c20c794d0 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": "~0.24.1", + "@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTc1NTgzOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.24.1.tgz", "fs-extra": "~11.2.0" }, "devDependencies": { @@ -87,7 +87,7 @@ "@azure-tools/typespec-autorest": "~0.64.0", "@azure-tools/typespec-client-generator-core": "~0.64.1", "@azure-tools/azure-http-specs": "0.1.0-alpha.35", - "@typespec/http-specs": "0.1.0-alpha.30", + "@typespec/http-specs": "0.1.0-alpha.31", "@typespec/spector": "0.1.0-alpha.22", "@typespec/spec-api": "0.1.0-alpha.12", "@types/js-yaml": "~4.0.5", @@ -103,4 +103,4 @@ "chalk": "5.3.0", "@types/fs-extra": "11.0.4" } -} +} \ No newline at end of file diff --git a/packages/typespec-python/test/azure/generated/special-words/apiview-properties.json b/packages/typespec-python/test/azure/generated/special-words/apiview-properties.json index 99659fda917..6cd45d20f3d 100644 --- a/packages/typespec-python/test/azure/generated/special-words/apiview-properties.json +++ b/packages/typespec-python/test/azure/generated/special-words/apiview-properties.json @@ -26,6 +26,7 @@ "specialwords.models.InModel": "SpecialWords.Models.in", "specialwords.models.IsModel": "SpecialWords.Models.is", "specialwords.models.LambdaModel": "SpecialWords.Models.lambda", + "specialwords.models.ModelWithList": "SpecialWords.ModelProperties.ModelWithList", "specialwords.models.NotModel": "SpecialWords.Models.not", "specialwords.models.OrModel": "SpecialWords.Models.or", "specialwords.models.PassModel": "SpecialWords.Models.pass", @@ -106,6 +107,8 @@ "specialwords.aio.operations.ModelPropertiesOperations.same_as_model": "SpecialWords.ModelProperties.sameAsModel", "specialwords.operations.ModelPropertiesOperations.dict_methods": "SpecialWords.ModelProperties.dictMethods", "specialwords.aio.operations.ModelPropertiesOperations.dict_methods": "SpecialWords.ModelProperties.dictMethods", + "specialwords.operations.ModelPropertiesOperations.with_list": "SpecialWords.ModelProperties.withList", + "specialwords.aio.operations.ModelPropertiesOperations.with_list": "SpecialWords.ModelProperties.withList", "specialwords.operations.Operations.and_method": "SpecialWords.Operations.and", "specialwords.aio.operations.Operations.and_method": "SpecialWords.Operations.and", "specialwords.operations.Operations.as_method": "SpecialWords.Operations.as", diff --git a/packages/typespec-python/test/azure/generated/special-words/generated_tests/test_special_words_model_properties_operations.py b/packages/typespec-python/test/azure/generated/special-words/generated_tests/test_special_words_model_properties_operations.py index 0d15b747a9f..4b8451d12dd 100644 --- a/packages/typespec-python/test/azure/generated/special-words/generated_tests/test_special_words_model_properties_operations.py +++ b/packages/typespec-python/test/azure/generated/special-words/generated_tests/test_special_words_model_properties_operations.py @@ -44,3 +44,14 @@ def test_model_properties_dict_methods(self, specialwords_endpoint): # please add some check logic here by yourself # ... + + @SpecialWordsPreparer() + @recorded_by_proxy + def test_model_properties_with_list(self, specialwords_endpoint): + client = self.create_client(endpoint=specialwords_endpoint) + response = client.model_properties.with_list( + body={"list": "str"}, + ) + + # please add some check logic here by yourself + # ... diff --git a/packages/typespec-python/test/azure/generated/special-words/generated_tests/test_special_words_model_properties_operations_async.py b/packages/typespec-python/test/azure/generated/special-words/generated_tests/test_special_words_model_properties_operations_async.py index 874f935b3a4..606db2aa1ce 100644 --- a/packages/typespec-python/test/azure/generated/special-words/generated_tests/test_special_words_model_properties_operations_async.py +++ b/packages/typespec-python/test/azure/generated/special-words/generated_tests/test_special_words_model_properties_operations_async.py @@ -45,3 +45,14 @@ async def test_model_properties_dict_methods(self, specialwords_endpoint): # please add some check logic here by yourself # ... + + @SpecialWordsPreparer() + @recorded_by_proxy_async + async def test_model_properties_with_list(self, specialwords_endpoint): + client = self.create_async_client(endpoint=specialwords_endpoint) + response = await client.model_properties.with_list( + body={"list": "str"}, + ) + + # please add some check logic here by yourself + # ... diff --git a/packages/typespec-python/test/azure/generated/special-words/specialwords/_client.py b/packages/typespec-python/test/azure/generated/special-words/specialwords/_client.py index d8668b1480d..d6942c05bdd 100644 --- a/packages/typespec-python/test/azure/generated/special-words/specialwords/_client.py +++ b/packages/typespec-python/test/azure/generated/special-words/specialwords/_client.py @@ -51,6 +51,7 @@ class SpecialWordsClient: # pylint: disable=client-accepts-api-version-keyword in is lambda + list not or pass diff --git a/packages/typespec-python/test/azure/generated/special-words/specialwords/aio/_client.py b/packages/typespec-python/test/azure/generated/special-words/specialwords/aio/_client.py index f54227bfe24..abb7ee93958 100644 --- a/packages/typespec-python/test/azure/generated/special-words/specialwords/aio/_client.py +++ b/packages/typespec-python/test/azure/generated/special-words/specialwords/aio/_client.py @@ -51,6 +51,7 @@ class SpecialWordsClient: # pylint: disable=client-accepts-api-version-keyword in is lambda + list not or pass diff --git a/packages/typespec-python/test/azure/generated/special-words/specialwords/aio/operations/_operations.py b/packages/typespec-python/test/azure/generated/special-words/specialwords/aio/operations/_operations.py index e6d26029643..f5afbb7934c 100644 --- a/packages/typespec-python/test/azure/generated/special-words/specialwords/aio/operations/_operations.py +++ b/packages/typespec-python/test/azure/generated/special-words/specialwords/aio/operations/_operations.py @@ -31,6 +31,7 @@ from ...operations._operations import ( build_model_properties_dict_methods_request, build_model_properties_same_as_model_request, + build_model_properties_with_list_request, build_models_with_and_request, build_models_with_as_request, build_models_with_assert_request, @@ -3652,6 +3653,106 @@ async def dict_methods(self, body: Union[_models.DictMethods, JSON, IO[bytes]], if cls: return cls(pipeline_response, None, {}) # type: ignore + @overload + async def with_list( + self, body: _models.ModelWithList, *, content_type: str = "application/json", **kwargs: Any + ) -> None: + """with_list. + + :param body: Required. + :type body: ~specialwords.models.ModelWithList + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def with_list(self, body: JSON, *, content_type: str = "application/json", **kwargs: Any) -> None: + """with_list. + + :param body: Required. + :type body: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def with_list(self, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any) -> None: + """with_list. + + :param body: Required. + :type body: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def with_list(self, body: Union[_models.ModelWithList, JSON, IO[bytes]], **kwargs: Any) -> None: + """with_list. + + :param body: Is one of the following types: ModelWithList, JSON, IO[bytes] Required. + :type body: ~specialwords.models.ModelWithList or JSON or IO[bytes] + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[None] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(body, (IOBase, bytes)): + _content = body + else: + _content = json.dumps(body, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_model_properties_with_list_request( + content_type=content_type, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.endpoint", self._config.endpoint, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + class Operations: # pylint: disable=too-many-public-methods """ diff --git a/packages/typespec-python/test/azure/generated/special-words/specialwords/models/__init__.py b/packages/typespec-python/test/azure/generated/special-words/specialwords/models/__init__.py index 69e71ed1547..afb9e72ebd5 100644 --- a/packages/typespec-python/test/azure/generated/special-words/specialwords/models/__init__.py +++ b/packages/typespec-python/test/azure/generated/special-words/specialwords/models/__init__.py @@ -39,6 +39,7 @@ InModel, IsModel, LambdaModel, + ModelWithList, NotModel, OrModel, PassModel, @@ -80,6 +81,7 @@ "InModel", "IsModel", "LambdaModel", + "ModelWithList", "NotModel", "OrModel", "PassModel", diff --git a/packages/typespec-python/test/azure/generated/special-words/specialwords/models/_models.py b/packages/typespec-python/test/azure/generated/special-words/specialwords/models/_models.py index 14fc6fcf313..1bee5ab4a52 100644 --- a/packages/typespec-python/test/azure/generated/special-words/specialwords/models/_models.py +++ b/packages/typespec-python/test/azure/generated/special-words/specialwords/models/_models.py @@ -12,6 +12,8 @@ from .._utils.model_base import Model as _Model, rest_field +List = list + class AndModel(_Model): """AndModel. @@ -778,6 +780,34 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class ModelWithList(_Model): + """ModelWithList. + + :ivar list: Required. + :vartype list: str + """ + + list: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Required.""" + + @overload + def __init__( + self, + *, + list: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + class NotModel(_Model): """NotModel. diff --git a/packages/typespec-python/test/azure/generated/special-words/specialwords/operations/_operations.py b/packages/typespec-python/test/azure/generated/special-words/specialwords/operations/_operations.py index 267f3833589..d002e46f288 100644 --- a/packages/typespec-python/test/azure/generated/special-words/specialwords/operations/_operations.py +++ b/packages/typespec-python/test/azure/generated/special-words/specialwords/operations/_operations.py @@ -528,6 +528,20 @@ def build_model_properties_dict_methods_request(**kwargs: Any) -> HttpRequest: return HttpRequest(method="POST", url=_url, headers=_headers, **kwargs) +def build_model_properties_with_list_request(**kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + # Construct URL + _url = "/special-words/model-properties/list" + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + + return HttpRequest(method="POST", url=_url, headers=_headers, **kwargs) + + def build_operations_and_method_request(**kwargs: Any) -> HttpRequest: # Construct URL _url = "/special-words/operations/and" @@ -4714,6 +4728,106 @@ def dict_methods( # pylint: disable=inconsistent-return-statements if cls: return cls(pipeline_response, None, {}) # type: ignore + @overload + def with_list(self, body: _models.ModelWithList, *, content_type: str = "application/json", **kwargs: Any) -> None: + """with_list. + + :param body: Required. + :type body: ~specialwords.models.ModelWithList + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def with_list(self, body: JSON, *, content_type: str = "application/json", **kwargs: Any) -> None: + """with_list. + + :param body: Required. + :type body: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def with_list(self, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any) -> None: + """with_list. + + :param body: Required. + :type body: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def with_list( # pylint: disable=inconsistent-return-statements + self, body: Union[_models.ModelWithList, JSON, IO[bytes]], **kwargs: Any + ) -> None: + """with_list. + + :param body: Is one of the following types: ModelWithList, JSON, IO[bytes] Required. + :type body: ~specialwords.models.ModelWithList or JSON or IO[bytes] + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[None] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(body, (IOBase, bytes)): + _content = body + else: + _content = json.dumps(body, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_model_properties_with_list_request( + content_type=content_type, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.endpoint", self._config.endpoint, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + class Operations: # pylint: disable=too-many-public-methods """ diff --git a/packages/typespec-python/test/azure/generated/specs-documentation/specs/documentation/aio/operations/_operations.py b/packages/typespec-python/test/azure/generated/specs-documentation/specs/documentation/aio/operations/_operations.py index 8c6ad055039..55ce926f1e4 100644 --- a/packages/typespec-python/test/azure/generated/specs-documentation/specs/documentation/aio/operations/_operations.py +++ b/packages/typespec-python/test/azure/generated/specs-documentation/specs/documentation/aio/operations/_operations.py @@ -224,7 +224,7 @@ async def bullet_points_model( response = pipeline_response.http_response - if response.status_code not in [204]: + if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response) diff --git a/packages/typespec-python/test/azure/generated/specs-documentation/specs/documentation/operations/_operations.py b/packages/typespec-python/test/azure/generated/specs-documentation/specs/documentation/operations/_operations.py index 1c233ca1bb5..908f28ffd91 100644 --- a/packages/typespec-python/test/azure/generated/specs-documentation/specs/documentation/operations/_operations.py +++ b/packages/typespec-python/test/azure/generated/specs-documentation/specs/documentation/operations/_operations.py @@ -266,7 +266,7 @@ def bullet_points_model( # pylint: disable=inconsistent-return-statements response = pipeline_response.http_response - if response.status_code not in [204]: + if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response) diff --git a/packages/typespec-python/test/azure/mock_api_tests/asynctests/test_special_words_async.py b/packages/typespec-python/test/azure/mock_api_tests/asynctests/test_special_words_async.py index bc7018ecb19..9f22c8c5d15 100644 --- a/packages/typespec-python/test/azure/mock_api_tests/asynctests/test_special_words_async.py +++ b/packages/typespec-python/test/azure/mock_api_tests/asynctests/test_special_words_async.py @@ -58,3 +58,8 @@ async def test_model_properties_dict_methods(client: SpecialWordsClient): copy_property="ok", ) ) + + +@pytest.mark.asyncio +async def test_model_properties_with_list(client: SpecialWordsClient): + await client.model_properties.with_list(models.ModelWithList(list="ok")) diff --git a/packages/typespec-python/test/azure/mock_api_tests/test_special_words.py b/packages/typespec-python/test/azure/mock_api_tests/test_special_words.py index 7672f9cd5d5..cc083c94c0e 100644 --- a/packages/typespec-python/test/azure/mock_api_tests/test_special_words.py +++ b/packages/typespec-python/test/azure/mock_api_tests/test_special_words.py @@ -52,3 +52,7 @@ def test_model_properties_dict_methods(client: SpecialWordsClient): copy_property="ok", ) ) + + +def test_model_properties_with_list(client: SpecialWordsClient): + client.model_properties.with_list(models.ModelWithList(list="ok")) diff --git a/packages/typespec-python/test/generic_mock_api_tests/asynctests/test_specs_documentation_async.py b/packages/typespec-python/test/generic_mock_api_tests/asynctests/test_specs_documentation_async.py index a5abf91c3dd..12e4cb2e5a2 100644 --- a/packages/typespec-python/test/generic_mock_api_tests/asynctests/test_specs_documentation_async.py +++ b/packages/typespec-python/test/generic_mock_api_tests/asynctests/test_specs_documentation_async.py @@ -22,11 +22,10 @@ async def test_bullet_points_op(self, client: DocumentationClient): # Expected: 204 No Content await client.lists.bullet_points_op() - @pytest.mark.skip(reason="https://github.com/microsoft/typespec/issues/9173") @pytest.mark.asyncio async def test_bullet_points_model(self, client: DocumentationClient): # POST /documentation/lists/bullet-points/model - # Expected request body: {"prop": "Simple"} + # Expected request body: {"input": {"prop": "Simple"}} # Expected: 200 OK await client.lists.bullet_points_model(input=models.BulletPointsModel(prop="Simple")) diff --git a/packages/typespec-python/test/generic_mock_api_tests/test_specs_documentation.py b/packages/typespec-python/test/generic_mock_api_tests/test_specs_documentation.py index 7d7a8cfefa8..2f956dd75fd 100644 --- a/packages/typespec-python/test/generic_mock_api_tests/test_specs_documentation.py +++ b/packages/typespec-python/test/generic_mock_api_tests/test_specs_documentation.py @@ -20,7 +20,6 @@ def test_bullet_points_op(self, client: DocumentationClient): # Expected: 204 No Content client.lists.bullet_points_op() - @pytest.mark.skip(reason="https://github.com/microsoft/typespec/issues/9173") def test_bullet_points_model(self, client: DocumentationClient): # POST /documentation/lists/bullet-points/model # Expected: 200 OK diff --git a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/_client.py b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/_client.py index 1390edad29d..8332d62bfec 100644 --- a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/_client.py +++ b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/_client.py @@ -46,6 +46,7 @@ class SpecialWordsClient: # pylint: disable=client-accepts-api-version-keyword in is lambda + list not or pass diff --git a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/aio/_client.py b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/aio/_client.py index b89a17dbcd4..15a60799140 100644 --- a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/aio/_client.py +++ b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/aio/_client.py @@ -46,6 +46,7 @@ class SpecialWordsClient: # pylint: disable=client-accepts-api-version-keyword in is lambda + list not or pass diff --git a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/aio/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/aio/operations/_operations.py index d24cca45e35..8c8730bfbf0 100644 --- a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/aio/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/aio/operations/_operations.py @@ -24,6 +24,7 @@ from ...operations._operations import ( build_model_properties_dict_methods_request, build_model_properties_same_as_model_request, + build_model_properties_with_list_request, ) JSON = MutableMapping[str, Any] @@ -241,3 +242,100 @@ async def dict_methods(self, body: Union[_models2.DictMethods, JSON, IO[bytes]], if cls: return cls(pipeline_response, None, {}) # type: ignore + + @overload + async def with_list( + self, body: _models2.ModelWithList, *, content_type: str = "application/json", **kwargs: Any + ) -> None: + """with_list. + + :param body: Required. + :type body: ~specialwords.modelproperties.models.ModelWithList + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~corehttp.exceptions.HttpResponseError: + """ + + @overload + async def with_list(self, body: JSON, *, content_type: str = "application/json", **kwargs: Any) -> None: + """with_list. + + :param body: Required. + :type body: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~corehttp.exceptions.HttpResponseError: + """ + + @overload + async def with_list(self, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any) -> None: + """with_list. + + :param body: Required. + :type body: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~corehttp.exceptions.HttpResponseError: + """ + + async def with_list(self, body: Union[_models2.ModelWithList, JSON, IO[bytes]], **kwargs: Any) -> None: + """with_list. + + :param body: Is one of the following types: ModelWithList, JSON, IO[bytes] Required. + :type body: ~specialwords.modelproperties.models.ModelWithList or JSON or IO[bytes] + :return: None + :rtype: None + :raises ~corehttp.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[None] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(body, (IOBase, bytes)): + _content = body + else: + _content = json.dumps(body, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_model_properties_with_list_request( + content_type=content_type, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.endpoint", self._config.endpoint, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _stream = False + pipeline_response: PipelineResponse = await self._client.pipeline.run(_request, stream=_stream, **kwargs) + + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore diff --git a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/models/__init__.py b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/models/__init__.py index 2a41bf68904..6b7ce434b09 100644 --- a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/models/__init__.py +++ b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/models/__init__.py @@ -9,6 +9,7 @@ from ._models import ( # type: ignore DictMethods, + ModelWithList, SameAsModel, ) from ._patch import __all__ as _patch_all @@ -17,6 +18,7 @@ __all__ = [ "DictMethods", + "ModelWithList", "SameAsModel", ] __all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore diff --git a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/models/_models.py b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/models/_models.py index 6f0e773f59f..1d77eb3ce51 100644 --- a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/models/_models.py +++ b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/models/_models.py @@ -5,6 +5,8 @@ from ..._utils.model_base import Model as _Model, rest_field +List = list + class DictMethods(_Model): """DictMethods. @@ -99,6 +101,34 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class ModelWithList(_Model): + """ModelWithList. + + :ivar list: Required. + :vartype list: str + """ + + list: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Required.""" + + @overload + def __init__( + self, + *, + list: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + class SameAsModel(_Model): """SameAsModel. diff --git a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/operations/_operations.py index 87d601176fb..d2e4fb6956e 100644 --- a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/modelproperties/operations/_operations.py @@ -58,6 +58,20 @@ def build_model_properties_dict_methods_request(**kwargs: Any) -> HttpRequest: return HttpRequest(method="POST", url=_url, headers=_headers, **kwargs) +def build_model_properties_with_list_request(**kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + # Construct URL + _url = "/special-words/model-properties/list" + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + + return HttpRequest(method="POST", url=_url, headers=_headers, **kwargs) + + class ModelPropertiesOperations: """ .. warning:: @@ -272,3 +286,100 @@ def dict_methods( # pylint: disable=inconsistent-return-statements if cls: return cls(pipeline_response, None, {}) # type: ignore + + @overload + def with_list(self, body: _models1.ModelWithList, *, content_type: str = "application/json", **kwargs: Any) -> None: + """with_list. + + :param body: Required. + :type body: ~specialwords.modelproperties.models.ModelWithList + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~corehttp.exceptions.HttpResponseError: + """ + + @overload + def with_list(self, body: JSON, *, content_type: str = "application/json", **kwargs: Any) -> None: + """with_list. + + :param body: Required. + :type body: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~corehttp.exceptions.HttpResponseError: + """ + + @overload + def with_list(self, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any) -> None: + """with_list. + + :param body: Required. + :type body: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: None + :rtype: None + :raises ~corehttp.exceptions.HttpResponseError: + """ + + def with_list( # pylint: disable=inconsistent-return-statements + self, body: Union[_models1.ModelWithList, JSON, IO[bytes]], **kwargs: Any + ) -> None: + """with_list. + + :param body: Is one of the following types: ModelWithList, JSON, IO[bytes] Required. + :type body: ~specialwords.modelproperties.models.ModelWithList or JSON or IO[bytes] + :return: None + :rtype: None + :raises ~corehttp.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[None] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(body, (IOBase, bytes)): + _content = body + else: + _content = json.dumps(body, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_model_properties_with_list_request( + content_type=content_type, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.endpoint", self._config.endpoint, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _stream = False + pipeline_response: PipelineResponse = self._client.pipeline.run(_request, stream=_stream, **kwargs) + + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore diff --git a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/models/models/_models.py b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/models/models/_models.py index 56214349bd4..9181bebe4d7 100644 --- a/packages/typespec-python/test/unbranded/generated/special-words/specialwords/models/models/_models.py +++ b/packages/typespec-python/test/unbranded/generated/special-words/specialwords/models/models/_models.py @@ -5,6 +5,8 @@ from ..._utils.model_base import Model as _Model, rest_field +List = list + class AndModel(_Model): """AndModel. diff --git a/packages/typespec-python/test/unbranded/generated/specs-documentation/specs/documentation/aio/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/specs-documentation/specs/documentation/aio/operations/_operations.py index da87e522c03..9a3d47e0264 100644 --- a/packages/typespec-python/test/unbranded/generated/specs-documentation/specs/documentation/aio/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/specs-documentation/specs/documentation/aio/operations/_operations.py @@ -211,7 +211,7 @@ async def bullet_points_model( response = pipeline_response.http_response - if response.status_code not in [204]: + if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response) diff --git a/packages/typespec-python/test/unbranded/generated/specs-documentation/specs/documentation/operations/_operations.py b/packages/typespec-python/test/unbranded/generated/specs-documentation/specs/documentation/operations/_operations.py index 3e5ae442d18..62beb73a036 100644 --- a/packages/typespec-python/test/unbranded/generated/specs-documentation/specs/documentation/operations/_operations.py +++ b/packages/typespec-python/test/unbranded/generated/specs-documentation/specs/documentation/operations/_operations.py @@ -253,7 +253,7 @@ def bullet_points_model( # pylint: disable=inconsistent-return-statements response = pipeline_response.http_response - if response.status_code not in [204]: + if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) raise HttpResponseError(response=response) diff --git a/packages/typespec-python/test/unbranded/mock_api_tests/asynctests/test_special_words_async.py b/packages/typespec-python/test/unbranded/mock_api_tests/asynctests/test_special_words_async.py index c565a9ce546..eb11843ab32 100644 --- a/packages/typespec-python/test/unbranded/mock_api_tests/asynctests/test_special_words_async.py +++ b/packages/typespec-python/test/unbranded/mock_api_tests/asynctests/test_special_words_async.py @@ -41,3 +41,26 @@ async def test_model(client: SpecialWordsClient, special_words): @pytest.mark.asyncio async def test_model_properties(client: SpecialWordsClient): await client.model_properties.same_as_model(model_properties_models.SameAsModel(same_as_model="ok")) + + +@pytest.mark.asyncio +async def test_model_properties_dict_methods(client: SpecialWordsClient): + await client.model_properties.dict_methods( + body=model_properties_models.DictMethods( + keys_property="ok", + items_property="ok", + values_property="ok", + popitem_property="ok", + clear_property="ok", + update_property="ok", + setdefault_property="ok", + pop_property="ok", + get_property="ok", + copy_property="ok", + ) + ) + + +@pytest.mark.asyncio +async def test_model_properties_with_list(client: SpecialWordsClient): + await client.model_properties.with_list(model_properties_models.ModelWithList(list="ok")) diff --git a/packages/typespec-python/test/unbranded/mock_api_tests/test_special_words.py b/packages/typespec-python/test/unbranded/mock_api_tests/test_special_words.py index 6fb680e17e3..89679bfd788 100644 --- a/packages/typespec-python/test/unbranded/mock_api_tests/test_special_words.py +++ b/packages/typespec-python/test/unbranded/mock_api_tests/test_special_words.py @@ -37,3 +37,24 @@ def test_model(client: SpecialWordsClient, special_words): def test_model_properties(client: SpecialWordsClient): client.model_properties.same_as_model(model_properties_models.SameAsModel(same_as_model="ok")) + + +def test_model_properties_dict_methods(client: SpecialWordsClient): + client.model_properties.dict_methods( + body=model_properties_models.DictMethods( + keys_property="ok", + items_property="ok", + values_property="ok", + popitem_property="ok", + clear_property="ok", + update_property="ok", + setdefault_property="ok", + pop_property="ok", + get_property="ok", + copy_property="ok", + ) + ) + + +def test_model_properties_with_list(client: SpecialWordsClient): + client.model_properties.with_list(model_properties_models.ModelWithList(list="ok")) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7ba70351ff3..81f5efdf6ee 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: ~0.24.1 - version: 0.24.1(b7kju2kdalb6htbnfimb5jihti) + specifier: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTc1NTgzOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.24.1.tgz + version: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTc1NTgzOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.24.1.tgz(b7kju2kdalb6htbnfimb5jihti) fs-extra: specifier: ~11.2.0 version: 11.2.0 @@ -82,8 +82,8 @@ importers: packages/typespec-python: dependencies: '@typespec/http-client-python': - specifier: ~0.24.1 - version: 0.24.1(b7kju2kdalb6htbnfimb5jihti) + specifier: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTc1NTgzOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.24.1.tgz + version: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTc1NTgzOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.24.1.tgz(b7kju2kdalb6htbnfimb5jihti) fs-extra: specifier: ~11.2.0 version: 11.2.0 @@ -140,8 +140,8 @@ importers: specifier: ^1.8.0 version: 1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))) '@typespec/http-specs': - specifier: 0.1.0-alpha.30 - version: 0.1.0-alpha.30(@types/node@24.1.0)(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))))(@typespec/rest@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))(@typespec/versioning@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))(@typespec/xml@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))) + specifier: 0.1.0-alpha.31 + version: 0.1.0-alpha.31(@types/node@24.1.0)(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))))(@typespec/rest@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))(@typespec/versioning@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))(@typespec/xml@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))) '@typespec/openapi': specifier: ^1.8.0 version: 1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))) @@ -1698,8 +1698,9 @@ packages: peerDependencies: '@typespec/compiler': ^1.8.0 - '@typespec/http-client-python@0.24.1': - resolution: {integrity: sha512-pYjfHq+4QduKLV+DxBQ+ua3cAU4e8a7Evx91QKww87wOWqKYZY2YqjTna6IclRGtLjTDvJG594JBl58DMeWWTg==} + '@typespec/http-client-python@https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTc1NTgzOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.24.1.tgz': + resolution: {tarball: https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTc1NTgzOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.24.1.tgz} + version: 0.24.1 engines: {node: '>=20.0.0'} peerDependencies: '@azure-tools/typespec-autorest': '>=0.64.0 <1.0.0' @@ -1717,8 +1718,8 @@ packages: '@typespec/versioning': '>=0.78.0 <1.0.0' '@typespec/xml': '>=0.78.0 <1.0.0' - '@typespec/http-specs@0.1.0-alpha.30': - resolution: {integrity: sha512-9c/npRHmX+IL4iAuXcDw5Jyy/exTu7IEp4i+JxYj43e+/g8gzFKFRMtJhcrH2xaABMFtrDW5oxXz0mh8PJaIjg==} + '@typespec/http-specs@0.1.0-alpha.31': + resolution: {integrity: sha512-ji+Zt4wB8NnVw3cFiE+LmkXCTfBWEq1xwBQrxJ83q28NQeKBMOVxynjiCz344gxOCcEfhAX4mwKcYeJUKAFVYQ==} engines: {node: '>=16.0.0'} peerDependencies: '@typespec/compiler': ^1.8.0 @@ -6509,7 +6510,7 @@ snapshots: dependencies: '@typespec/compiler': 1.8.0(@types/node@24.1.0) - '@typespec/http-client-python@0.24.1(b7kju2kdalb6htbnfimb5jihti)': + '@typespec/http-client-python@https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTc1NTgzOC9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.24.1.tgz(b7kju2kdalb6htbnfimb5jihti)': dependencies: '@azure-tools/typespec-autorest': 0.64.0(e7zqujppjhxxhi2vffxj66uj3a) '@azure-tools/typespec-azure-core': 0.64.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))))(@typespec/rest@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))))) @@ -6534,7 +6535,7 @@ snapshots: - bufferutil - utf-8-validate - '@typespec/http-specs@0.1.0-alpha.30(@types/node@24.1.0)(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))))(@typespec/rest@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))(@typespec/versioning@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))(@typespec/xml@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))': + '@typespec/http-specs@0.1.0-alpha.31(@types/node@24.1.0)(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))))(@typespec/rest@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/http@1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))(@typespec/versioning@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))(@typespec/xml@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))': dependencies: '@typespec/compiler': 1.8.0(@types/node@24.1.0) '@typespec/http': 1.8.0(@typespec/compiler@1.8.0(@types/node@24.1.0))(@typespec/streams@0.78.0(@typespec/compiler@1.8.0(@types/node@24.1.0)))