Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
changeKind: internal
packages:
- "@autorest/python"
- "@azure-tools/typespec-python"
---

Add test case
2 changes: 1 addition & 1 deletion packages/autorest.python/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTQ0NTY0Ni9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.19.1.tgz",
"@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTQ0ODI4Ny9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.19.1.tgz",
"@autorest/system-requirements": "~1.0.2",
"fs-extra": "~11.2.0",
"tsx": "~4.19.1"
Expand Down
4 changes: 2 additions & 2 deletions packages/typespec-python/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTQ0NTY0Ni9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.19.1.tgz",
"@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTQ0ODI4Ny9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.19.1.tgz",
"fs-extra": "~11.2.0"
},
"devDependencies": {
Expand All @@ -86,7 +86,7 @@
"@azure-tools/typespec-azure-rulesets": "~0.61.0",
"@azure-tools/typespec-autorest": "~0.61.0",
"@azure-tools/typespec-client-generator-core": "~0.61.0",
"@azure-tools/azure-http-specs": "0.1.0-alpha.30",
"@azure-tools/azure-http-specs": "0.1.0-alpha.31",
"@typespec/http-specs": "0.1.0-alpha.27",
"@typespec/spector": "0.1.0-alpha.19",
"@typespec/spec-api": "0.1.0-alpha.9",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,15 @@
from ._utils.serialization import Deserializer, Serializer


class PreviewVersionClient(_PreviewVersionClientOperationsMixin): # pylint: disable=client-accepts-api-version-keyword
class PreviewVersionClient(_PreviewVersionClientOperationsMixin):
"""PreviewVersionClient.

:keyword endpoint: Service host. Default value is "http://localhost:3000".
:paramtype endpoint: str
:keyword api_version: The API version to use for this operation. Default value is
"2024-12-01-preview". Note that overriding this default value may result in unsupported
behavior.
:paramtype api_version: str
"""

def __init__( # pylint: disable=missing-client-constructor-parameter-credential
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,17 @@ class PreviewVersionClientConfiguration: # pylint: disable=too-many-instance-at

:param endpoint: Service host. Default value is "http://localhost:3000".
:type endpoint: str
:keyword api_version: The API version to use for this operation. Default value is
"2024-12-01-preview". Note that overriding this default value may result in unsupported
behavior.
:paramtype api_version: str
"""

def __init__(self, endpoint: str = "http://localhost:3000", **kwargs: Any) -> None:
api_version: str = kwargs.pop("api_version", "2024-12-01-preview")

self.endpoint = endpoint
self.api_version = api_version
kwargs.setdefault("sdk_moniker", "specs-azure-versioning-previewversion/{}".format(VERSION))
self.polling_interval = kwargs.get("polling_interval", 30)
self._configure(**kwargs)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@

def build_preview_version_get_widget_request(id: str, **kwargs: Any) -> HttpRequest:
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-12-01-preview"))
accept = _headers.pop("Accept", "application/json")

# Construct URL
Expand All @@ -54,18 +56,23 @@ def build_preview_version_get_widget_request(id: str, **kwargs: Any) -> HttpRequ

_url: str = _url.format(**path_format_arguments) # type: ignore

# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")

# Construct headers
_headers["Accept"] = _SERIALIZER.header("accept", accept, "str")

return HttpRequest(method="GET", url=_url, headers=_headers, **kwargs)
return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)


def build_preview_version_update_widget_color_request( # pylint: disable=name-too-long
id: str, **kwargs: Any
) -> HttpRequest:
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-12-01-preview"))
accept = _headers.pop("Accept", "application/json")

# Construct URL
Expand All @@ -76,12 +83,15 @@ def build_preview_version_update_widget_color_request( # pylint: disable=name-t

_url: str = _url.format(**path_format_arguments) # type: ignore

# Construct parameters
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")

# Construct headers
if content_type is not None:
_headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
_headers["Accept"] = _SERIALIZER.header("accept", accept, "str")

return HttpRequest(method="PATCH", url=_url, headers=_headers, **kwargs)
return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs)


def build_preview_version_list_widgets_request( # pylint: disable=name-too-long
Expand All @@ -90,6 +100,7 @@ def build_preview_version_list_widgets_request( # pylint: disable=name-too-long
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-12-01-preview"))
accept = _headers.pop("Accept", "application/json")

# Construct URL
Expand All @@ -100,6 +111,7 @@ def build_preview_version_list_widgets_request( # pylint: disable=name-too-long
_params["name"] = _SERIALIZER.query("name", name, "str")
if color is not None:
_params["color"] = _SERIALIZER.query("color", color, "str")
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")

# Construct headers
_headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
Expand Down Expand Up @@ -136,6 +148,7 @@ def get_widget(self, id: str, **kwargs: Any) -> Optional[_models.Widget]:

_request = build_preview_version_get_widget_request(
id=id,
api_version=self._config.api_version,
headers=_headers,
params=_params,
)
Expand Down Expand Up @@ -234,7 +247,7 @@ def update_widget_color(
@distributed_trace
@api_version_validation(
method_added_on="2024-12-01-preview",
params_added_on={"2024-12-01-preview": ["id", "content_type", "accept"]},
params_added_on={"2024-12-01-preview": ["id", "content_type", "api_version", "accept"]},
api_versions_list=["2024-12-01-preview"],
)
def update_widget_color(
Expand Down Expand Up @@ -276,6 +289,7 @@ def update_widget_color(
_request = build_preview_version_update_widget_color_request(
id=id,
content_type=content_type,
api_version=self._config.api_version,
content=_content,
headers=_headers,
params=_params,
Expand Down Expand Up @@ -347,6 +361,7 @@ def list_widgets(
_request = build_preview_version_list_widgets_request(
name=name,
color=color,
api_version=self._config.api_version,
headers=_headers,
params=_params,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,15 @@
from ._operations import _PreviewVersionClientOperationsMixin


class PreviewVersionClient(_PreviewVersionClientOperationsMixin): # pylint: disable=client-accepts-api-version-keyword
class PreviewVersionClient(_PreviewVersionClientOperationsMixin):
"""PreviewVersionClient.

:keyword endpoint: Service host. Default value is "http://localhost:3000".
:paramtype endpoint: str
:keyword api_version: The API version to use for this operation. Default value is
"2024-12-01-preview". Note that overriding this default value may result in unsupported
behavior.
:paramtype api_version: str
"""

def __init__( # pylint: disable=missing-client-constructor-parameter-credential
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,17 @@ class PreviewVersionClientConfiguration: # pylint: disable=too-many-instance-at

:param endpoint: Service host. Default value is "http://localhost:3000".
:type endpoint: str
:keyword api_version: The API version to use for this operation. Default value is
"2024-12-01-preview". Note that overriding this default value may result in unsupported
behavior.
:paramtype api_version: str
"""

def __init__(self, endpoint: str = "http://localhost:3000", **kwargs: Any) -> None:
api_version: str = kwargs.pop("api_version", "2024-12-01-preview")

self.endpoint = endpoint
self.api_version = api_version
kwargs.setdefault("sdk_moniker", "specs-azure-versioning-previewversion/{}".format(VERSION))
self.polling_interval = kwargs.get("polling_interval", 30)
self._configure(**kwargs)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ async def get_widget(self, id: str, **kwargs: Any) -> Optional[_models.Widget]:

_request = build_preview_version_get_widget_request(
id=id,
api_version=self._config.api_version,
headers=_headers,
params=_params,
)
Expand Down Expand Up @@ -170,7 +171,7 @@ async def update_widget_color(
@distributed_trace_async
@api_version_validation(
method_added_on="2024-12-01-preview",
params_added_on={"2024-12-01-preview": ["id", "content_type", "accept"]},
params_added_on={"2024-12-01-preview": ["id", "content_type", "api_version", "accept"]},
api_versions_list=["2024-12-01-preview"],
)
async def update_widget_color(
Expand Down Expand Up @@ -212,6 +213,7 @@ async def update_widget_color(
_request = build_preview_version_update_widget_color_request(
id=id,
content_type=content_type,
api_version=self._config.api_version,
content=_content,
headers=_headers,
params=_params,
Expand Down Expand Up @@ -283,6 +285,7 @@ async def list_widgets(
_request = build_preview_version_list_widgets_request(
name=name,
color=color,
api_version=self._config.api_version,
headers=_headers,
params=_params,
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import pytest
from specs.azure.versioning.previewversion.aio import PreviewVersionClient
from specs.azure.versioning.previewversion.models import UpdateWidgetColorRequest


@pytest.fixture
async def client():
async with PreviewVersionClient() as client:
yield client


@pytest.fixture
async def stable_client():
async with PreviewVersionClient(api_version="2024-06-01") as client:
yield client


@pytest.mark.asyncio
async def test_get_widget(client: PreviewVersionClient):
result = await client.get_widget(id="widget-123")
assert result.id == "widget-123"
assert result.name == "Sample Widget"
assert result.color == "blue"


@pytest.mark.asyncio
async def test_update_widget_color(client: PreviewVersionClient):
color_update = UpdateWidgetColorRequest(color="red")
result = await client.update_widget_color(id="widget-123", color_update=color_update)
assert result.id == "widget-123"
assert result.name == "Sample Widget"
assert result.color == "red"

with pytest.raises(ValueError):
async with PreviewVersionClient(api_version="2024-06-01") as stable_client:
await stable_client.update_widget_color(id="widget-123", color_update=color_update)


@pytest.mark.asyncio
async def test_list_widgets(stable_client: PreviewVersionClient):
result = await stable_client.list_widgets(name="test")
assert len(result.widgets) == 1
assert result.widgets[0].id == "widget-1"
assert result.widgets[0].name == "test"

with pytest.raises(ValueError):
async with PreviewVersionClient(api_version="2024-06-01") as client:
await client.list_widgets(name="test", color="test")
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import pytest
from specs.azure.versioning.previewversion import PreviewVersionClient
from specs.azure.versioning.previewversion.models import UpdateWidgetColorRequest


@pytest.fixture
def client():
with PreviewVersionClient() as client:
yield client


@pytest.fixture
def stable_client():
with PreviewVersionClient(api_version="2024-06-01") as client:
yield client


def test_get_widget(client: PreviewVersionClient):
result = client.get_widget(id="widget-123")
assert result.id == "widget-123"
assert result.name == "Sample Widget"
assert result.color == "blue"


def test_update_widget_color(client: PreviewVersionClient):
color_update = UpdateWidgetColorRequest(color="red")
result = client.update_widget_color(id="widget-123", color_update=color_update)
assert result.id == "widget-123"
assert result.name == "Sample Widget"
assert result.color == "red"

with pytest.raises(ValueError):
with PreviewVersionClient(api_version="2024-06-01") as stable_client:
stable_client.update_widget_color(id="widget-123", color_update=color_update)


def test_list_widgets(stable_client: PreviewVersionClient):
result = stable_client.list_widgets(name="test")
assert len(result.widgets) == 1
assert result.widgets[0].id == "widget-1"
assert result.widgets[0].name == "test"

with pytest.raises(ValueError):
with PreviewVersionClient(api_version="2024-06-01") as client:
client.list_widgets(name="test", color="test")
1 change: 1 addition & 0 deletions packages/typespec-python/test/azure/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ azure-mgmt-core==1.6.0
-e ./generated/azure-resource-manager-operation-templates
-e ./generated/azure-resource-manager-resources
-e ./generated/azure-resource-manager-method-subscription-id
-e ./generated/azure-versioning-previewversion
-e ./generated/azure-payload-pageable
-e ./generated/client-namespace
-e ./generated/client-naming
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# --------------------------------------------------------------------------
import pytest
from versioning.removed.aio import RemovedClient
from versioning.removed.models import ModelV2, EnumV2
from versioning.removed.models import ModelV2, EnumV2, ModelV3, EnumV3


@pytest.fixture
Expand All @@ -22,7 +22,18 @@ async def test_v2(client: RemovedClient):


@pytest.mark.asyncio
async def test_model_v3(client: RemovedClient):
result = await client.model_v3({"id": "123", "enumProp": "enumMemberV1"})
assert result.id == "123"
assert result.enum_prop == "enumMemberV1"
async def test_model_v3():
async with RemovedClient(endpoint="http://localhost:3000", version="v1") as client1:
model1 = ModelV3(id="123", enum_prop=EnumV3.ENUM_MEMBER_V1)
result = await client1.model_v3(model1)
assert result == model1

async with RemovedClient(endpoint="http://localhost:3000", version="v2preview") as client2:
model2 = ModelV3(id="123")
result = await client2.model_v3(model2)
assert result == model2

async with RemovedClient(endpoint="http://localhost:3000", version="v2") as client3:
model3 = ModelV3(id="123", enum_prop=EnumV3.ENUM_MEMBER_V1)
result = await client3.model_v3(model3)
assert result == model3
Loading
Loading