Skip to content

Commit c0bba45

Browse files
authored
[Python] support @override completely (#3223)
1 parent 4ef4de6 commit c0bba45

16 files changed

Lines changed: 649 additions & 23 deletions

packages/autorest.python/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
},
3030
"homepage": "https://github.com/Azure/autorest.python/blob/main/README.md",
3131
"dependencies": {
32-
"@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTM4Nzg0Ni9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.18.1.tgz",
32+
"@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTM5NjI0NS9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.18.1.tgz",
3333
"@autorest/system-requirements": "~1.0.2",
3434
"fs-extra": "~11.2.0",
3535
"tsx": "~4.19.1"

packages/typespec-python/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"js-yaml": "~4.1.0",
6868
"semver": "~7.6.2",
6969
"tsx": "~4.19.1",
70-
"@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTM4Nzg0Ni9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.18.1.tgz",
70+
"@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTM5NjI0NS9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.18.1.tgz",
7171
"fs-extra": "~11.2.0"
7272
},
7373
"devDependencies": {
@@ -86,7 +86,7 @@
8686
"@azure-tools/typespec-azure-rulesets": "~0.60.0",
8787
"@azure-tools/typespec-autorest": "~0.60.0",
8888
"@azure-tools/typespec-client-generator-core": "~0.60.2",
89-
"@azure-tools/azure-http-specs": "0.1.0-alpha.29",
89+
"@azure-tools/azure-http-specs": "0.1.0-alpha.30-dev.5",
9090
"@typespec/http-specs": "0.1.0-alpha.26",
9191
"@typespec/spector": "0.1.0-alpha.18",
9292
"@typespec/spec-api": "0.1.0-alpha.9",

packages/typespec-python/test/azure/generated/azure-client-generator-core-override/apiview-properties.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
"specs.azure.clientgenerator.core.override.operations.ReorderParametersOperations.reorder": "_Specs_.Azure.ClientGenerator.Core.Override.ReorderParameters.reorder",
66
"specs.azure.clientgenerator.core.override.aio.operations.ReorderParametersOperations.reorder": "_Specs_.Azure.ClientGenerator.Core.Override.ReorderParameters.reorder",
77
"specs.azure.clientgenerator.core.override.operations.GroupParametersOperations.group": "_Specs_.Azure.ClientGenerator.Core.Override.GroupParameters.group",
8-
"specs.azure.clientgenerator.core.override.aio.operations.GroupParametersOperations.group": "_Specs_.Azure.ClientGenerator.Core.Override.GroupParameters.group"
8+
"specs.azure.clientgenerator.core.override.aio.operations.GroupParametersOperations.group": "_Specs_.Azure.ClientGenerator.Core.Override.GroupParameters.group",
9+
"specs.azure.clientgenerator.core.override.operations.RequireOptionalParameterOperations.require_optional": "_Specs_.Azure.ClientGenerator.Core.Override.RequireOptionalParameter.requireOptional",
10+
"specs.azure.clientgenerator.core.override.aio.operations.RequireOptionalParameterOperations.require_optional": "_Specs_.Azure.ClientGenerator.Core.Override.RequireOptionalParameter.requireOptional",
11+
"specs.azure.clientgenerator.core.override.operations.RemoveOptionalParameterOperations.remove_optional": "_Specs_.Azure.ClientGenerator.Core.Override.RemoveOptionalParameter.removeOptional",
12+
"specs.azure.clientgenerator.core.override.aio.operations.RemoveOptionalParameterOperations.remove_optional": "_Specs_.Azure.ClientGenerator.Core.Override.RemoveOptionalParameter.removeOptional"
913
}
1014
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# coding=utf-8
2+
# --------------------------------------------------------------------------
3+
# Copyright (c) Microsoft Corporation. All rights reserved.
4+
# Licensed under the MIT License. See License.txt in the project root for license information.
5+
# Code generated by Microsoft (R) Python Code Generator.
6+
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7+
# --------------------------------------------------------------------------
8+
import pytest
9+
from devtools_testutils import recorded_by_proxy
10+
from testpreparer import OverrideClientTestBase, OverridePreparer
11+
12+
13+
@pytest.mark.skip("you may need to update the auto-generated test case before run it")
14+
class TestOverrideRemoveOptionalParameterOperations(OverrideClientTestBase):
15+
@OverridePreparer()
16+
@recorded_by_proxy
17+
def test_remove_optional_parameter_remove_optional(self, override_endpoint):
18+
client = self.create_client(endpoint=override_endpoint)
19+
response = client.remove_optional_parameter.remove_optional(
20+
param1="str",
21+
)
22+
23+
# please add some check logic here by yourself
24+
# ...
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# coding=utf-8
2+
# --------------------------------------------------------------------------
3+
# Copyright (c) Microsoft Corporation. All rights reserved.
4+
# Licensed under the MIT License. See License.txt in the project root for license information.
5+
# Code generated by Microsoft (R) Python Code Generator.
6+
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7+
# --------------------------------------------------------------------------
8+
import pytest
9+
from devtools_testutils.aio import recorded_by_proxy_async
10+
from testpreparer import OverridePreparer
11+
from testpreparer_async import OverrideClientTestBaseAsync
12+
13+
14+
@pytest.mark.skip("you may need to update the auto-generated test case before run it")
15+
class TestOverrideRemoveOptionalParameterOperationsAsync(OverrideClientTestBaseAsync):
16+
@OverridePreparer()
17+
@recorded_by_proxy_async
18+
async def test_remove_optional_parameter_remove_optional(self, override_endpoint):
19+
client = self.create_async_client(endpoint=override_endpoint)
20+
response = await client.remove_optional_parameter.remove_optional(
21+
param1="str",
22+
)
23+
24+
# please add some check logic here by yourself
25+
# ...
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# coding=utf-8
2+
# --------------------------------------------------------------------------
3+
# Copyright (c) Microsoft Corporation. All rights reserved.
4+
# Licensed under the MIT License. See License.txt in the project root for license information.
5+
# Code generated by Microsoft (R) Python Code Generator.
6+
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7+
# --------------------------------------------------------------------------
8+
import pytest
9+
from devtools_testutils import recorded_by_proxy
10+
from testpreparer import OverrideClientTestBase, OverridePreparer
11+
12+
13+
@pytest.mark.skip("you may need to update the auto-generated test case before run it")
14+
class TestOverrideRequireOptionalParameterOperations(OverrideClientTestBase):
15+
@OverridePreparer()
16+
@recorded_by_proxy
17+
def test_require_optional_parameter_require_optional(self, override_endpoint):
18+
client = self.create_client(endpoint=override_endpoint)
19+
response = client.require_optional_parameter.require_optional(
20+
param1="str",
21+
param2="str",
22+
)
23+
24+
# please add some check logic here by yourself
25+
# ...
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# coding=utf-8
2+
# --------------------------------------------------------------------------
3+
# Copyright (c) Microsoft Corporation. All rights reserved.
4+
# Licensed under the MIT License. See License.txt in the project root for license information.
5+
# Code generated by Microsoft (R) Python Code Generator.
6+
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7+
# --------------------------------------------------------------------------
8+
import pytest
9+
from devtools_testutils.aio import recorded_by_proxy_async
10+
from testpreparer import OverridePreparer
11+
from testpreparer_async import OverrideClientTestBaseAsync
12+
13+
14+
@pytest.mark.skip("you may need to update the auto-generated test case before run it")
15+
class TestOverrideRequireOptionalParameterOperationsAsync(OverrideClientTestBaseAsync):
16+
@OverridePreparer()
17+
@recorded_by_proxy_async
18+
async def test_require_optional_parameter_require_optional(self, override_endpoint):
19+
client = self.create_async_client(endpoint=override_endpoint)
20+
response = await client.require_optional_parameter.require_optional(
21+
param1="str",
22+
param2="str",
23+
)
24+
25+
# please add some check logic here by yourself
26+
# ...

packages/typespec-python/test/azure/generated/azure-client-generator-core-override/specs/azure/clientgenerator/core/override/_client.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@
1616

1717
from ._configuration import OverrideClientConfiguration
1818
from ._utils.serialization import Deserializer, Serializer
19-
from .operations import GroupParametersOperations, ReorderParametersOperations
19+
from .operations import (
20+
GroupParametersOperations,
21+
RemoveOptionalParameterOperations,
22+
ReorderParametersOperations,
23+
RequireOptionalParameterOperations,
24+
)
2025

2126

2227
class OverrideClient: # pylint: disable=client-accepts-api-version-keyword
@@ -28,6 +33,12 @@ class OverrideClient: # pylint: disable=client-accepts-api-version-keyword
2833
:ivar group_parameters: GroupParametersOperations operations
2934
:vartype group_parameters:
3035
specs.azure.clientgenerator.core.override.operations.GroupParametersOperations
36+
:ivar require_optional_parameter: RequireOptionalParameterOperations operations
37+
:vartype require_optional_parameter:
38+
specs.azure.clientgenerator.core.override.operations.RequireOptionalParameterOperations
39+
:ivar remove_optional_parameter: RemoveOptionalParameterOperations operations
40+
:vartype remove_optional_parameter:
41+
specs.azure.clientgenerator.core.override.operations.RemoveOptionalParameterOperations
3142
:keyword endpoint: Service host. Default value is "http://localhost:3000".
3243
:paramtype endpoint: str
3344
"""
@@ -66,6 +77,12 @@ def __init__( # pylint: disable=missing-client-constructor-parameter-credential
6677
self.group_parameters = GroupParametersOperations(
6778
self._client, self._config, self._serialize, self._deserialize
6879
)
80+
self.require_optional_parameter = RequireOptionalParameterOperations(
81+
self._client, self._config, self._serialize, self._deserialize
82+
)
83+
self.remove_optional_parameter = RemoveOptionalParameterOperations(
84+
self._client, self._config, self._serialize, self._deserialize
85+
)
6986

7087
def send_request(self, request: HttpRequest, *, stream: bool = False, **kwargs: Any) -> HttpResponse:
7188
"""Runs the network request through the client's chained policies.

packages/typespec-python/test/azure/generated/azure-client-generator-core-override/specs/azure/clientgenerator/core/override/aio/_client.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@
1616

1717
from .._utils.serialization import Deserializer, Serializer
1818
from ._configuration import OverrideClientConfiguration
19-
from .operations import GroupParametersOperations, ReorderParametersOperations
19+
from .operations import (
20+
GroupParametersOperations,
21+
RemoveOptionalParameterOperations,
22+
ReorderParametersOperations,
23+
RequireOptionalParameterOperations,
24+
)
2025

2126

2227
class OverrideClient: # pylint: disable=client-accepts-api-version-keyword
@@ -28,6 +33,12 @@ class OverrideClient: # pylint: disable=client-accepts-api-version-keyword
2833
:ivar group_parameters: GroupParametersOperations operations
2934
:vartype group_parameters:
3035
specs.azure.clientgenerator.core.override.aio.operations.GroupParametersOperations
36+
:ivar require_optional_parameter: RequireOptionalParameterOperations operations
37+
:vartype require_optional_parameter:
38+
specs.azure.clientgenerator.core.override.aio.operations.RequireOptionalParameterOperations
39+
:ivar remove_optional_parameter: RemoveOptionalParameterOperations operations
40+
:vartype remove_optional_parameter:
41+
specs.azure.clientgenerator.core.override.aio.operations.RemoveOptionalParameterOperations
3142
:keyword endpoint: Service host. Default value is "http://localhost:3000".
3243
:paramtype endpoint: str
3344
"""
@@ -66,6 +77,12 @@ def __init__( # pylint: disable=missing-client-constructor-parameter-credential
6677
self.group_parameters = GroupParametersOperations(
6778
self._client, self._config, self._serialize, self._deserialize
6879
)
80+
self.require_optional_parameter = RequireOptionalParameterOperations(
81+
self._client, self._config, self._serialize, self._deserialize
82+
)
83+
self.remove_optional_parameter = RemoveOptionalParameterOperations(
84+
self._client, self._config, self._serialize, self._deserialize
85+
)
6986

7087
def send_request(
7188
self, request: HttpRequest, *, stream: bool = False, **kwargs: Any

packages/typespec-python/test/azure/generated/azure-client-generator-core-override/specs/azure/clientgenerator/core/override/aio/operations/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
from ._operations import ReorderParametersOperations # type: ignore
1616
from ._operations import GroupParametersOperations # type: ignore
17+
from ._operations import RequireOptionalParameterOperations # type: ignore
18+
from ._operations import RemoveOptionalParameterOperations # type: ignore
1719

1820
from ._patch import __all__ as _patch_all
1921
from ._patch import *
@@ -22,6 +24,8 @@
2224
__all__ = [
2325
"ReorderParametersOperations",
2426
"GroupParametersOperations",
27+
"RequireOptionalParameterOperations",
28+
"RemoveOptionalParameterOperations",
2529
]
2630
__all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore
2731
_patch_sdk()

0 commit comments

Comments
 (0)