@typespec/http-client-python 0.15.2 → 0.16.1-dev.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 (156) hide show
  1. package/dist/emitter/code-model.d.ts.map +1 -1
  2. package/dist/emitter/code-model.js +8 -1
  3. package/dist/emitter/code-model.js.map +1 -1
  4. package/dist/emitter/emitter.d.ts.map +1 -1
  5. package/dist/emitter/emitter.js +5 -4
  6. package/dist/emitter/emitter.js.map +1 -1
  7. package/dist/emitter/http.d.ts +5 -0
  8. package/dist/emitter/http.d.ts.map +1 -1
  9. package/dist/emitter/http.js +20 -1
  10. package/dist/emitter/http.js.map +1 -1
  11. package/emitter/src/code-model.ts +12 -0
  12. package/emitter/src/emitter.ts +5 -4
  13. package/emitter/src/http.ts +23 -1
  14. package/emitter/temp/tsconfig.tsbuildinfo +1 -1
  15. package/eng/scripts/ci/regenerate.ts +5 -6
  16. package/eng/scripts/ci/util.py +1 -1
  17. package/eng/scripts/setup/__pycache__/package_manager.cpython-39.pyc +0 -0
  18. package/eng/scripts/setup/__pycache__/venvtools.cpython-39.pyc +0 -0
  19. package/eng/scripts/setup/install.py +21 -11
  20. package/eng/scripts/setup/install.ts +29 -4
  21. package/eng/scripts/setup/run-python3.ts +1 -1
  22. package/eng/scripts/setup/system-requirements.ts +13 -5
  23. package/generator/build/lib/pygen/__init__.py +7 -21
  24. package/generator/build/lib/pygen/black.py +2 -2
  25. package/generator/build/lib/pygen/codegen/__init__.py +4 -4
  26. package/generator/build/lib/pygen/codegen/models/__init__.py +2 -2
  27. package/generator/build/lib/pygen/codegen/models/base.py +9 -12
  28. package/generator/build/lib/pygen/codegen/models/base_builder.py +4 -6
  29. package/generator/build/lib/pygen/codegen/models/client.py +61 -102
  30. package/generator/build/lib/pygen/codegen/models/code_model.py +33 -29
  31. package/generator/build/lib/pygen/codegen/models/combined_type.py +7 -7
  32. package/generator/build/lib/pygen/codegen/models/constant_type.py +4 -11
  33. package/generator/build/lib/pygen/codegen/models/credential_types.py +9 -11
  34. package/generator/build/lib/pygen/codegen/models/dictionary_type.py +7 -8
  35. package/generator/build/lib/pygen/codegen/models/enum_type.py +7 -7
  36. package/generator/build/lib/pygen/codegen/models/imports.py +24 -29
  37. package/generator/build/lib/pygen/codegen/models/list_type.py +11 -14
  38. package/generator/build/lib/pygen/codegen/models/lro_operation.py +6 -6
  39. package/generator/build/lib/pygen/codegen/models/lro_paging_operation.py +2 -2
  40. package/generator/build/lib/pygen/codegen/models/model_type.py +11 -11
  41. package/generator/build/lib/pygen/codegen/models/operation.py +22 -56
  42. package/generator/build/lib/pygen/codegen/models/operation_group.py +11 -22
  43. package/generator/build/lib/pygen/codegen/models/paging_operation.py +15 -19
  44. package/generator/build/lib/pygen/codegen/models/parameter.py +12 -21
  45. package/generator/build/lib/pygen/codegen/models/parameter_list.py +37 -39
  46. package/generator/build/lib/pygen/codegen/models/primitive_types.py +24 -18
  47. package/generator/build/lib/pygen/codegen/models/property.py +10 -10
  48. package/generator/build/lib/pygen/codegen/models/request_builder.py +7 -8
  49. package/generator/build/lib/pygen/codegen/models/request_builder_parameter.py +3 -3
  50. package/generator/build/lib/pygen/codegen/models/response.py +15 -40
  51. package/generator/build/lib/pygen/codegen/models/utils.py +2 -2
  52. package/generator/build/lib/pygen/codegen/serializers/__init__.py +15 -40
  53. package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +101 -94
  54. package/generator/build/lib/pygen/codegen/serializers/client_serializer.py +22 -25
  55. package/generator/build/lib/pygen/codegen/serializers/enum_serializer.py +2 -2
  56. package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +46 -60
  57. package/generator/build/lib/pygen/codegen/serializers/import_serializer.py +6 -7
  58. package/generator/build/lib/pygen/codegen/serializers/model_init_serializer.py +1 -2
  59. package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +36 -29
  60. package/generator/build/lib/pygen/codegen/serializers/operation_groups_serializer.py +8 -3
  61. package/generator/build/lib/pygen/codegen/serializers/operations_init_serializer.py +5 -6
  62. package/generator/build/lib/pygen/codegen/serializers/parameter_serializer.py +28 -18
  63. package/generator/build/lib/pygen/codegen/serializers/patch_serializer.py +1 -2
  64. package/generator/build/lib/pygen/codegen/serializers/request_builders_serializer.py +1 -2
  65. package/generator/build/lib/pygen/codegen/serializers/sample_serializer.py +9 -14
  66. package/generator/build/lib/pygen/codegen/serializers/test_serializer.py +7 -7
  67. package/generator/build/lib/pygen/codegen/serializers/utils.py +2 -2
  68. package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +30 -24
  69. package/generator/build/lib/pygen/codegen/templates/model_dpg.py.jinja2 +1 -1
  70. package/generator/build/lib/pygen/codegen/templates/operation_group.py.jinja2 +1 -11
  71. package/generator/build/lib/pygen/codegen/templates/operations_folder_init.py.jinja2 +1 -1
  72. package/generator/build/lib/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
  73. package/generator/build/lib/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +8 -1
  74. package/generator/build/lib/pygen/codegen/templates/patch.py.jinja2 +1 -1
  75. package/generator/build/lib/pygen/codegen/templates/serialization.py.jinja2 +11 -13
  76. package/generator/build/lib/pygen/codegen/templates/utils.py.jinja2 +6 -6
  77. package/generator/build/lib/pygen/preprocess/__init__.py +47 -30
  78. package/generator/build/lib/pygen/preprocess/helpers.py +2 -2
  79. package/generator/build/lib/pygen/utils.py +6 -6
  80. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  81. package/generator/pygen/__init__.py +7 -21
  82. package/generator/pygen/black.py +2 -2
  83. package/generator/pygen/codegen/__init__.py +4 -4
  84. package/generator/pygen/codegen/models/__init__.py +2 -2
  85. package/generator/pygen/codegen/models/base.py +9 -12
  86. package/generator/pygen/codegen/models/base_builder.py +4 -6
  87. package/generator/pygen/codegen/models/client.py +61 -102
  88. package/generator/pygen/codegen/models/code_model.py +33 -29
  89. package/generator/pygen/codegen/models/combined_type.py +7 -7
  90. package/generator/pygen/codegen/models/constant_type.py +4 -11
  91. package/generator/pygen/codegen/models/credential_types.py +9 -11
  92. package/generator/pygen/codegen/models/dictionary_type.py +7 -8
  93. package/generator/pygen/codegen/models/enum_type.py +7 -7
  94. package/generator/pygen/codegen/models/imports.py +24 -29
  95. package/generator/pygen/codegen/models/list_type.py +11 -14
  96. package/generator/pygen/codegen/models/lro_operation.py +6 -6
  97. package/generator/pygen/codegen/models/lro_paging_operation.py +2 -2
  98. package/generator/pygen/codegen/models/model_type.py +11 -11
  99. package/generator/pygen/codegen/models/operation.py +22 -56
  100. package/generator/pygen/codegen/models/operation_group.py +11 -22
  101. package/generator/pygen/codegen/models/paging_operation.py +15 -19
  102. package/generator/pygen/codegen/models/parameter.py +12 -21
  103. package/generator/pygen/codegen/models/parameter_list.py +37 -39
  104. package/generator/pygen/codegen/models/primitive_types.py +24 -18
  105. package/generator/pygen/codegen/models/property.py +10 -10
  106. package/generator/pygen/codegen/models/request_builder.py +7 -8
  107. package/generator/pygen/codegen/models/request_builder_parameter.py +3 -3
  108. package/generator/pygen/codegen/models/response.py +15 -40
  109. package/generator/pygen/codegen/models/utils.py +2 -2
  110. package/generator/pygen/codegen/serializers/__init__.py +15 -40
  111. package/generator/pygen/codegen/serializers/builder_serializer.py +101 -94
  112. package/generator/pygen/codegen/serializers/client_serializer.py +22 -25
  113. package/generator/pygen/codegen/serializers/enum_serializer.py +2 -2
  114. package/generator/pygen/codegen/serializers/general_serializer.py +46 -60
  115. package/generator/pygen/codegen/serializers/import_serializer.py +6 -7
  116. package/generator/pygen/codegen/serializers/model_init_serializer.py +1 -2
  117. package/generator/pygen/codegen/serializers/model_serializer.py +36 -29
  118. package/generator/pygen/codegen/serializers/operation_groups_serializer.py +8 -3
  119. package/generator/pygen/codegen/serializers/operations_init_serializer.py +5 -6
  120. package/generator/pygen/codegen/serializers/parameter_serializer.py +28 -18
  121. package/generator/pygen/codegen/serializers/patch_serializer.py +1 -2
  122. package/generator/pygen/codegen/serializers/request_builders_serializer.py +1 -2
  123. package/generator/pygen/codegen/serializers/sample_serializer.py +9 -14
  124. package/generator/pygen/codegen/serializers/test_serializer.py +7 -7
  125. package/generator/pygen/codegen/serializers/utils.py +2 -2
  126. package/generator/pygen/codegen/templates/model_base.py.jinja2 +30 -24
  127. package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +1 -1
  128. package/generator/pygen/codegen/templates/operation_group.py.jinja2 +1 -11
  129. package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +1 -1
  130. package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
  131. package/generator/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +8 -1
  132. package/generator/pygen/codegen/templates/patch.py.jinja2 +1 -1
  133. package/generator/pygen/codegen/templates/serialization.py.jinja2 +11 -13
  134. package/generator/pygen/codegen/templates/utils.py.jinja2 +6 -6
  135. package/generator/pygen/preprocess/__init__.py +47 -30
  136. package/generator/pygen/preprocess/helpers.py +2 -2
  137. package/generator/pygen/utils.py +6 -6
  138. package/generator/pygen.egg-info/SOURCES.txt +0 -2
  139. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_operationtemplates_async.py +79 -0
  140. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_hierrarchy_building_async.py +53 -0
  141. package/generator/test/azure/mock_api_tests/asynctests/test_client_naming_async.py +4 -4
  142. package/generator/test/azure/mock_api_tests/asynctests/test_client_naming_enum_conflict_async.py +37 -0
  143. package/generator/test/azure/mock_api_tests/conftest.py +2 -2
  144. package/generator/test/azure/mock_api_tests/test_azure_arm_operationtemplates.py +72 -0
  145. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_hierrarchy_building.py +45 -0
  146. package/generator/test/azure/mock_api_tests/test_client_naming.py +3 -3
  147. package/generator/test/azure/mock_api_tests/test_client_naming_enum_conflict.py +35 -0
  148. package/generator/test/azure/requirements.txt +2 -0
  149. package/generator/test/unbranded/mock_api_tests/conftest.py +1 -2
  150. package/generator/test/unittests/test_model_base_serialization.py +135 -92
  151. package/generator/test/unittests/test_model_base_xml_serialization.py +19 -23
  152. package/package.json +8 -8
  153. package/generator/build/lib/pygen/codegen/serializers/metadata_serializer.py +0 -216
  154. package/generator/build/lib/pygen/codegen/templates/metadata.json.jinja2 +0 -167
  155. package/generator/pygen/codegen/serializers/metadata_serializer.py +0 -216
  156. package/generator/pygen/codegen/templates/metadata.json.jinja2 +0 -167
@@ -82,3 +82,75 @@ def test_lro_begin_delete(client):
82
82
  resource_group_name=RESOURCE_GROUP_NAME,
83
83
  order_name="order1",
84
84
  ).result()
85
+
86
+
87
+ def test_optional_body_get(client):
88
+ result = client.optional_body.get(
89
+ resource_group_name=RESOURCE_GROUP_NAME,
90
+ widget_name="widget1",
91
+ )
92
+ assert result.name == "widget1"
93
+ assert (
94
+ result.id
95
+ == "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Azure.ResourceManager.OperationTemplates/widgets/widget1"
96
+ )
97
+ assert result.type == "Azure.ResourceManager.OperationTemplates/widgets"
98
+ assert result.location == "eastus"
99
+ assert result.properties.name == "widget1"
100
+ assert result.properties.description == "A test widget"
101
+ assert result.properties.provisioning_state == "Succeeded"
102
+
103
+
104
+ def test_optional_body_patch_without_body(client):
105
+ result = client.optional_body.patch(
106
+ resource_group_name=RESOURCE_GROUP_NAME,
107
+ widget_name="widget1",
108
+ )
109
+ assert result.name == "widget1"
110
+ assert result.properties.name == "widget1"
111
+ assert result.properties.description == "A test widget"
112
+
113
+
114
+ def test_optional_body_patch_with_body(client):
115
+ result = client.optional_body.patch(
116
+ resource_group_name=RESOURCE_GROUP_NAME,
117
+ widget_name="widget1",
118
+ properties=models.Widget(
119
+ location="eastus",
120
+ properties=models.WidgetProperties(name="updated-widget", description="Updated description"),
121
+ ),
122
+ )
123
+ assert result.name == "widget1"
124
+ assert result.properties.name == "updated-widget"
125
+ assert result.properties.description == "Updated description"
126
+
127
+
128
+ def test_optional_body_post_without_body(client):
129
+ result = client.optional_body.post(
130
+ resource_group_name=RESOURCE_GROUP_NAME,
131
+ widget_name="widget1",
132
+ )
133
+ assert result.result == "Action completed successfully"
134
+
135
+
136
+ def test_optional_body_post_with_body(client):
137
+ result = client.optional_body.post(
138
+ resource_group_name=RESOURCE_GROUP_NAME,
139
+ widget_name="widget1",
140
+ body=models.ActionRequest(action_type="perform", parameters="test-parameters"),
141
+ )
142
+ assert result.result == "Action completed successfully with parameters"
143
+
144
+
145
+ def test_optional_body_provider_post_without_body(client):
146
+ result = client.optional_body.provider_post()
147
+ assert result.total_allowed == 50
148
+ assert result.status == "Changed to default allowance"
149
+
150
+
151
+ def test_optional_body_provider_post_with_body(client):
152
+ result = client.optional_body.provider_post(
153
+ body=models.ChangeAllowanceRequest(total_allowed=100, reason="Increased demand"),
154
+ )
155
+ assert result.total_allowed == 100
156
+ assert result.status == "Changed to requested allowance"
@@ -0,0 +1,45 @@
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 specs.azure.clientgenerator.core.hierarchybuilding import HierarchyBuildingClient
8
+ from specs.azure.clientgenerator.core.hierarchybuilding.models import (
9
+ Pet,
10
+ Dog,
11
+ )
12
+
13
+
14
+ @pytest.fixture
15
+ def client():
16
+ with HierarchyBuildingClient() as client:
17
+ yield client
18
+
19
+
20
+ # ========== test for spector ==========
21
+
22
+
23
+ def test_update_pet_as_pet(client: HierarchyBuildingClient):
24
+ resp = Pet(name="Buddy", trained=True)
25
+ assert client.pet_operations.update_pet_as_pet(Pet(name="Buddy", trained=True)) == resp
26
+
27
+
28
+ def test_update_dog_as_pet(client: HierarchyBuildingClient):
29
+ resp = Dog(name="Rex", trained=True, breed="German Shepherd")
30
+ assert client.pet_operations.update_dog_as_pet(Dog(name="Rex", trained=True, breed="German Shepherd")) == resp
31
+
32
+
33
+ def test_update_pet_as_animal(client: HierarchyBuildingClient):
34
+ resp = Pet(name="Buddy", trained=True)
35
+ assert client.animal_operations.update_pet_as_animal(Pet(name="Buddy", trained=True)) == resp
36
+
37
+
38
+ def test_update_dog_as_animal(client: HierarchyBuildingClient):
39
+ resp = Dog(name="Rex", trained=True, breed="German Shepherd")
40
+ assert client.animal_operations.update_dog_as_animal(Dog(name="Rex", trained=True, breed="German Shepherd")) == resp
41
+
42
+
43
+ def test_update_dog_as_dog(client: HierarchyBuildingClient):
44
+ resp = Dog(name="Rex", trained=True, breed="German Shepherd")
45
+ assert client.dog_operations.update_dog_as_dog(Dog(name="Rex", trained=True, breed="German Shepherd")) == resp
@@ -4,7 +4,7 @@
4
4
  # license information.
5
5
  # --------------------------------------------------------------------------
6
6
  import pytest
7
- from client.naming import NamingClient, models
7
+ from client.naming.main import NamingClient, models
8
8
 
9
9
 
10
10
  @pytest.fixture
@@ -42,11 +42,11 @@ def test_header_response(client: NamingClient):
42
42
 
43
43
 
44
44
  def test_model_client(client: NamingClient):
45
- client.client_model.client(models.ClientModel(default_name=True))
45
+ client.model_client.client(models.ClientModel(default_name=True))
46
46
 
47
47
 
48
48
  def test_model_language(client: NamingClient):
49
- client.client_model.language(models.PythonModel(default_name=True))
49
+ client.model_client.language(models.PythonModel(default_name=True))
50
50
 
51
51
 
52
52
  def test_union_enum_member_name(client: NamingClient):
@@ -0,0 +1,35 @@
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 client.naming.enumconflict import EnumConflictClient
8
+ from client.naming.enumconflict.firstnamespace import models as first_models
9
+ from client.naming.enumconflict.secondnamespace import models as second_models
10
+
11
+
12
+ @pytest.fixture
13
+ def client():
14
+ with EnumConflictClient() as client:
15
+ yield client
16
+
17
+
18
+ def test_first_operations_first(client: EnumConflictClient):
19
+ """Test enum with same name in different namespace - first namespace."""
20
+ body = first_models.FirstModel(status=first_models.Status.ACTIVE, name="test")
21
+
22
+ response = client.first_operations.first(body=body)
23
+
24
+ assert response.status == "active"
25
+ assert response.name == "test"
26
+
27
+
28
+ def test_second_operations_second(client: EnumConflictClient):
29
+ """Test enum with same name in different namespace - second namespace."""
30
+ body = second_models.SecondModel(status=second_models.SecondStatus.RUNNING, description="test description")
31
+
32
+ response = client.second_operations.second(body=body)
33
+
34
+ assert response.status == "running"
35
+ assert response.description == "test description"
@@ -10,6 +10,7 @@ azure-mgmt-core==1.6.0
10
10
  -e ./generated/azure-client-generator-core-client-initialization
