@autorest/python 6.38.2 → 6.39.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 (144) hide show
  1. package/README.md +2 -27
  2. package/autorest/codegen.py +0 -1
  3. package/autorest/jsonrpc/server.py +0 -3
  4. package/generator/build/lib/pygen/__init__.py +7 -21
  5. package/generator/build/lib/pygen/codegen/__init__.py +4 -4
  6. package/generator/build/lib/pygen/codegen/models/__init__.py +2 -2
  7. package/generator/build/lib/pygen/codegen/models/base.py +9 -12
  8. package/generator/build/lib/pygen/codegen/models/base_builder.py +4 -6
  9. package/generator/build/lib/pygen/codegen/models/client.py +61 -102
  10. package/generator/build/lib/pygen/codegen/models/code_model.py +29 -29
  11. package/generator/build/lib/pygen/codegen/models/combined_type.py +7 -7
  12. package/generator/build/lib/pygen/codegen/models/constant_type.py +4 -11
  13. package/generator/build/lib/pygen/codegen/models/credential_types.py +9 -11
  14. package/generator/build/lib/pygen/codegen/models/dictionary_type.py +7 -8
  15. package/generator/build/lib/pygen/codegen/models/enum_type.py +7 -7
  16. package/generator/build/lib/pygen/codegen/models/imports.py +24 -29
  17. package/generator/build/lib/pygen/codegen/models/list_type.py +15 -14
  18. package/generator/build/lib/pygen/codegen/models/lro_operation.py +6 -6
  19. package/generator/build/lib/pygen/codegen/models/lro_paging_operation.py +2 -2
  20. package/generator/build/lib/pygen/codegen/models/model_type.py +11 -11
  21. package/generator/build/lib/pygen/codegen/models/operation.py +26 -56
  22. package/generator/build/lib/pygen/codegen/models/operation_group.py +11 -22
  23. package/generator/build/lib/pygen/codegen/models/paging_operation.py +15 -19
  24. package/generator/build/lib/pygen/codegen/models/parameter.py +12 -21
  25. package/generator/build/lib/pygen/codegen/models/parameter_list.py +37 -39
  26. package/generator/build/lib/pygen/codegen/models/primitive_types.py +24 -18
  27. package/generator/build/lib/pygen/codegen/models/property.py +10 -10
  28. package/generator/build/lib/pygen/codegen/models/request_builder.py +7 -8
  29. package/generator/build/lib/pygen/codegen/models/request_builder_parameter.py +3 -3
  30. package/generator/build/lib/pygen/codegen/models/response.py +15 -40
  31. package/generator/build/lib/pygen/codegen/models/utils.py +2 -2
  32. package/generator/build/lib/pygen/codegen/serializers/__init__.py +15 -40
  33. package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +101 -94
  34. package/generator/build/lib/pygen/codegen/serializers/client_serializer.py +22 -25
  35. package/generator/build/lib/pygen/codegen/serializers/enum_serializer.py +2 -2
  36. package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +46 -60
  37. package/generator/build/lib/pygen/codegen/serializers/import_serializer.py +6 -7
  38. package/generator/build/lib/pygen/codegen/serializers/model_init_serializer.py +1 -2
  39. package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +15 -17
  40. package/generator/build/lib/pygen/codegen/serializers/operation_groups_serializer.py +3 -3
  41. package/generator/build/lib/pygen/codegen/serializers/operations_init_serializer.py +5 -6
  42. package/generator/build/lib/pygen/codegen/serializers/parameter_serializer.py +28 -18
  43. package/generator/build/lib/pygen/codegen/serializers/patch_serializer.py +1 -2
  44. package/generator/build/lib/pygen/codegen/serializers/request_builders_serializer.py +1 -2
  45. package/generator/build/lib/pygen/codegen/serializers/sample_serializer.py +9 -14
  46. package/generator/build/lib/pygen/codegen/serializers/test_serializer.py +7 -7
  47. package/generator/build/lib/pygen/codegen/serializers/utils.py +2 -2
  48. package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +30 -24
  49. package/generator/build/lib/pygen/codegen/templates/model_dpg.py.jinja2 +1 -1
  50. package/generator/build/lib/pygen/codegen/templates/operation_group.py.jinja2 +1 -11
  51. package/generator/build/lib/pygen/codegen/templates/operations_folder_init.py.jinja2 +1 -1
  52. package/generator/build/lib/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
  53. package/generator/build/lib/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +7 -0
  54. package/generator/build/lib/pygen/codegen/templates/patch.py.jinja2 +1 -1
  55. package/generator/build/lib/pygen/codegen/templates/serialization.py.jinja2 +11 -13
  56. package/generator/build/lib/pygen/codegen/templates/utils.py.jinja2 +6 -6
  57. package/generator/build/lib/pygen/preprocess/__init__.py +47 -30
  58. package/generator/build/lib/pygen/preprocess/helpers.py +2 -2
  59. package/generator/build/lib/pygen/utils.py +6 -6
  60. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  61. package/generator/pygen/__init__.py +7 -21
  62. package/generator/pygen/codegen/__init__.py +4 -4
  63. package/generator/pygen/codegen/models/__init__.py +2 -2
  64. package/generator/pygen/codegen/models/base.py +9 -12
  65. package/generator/pygen/codegen/models/base_builder.py +4 -6
  66. package/generator/pygen/codegen/models/client.py +61 -102
  67. package/generator/pygen/codegen/models/code_model.py +29 -29
  68. package/generator/pygen/codegen/models/combined_type.py +7 -7
  69. package/generator/pygen/codegen/models/constant_type.py +4 -11
  70. package/generator/pygen/codegen/models/credential_types.py +9 -11
  71. package/generator/pygen/codegen/models/dictionary_type.py +7 -8
  72. package/generator/pygen/codegen/models/enum_type.py +7 -7
  73. package/generator/pygen/codegen/models/imports.py +24 -29
  74. package/generator/pygen/codegen/models/list_type.py +15 -14
  75. package/generator/pygen/codegen/models/lro_operation.py +6 -6
  76. package/generator/pygen/codegen/models/lro_paging_operation.py +2 -2
  77. package/generator/pygen/codegen/models/model_type.py +11 -11
  78. package/generator/pygen/codegen/models/operation.py +26 -56
  79. package/generator/pygen/codegen/models/operation_group.py +11 -22
  80. package/generator/pygen/codegen/models/paging_operation.py +15 -19
  81. package/generator/pygen/codegen/models/parameter.py +12 -21
  82. package/generator/pygen/codegen/models/parameter_list.py +37 -39
  83. package/generator/pygen/codegen/models/primitive_types.py +24 -18
  84. package/generator/pygen/codegen/models/property.py +10 -10
  85. package/generator/pygen/codegen/models/request_builder.py +7 -8
  86. package/generator/pygen/codegen/models/request_builder_parameter.py +3 -3
  87. package/generator/pygen/codegen/models/response.py +15 -40
  88. package/generator/pygen/codegen/models/utils.py +2 -2
  89. package/generator/pygen/codegen/serializers/__init__.py +15 -40
  90. package/generator/pygen/codegen/serializers/builder_serializer.py +101 -94
  91. package/generator/pygen/codegen/serializers/client_serializer.py +22 -25
  92. package/generator/pygen/codegen/serializers/enum_serializer.py +2 -2
  93. package/generator/pygen/codegen/serializers/general_serializer.py +46 -60
  94. package/generator/pygen/codegen/serializers/import_serializer.py +6 -7
  95. package/generator/pygen/codegen/serializers/model_init_serializer.py +1 -2
  96. package/generator/pygen/codegen/serializers/model_serializer.py +15 -17
  97. package/generator/pygen/codegen/serializers/operation_groups_serializer.py +3 -3
  98. package/generator/pygen/codegen/serializers/operations_init_serializer.py +5 -6
  99. package/generator/pygen/codegen/serializers/parameter_serializer.py +28 -18
  100. package/generator/pygen/codegen/serializers/patch_serializer.py +1 -2
  101. package/generator/pygen/codegen/serializers/request_builders_serializer.py +1 -2
  102. package/generator/pygen/codegen/serializers/sample_serializer.py +9 -14
  103. package/generator/pygen/codegen/serializers/test_serializer.py +7 -7
  104. package/generator/pygen/codegen/serializers/utils.py +2 -2
  105. package/generator/pygen/codegen/templates/model_base.py.jinja2 +30 -24
  106. package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +1 -1
  107. package/generator/pygen/codegen/templates/operation_group.py.jinja2 +1 -11
  108. package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +1 -1
  109. package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
  110. package/generator/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +7 -0
  111. package/generator/pygen/codegen/templates/patch.py.jinja2 +1 -1
  112. package/generator/pygen/codegen/templates/serialization.py.jinja2 +11 -13
  113. package/generator/pygen/codegen/templates/utils.py.jinja2 +6 -6
  114. package/generator/pygen/preprocess/__init__.py +47 -30
  115. package/generator/pygen/preprocess/helpers.py +2 -2
  116. package/generator/pygen/utils.py +6 -6
  117. package/generator/pygen.egg-info/SOURCES.txt +0 -2
  118. package/package.json +2 -2
  119. package/scripts/__pycache__/venvtools.cpython-310.pyc +0 -0
  120. package/autorest/multiapi/__init__.py +0 -185
  121. package/autorest/multiapi/models/__init__.py +0 -16
  122. package/autorest/multiapi/models/client.py +0 -68
  123. package/autorest/multiapi/models/code_model.py +0 -142
  124. package/autorest/multiapi/models/config.py +0 -24
  125. package/autorest/multiapi/models/constant_global_parameter.py +0 -11
  126. package/autorest/multiapi/models/global_parameter.py +0 -34
  127. package/autorest/multiapi/models/global_parameters.py +0 -53
  128. package/autorest/multiapi/models/imports.py +0 -181
  129. package/autorest/multiapi/models/mixin_operation.py +0 -38
  130. package/autorest/multiapi/models/operation_group.py +0 -29
  131. package/autorest/multiapi/models/operation_mixin_group.py +0 -89
  132. package/autorest/multiapi/serializers/__init__.py +0 -145
  133. package/autorest/multiapi/serializers/import_serializer.py +0 -181
  134. package/autorest/multiapi/templates/multiapi_config.py.jinja2 +0 -89
  135. package/autorest/multiapi/templates/multiapi_init.py.jinja2 +0 -22
  136. package/autorest/multiapi/templates/multiapi_models.py.jinja2 +0 -9
  137. package/autorest/multiapi/templates/multiapi_operations_mixin.py.jinja2 +0 -39
  138. package/autorest/multiapi/templates/multiapi_service_client.py.jinja2 +0 -163
  139. package/autorest/multiapi/templates/multiapi_version.py.jinja2 +0 -8
  140. package/autorest/multiapi/utils.py +0 -51
  141. package/generator/build/lib/pygen/codegen/serializers/metadata_serializer.py +0 -216
  142. package/generator/build/lib/pygen/codegen/templates/metadata.json.jinja2 +0 -167
  143. package/generator/pygen/codegen/serializers/metadata_serializer.py +0 -216
  144. package/generator/pygen/codegen/templates/metadata.json.jinja2 +0 -167
