@typespec/http-client-python 0.16.1-dev.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/emitter/emitter.js +5 -4
  2. package/dist/emitter/emitter.js.map +1 -1
  3. package/dist/emitter/http.d.ts.map +1 -1
  4. package/dist/emitter/http.js +1 -0
  5. package/dist/emitter/http.js.map +1 -1
  6. package/emitter/src/emitter.ts +5 -4
  7. package/emitter/src/http.ts +2 -0
  8. package/emitter/temp/tsconfig.tsbuildinfo +1 -1
  9. package/eng/scripts/ci/dev_requirements.txt +2 -2
  10. package/eng/scripts/setup/__pycache__/package_manager.cpython-39.pyc +0 -0
  11. package/eng/scripts/setup/__pycache__/venvtools.cpython-39.pyc +0 -0
  12. package/eng/scripts/setup/install.py +1 -2
  13. package/eng/scripts/setup/package_manager.py +5 -2
  14. package/eng/scripts/setup/prepare.py +1 -1
  15. package/generator/build/lib/pygen/codegen/models/paging_operation.py +4 -0
  16. package/generator/build/lib/pygen/codegen/models/parameter.py +1 -1
  17. package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +7 -0
  18. package/generator/build/lib/pygen/codegen/templates/serialization.py.jinja2 +1 -1
  19. package/generator/build/lib/pygen/preprocess/__init__.py +13 -3
  20. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  21. package/generator/pygen/codegen/models/paging_operation.py +4 -0
  22. package/generator/pygen/codegen/models/parameter.py +1 -1
  23. package/generator/pygen/codegen/serializers/builder_serializer.py +7 -0
  24. package/generator/pygen/codegen/templates/serialization.py.jinja2 +1 -1
  25. package/generator/pygen/preprocess/__init__.py +13 -3
  26. package/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_method_subscription_id_async.py +248 -0
  27. package/generator/test/azure/mock_api_tests/test_azure_resource_manager_method_subscription_id.py +235 -0
  28. package/generator/test/azure/requirements.txt +1 -0
  29. package/generator/test/generic_mock_api_tests/asynctests/test_payload_pageable_async.py +40 -0
  30. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_array_async.py +9 -0
  31. package/generator/test/generic_mock_api_tests/test_payload_pageable.py +29 -0
  32. package/generator/test/generic_mock_api_tests/test_typetest_array.py +8 -0
  33. package/package.json +33 -33