11
11
  -e ./generated/azure-client-generator-core-deserialize-empty-string-as-null
12
12
  -e ./generated/azure-client-generator-core-flatten-property
13
+ -e ./generated/azure-client-generator-core-hierarchy-building
13
14
  -e ./generated/azure-client-generator-core-usage
14
15
  -e ./generated/azure-client-generator-core-override
15
16
  -e ./generated/azure-client-generator-core-client-location
@@ -31,6 +32,7 @@ azure-mgmt-core==1.6.0
31
32
  -e ./generated/client-namespace
32
33
  -e ./generated/azure-payload-pageable
33
34
  -e ./generated/client-naming
35
+ -e ./generated/client-naming-enum-conflict
34
36
  -e ./generated/client-overload
35
37
  -e ./generated/client-structure-default
36
38
  -e ./generated/client-structure-multiclient
@@ -9,7 +9,6 @@ import signal
9
9
  import pytest
10
10
  import re
11
11
  from pathlib import Path
12
- from typing import List
13
12
 
14
13
  FILE_FOLDER = Path(__file__).parent
15
14
 
@@ -76,7 +75,7 @@ SPECIAL_WORDS = [
76
75
 
77
76
 
78
77
  @pytest.fixture
79
- def special_words() -> List[str]:
78
+ def special_words() -> list[str]:
80
79
  return SPECIAL_WORDS
81
80
 
82
81