@@ -7,8 +7,6 @@ import logging
7
7
  from typing import (
8
8
  Any,
9
9
  Callable,
10
- Dict,
11
- List,
12
10
  Optional,
13
11
  TYPE_CHECKING,
14
12
  Union,
@@ -48,7 +46,7 @@ class ParameterImplementation(Enum):
48
46
  _LOGGER = logging.getLogger(__name__)
49
47
 
50
48
 
51
- def method_signature_helper(positional: List[str], keyword_only: Optional[List[str]], kwarg_params: List[str]):
49
+ def method_signature_helper(positional: list[str], keyword_only: Optional[list[str]], kwarg_params: list[str]):
52
50
  keyword_only = keyword_only or []
53
51
  return positional + keyword_only + kwarg_params
54
52
 
@@ -64,9 +62,9 @@ class _ParameterListBase(
64
62
 
65
63
  def __init__(
66
64
  self,
67
- yaml_data: Dict[str, Any],
65
+ yaml_data: dict[str, Any],
68
66
  code_model: "CodeModel",
69
- parameters: List[ParameterType],
67
+ parameters: list[ParameterType],
70
68
  body_parameter: Optional[BodyParameterType] = None,
71
69
  ) -> None:
72
70
  self.yaml_data = yaml_data
@@ -97,18 +95,18 @@ class _ParameterListBase(
97
95
 
98
96
  @staticmethod
99
97
  @abstractmethod
100
- def parameter_creator() -> Callable[[Dict[str, Any], "CodeModel"], ParameterType]:
98
+ def parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], ParameterType]:
101
99
  """Callable for creating parameters"""
102
100
 
103
101
  @staticmethod
104
102
  @abstractmethod
105
- def body_parameter_creator() -> Callable[[Dict[str, Any], "CodeModel"], BodyParameterType]:
103
+ def body_parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], BodyParameterType]:
106
104
  """Callable for creating body parameters"""
