@typespec/http-client-python 0.13.0 → 0.14.1-dev.1
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.
- package/dist/emitter/http.d.ts.map +1 -1
- package/dist/emitter/http.js +13 -3
- package/dist/emitter/http.js.map +1 -1
- package/emitter/src/http.ts +20 -2
- package/emitter/temp/tsconfig.tsbuildinfo +1 -1
- package/emitter/vitest.config.ts +1 -1
- package/eng/scripts/ci/regenerate.ts +7 -5
- package/eng/scripts/setup/__pycache__/package_manager.cpython-39.pyc +0 -0
- package/eng/scripts/setup/__pycache__/venvtools.cpython-39.pyc +0 -0
- package/generator/build/lib/pygen/codegen/models/client.py +1 -3
- package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +1 -1
- package/generator/build/lib/pygen/codegen/serializers/operations_init_serializer.py +7 -2
- package/generator/build/lib/pygen/codegen/serializers/sample_serializer.py +3 -2
- package/generator/build/lib/pygen/codegen/templates/sample.py.jinja2 +1 -1
- package/generator/build/lib/pygen/preprocess/python_mappings.py +4 -2
- package/generator/component-detection-pip-report.json +2 -2
- package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
- package/generator/pygen/codegen/models/client.py +1 -3
- package/generator/pygen/codegen/serializers/general_serializer.py +1 -1
- package/generator/pygen/codegen/serializers/operations_init_serializer.py +7 -2
- package/generator/pygen/codegen/serializers/sample_serializer.py +3 -2
- package/generator/pygen/codegen/templates/sample.py.jinja2 +1 -1
- package/generator/pygen/preprocess/python_mappings.py +4 -2
- package/generator/pygen.egg-info/PKG-INFO +1 -1
- package/generator/pygen.egg-info/requires.txt +1 -1
- package/generator/setup.py +1 -1
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_operationtemplates_async.py +5 -1
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_location_async.py +48 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_override_async.py +43 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py +5 -5
- package/generator/test/azure/mock_api_tests/asynctests/test_client_namespace_async.py +23 -20
- package/generator/test/azure/mock_api_tests/test_azure_arm_operationtemplates.py +5 -2
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_location.py +41 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_override.py +41 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_usage.py +2 -2
- package/generator/test/azure/mock_api_tests/test_client_namespace.py +21 -18
- package/generator/test/azure/requirements.txt +4 -1
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_xml_async.py +16 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_response_status_code_range_async.py +38 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_removed_async.py +7 -0
- package/generator/test/generic_mock_api_tests/test_payload_xml.py +14 -0
- package/generator/test/generic_mock_api_tests/test_response_status_code_range.py +36 -0
- package/generator/test/generic_mock_api_tests/test_versioning_removed.py +6 -0
- package/generator/test/unbranded/requirements.txt +1 -0
- package/package.json +33 -33
|
@@ -8,6 +8,8 @@ azure-mgmt-core==1.5.0
|
|
|
8
8
|
-e ./generated/azure-client-generator-core-deserialize-empty-string-as-null
|
|
9
9
|
-e ./generated/azure-client-generator-core-flatten-property
|
|
10
10
|
-e ./generated/azure-client-generator-core-usage
|
|
11
|
+
-e ./generated/azure-client-generator-core-override
|
|
12
|
+
-e ./generated/azure-client-generator-core-client-location
|
|
11
13
|
-e ./generated/azure-core-basic
|
|
12
14
|
-e ./generated/azure-core-scalar
|
|
13
15
|
-e ./generated/azure-core-lro-rpc
|
|
@@ -23,7 +25,7 @@ azure-mgmt-core==1.5.0
|
|
|
23
25
|
-e ./generated/azure-resource-manager-non-resource
|
|
24
26
|
-e ./generated/azure-resource-manager-operation-templates
|
|
25
27
|
-e ./generated/azure-resource-manager-resources
|
|
26
|
-
|
|
28
|
+
-e ./generated/client-namespace
|
|
27
29
|
-e ./generated/azure-payload-pageable
|
|
28
30
|
-e ./generated/client-naming
|
|
29
31
|
-e ./generated/client-structure-default
|
|
@@ -84,6 +86,7 @@ azure-mgmt-core==1.5.0
|
|
|
84
86
|
-e ./generated/payload-media-type
|
|
85
87
|
-e ./generated/payload-xml
|
|
86
88
|
-e ./generated/routes
|
|
89
|
+
-e ./generated/response-status-code-range
|
|
87
90
|
-e ./generated/versioning-added
|
|
88
91
|
-e ./generated/versioning-madeoptional
|
|
89
92
|
-e ./generated/versioning-removed
|
|
@@ -11,6 +11,8 @@ from payload.xml.models import (
|
|
|
11
11
|
ModelWithArrayOfModel,
|
|
12
12
|
ModelWithAttributes,
|
|
13
13
|
ModelWithUnwrappedArray,
|
|
14
|
+
ModelWithRenamedArrays,
|
|
15
|
+
ModelWithOptionalField,
|
|
14
16
|
ModelWithRenamedFields,
|
|
15
17
|
ModelWithEmptyArray,
|
|
16
18
|
ModelWithText,
|
|
@@ -65,6 +67,20 @@ async def test_model_with_unwrapped_array(client: XmlClient):
|
|
|
65
67
|
await client.model_with_unwrapped_array_value.put(model)
|
|
66
68
|
|
|
67
69
|
|
|
70
|
+
@pytest.mark.asyncio
|
|
71
|
+
async def test_model_with_renamed_arrays(client: XmlClient):
|
|
72
|
+
model = ModelWithRenamedArrays(colors=["red", "green", "blue"], counts=[1, 2])
|
|
73
|
+
assert await client.model_with_renamed_arrays_value.get() == model
|
|
74
|
+
await client.model_with_renamed_arrays_value.put(model)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@pytest.mark.asyncio
|
|
78
|
+
async def test_model_with_optional_field(client: XmlClient):
|
|
79
|
+
model = ModelWithOptionalField(item="widget")
|
|
80
|
+
assert await client.model_with_optional_field_value.get() == model
|
|
81
|
+
await client.model_with_optional_field_value.put(model)
|
|
82
|
+
|
|
83
|
+
|
|
68
84
|
@pytest.mark.asyncio
|
|
69
85
|
async def test_model_with_renamed_fields(client: XmlClient):
|
|
70
86
|
model = ModelWithRenamedFields(
|
package/generator/test/generic_mock_api_tests/asynctests/test_response_status_code_range_async.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
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 response.statuscoderange.aio import StatusCodeRangeClient
|
|
8
|
+
from response.statuscoderange.models import ErrorInRange, NotFoundError
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
async def client():
|
|
13
|
+
async with StatusCodeRangeClient(endpoint="http://localhost:3000") as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
|
+
async def test_error_response_status_code_in_range(client: StatusCodeRangeClient):
|
|
19
|
+
with pytest.raises(Exception) as exc_info:
|
|
20
|
+
await client.error_response_status_code_in_range()
|
|
21
|
+
|
|
22
|
+
error = exc_info.value.model
|
|
23
|
+
assert isinstance(error, ErrorInRange)
|
|
24
|
+
assert error.code == "request-header-too-large"
|
|
25
|
+
assert error.message == "Request header too large"
|
|
26
|
+
assert exc_info.value.response.status_code == 494
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@pytest.mark.asyncio
|
|
30
|
+
async def test_error_response_status_code_404(client: StatusCodeRangeClient):
|
|
31
|
+
with pytest.raises(Exception) as exc_info:
|
|
32
|
+
await client.error_response_status_code404()
|
|
33
|
+
|
|
34
|
+
error = exc_info.value.model
|
|
35
|
+
assert isinstance(error, NotFoundError)
|
|
36
|
+
assert error.code == "not-found"
|
|
37
|
+
assert error.resource_id == "resource1"
|
|
38
|
+
assert exc_info.value.response.status_code == 404
|
|
@@ -19,3 +19,10 @@ async def test_v2(client: RemovedClient):
|
|
|
19
19
|
assert await client.v2(ModelV2(prop="foo", enum_prop=EnumV2.ENUM_MEMBER_V2, union_prop="bar")) == ModelV2(
|
|
20
20
|
prop="foo", enum_prop=EnumV2.ENUM_MEMBER_V2, union_prop="bar"
|
|
21
21
|
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@pytest.mark.asyncio
|
|
25
|
+
async def test_model_v3(client: RemovedClient):
|
|
26
|
+
result = await client.model_v3({"id": "123", "enumProp": "enumMemberV1"})
|
|
27
|
+
assert result.id == "123"
|
|
28
|
+
assert result.enum_prop == "enumMemberV1"
|
|
@@ -11,6 +11,8 @@ from payload.xml.models import (
|
|
|
11
11
|
ModelWithArrayOfModel,
|
|
12
12
|
ModelWithAttributes,
|
|
13
13
|
ModelWithUnwrappedArray,
|
|
14
|
+
ModelWithRenamedArrays,
|
|
15
|
+
ModelWithOptionalField,
|
|
14
16
|
ModelWithRenamedFields,
|
|
15
17
|
ModelWithEmptyArray,
|
|
16
18
|
ModelWithText,
|
|
@@ -60,6 +62,18 @@ def test_model_with_unwrapped_array(client: XmlClient):
|
|
|
60
62
|
client.model_with_unwrapped_array_value.put(model)
|
|
61
63
|
|
|
62
64
|
|
|
65
|
+
def test_model_with_renamed_arrays(client: XmlClient):
|
|
66
|
+
model = ModelWithRenamedArrays(colors=["red", "green", "blue"], counts=[1, 2])
|
|
67
|
+
assert client.model_with_renamed_arrays_value.get() == model
|
|
68
|
+
client.model_with_renamed_arrays_value.put(model)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def test_model_with_optional_field(client: XmlClient):
|
|
72
|
+
model = ModelWithOptionalField(item="widget")
|
|
73
|
+
assert client.model_with_optional_field_value.get() == model
|
|
74
|
+
client.model_with_optional_field_value.put(model)
|
|
75
|
+
|
|
76
|
+
|
|
63
77
|
def test_model_with_renamed_fields(client: XmlClient):
|
|
64
78
|
model = ModelWithRenamedFields(
|
|
65
79
|
input_data=SimpleModel(name="foo", age=123),
|
|
@@ -0,0 +1,36 @@
|
|
|
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 response.statuscoderange import StatusCodeRangeClient
|
|
8
|
+
from response.statuscoderange.models import ErrorInRange, NotFoundError
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with StatusCodeRangeClient(endpoint="http://localhost:3000") as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_error_response_status_code_in_range(client: StatusCodeRangeClient):
|
|
18
|
+
with pytest.raises(Exception) as exc_info:
|
|
19
|
+
client.error_response_status_code_in_range()
|
|
20
|
+
|
|
21
|
+
error = exc_info.value.model
|
|
22
|
+
assert isinstance(error, ErrorInRange)
|
|
23
|
+
assert error.code == "request-header-too-large"
|
|
24
|
+
assert error.message == "Request header too large"
|
|
25
|
+
assert exc_info.value.response.status_code == 494
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def test_error_response_status_code_404(client: StatusCodeRangeClient):
|
|
29
|
+
with pytest.raises(Exception) as exc_info:
|
|
30
|
+
client.error_response_status_code404()
|
|
31
|
+
|
|
32
|
+
error = exc_info.value.model
|
|
33
|
+
assert isinstance(error, NotFoundError)
|
|
34
|
+
assert error.code == "not-found"
|
|
35
|
+
assert error.resource_id == "resource1"
|
|
36
|
+
assert exc_info.value.response.status_code == 404
|
|
@@ -18,3 +18,9 @@ def test_v2(client: RemovedClient):
|
|
|
18
18
|
assert client.v2(ModelV2(prop="foo", enum_prop=EnumV2.ENUM_MEMBER_V2, union_prop="bar")) == ModelV2(
|
|
19
19
|
prop="foo", enum_prop=EnumV2.ENUM_MEMBER_V2, union_prop="bar"
|
|
20
20
|
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_model_v3(client: RemovedClient):
|
|
24
|
+
result = client.model_v3({"id": "123", "enumProp": "enumMemberV1"})
|
|
25
|
+
assert result.id == "123"
|
|
26
|
+
assert result.enum_prop == "enumMemberV1"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typespec/http-client-python",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.1-dev.1",
|
|
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.
|
|
58
|
-
"@azure-tools/typespec-azure-core": ">=0.
|
|
59
|
-
"@azure-tools/typespec-azure-resource-manager": ">=0.
|
|
60
|
-
"@azure-tools/typespec-azure-rulesets": ">=0.
|
|
61
|
-
"@azure-tools/typespec-client-generator-core": ">=0.
|
|
62
|
-
"@typespec/compiler": "^1.
|
|
63
|
-
"@typespec/http": "^1.
|
|
64
|
-
"@typespec/openapi": "^1.
|
|
65
|
-
"@typespec/rest": ">=0.
|
|
66
|
-
"@typespec/versioning": ">=0.
|
|
67
|
-
"@typespec/events": ">=0.
|
|
68
|
-
"@typespec/sse": ">=0.
|
|
69
|
-
"@typespec/streams": ">=0.
|
|
70
|
-
"@typespec/xml": ">=0.
|
|
57
|
+
"@azure-tools/typespec-autorest": ">=0.58.0 <1.0.0",
|
|
58
|
+
"@azure-tools/typespec-azure-core": ">=0.58.0 <1.0.0",
|
|
59
|
+
"@azure-tools/typespec-azure-resource-manager": ">=0.58.0 <1.0.0",
|
|
60
|
+
"@azure-tools/typespec-azure-rulesets": ">=0.58.0 <1.0.0",
|
|
61
|
+
"@azure-tools/typespec-client-generator-core": ">=0.58.0 <1.0.0",
|
|
62
|
+
"@typespec/compiler": "^1.2.1",
|
|
63
|
+
"@typespec/http": "^1.2.1",
|
|
64
|
+
"@typespec/openapi": "^1.2.1",
|
|
65
|
+
"@typespec/rest": ">=0.72.1 <1.0.0",
|
|
66
|
+
"@typespec/versioning": ">=0.72.1 <1.0.0",
|
|
67
|
+
"@typespec/events": ">=0.72.1 <1.0.0",
|
|
68
|
+
"@typespec/sse": ">=0.72.1 <1.0.0",
|
|
69
|
+
"@typespec/streams": ">=0.72.1 <1.0.0",
|
|
70
|
+
"@typespec/xml": ">=0.72.1 <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.
|
|
81
|
-
"@azure-tools/typespec-azure-core": "~0.
|
|
82
|
-
"@azure-tools/typespec-azure-resource-manager": "~0.
|
|
83
|
-
"@azure-tools/typespec-azure-rulesets": "~0.
|
|
84
|
-
"@azure-tools/typespec-client-generator-core": "~0.
|
|
85
|
-
"@azure-tools/azure-http-specs": "0.1.0-alpha.
|
|
86
|
-
"@typespec/compiler": "^1.1
|
|
87
|
-
"@typespec/http": "^1.1
|
|
88
|
-
"@typespec/openapi": "^1.1
|
|
89
|
-
"@typespec/rest": "~0.
|
|
90
|
-
"@typespec/versioning": "~0.
|
|
91
|
-
"@typespec/events": "~0.
|
|
92
|
-
"@typespec/spector": "0.1.0-alpha.
|
|
93
|
-
"@typespec/spec-api": "0.1.0-alpha.
|
|
94
|
-
"@typespec/sse": "~0.
|
|
95
|
-
"@typespec/streams": "~0.
|
|
96
|
-
"@typespec/xml": "~0.
|
|
97
|
-
"@typespec/http-specs": "0.1.0-alpha.
|
|
80
|
+
"@azure-tools/typespec-autorest": "~0.58.0",
|
|
81
|
+
"@azure-tools/typespec-azure-core": "~0.58.0",
|
|
82
|
+
"@azure-tools/typespec-azure-resource-manager": "~0.58.0",
|
|
83
|
+
"@azure-tools/typespec-azure-rulesets": "~0.58.0",
|
|
84
|
+
"@azure-tools/typespec-client-generator-core": "~0.58.0",
|
|
85
|
+
"@azure-tools/azure-http-specs": "0.1.0-alpha.23",
|
|
86
|
+
"@typespec/compiler": "^1.2.1",
|
|
87
|
+
"@typespec/http": "^1.2.1",
|
|
88
|
+
"@typespec/openapi": "^1.2.1",
|
|
89
|
+
"@typespec/rest": "~0.72.1",
|
|
90
|
+
"@typespec/versioning": "~0.72.1",
|
|
91
|
+
"@typespec/events": "~0.72.1",
|
|
92
|
+
"@typespec/spector": "0.1.0-alpha.16",
|
|
93
|
+
"@typespec/spec-api": "0.1.0-alpha.7",
|
|
94
|
+
"@typespec/sse": "~0.72.1",
|
|
95
|
+
"@typespec/streams": "~0.72.1",
|
|
96
|
+
"@typespec/xml": "~0.72.1",
|
|
97
|
+
"@typespec/http-specs": "0.1.0-alpha.24",
|
|
98
98
|
"@types/js-yaml": "~4.0.5",
|
|
99
99
|
"@types/node": "~22.13.14",
|
|
100
100
|
"@types/semver": "7.5.8",
|