@@ -0,0 +1,235 @@
1
+ # -------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for
4
+ # license information.
5
+ # --------------------------------------------------------------------------
6
+ import pytest
7
+ from azure.resourcemanager.methodsubscriptionid import MethodSubscriptionIdClient
8
+ from azure.resourcemanager.methodsubscriptionid import models
9
+
10
+ SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
11
+ RESOURCE_GROUP_NAME = "test-rg"
12
+
13
+
14
+ @pytest.fixture
15
+ def client(credential, authentication_policy):
16
+ with MethodSubscriptionIdClient(
17
+ credential,
18
+ SUBSCRIPTION_ID,
19
+ "http://localhost:3000",
20
+ authentication_policy=authentication_policy,
21
+ ) as client:
22
+ yield client
23
+
24
+
25
+ def test_operations_list(client):
26
+ """Test Operations.list() endpoint."""
27
+ operations = client.operations.list()
28
+ operations_list = [op for op in operations]
29
+ assert len(operations_list) > 0
30
+
31
+ operation = operations_list[0]
32
+ assert operation.name == "Azure.ResourceManager.MethodSubscriptionId/services/read"
33
+ assert operation.is_data_action is False
34
+ assert operation.display.provider == "Azure.ResourceManager.MethodSubscriptionId"
35
+ assert operation.display.resource == "services"
36
+ assert operation.display.operation == "Lists services"
37
+ assert operation.display.description == "Lists registered services"
38
+
39
+
40
+ def test_two_subscription_resources_method_level_subscription_resource1_operations_get(client):
41
+ """Test get operation for SubscriptionResource1 with method-level subscription ID."""
42
+ result = client.two_subscription_resources_method_level.subscription_resource1_operations.get(
43
+ subscription_id=SUBSCRIPTION_ID,
44
+ subscription_resource1_name="sub-resource-1",
45
+ )
46
+
47
+ assert (
48
+ result.id
49
+ == f"/subscriptions/{SUBSCRIPTION_ID}/providers/Azure.ResourceManager.MethodSubscriptionId/subscriptionResource1s/sub-resource-1"
50
+ )
51
+ assert result.name == "sub-resource-1"
52
+ assert result.type == "Azure.ResourceManager.MethodSubscriptionId/subscriptionResource1s"
53
+ assert result.properties.description == "Valid subscription resource 1"
54
+ assert result.properties.provisioning_state == "Succeeded"
55
+ assert result.system_data.created_by == "AzureSDK"
56
+
57
+
58
+ def test_two_subscription_resources_method_level_subscription_resource1_operations_put(client):
59
+ """Test put operation for SubscriptionResource1 with method-level subscription ID."""
60
+ resource = models.SubscriptionResource1(
61
+ properties=models.SubscriptionResource1Properties(description="Valid subscription resource 1")
62
+ )
63
+
64
+ result = client.two_subscription_resources_method_level.subscription_resource1_operations.put(
65
+ subscription_id=SUBSCRIPTION_ID,
66
+ subscription_resource1_name="sub-resource-1",
67
+ resource=resource,
68
+ )
69
+
70
+ assert (
71
+ result.id
72
+ == f"/subscriptions/{SUBSCRIPTION_ID}/providers/Azure.ResourceManager.MethodSubscriptionId/subscriptionResource1s/sub-resource-1"
73
+ )
74
+ assert result.name == "sub-resource-1"
75
+ assert result.type == "Azure.ResourceManager.MethodSubscriptionId/subscriptionResource1s"
76
+ assert result.properties.description == "Valid subscription resource 1"
77
+ assert result.properties.provisioning_state == "Succeeded"
78
+ assert result.system_data.created_by == "AzureSDK"
79
+
80
+
81
+ def test_two_subscription_resources_method_level_subscription_resource1_operations_delete(client):
82
+ """Test delete operation for SubscriptionResource1 with method-level subscription ID."""
83
+ client.two_subscription_resources_method_level.subscription_resource1_operations.delete(
84
+ subscription_id=SUBSCRIPTION_ID,
85
+ subscription_resource1_name="sub-resource-1",
86
+ )
87
+
88
+
89
+ def test_two_subscription_resources_method_level_subscription_resource2_operations_get(client):
90
+ """Test get operation for SubscriptionResource2 with method-level subscription ID."""
91
+ result = client.two_subscription_resources_method_level.subscription_resource2_operations.get(
92
+ subscription_id=SUBSCRIPTION_ID,
93
+ subscription_resource2_name="sub-resource-2",
94
+ )
95
+
96
+ assert (
97
+ result.id
98
+ == f"/subscriptions/{SUBSCRIPTION_ID}/providers/Azure.ResourceManager.MethodSubscriptionId/subscriptionResource2s/sub-resource-2"
99
+ )
100
+ assert result.name == "sub-resource-2"
101
+ assert result.type == "Azure.ResourceManager.MethodSubscriptionId/subscriptionResource2s"
102
+ assert result.properties.config_value == "test-config"
103
+ assert result.properties.provisioning_state == "Succeeded"
104
+ assert result.system_data.created_by == "AzureSDK"
105
+
106
+
107
+ def test_two_subscription_resources_method_level_subscription_resource2_operations_put(client):
108
+ """Test put operation for SubscriptionResource2 with method-level subscription ID."""
109
+ resource = models.SubscriptionResource2(
110
+ properties=models.SubscriptionResource2Properties(config_value="test-config")
111
+ )
112
+
113
+ result = client.two_subscription_resources_method_level.subscription_resource2_operations.put(
114
+ subscription_id=SUBSCRIPTION_ID,
115
+ subscription_resource2_name="sub-resource-2",
116
+ resource=resource,
117
+ )
118
+
119
+ assert (
120
+ result.id
121
+ == f"/subscriptions/{SUBSCRIPTION_ID}/providers/Azure.ResourceManager.MethodSubscriptionId/subscriptionResource2s/sub-resource-2"
122
+ )
123
+ assert result.name == "sub-resource-2"
124
+ assert result.type == "Azure.ResourceManager.MethodSubscriptionId/subscriptionResource2s"
125
+ assert result.properties.config_value == "test-config"
126
+ assert result.properties.provisioning_state == "Succeeded"
127
+ assert result.system_data.created_by == "AzureSDK"
128
+
129
+
130
+ def test_two_subscription_resources_method_level_subscription_resource2_operations_delete(client):
131
+ """Test delete operation for SubscriptionResource2 with method-level subscription ID."""
132
+ client.two_subscription_resources_method_level.subscription_resource2_operations.delete(
133
+ subscription_id=SUBSCRIPTION_ID,
134
+ subscription_resource2_name="sub-resource-2",
135
+ )
136
+
137
+
138
+ def test_mixed_subscription_placement_subscription_resource_operations_get(client):
139
+ """Test get operation for SubscriptionResource in mixed placement scenario."""
140
+ result = client.mixed_subscription_placement.subscription_resource_operations.get(
141
+ subscription_id=SUBSCRIPTION_ID,
142
+ subscription_resource_name="sub-resource",
143
+ )
144
+
145
+ assert (
146
+ result.id
147
+ == f"/subscriptions/{SUBSCRIPTION_ID}/providers/Azure.ResourceManager.MethodSubscriptionId/subscriptionResources/sub-resource"
148
+ )
149
+ assert result.name == "sub-resource"
150
+ assert result.type == "Azure.ResourceManager.MethodSubscriptionId/subscriptionResources"
151
+ assert result.properties.subscription_setting == "test-sub-setting"
152
+ assert result.properties.provisioning_state == "Succeeded"
153
+ assert result.system_data.created_by == "AzureSDK"
154
+
155
+
156
+ def test_mixed_subscription_placement_subscription_resource_operations_put(client):
157
+ """Test put operation for SubscriptionResource in mixed placement scenario."""
158
+ resource = models.SubscriptionResource(
159
+ properties=models.SubscriptionResourceProperties(subscription_setting="test-sub-setting")
160
+ )
161
+
162
+ result = client.mixed_subscription_placement.subscription_resource_operations.put(
163
+ subscription_id=SUBSCRIPTION_ID,
164
+ subscription_resource_name="sub-resource",
165
+ resource=resource,
166
+ )
167
+
168
+ assert (
169
+ result.id
170
+ == f"/subscriptions/{SUBSCRIPTION_ID}/providers/Azure.ResourceManager.MethodSubscriptionId/subscriptionResources/sub-resource"
171
+ )
172
+ assert result.name == "sub-resource"
173
+ assert result.type == "Azure.ResourceManager.MethodSubscriptionId/subscriptionResources"
174
+ assert result.properties.subscription_setting == "test-sub-setting"
175
+ assert result.properties.provisioning_state == "Succeeded"
176
+ assert result.system_data.created_by == "AzureSDK"
177
+
178
+
179
+ def test_mixed_subscription_placement_subscription_resource_operations_delete(client):
180
+ """Test delete operation for SubscriptionResource in mixed placement scenario."""
181
+ client.mixed_subscription_placement.subscription_resource_operations.delete(
182
+ subscription_id=SUBSCRIPTION_ID,
183
+ subscription_resource_name="sub-resource",
184
+ )
185
+
186
+
187
+ def test_mixed_subscription_placement_resource_group_resource_operations_get(client):
188
+ """Test get operation for ResourceGroupResource with client-level subscription ID."""
189
+ result = client.mixed_subscription_placement.resource_group_resource_operations.get(
190
+ resource_group_name=RESOURCE_GROUP_NAME,
191
+ resource_group_resource_name="rg-resource",
192
+ )
193
+
194
+ assert (
195
+ result.id
196
+ == f"/subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP_NAME}/providers/Azure.ResourceManager.MethodSubscriptionId/resourceGroupResources/rg-resource"
197
+ )
198
+ assert result.name == "rg-resource"
199
+ assert result.type == "Azure.ResourceManager.MethodSubscriptionId/resourceGroupResources"
200
+ assert result.location == "eastus"
201
+ assert result.properties.resource_group_setting == "test-setting"
202
+ assert result.properties.provisioning_state == "Succeeded"
203
+ assert result.system_data.created_by == "AzureSDK"
204
+
205
+
206
+ def test_mixed_subscription_placement_resource_group_resource_operations_put(client):
207
+ """Test put operation for ResourceGroupResource with client-level subscription ID."""
208
+ resource = models.ResourceGroupResource(
209
+ location="eastus", properties=models.ResourceGroupResourceProperties(resource_group_setting="test-setting")
210
+ )
211
+
212
+ result = client.mixed_subscription_placement.resource_group_resource_operations.put(
213
+ resource_group_name=RESOURCE_GROUP_NAME,
214
+ resource_group_resource_name="rg-resource",
215
+ resource=resource,
216
+ )
217
+
218
+ assert (
219
+ result.id
220
+ == f"/subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP_NAME}/providers/Azure.ResourceManager.MethodSubscriptionId/resourceGroupResources/rg-resource"
221
+ )
222
+ assert result.name == "rg-resource"
223
+ assert result.type == "Azure.ResourceManager.MethodSubscriptionId/resourceGroupResources"
224
+ assert result.location == "eastus"
225
+ assert result.properties.resource_group_setting == "test-setting"
226
+ assert result.properties.provisioning_state == "Succeeded"
227
+ assert result.system_data.created_by == "AzureSDK"
228
+
229
+
230
+ def test_mixed_subscription_placement_resource_group_resource_operations_delete(client):
231
+ """Test delete operation for ResourceGroupResource with client-level subscription ID."""
232
+ client.mixed_subscription_placement.resource_group_resource_operations.delete(
233
+ resource_group_name=RESOURCE_GROUP_NAME,
234
+ resource_group_resource_name="rg-resource",
235
+ )
@@ -29,6 +29,7 @@ azure-mgmt-core==1.6.0
29
29
  -e ./generated/azure-resource-manager-non-resource
30
30
  -e ./generated/azure-resource-manager-operation-templates
31
31
  -e ./generated/azure-resource-manager-resources
32
+ -e ./generated/azure-resource-manager-method-subscription-id
32
33
  -e ./generated/client-namespace
33
34
  -e ./generated/azure-payload-pageable
34
35
  -e ./generated/client-naming
@@ -31,6 +31,12 @@ async def test_link(client: PageableClient):
31
31
  assert_result(result)
32
32
 
33
33
 
34
+ @pytest.mark.asyncio
35
+ async def test_link_string(client: PageableClient):
36
+ result = [p async for p in client.server_driven_pagination.link_string()]
37
+ assert_result(result)
38
+
39
+
34
40
  @pytest.mark.asyncio
35
41
  async def test_request_query_response_body(client: PageableClient):
36
42
  result = [
@@ -73,3 +79,37 @@ async def test_request_header_response_header(client: PageableClient):
73
79
  )
74
80
  ]
75
81
  assert_result(result)
82
+
83
+
84
+ @pytest.mark.asyncio
85
+ async def test_nested_link(client: PageableClient):
86
+ result = [p async for p in client.server_driven_pagination.nested_link()]
87
+ assert_result(result)
88
+
89
+
90
+ @pytest.mark.asyncio
91
+ async def test_request_query_nested_response_body(client: PageableClient):
92
+ result = [
93
+ p
94
+ async for p in client.server_driven_pagination.continuation_token.request_query_nested_response_body(
95
+ foo="foo", bar="bar"
96
+ )
97
+ ]
98
+ assert_result(result)
99
+
100
+
101
+ @pytest.mark.asyncio
102
+ async def test_request_header_nested_response_body(client: PageableClient):
103
+ result = [
104
+ p
105
+ async for p in client.server_driven_pagination.continuation_token.request_header_nested_response_body(
106
+ foo="foo", bar="bar"
107
+ )
108
+ ]
109
+ assert_result(result)
110
+
111
+
112
+ @pytest.mark.asyncio
113
+ async def test_list_without_continuation(client: PageableClient):
114
+ result = [p async for p in client.list_without_continuation()]
115
+ assert_result(result)
@@ -58,6 +58,7 @@ async def test_model_value(client: ArrayClient):
58
58
  models.InnerModel(property="hello"),
59
59
  models.InnerModel(property="world"),
60
60
  ]
61
+ # test list[model]
61
62
  await client.model_value.put(
62
63
  [
63
64
  models.InnerModel(property="hello"),
@@ -65,6 +66,14 @@ async def test_model_value(client: ArrayClient):
65
66
  ]
66
67
  )
67
68
 
69
+ # test list[JSON]
70
+ await client.model_value.put(
71
+ [
72
+ {"property": "hello"},
73
+ {"property": "world"},
74
+ ]
75
+ )
76
+
68
77
 
69
78
  @pytest.mark.asyncio
70
79
  async def test_nullable_boolean_value(client: ArrayClient):
@@ -30,6 +30,11 @@ def test_link(client: PageableClient):
30
30
  assert_result(result)
31
31
 
32
32
 
33
+ def test_link_string(client: PageableClient):
34
+ result = list(client.server_driven_pagination.link_string())
35
+ assert_result(result)
36
+
37
+
33
38
  def test_request_query_response_body(client: PageableClient):
34
39
  result = list(client.server_driven_pagination.continuation_token.request_query_response_body(foo="foo", bar="bar"))
35
40
  assert_result(result)
@@ -52,3 +57,27 @@ def test_request_header_response_header(client: PageableClient):
52
57
  client.server_driven_pagination.continuation_token.request_header_response_header(foo="foo", bar="bar")
53
58
  )
54
59
  assert_result(result)
60
+
61
+
62
+ def test_nested_link(client: PageableClient):
63
+ result = list(client.server_driven_pagination.nested_link())
64
+ assert_result(result)
65
+
66
+
67
+ def test_request_query_nested_response_body(client: PageableClient):
68
+ result = list(
69
+ client.server_driven_pagination.continuation_token.request_query_nested_response_body(foo="foo", bar="bar")
70
+ )
71
+ assert_result(result)
72
+
73
+
74
+ def test_request_header_nested_response_body(client: PageableClient):
75
+ result = list(
76
+ client.server_driven_pagination.continuation_token.request_header_nested_response_body(foo="foo", bar="bar")
77
+ )
78
+ assert_result(result)
79
+
80
+
81
+ def test_list_without_continuation(client: PageableClient):
82
+ result = list(client.list_without_continuation())
83
+ assert_result(result)
@@ -50,12 +50,20 @@ def test_model_value(client: ArrayClient):
50
50
  models.InnerModel(property="hello"),
51
51
  models.InnerModel(property="world"),
52
52
  ]
53
+ # test list[model]
53
54
  client.model_value.put(
54
55
  [
55
56
  models.InnerModel(property="hello"),
56
57
  models.InnerModel(property="world"),
57
58
  ]
58
59
  )
60
+ # test list[JSON]
61
+ client.model_value.put(
62
+ [
63
+ {"property": "hello"},
64
+ {"property": "world"},
65
+ ]
66
+ )
59
67
 
60
68
 
61
69
  def test_nullable_boolean_value(client: ArrayClient):
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/http-client-python",
3
- "version": "0.16.1-dev.0",
3
+ "version": "0.18.0",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec emitter for Python SDKs",
6
6
  "homepage": "https://typespec.io",
@@ -54,20 +54,20 @@
54
54
  "emitter"
55
55
  ],
56
56
  "peerDependencies": {
57
- "@azure-tools/typespec-autorest": ">=0.59.1 <1.0.0",
58
- "@azure-tools/typespec-azure-core": ">=0.59.0 <1.0.0",
59
- "@azure-tools/typespec-azure-resource-manager": ">=0.59.2 <1.0.0",
60
- "@azure-tools/typespec-azure-rulesets": ">=0.59.0 <1.0.0",
61
- "@azure-tools/typespec-client-generator-core": ">=0.59.1 <1.0.0",
62
- "@typespec/compiler": "^1.3.0",
63
- "@typespec/http": "^1.3.0",
64
- "@typespec/openapi": "^1.3.0",
65
- "@typespec/rest": ">=0.73.0 <1.0.0",
66
- "@typespec/versioning": ">=0.73.0 <1.0.0",
67
- "@typespec/events": ">=0.73.0 <1.0.0",
68
- "@typespec/sse": ">=0.73.0 <1.0.0",
69
- "@typespec/streams": ">=0.73.0 <1.0.0",
70
- "@typespec/xml": ">=0.73.0 <1.0.0"
57
+ "@azure-tools/typespec-autorest": ">=0.60.2 <1.0.0",
58
+ "@azure-tools/typespec-azure-core": ">=0.60.2 <1.0.0",
59
+ "@azure-tools/typespec-azure-resource-manager": ">=0.60.2 <1.0.0",
60
+ "@azure-tools/typespec-azure-rulesets": ">=0.60.2 <1.0.0",
61
+ "@azure-tools/typespec-client-generator-core": ">=0.60.2 <1.0.0",
62
+ "@typespec/compiler": "^1.4.0",
63
+ "@typespec/http": "^1.4.0",
64
+ "@typespec/openapi": "^1.4.0",
65
+ "@typespec/rest": ">=0.74.0 <1.0.0",
66
+ "@typespec/versioning": ">=0.74.0 <1.0.0",
67
+ "@typespec/events": ">=0.74.0 <1.0.0",
68
+ "@typespec/sse": ">=0.74.0 <1.0.0",
69
+ "@typespec/streams": ">=0.74.0 <1.0.0",
70
+ "@typespec/xml": ">=0.74.0 <1.0.0"
71
71
  },
72
72
  "dependencies": {
73
73
  "js-yaml": "~4.1.0",
@@ -77,24 +77,24 @@
77
77
  "tsx": "~4.19.1"
78
78
  },
79
79
  "devDependencies": {
80
- "@azure-tools/typespec-autorest": "~0.59.1",
81
- "@azure-tools/typespec-azure-core": "~0.59.0",
82
- "@azure-tools/typespec-azure-resource-manager": "~0.59.2",
83
- "@azure-tools/typespec-azure-rulesets": "~0.59.0",
84
- "@azure-tools/typespec-client-generator-core": "~0.59.1",
85
- "@azure-tools/azure-http-specs": "0.1.0-alpha.27",
86
- "@typespec/compiler": "^1.3.0",
87
- "@typespec/http": "^1.3.0",
88
- "@typespec/openapi": "^1.3.0",
89
- "@typespec/rest": "~0.73.0",
90
- "@typespec/versioning": "~0.73.0",
91
- "@typespec/events": "~0.73.0",
92
- "@typespec/spector": "0.1.0-alpha.17",
93
- "@typespec/spec-api": "0.1.0-alpha.8",
94
- "@typespec/sse": "~0.73.0",
95
- "@typespec/streams": "~0.73.0",
96
- "@typespec/xml": "~0.73.0",
97
- "@typespec/http-specs": "0.1.0-alpha.25",
80
+ "@azure-tools/typespec-autorest": "~0.60.0",
81
+ "@azure-tools/typespec-azure-core": "~0.60.0",
82
+ "@azure-tools/typespec-azure-resource-manager": "~0.60.0",
83
+ "@azure-tools/typespec-azure-rulesets": "~0.60.0",
84
+ "@azure-tools/typespec-client-generator-core": "~0.60.2",
85
+ "@azure-tools/azure-http-specs": "0.1.0-alpha.28",
86
+ "@typespec/compiler": "^1.4.0",
87
+ "@typespec/http": "^1.4.0",
88
+ "@typespec/openapi": "^1.4.0",
89
+ "@typespec/rest": "~0.74.0",
90
+ "@typespec/versioning": "~0.74.0",
91
+ "@typespec/events": "~0.74.0",
92
+ "@typespec/spector": "0.1.0-alpha.18",
93
+ "@typespec/spec-api": "0.1.0-alpha.9",
94
+ "@typespec/sse": "~0.74.0",
95
+ "@typespec/streams": "~0.74.0",
96
+ "@typespec/xml": "~0.74.0",
97
+ "@typespec/http-specs": "0.1.0-alpha.26",
98
98
  "@types/js-yaml": "~4.0.5",
99
99
  "@types/node": "~24.1.0",
100
100
  "@types/semver": "7.5.8",