107
105
 
108
106
  @property
109
- def grouped(self) -> List[Union[ParameterType, BodyParameterType]]:
107
+ def grouped(self) -> list[Union[ParameterType, BodyParameterType]]:
110
108
  """All parameters that are inside a parameter group"""
111
- params: List[Union[ParameterType, BodyParameterType]] = [p for p in self.parameters if p.grouped_by]
109
+ params: list[Union[ParameterType, BodyParameterType]] = [p for p in self.parameters if p.grouped_by]
112
110
  if self.has_body and self.body_parameter.grouped_by:
113
111
  params.append(self.body_parameter)
114
112
  return params
@@ -123,41 +121,41 @@ class _ParameterListBase(
123
121
  return bool(self._body_parameter)
124
122
 
125
123
  @property
126
- def path(self) -> List[ParameterType]:
124
+ def path(self) -> list[ParameterType]:
127
125
  """All path parameters"""
128
126
  return [p for p in self.parameters if p.location in (ParameterLocation.PATH, ParameterLocation.ENDPOINT_PATH)]
129
127
 
130
128
  @property
131
- def query(self) -> List[ParameterType]:
129
+ def query(self) -> list[ParameterType]:
132
130
  """All query parameters"""
133
131
  return [p for p in self.parameters if p.location == ParameterLocation.QUERY]
134
132
 
135
133
  @property
136
- def headers(self) -> List[ParameterType]:
134
+ def headers(self) -> list[ParameterType]:
137
135
  """All header parameters"""
138
136
  return [p for p in self.parameters if p.location == ParameterLocation.HEADER]
139
137
 
140
138
  @property
141
- def constant(self) -> List[Union[ParameterType, BodyParameterType]]:
139
+ def constant(self) -> list[Union[ParameterType, BodyParameterType]]:
142
140
  """All constant parameters"""
143
141
  return [p for p in self.parameters if p.constant]
144
142
 
145
143
  @property
146
- def positional(self) -> List[Union[ParameterType, BodyParameterType]]:
144
+ def positional(self) -> list[Union[ParameterType, BodyParameterType]]:
147
145
  """All positional parameters"""
148
146
  return _sort(
149
147
  [p for p in self.unsorted_method_params if p.method_location == ParameterMethodLocation.POSITIONAL]
150
148
  )
151
149
 
152
150
  @property
153
- def keyword_only(self) -> List[Union[ParameterType, BodyParameterType]]:
151
+ def keyword_only(self) -> list[Union[ParameterType, BodyParameterType]]:
154
152
  """All keyword only parameters"""
155
153
  return _sort(
156
154
  [p for p in self.unsorted_method_params if p.method_location == ParameterMethodLocation.KEYWORD_ONLY]
157
155
  )
158
156
 
159
157
  @property
160
- def kwarg(self) -> List[Union[ParameterType, BodyParameterType]]:
158
+ def kwarg(self) -> list[Union[ParameterType, BodyParameterType]]:
161
159
  """All kwargs"""
162
160
  return _sort([p for p in self.unsorted_method_params if p.method_location == ParameterMethodLocation.KWARG])
163
161
 
@@ -174,9 +172,9 @@ class _ParameterListBase(
174
172
  """Whether this is a client or a method parameter"""
175
173
 
176
174
  @property
177
- def unsorted_method_params(self) -> List[Union[ParameterType, BodyParameterType]]:
175
+ def unsorted_method_params(self) -> list[Union[ParameterType, BodyParameterType]]:
178
176
  """Method params before sorting"""
179
- method_params: List[Union[ParameterType, BodyParameterType]] = [
177
+ method_params: list[Union[ParameterType, BodyParameterType]] = [
180
178
  p
181
179
  for p in self.parameters
182
180
  if p.in_method_signature
@@ -196,11 +194,11 @@ class _ParameterListBase(
196
194
  return method_params
197
195
 
198
196
  @property
199
- def method(self) -> List[Union[ParameterType, BodyParameterType]]:
197
+ def method(self) -> list[Union[ParameterType, BodyParameterType]]:
200
198
  """Sorted method params. First positional, then keyword only, then kwarg"""
201
199
  return self.positional + self.keyword_only + self.kwarg
202
200
 
203
- def method_signature(self, async_mode: bool, **kwargs: Any) -> List[str]:
201
+ def method_signature(self, async_mode: bool, **kwargs: Any) -> list[str]:
204
202
  """Method signature for this parameter list."""
205
203
  return method_signature_helper(
206
204
  positional=self.method_signature_positional(async_mode, **kwargs),
@@ -208,11 +206,11 @@ class _ParameterListBase(
208
206
  kwarg_params=self.method_signature_kwargs,
209
207
  )
210
208
 
211
- def method_signature_positional(self, async_mode: bool, **kwargs: Any) -> List[str]:
209
+ def method_signature_positional(self, async_mode: bool, **kwargs: Any) -> list[str]:
212
210
  """Signature for positional parameters"""
213
211
  return [parameter.method_signature(async_mode, **kwargs) for parameter in self.positional]
214
212
 
215
- def method_signature_keyword_only(self, async_mode: bool, **kwargs: Any) -> List[str]:
213
+ def method_signature_keyword_only(self, async_mode: bool, **kwargs: Any) -> list[str]:
216
214
  """Signature for keyword only parameters"""
217
215
  result = [
218
216
  parameter.method_signature(async_mode, **kwargs)
@@ -222,19 +220,19 @@ class _ParameterListBase(
222
220
  return ["*,"] + result if result else []
223
221
 
224
222
  @property
225
- def method_signature_kwargs(self) -> List[str]:
223
+ def method_signature_kwargs(self) -> list[str]:
226
224
  """Signature for kwargs"""
227
225
  return ["**kwargs: Any"]
228
226
 
229
227
  @property
230
- def kwargs_to_pop(self) -> List[Union[ParameterType, BodyParameterType]]:
228
+ def kwargs_to_pop(self) -> list[Union[ParameterType, BodyParameterType]]:
231
229
  """Method kwargs we want to pop"""
232
230
  # don't want to pop bodies unless it's a constant
233
231
  kwargs_to_pop = self.kwarg
234
232
  return [k for k in kwargs_to_pop if k.location != ParameterLocation.BODY or k.constant]
235
233
 
236
234
  @property
237
- def call(self) -> List[str]:
235
+ def call(self) -> list[str]:
238
236
  """How to pass in parameters to call the operation"""
239
237
  retval = [p.client_name for p in self.method if p.method_location == ParameterMethodLocation.POSITIONAL]
240
238
  retval.extend(
@@ -248,7 +246,7 @@ class _ParameterListBase(
248
246
  return retval
249
247
 
250
248
  @classmethod
251
- def from_yaml(cls, yaml_data: Dict[str, Any], code_model: "CodeModel"):
249
+ def from_yaml(cls, yaml_data: dict[str, Any], code_model: "CodeModel"):
252
250
  parameters = [cls.parameter_creator()(parameter, code_model) for parameter in yaml_data["parameters"]]
253
251
  body_parameter = None
254
252
  if yaml_data.get("bodyParameter"):
@@ -264,11 +262,11 @@ class _ParameterListBase(
264
262
  class _ParameterList(_ParameterListBase[Parameter, BodyParameter]):
265
263
 
266
264
  @staticmethod
267
- def parameter_creator() -> Callable[[Dict[str, Any], "CodeModel"], Parameter]:
265
+ def parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], Parameter]:
268
266
  return Parameter.from_yaml
269
267
 
270
268
  @staticmethod
271
- def body_parameter_creator() -> Callable[[Dict[str, Any], "CodeModel"], BodyParameter]:
269
+ def body_parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], BodyParameter]:
272
270
  return BodyParameter.from_yaml
273
271
 
274
272
  @property
@@ -276,7 +274,7 @@ class _ParameterList(_ParameterListBase[Parameter, BodyParameter]):
276
274
  return "Method"
277
275
 
278
276
  @property
279
- def path(self) -> List[Parameter]:
277
+ def path(self) -> list[Parameter]:
280
278
  return [k for k in super().path if k.location == ParameterLocation.ENDPOINT_PATH]
281
279
 
282
280
 
@@ -288,11 +286,11 @@ class _RequestBuilderParameterList(_ParameterListBase[RequestBuilderParameter, R
288
286
  """_RequestBuilderParameterList is base parameter list for RequestBuilder classes"""
289
287
 
290
288
  @staticmethod
291
- def parameter_creator() -> Callable[[Dict[str, Any], "CodeModel"], RequestBuilderParameter]:
289
+ def parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], RequestBuilderParameter]:
292
290
  return RequestBuilderParameter.from_yaml
293
291
 
294
292
  @staticmethod
295
- def body_parameter_creator() -> Callable[[Dict[str, Any], "CodeModel"], RequestBuilderBodyParameter]:
293
+ def body_parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], RequestBuilderBodyParameter]:
296
294
  return RequestBuilderBodyParameter.from_yaml
297
295
 
298
296
  @property
@@ -302,7 +300,7 @@ class _RequestBuilderParameterList(_ParameterListBase[RequestBuilderParameter, R
302
300
  @property
303
301
  def unsorted_method_params(
304
302
  self,
305
- ) -> List[Union[RequestBuilderParameter, RequestBuilderBodyParameter]]:
303
+ ) -> list[Union[RequestBuilderParameter, RequestBuilderBodyParameter]]:
306
304
  # don't have access to client params in request builder
307
305
  retval = [
308
306
  p
@@ -313,13 +311,13 @@ class _RequestBuilderParameterList(_ParameterListBase[RequestBuilderParameter, R
313
311
  return retval
314
312
 
315
313
  @property
316
- def path(self) -> List[RequestBuilderParameter]:
314
+ def path(self) -> list[RequestBuilderParameter]:
317
315
  return [p for p in super().path if p.location != ParameterLocation.ENDPOINT_PATH]
318
316
 
319
317
  @property
320
318
  def constant(
321
319
  self,
322
- ) -> List[Union[RequestBuilderParameter, RequestBuilderBodyParameter]]:
320
+ ) -> list[Union[RequestBuilderParameter, RequestBuilderBodyParameter]]:
323
321
  """All constant parameters"""
324
322
  return [p for p in super().constant if p.location != ParameterLocation.ENDPOINT_PATH]
325
323
 
@@ -336,7 +334,7 @@ class _ClientGlobalParameterList(_ParameterListBase[ParameterType, BodyParameter
336
334
  """Base parameter list for client and config classes"""
337
335
 
338
336
  @staticmethod
339
- def body_parameter_creator() -> Callable[[Dict[str, Any], "CodeModel"], BodyParameter]:
337
+ def body_parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], BodyParameter]:
340
338
  return BodyParameter.from_yaml
341
339
 
342
340
  @property
@@ -351,7 +349,7 @@ class _ClientGlobalParameterList(_ParameterListBase[ParameterType, BodyParameter
351
349
  return None
352
350
 
353
351
  @property
354
- def path(self) -> List[ParameterType]:
352
+ def path(self) -> list[ParameterType]:
355
353
  return [p for p in super().path if p.location == ParameterLocation.ENDPOINT_PATH]
356
354
 
357
355
 
@@ -359,11 +357,11 @@ class ClientGlobalParameterList(_ClientGlobalParameterList[ClientParameter]):
359
357
  """Parameter list for Client class"""
360
358
 
361
359
  @staticmethod
362
- def parameter_creator() -> Callable[[Dict[str, Any], "CodeModel"], ClientParameter]:
360
+ def parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], ClientParameter]:
363
361
  return ClientParameter.from_yaml
364
362
 
365
363
  @property
366
- def path(self) -> List[ClientParameter]:
364
+ def path(self) -> list[ClientParameter]:
367
365
  return [p for p in super().path if not p.is_host]
368
366
 
369
367
  @property
@@ -379,7 +377,7 @@ class ConfigGlobalParameterList(_ClientGlobalParameterList[ConfigParameter]):
379
377
  """Parameter list for config"""
380
378
 
381
379
  @staticmethod
382
- def parameter_creator() -> Callable[[Dict[str, Any], "CodeModel"], ConfigParameter]:
380
+ def parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], ConfigParameter]:
383
381
  return ConfigParameter.from_yaml
384
382
 
385
383
  @property
@@ -5,7 +5,7 @@
5
5
  # --------------------------------------------------------------------------
6
6
  import datetime
7
7
  import decimal
8
- from typing import Any, Dict, List, Optional, Union, TYPE_CHECKING
8
+ from typing import Any, Optional, Union, TYPE_CHECKING
9
9
 
10
10
  from .base import BaseType
11
11
  from .imports import FileImport, ImportType, TypingSection
@@ -61,7 +61,7 @@ class BooleanType(PrimitiveType):
61
61
 
62
62
 
63
63
  class BinaryType(PrimitiveType):
64
- def __init__(self, yaml_data: Dict[str, Any], code_model: "CodeModel") -> None:
64
+ def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
65
65
  super().__init__(yaml_data=yaml_data, code_model=code_model)
66
66
  self.type = "IO"
67
67
 
@@ -176,7 +176,7 @@ class AnyObjectType(PrimitiveType):
176
176
 
177
177
 
178
178
  class NumberType(PrimitiveType):
179
- def __init__(self, yaml_data: Dict[str, Any], code_model: "CodeModel") -> None:
179
+ def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
180
180
  super().__init__(yaml_data=yaml_data, code_model=code_model)
181
181
  self.precision: Optional[int] = yaml_data.get("precision")
182
182
  self.multiple: Optional[int] = yaml_data.get("multipleOf")
@@ -186,7 +186,7 @@ class NumberType(PrimitiveType):
186
186
  self.exclusive_minimum: Optional[int] = yaml_data.get("exclusiveMinimum")
187
187
 
188
188
  @property
189
- def serialization_constraints(self) -> List[str]:
189
+ def serialization_constraints(self) -> list[str]:
190
190
  validation_constraints = [
191
191
  (f"maximum_ex={self.maximum}" if self.maximum is not None and self.exclusive_maximum else None),
192
192
  (f"maximum={self.maximum}" if self.maximum is not None and not self.exclusive_maximum else None),
@@ -197,8 +197,8 @@ class NumberType(PrimitiveType):
197
197
  return [x for x in validation_constraints if x is not None]
198
198
 
199
199
  @property
200
- def validation(self) -> Optional[Dict[str, Union[bool, int, str]]]:
201
- validation: Dict[str, Union[bool, int, str]] = {}
200
+ def validation(self) -> Optional[dict[str, Union[bool, int, str]]]:
201
+ validation: dict[str, Union[bool, int, str]] = {}
202
202
  if self.maximum is not None:
203
203
  if self.exclusive_maximum:
204
204
  validation["maximum_ex"] = self.maximum
@@ -221,7 +221,7 @@ class NumberType(PrimitiveType):
221
221
 
222
222
  class IntegerType(NumberType):
223
223
 
224
- def __init__(self, yaml_data: Dict[str, Any], code_model: "CodeModel") -> None:
224
+ def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
225
225
  super().__init__(yaml_data=yaml_data, code_model=code_model)
226
226
  if yaml_data.get("encode") == "string":
227
227
  self.encode = "str"
@@ -294,7 +294,7 @@ class DecimalType(NumberType):
294
294
 
295
295
 
296
296
  class StringType(PrimitiveType):
297
- def __init__(self, yaml_data: Dict[str, Any], code_model: "CodeModel") -> None:
297
+ def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
298
298
  super().__init__(yaml_data=yaml_data, code_model=code_model)
299
299
  self.max_length: Optional[int] = yaml_data.get("maxLength")
300
300
  self.min_length: Optional[int] = (
@@ -303,7 +303,7 @@ class StringType(PrimitiveType):
303
303
  self.pattern: Optional[str] = yaml_data.get("pattern")
304
304
 
305
305
  @property
306
- def serialization_constraints(self) -> List[str]:
306
+ def serialization_constraints(self) -> list[str]:
307
307
  validation_constraints = [
308
308
  f"max_length={self.max_length}" if self.max_length is not None else None,
309
309
  f"min_length={self.min_length}" if self.min_length is not None else None,
@@ -312,8 +312,8 @@ class StringType(PrimitiveType):
312
312
  return [x for x in validation_constraints if x is not None]
313
313
 
314
314
  @property
315
- def validation(self) -> Optional[Dict[str, Union[bool, int, str]]]:
316
- validation: Dict[str, Union[bool, int, str]] = {}
315
+ def validation(self) -> Optional[dict[str, Union[bool, int, str]]]:
316
+ validation: dict[str, Union[bool, int, str]] = {}
317
317
  if self.max_length is not None:
318
318
  validation["max_length"] = self.max_length
319
319
  if self.min_length is not None:
@@ -338,7 +338,7 @@ class StringType(PrimitiveType):
338
338
 
339
339
 
340
340
  class DatetimeType(PrimitiveType):
341
- def __init__(self, yaml_data: Dict[str, Any], code_model: "CodeModel") -> None:
341
+ def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
342
342
  super().__init__(yaml_data=yaml_data, code_model=code_model)
343
343
  self.encode = (
344
344
  "rfc3339"
@@ -564,7 +564,7 @@ class DurationType(PrimitiveType):
564
564
 
565
565
 
566
566
  class ByteArraySchema(PrimitiveType):
567
- def __init__(self, yaml_data: Dict[str, Any], code_model: "CodeModel") -> None:
567
+ def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
568
568
  super().__init__(yaml_data=yaml_data, code_model=code_model)
569
569
  self.encode = yaml_data.get("encode", "base64")
570
570
 
@@ -585,20 +585,26 @@ class ByteArraySchema(PrimitiveType):
585
585
 
586
586
 
587
587
  class SdkCoreType(PrimitiveType):
588
- def __init__(self, yaml_data: Dict[str, Any], code_model: "CodeModel") -> None:
588
+ def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
589
589
  super().__init__(yaml_data=yaml_data, code_model=code_model)
590
590
  self.name = yaml_data.get("name", "")
591
591
  self.submodule = yaml_data.get("submodule", "")
592
+ self.is_typing_only = yaml_data.get("isTypingOnly", False)
592
593
 
593
594
  def docstring_type(self, **kwargs: Any) -> str:
594
- return f"~{self.code_model.core_library}.{self.type_annotation(**kwargs)}"
595
+ return f"~{self.code_model.core_library}.{self.name}"
595
596
 
596
597
  def type_annotation(self, **kwargs: Any) -> str:
597
- return self.name
598
+ return f'"{self.name}"' if self.is_typing_only else self.name
598
599
 
599
600
  def imports(self, **kwargs: Any) -> FileImport:
600
601
  file_import = super().imports(**kwargs)
601
- file_import.add_submodule_import(self.submodule, self.name, ImportType.SDKCORE)
602
+ file_import.add_submodule_import(
603
+ self.submodule,
604
+ self.name,
605
+ ImportType.SDKCORE,
606
+ typing_section=TypingSection.TYPING if self.is_typing_only else TypingSection.REGULAR,
607
+ )
602
608
  return file_import
603
609
 
604
610
  @property
@@ -610,7 +616,7 @@ class SdkCoreType(PrimitiveType):
610
616
 
611
617
 
612
618
  class MultiPartFileType(PrimitiveType):
613
- def __init__(self, yaml_data: Dict[str, Any], code_model: "CodeModel") -> None:
619
+ def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
614
620
  super().__init__(yaml_data=yaml_data, code_model=code_model)
615
621
  self.name = "FileType"
616
622
 
@@ -3,7 +3,7 @@
3
3
  # Licensed under the MIT License. See License.txt in the project root for
4
4
  # license information.
5
5
  # --------------------------------------------------------------------------
6
- from typing import Any, Dict, Optional, TYPE_CHECKING, List, cast, Union
6
+ from typing import Any, Optional, TYPE_CHECKING, cast, Union
7
7
 
8
8
  from .base import BaseModel
9
9
  from .constant_type import ConstantType
@@ -20,7 +20,7 @@ if TYPE_CHECKING:
20
20
  class Property(BaseModel): # pylint: disable=too-many-instance-attributes
21
21
  def __init__(
22
22
  self,
23
- yaml_data: Dict[str, Any],
23
+ yaml_data: dict[str, Any],
24
24
  code_model: "CodeModel",
25
25
  type: BaseType,
26
26
  ) -> None:
@@ -30,13 +30,13 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
30
30
  self.type = type
31
31
  self.optional: bool = self.yaml_data["optional"]
32
32
  self.readonly: bool = self.yaml_data.get("readonly", False)
33
- self.visibility: List[str] = self.yaml_data.get("visibility", [])
33
+ self.visibility: list[str] = self.yaml_data.get("visibility", [])
34
34
  self.is_polymorphic: bool = self.yaml_data.get("isPolymorphic", False)
35
35
  self.is_discriminator: bool = yaml_data.get("isDiscriminator", False)
36
36
  self.client_default_value = yaml_data.get("clientDefaultValue", None)
37
37
  if self.client_default_value is None:
38
38
  self.client_default_value = self.type.client_default_value
39
- self.flattened_names: List[str] = yaml_data.get("flattenedNames", [])
39
+ self.flattened_names: list[str] = yaml_data.get("flattenedNames", [])
40
40
  self.is_multipart_file_input: bool = yaml_data.get("isMultipartFileInput", False)
41
41
  self.flatten = self.yaml_data.get("flatten", False) and not getattr(self.type, "flattened_property", False)
42
42
 
@@ -101,7 +101,7 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
101
101
  return self.is_discriminator and self.is_polymorphic and cast(ConstantType, self.type).value is None
102
102
 
103
103
  @property
104
- def xml_metadata(self) -> Optional[Dict[str, Union[str, bool]]]:
104
+ def xml_metadata(self) -> Optional[dict[str, Union[str, bool]]]:
105
105
  return self.yaml_data.get("xmlMetadata")
106
106
 
107
107
  def type_annotation(self, *, is_operation_file: bool = False, **kwargs: Any) -> str:
@@ -127,22 +127,22 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
127
127
  client_default_value_declaration=client_default_value_declaration,
128
128
  )
129
129
 
130
- def get_polymorphic_subtypes(self, polymorphic_subtypes: List["ModelType"]) -> None:
130
+ def get_polymorphic_subtypes(self, polymorphic_subtypes: list["ModelType"]) -> None:
131
131
  from .model_type import ModelType
132
132
 
133
133
  if isinstance(self.type, ModelType):
134
134
  self.type.get_polymorphic_subtypes(polymorphic_subtypes)
135
135
 
136
136
  @property
137
- def validation(self) -> Optional[Dict[str, Any]]:
138
- retval: Dict[str, Any] = {}
137
+ def validation(self) -> Optional[dict[str, Any]]:
138
+ retval: dict[str, Any] = {}
139
139
  if not self.optional:
140
140
  retval["required"] = True
141
141
  if self.readonly:
142
142
  retval["readonly"] = True
143
143
  if self.constant:
144
144
  retval["constant"] = True
145
- retval.update(self.type.validation or {})
145
+ retval |= self.type.validation or {}
146
146
  return retval or None
147
147
 
148
148
  def imports(self, **kwargs) -> FileImport:
@@ -164,7 +164,7 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
164
164
  @classmethod
165
165
  def from_yaml(
166
166
  cls,
167
- yaml_data: Dict[str, Any],
167
+ yaml_data: dict[str, Any],
168
168
  code_model: "CodeModel",
169
169
  ) -> "Property":
170
170
  from . import build_type # pylint: disable=import-outside-toplevel
@@ -6,7 +6,6 @@
6
6
  from typing import (
7
7
  Any,
8
8
  Callable,
9
- Dict,
10
9
  TypeVar,
11
10
  TYPE_CHECKING,
12
11
  Union,
@@ -38,7 +37,7 @@ ParameterListType = TypeVar(
38
37
  class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder"]]):
39
38
  def __init__(
40
39
  self,
41
- yaml_data: Dict[str, Any],
40
+ yaml_data: dict[str, Any],
42
41
  code_model: "CodeModel",
43
42
  client: "Client",
44
43
  name: str,
@@ -116,13 +115,13 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder
116
115
 
117
116
  @staticmethod
118
117
  @abstractmethod
119
- def parameter_list_type() -> Callable[[Dict[str, Any], "CodeModel"], ParameterListType]: ...
118
+ def parameter_list_type() -> Callable[[dict[str, Any], "CodeModel"], ParameterListType]: ...
120
119
 
121
120
  @classmethod
122
121
  def get_name(
123
122
  cls,
124
123
  name: str,
125
- yaml_data: Dict[str, Any],
124
+ yaml_data: dict[str, Any],
126
125
  code_model: "CodeModel",
127
126
  client: "Client",
128
127
  ) -> str:
@@ -140,7 +139,7 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder
140
139
  @classmethod
141
140
  def from_yaml(
142
141
  cls,
143
- yaml_data: Dict[str, Any],
142
+ yaml_data: dict[str, Any],
144
143
  code_model: "CodeModel",
145
144
  client: "Client",
146
145
  ):
@@ -165,18 +164,18 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder
165
164
 
166
165
  class RequestBuilder(RequestBuilderBase[RequestBuilderParameterList]):
167
166
  @staticmethod
168
- def parameter_list_type() -> Callable[[Dict[str, Any], "CodeModel"], RequestBuilderParameterList]:
167
+ def parameter_list_type() -> Callable[[dict[str, Any], "CodeModel"], RequestBuilderParameterList]:
169
168
  return RequestBuilderParameterList.from_yaml
170
169
 
171
170
 
172
171
  class OverloadedRequestBuilder(RequestBuilderBase[OverloadedRequestBuilderParameterList]):
173
172
  @staticmethod
174
- def parameter_list_type() -> Callable[[Dict[str, Any], "CodeModel"], OverloadedRequestBuilderParameterList]:
173
+ def parameter_list_type() -> Callable[[dict[str, Any], "CodeModel"], OverloadedRequestBuilderParameterList]:
175
174
  return OverloadedRequestBuilderParameterList.from_yaml
176
175
 
177
176
 
178
177
  def get_request_builder(
179
- yaml_data: Dict[str, Any], code_model: "CodeModel", client: "Client"
178
+ yaml_data: dict[str, Any], code_model: "CodeModel", client: "Client"
180
179
  ) -> Union[RequestBuilder, OverloadedRequestBuilder]:
181
180
  if yaml_data.get("overloads"):
182
181
  return OverloadedRequestBuilder.from_yaml(yaml_data, code_model, client)
@@ -3,7 +3,7 @@
3
3
  # Licensed under the MIT License. See License.txt in the project root for
4
4
  # license information.
5
5
  # --------------------------------------------------------------------------
6
- from typing import TYPE_CHECKING, Any, Dict
6
+ from typing import TYPE_CHECKING, Any
7
7
  from .parameter import (
8
8
  ParameterLocation,
9
9
  ParameterMethodLocation,
@@ -52,7 +52,7 @@ class RequestBuilderBodyParameter(BodyParameter):
52
52
  )
53
53
 
54
54
  @classmethod
55
- def from_yaml(cls, yaml_data: Dict[str, Any], code_model: "CodeModel") -> "RequestBuilderBodyParameter":
55
+ def from_yaml(cls, yaml_data: dict[str, Any], code_model: "CodeModel") -> "RequestBuilderBodyParameter":
56
56
  return super().from_yaml(yaml_data, code_model) # type: ignore
57
57
 
58
58
  @property
@@ -67,7 +67,7 @@ class RequestBuilderParameter(Parameter):
67
67
 
68
68
  def __init__(
69
69
  self,
70
- yaml_data: Dict[str, Any],
70
+ yaml_data: dict[str, Any],
71
71
  code_model: "CodeModel",
72
72
  type: BaseType,
73
73
  ) -> None: