@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.
Files changed (45) hide show
  1. package/dist/emitter/http.d.ts.map +1 -1
  2. package/dist/emitter/http.js +13 -3
  3. package/dist/emitter/http.js.map +1 -1
  4. package/emitter/src/http.ts +20 -2
  5. package/emitter/temp/tsconfig.tsbuildinfo +1 -1
  6. package/emitter/vitest.config.ts +1 -1
  7. package/eng/scripts/ci/regenerate.ts +7 -5
  8. package/eng/scripts/setup/__pycache__/package_manager.cpython-39.pyc +0 -0
  9. package/eng/scripts/setup/__pycache__/venvtools.cpython-39.pyc +0 -0
  10. package/generator/build/lib/pygen/codegen/models/client.py +1 -3
  11. package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +1 -1
  12. package/generator/build/lib/pygen/codegen/serializers/operations_init_serializer.py +7 -2
  13. package/generator/build/lib/pygen/codegen/serializers/sample_serializer.py +3 -2
  14. package/generator/build/lib/pygen/codegen/templates/sample.py.jinja2 +1 -1
  15. package/generator/build/lib/pygen/preprocess/python_mappings.py +4 -2
  16. package/generator/component-detection-pip-report.json +2 -2
  17. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  18. package/generator/pygen/codegen/models/client.py +1 -3
  19. package/generator/pygen/codegen/serializers/general_serializer.py +1 -1
  20. package/generator/pygen/codegen/serializers/operations_init_serializer.py +7 -2
  21. package/generator/pygen/codegen/serializers/sample_serializer.py +3 -2
  22. package/generator/pygen/codegen/templates/sample.py.jinja2 +1 -1
  23. package/generator/pygen/preprocess/python_mappings.py +4 -2
  24. package/generator/pygen.egg-info/PKG-INFO +1 -1
  25. package/generator/pygen.egg-info/requires.txt +1 -1
  26. package/generator/setup.py +1 -1
  27. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_operationtemplates_async.py +5 -1
  28. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_location_async.py +48 -0
  29. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_override_async.py +43 -0
  30. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py +5 -5
  31. package/generator/test/azure/mock_api_tests/asynctests/test_client_namespace_async.py +23 -20
  32. package/generator/test/azure/mock_api_tests/test_azure_arm_operationtemplates.py +5 -2
  33. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_location.py +41 -0
  34. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_override.py +41 -0
  35. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_usage.py +2 -2
  36. package/generator/test/azure/mock_api_tests/test_client_namespace.py +21 -18
  37. package/generator/test/azure/requirements.txt +4 -1
  38. package/generator/test/generic_mock_api_tests/asynctests/test_payload_xml_async.py +16 -0
  39. package/generator/test/generic_mock_api_tests/asynctests/test_response_status_code_range_async.py +38 -0
  40. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_removed_async.py +7 -0
  41. package/generator/test/generic_mock_api_tests/test_payload_xml.py +14 -0
  42. package/generator/test/generic_mock_api_tests/test_response_status_code_range.py +36 -0
  43. package/generator/test/generic_mock_api_tests/test_versioning_removed.py +6 -0
  44. package/generator/test/unbranded/requirements.txt +1 -0
  45. 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
- # -e ./generated/client-namespace
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(
@@ -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"
@@ -52,6 +52,7 @@
52
52
  -e ./generated/payload-media-type
53
53
  -e ./generated/payload-xml
54
54
  -e ./generated/routes
55
+ -e ./generated/response-status-code-range
55
56
  -e ./generated/versioning-added
56
57
  -e ./generated/versioning-madeoptional
57
58
  -e ./generated/versioning-removed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/http-client-python",
3
- "version": "0.13.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.56.0 <1.0.0",
58
- "@azure-tools/typespec-azure-core": ">=0.56.0 <1.0.0",
59
- "@azure-tools/typespec-azure-resource-manager": ">=0.56.0 <1.0.0",
60
- "@azure-tools/typespec-azure-rulesets": ">=0.56.0 <1.0.0",
61
- "@azure-tools/typespec-client-generator-core": ">=0.56.1 <1.0.0",
62
- "@typespec/compiler": "^1.0.0",
63
- "@typespec/http": "^1.0.0",
64
- "@typespec/openapi": "^1.0.0",
65
- "@typespec/rest": ">=0.70.0 <1.0.0",
66
- "@typespec/versioning": ">=0.70.0 <1.0.0",
67
- "@typespec/events": ">=0.70.0 <1.0.0",
68
- "@typespec/sse": ">=0.70.0 <1.0.0",
69
- "@typespec/streams": ">=0.70.0 <1.0.0",
70
- "@typespec/xml": ">=0.70.0 <1.0.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.57.0",
81
- "@azure-tools/typespec-azure-core": "~0.57.0",
82
- "@azure-tools/typespec-azure-resource-manager": "~0.57.0",
83
- "@azure-tools/typespec-azure-rulesets": "~0.57.0",
84
- "@azure-tools/typespec-client-generator-core": "~0.57.2",
85
- "@azure-tools/azure-http-specs": "0.1.0-alpha.20",
86
- "@typespec/compiler": "^1.1.0",
87
- "@typespec/http": "^1.1.0",
88
- "@typespec/openapi": "^1.1.0",
89
- "@typespec/rest": "~0.71.0",
90
- "@typespec/versioning": "~0.71.0",
91
- "@typespec/events": "~0.71.0",
92
- "@typespec/spector": "0.1.0-alpha.15",
93
- "@typespec/spec-api": "0.1.0-alpha.6",
94
- "@typespec/sse": "~0.71.0",
95
- "@typespec/streams": "~0.71.0",
96
- "@typespec/xml": "~0.71.0",
97
- "@typespec/http-specs": "0.1.0-alpha.23",
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",