@autorest/python 5.15.0 → 5.16.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 (86) hide show
  1. package/ChangeLog.md +20 -0
  2. package/autorest/__init__.py +1 -2
  3. package/autorest/black/__init__.py +12 -5
  4. package/autorest/codegen/__init__.py +145 -73
  5. package/autorest/codegen/models/__init__.py +29 -18
  6. package/autorest/codegen/models/base_builder.py +48 -11
  7. package/autorest/codegen/models/base_model.py +6 -4
  8. package/autorest/codegen/models/base_schema.py +19 -18
  9. package/autorest/codegen/models/client.py +65 -21
  10. package/autorest/codegen/models/code_model.py +107 -61
  11. package/autorest/codegen/models/constant_schema.py +25 -13
  12. package/autorest/codegen/models/credential_model.py +23 -15
  13. package/autorest/codegen/models/credential_schema.py +18 -14
  14. package/autorest/codegen/models/credential_schema_policy.py +11 -15
  15. package/autorest/codegen/models/dictionary_schema.py +20 -17
  16. package/autorest/codegen/models/enum_schema.py +35 -25
  17. package/autorest/codegen/models/imports.py +70 -41
  18. package/autorest/codegen/models/list_schema.py +25 -13
  19. package/autorest/codegen/models/lro_operation.py +58 -22
  20. package/autorest/codegen/models/lro_paging_operation.py +2 -3
  21. package/autorest/codegen/models/object_schema.py +99 -49
  22. package/autorest/codegen/models/operation.py +236 -117
  23. package/autorest/codegen/models/operation_group.py +64 -34
  24. package/autorest/codegen/models/paging_operation.py +45 -18
  25. package/autorest/codegen/models/parameter.py +151 -83
  26. package/autorest/codegen/models/parameter_list.py +183 -162
  27. package/autorest/codegen/models/primitive_schemas.py +84 -55
  28. package/autorest/codegen/models/property.py +44 -26
  29. package/autorest/codegen/models/request_builder.py +65 -30
  30. package/autorest/codegen/models/request_builder_parameter.py +47 -23
  31. package/autorest/codegen/models/request_builder_parameter_list.py +77 -108
  32. package/autorest/codegen/models/schema_request.py +16 -6
  33. package/autorest/codegen/models/schema_response.py +18 -13
  34. package/autorest/codegen/models/utils.py +5 -2
  35. package/autorest/codegen/serializers/__init__.py +182 -91
  36. package/autorest/codegen/serializers/builder_serializer.py +667 -331
  37. package/autorest/codegen/serializers/client_serializer.py +98 -37
  38. package/autorest/codegen/serializers/general_serializer.py +61 -26
  39. package/autorest/codegen/serializers/import_serializer.py +93 -31
  40. package/autorest/codegen/serializers/metadata_serializer.py +73 -24
  41. package/autorest/codegen/serializers/model_base_serializer.py +35 -15
  42. package/autorest/codegen/serializers/model_generic_serializer.py +1 -4
  43. package/autorest/codegen/serializers/model_init_serializer.py +5 -1
  44. package/autorest/codegen/serializers/model_python3_serializer.py +7 -6
  45. package/autorest/codegen/serializers/operation_groups_serializer.py +20 -9
  46. package/autorest/codegen/serializers/operations_init_serializer.py +23 -11
  47. package/autorest/codegen/serializers/patch_serializer.py +4 -1
  48. package/autorest/codegen/serializers/{rest_serializer.py → request_builders_serializer.py} +29 -12
  49. package/autorest/codegen/serializers/utils.py +35 -21
  50. package/autorest/codegen/templates/init.py.jinja2 +2 -2
  51. package/autorest/codegen/templates/lro_operation.py.jinja2 +5 -7
  52. package/autorest/codegen/templates/lro_paging_operation.py.jinja2 +5 -7
  53. package/autorest/codegen/templates/metadata.json.jinja2 +7 -6
  54. package/autorest/codegen/templates/operation.py.jinja2 +7 -9
  55. package/autorest/codegen/templates/operation_group.py.jinja2 +2 -8
  56. package/autorest/codegen/templates/operation_groups_container.py.jinja2 +1 -1
  57. package/autorest/codegen/templates/paging_operation.py.jinja2 +7 -8
  58. package/autorest/codegen/templates/request_builder.py.jinja2 +18 -11
  59. package/autorest/jsonrpc/__init__.py +7 -12
  60. package/autorest/jsonrpc/localapi.py +4 -3
  61. package/autorest/jsonrpc/server.py +13 -6
  62. package/autorest/jsonrpc/stdstream.py +13 -6
  63. package/autorest/m2r/__init__.py +5 -8
  64. package/autorest/multiapi/__init__.py +24 -14
  65. package/autorest/multiapi/models/client.py +21 -11
  66. package/autorest/multiapi/models/code_model.py +23 -10
  67. package/autorest/multiapi/models/config.py +4 -1
  68. package/autorest/multiapi/models/constant_global_parameter.py +1 -0
  69. package/autorest/multiapi/models/global_parameter.py +2 -1
  70. package/autorest/multiapi/models/global_parameters.py +14 -8
  71. package/autorest/multiapi/models/imports.py +24 -17
  72. package/autorest/multiapi/models/mixin_operation.py +5 -5
  73. package/autorest/multiapi/models/operation_group.py +2 -1
  74. package/autorest/multiapi/models/operation_mixin_group.py +21 -10
  75. package/autorest/multiapi/serializers/__init__.py +18 -23
  76. package/autorest/multiapi/serializers/import_serializer.py +47 -17
  77. package/autorest/multiapi/serializers/multiapi_serializer.py +17 -17
  78. package/autorest/multiapi/templates/multiapi_operations_mixin.py.jinja2 +1 -1
  79. package/autorest/multiapi/utils.py +3 -3
  80. package/autorest/namer/__init__.py +2 -4
  81. package/autorest/namer/name_converter.py +200 -103
  82. package/autorest/namer/python_mappings.py +10 -22
  83. package/package.json +2 -2
  84. package/run-python3.js +2 -3
  85. package/venvtools.py +1 -1
  86. package/autorest/codegen/models/rest.py +0 -42
@@ -9,12 +9,7 @@ from jinja2 import PackageLoader, Environment, FileSystemLoader, StrictUndefined
9
9
  from autorest.codegen.models.operation_group import OperationGroup
10
10
 
11
11
  from ...jsonrpc import AutorestAPI
12
- from ..models import (
13
- CodeModel,
14
- OperationGroup,
15
- RequestBuilder,
16
- TokenCredentialSchema
17
- )
12
+ from ..models import CodeModel, OperationGroup, RequestBuilder, TokenCredentialSchema
18
13
  from .enum_serializer import EnumSerializer
19
14
  from .general_serializer import GeneralSerializer
20
15
  from .model_generic_serializer import ModelGenericSerializer
@@ -23,7 +18,11 @@ from .model_python3_serializer import ModelPython3Serializer
23
18
  from .operations_init_serializer import OperationsInitSerializer
24
19
  from .operation_groups_serializer import OperationGroupsSerializer
25
20
  from .metadata_serializer import MetadataSerializer
26
- from .rest_serializer import RestPython3Serializer, RestGenericSerializer, RestSerializer
21
+ from .request_builders_serializer import (
22
+ RequestBuildersPython3Serializer,
23
+ RequestBuildersGenericSerializer,
24
+ RequestBuildersSerializer,
25
+ )
27
26
  from .patch_serializer import PatchSerializer
28
27
 
29
28
  __all__ = [
@@ -39,10 +38,8 @@ _PACKAGE_FILES = [
39
38
  "setup.py.jinja2",
40
39
  ]
41
40
 
42
- _REGENERATE_FILES = {
43
- "setup.py",
44
- "MANIFEST.in"
45
- }
41
+ _REGENERATE_FILES = {"setup.py", "MANIFEST.in"}
42
+
46
43
 
47
44
  class JinjaSerializer:
48
45
  def __init__(self, autorestapi: AutorestAPI, code_model: CodeModel) -> None:
@@ -51,7 +48,9 @@ class JinjaSerializer:
51
48
 
52
49
  @property
53
50
  def has_aio_folder(self) -> bool:
54
- return not self.code_model.options["no_async"] and bool(self.code_model.rest.request_builders)
51
+ return not self.code_model.options["no_async"] and bool(
52
+ self.code_model.request_builders
53
+ )
55
54
 
56
55
  def serialize(self) -> None:
57
56
  env = Environment(
@@ -73,53 +72,84 @@ class JinjaSerializer:
73
72
  if self.has_aio_folder:
74
73
  self._keep_patch_file(namespace_path / Path("aio") / Path("_patch.py"), env)
75
74
 
76
- if self.code_model.options["models_mode"] and (self.code_model.schemas or self.code_model.enums):
77
- self._keep_patch_file(namespace_path / Path("models") / Path("_patch.py"), env)
78
- if self.code_model.options["show_operations"] and self.code_model.operation_groups:
75
+ if self.code_model.options["models_mode"] and (
76
+ self.code_model.schemas or self.code_model.enums
77
+ ):
78
+ self._keep_patch_file(
79
+ namespace_path / Path("models") / Path("_patch.py"), env
80
+ )
81
+ if (
82
+ self.code_model.options["show_operations"]
83
+ and self.code_model.operation_groups
84
+ ):
79
85
  self._keep_patch_file(
80
- namespace_path / Path(self.code_model.operations_folder_name) / Path("_patch.py"), env
86
+ namespace_path
87
+ / Path(self.code_model.operations_folder_name)
88
+ / Path("_patch.py"),
89
+ env,
81
90
  )
82
91
  if self.has_aio_folder:
83
92
  self._keep_patch_file(
84
- namespace_path / Path("aio") / Path(self.code_model.operations_folder_name) / Path("_patch.py"), env
93
+ namespace_path
94
+ / Path("aio")
95
+ / Path(self.code_model.operations_folder_name)
96
+ / Path("_patch.py"),
97
+ env,
85
98
  )
86
99
 
87
- self._serialize_and_write_top_level_folder(env=env, namespace_path=namespace_path)
100
+ self._serialize_and_write_top_level_folder(
101
+ env=env, namespace_path=namespace_path
102
+ )
88
103
 
89
- if self.code_model.rest.request_builders:
104
+ if self.code_model.request_builders:
90
105
  if self.code_model.options["builders_visibility"] != "embedded":
91
- self._serialize_and_write_rest_layer(env=env, namespace_path=namespace_path)
106
+ self._serialize_and_write_rest_layer(
107
+ env=env, namespace_path=namespace_path
108
+ )
92
109
  if self.has_aio_folder:
93
110
  self._serialize_and_write_aio_top_level_folder(
94
- env=env, namespace_path=namespace_path,
111
+ env=env,
112
+ namespace_path=namespace_path,
95
113
  )
96
114
 
97
- if self.code_model.options["show_operations"] and self.code_model.operation_groups:
98
- self._serialize_and_write_operations_folder(env=env, namespace_path=namespace_path)
115
+ if (
116
+ self.code_model.options["show_operations"]
117
+ and self.code_model.operation_groups
118
+ ):
119
+ self._serialize_and_write_operations_folder(
120
+ env=env, namespace_path=namespace_path
121
+ )
99
122
  if self.code_model.options["multiapi"]:
100
123
  self._serialize_and_write_metadata(
101
124
  env=env, namespace_path=namespace_path
102
125
  )
103
126
 
104
- if self.code_model.options["models_mode"] and (self.code_model.schemas or self.code_model.enums):
105
- self._serialize_and_write_models_folder(env=env, namespace_path=namespace_path)
127
+ if self.code_model.options["models_mode"] and (
128
+ self.code_model.schemas or self.code_model.enums
129
+ ):
130
+ self._serialize_and_write_models_folder(
131
+ env=env, namespace_path=namespace_path
132
+ )
106
133
  if not self.code_model.options["models_mode"]:
107
134
  # keep models file if users ended up just writing a models file
108
135
  if self._autorestapi.read_file(namespace_path / Path("models.py")):
109
136
  self._autorestapi.write_file(
110
- namespace_path / Path("models.py"), self._autorestapi.read_file(namespace_path / Path("models.py"))
137
+ namespace_path / Path("models.py"),
138
+ self._autorestapi.read_file(namespace_path / Path("models.py")),
111
139
  )
112
140
 
113
141
  if self.code_model.options["package_mode"]:
114
142
  self._serialize_and_write_package_files(out_path=namespace_path)
115
143
 
116
-
117
144
  def _serialize_and_write_package_files(self, out_path: Path) -> None:
118
145
  def _serialize_and_write_package_files_proc(**kwargs: Any):
119
146
  for template_name in package_files:
120
147
  file = template_name.replace(".jinja2", "")
121
148
  output_name = out_path / file
122
- if not self._autorestapi.read_file(output_name) or file in _REGENERATE_FILES:
149
+ if (
150
+ not self._autorestapi.read_file(output_name)
151
+ or file in _REGENERATE_FILES
152
+ ):
123
153
  template = env.get_template(template_name)
124
154
  render_result = template.render(**kwargs)
125
155
  self._autorestapi.write_file(output_name, render_result)
@@ -129,20 +159,25 @@ class JinjaSerializer:
129
159
  try:
130
160
  token_cred = isinstance(
131
161
  self.code_model.credential_model.credential_schema_policy.credential,
132
- TokenCredentialSchema
162
+ TokenCredentialSchema,
133
163
  )
134
164
  except ValueError:
135
165
  token_cred = False
136
166
  version = self.code_model.options["package_version"]
137
- if any(x in version for x in ["a", "b", "rc"]) or version[0] == '0':
167
+ if any(x in version for x in ["a", "b", "rc"]) or version[0] == "0":
138
168
  dev_status = "4 - Beta"
139
169
  else:
140
170
  dev_status = "5 - Production/Stable"
141
171
  params = {
142
172
  "token_credential": token_cred,
143
- "pkgutil_names": [".".join(package_parts[: i + 1]) for i in range(len(package_parts))],
144
- "init_names": ["/".join(package_parts[: i + 1]) + "/__init__.py" for i in range(len(package_parts))],
145
- "dev_status": dev_status
173
+ "pkgutil_names": [
174
+ ".".join(package_parts[: i + 1]) for i in range(len(package_parts))
175
+ ],
176
+ "init_names": [
177
+ "/".join(package_parts[: i + 1]) + "/__init__.py"
178
+ for i in range(len(package_parts))
179
+ ],
180
+ "dev_status": dev_status,
146
181
  }
147
182
  params.update(self.code_model.options)
148
183
  params.update(self.code_model.package_dependency)
@@ -155,38 +190,55 @@ class JinjaSerializer:
155
190
  if self.code_model.options["package_mode"] in ("dataplane", "mgmtplane"):
156
191
  env = Environment(
157
192
  loader=PackageLoader("autorest.codegen", "templates"),
158
- undefined=StrictUndefined)
193
+ undefined=StrictUndefined,
194
+ )
159
195
  package_files = _PACKAGE_FILES
160
196
  _serialize_and_write_package_files_proc(**_prepare_params())
161
197
  elif Path(self.code_model.options["package_mode"]).exists():
162
198
  env = Environment(
163
- loader=FileSystemLoader(str(Path(self.code_model.options["package_mode"]))),
199
+ loader=FileSystemLoader(
200
+ str(Path(self.code_model.options["package_mode"]))
201
+ ),
164
202
  keep_trailing_newline=True,
165
- undefined=StrictUndefined
203
+ undefined=StrictUndefined,
166
204
  )
167
205
  package_files = env.list_templates()
168
206
  params = self.code_model.options["package_configuration"] or {}
169
207
  _serialize_and_write_package_files_proc(**params)
170
208
 
171
-
172
209
  def _keep_patch_file(self, path_file: Path, env: Environment):
173
210
  if self._autorestapi.read_file(path_file):
174
- self._autorestapi.write_file(path_file, self._autorestapi.read_file(path_file))
211
+ self._autorestapi.write_file(
212
+ path_file, self._autorestapi.read_file(path_file)
213
+ )
175
214
  else:
176
- self._autorestapi.write_file(path_file, PatchSerializer(env=env, code_model=self.code_model).serialize())
215
+ self._autorestapi.write_file(
216
+ path_file,
217
+ PatchSerializer(env=env, code_model=self.code_model).serialize(),
218
+ )
177
219
 
178
- def _serialize_and_write_models_folder(self, env: Environment, namespace_path: Path) -> None:
220
+ def _serialize_and_write_models_folder(
221
+ self, env: Environment, namespace_path: Path
222
+ ) -> None:
179
223
  # Write the models folder
180
224
  models_path = namespace_path / Path("models")
181
225
  if self.code_model.schemas:
182
- if not self.code_model.options['python3_only']:
226
+ if not self.code_model.options["python3_only"]:
183
227
  self._autorestapi.write_file(
184
- models_path / Path(f"{self.code_model.get_models_filename(is_python3_file=False)}.py"),
185
- ModelGenericSerializer(code_model=self.code_model, env=env).serialize()
228
+ models_path
229
+ / Path(
230
+ f"{self.code_model.get_models_filename(is_python3_file=False)}.py"
231
+ ),
232
+ ModelGenericSerializer(
233
+ code_model=self.code_model, env=env
234
+ ).serialize(),
186
235
  )
187
236
  self._autorestapi.write_file(
188
- models_path / Path(f"{self.code_model.get_models_filename(is_python3_file=True)}.py"),
189
- ModelPython3Serializer(code_model=self.code_model, env=env).serialize()
237
+ models_path
238
+ / Path(
239
+ f"{self.code_model.get_models_filename(is_python3_file=True)}.py"
240
+ ),
241
+ ModelPython3Serializer(code_model=self.code_model, env=env).serialize(),
190
242
  )
191
243
  if self.code_model.enums:
192
244
  self._autorestapi.write_file(
@@ -194,7 +246,8 @@ class JinjaSerializer:
194
246
  EnumSerializer(code_model=self.code_model, env=env).serialize(),
195
247
  )
196
248
  self._autorestapi.write_file(
197
- models_path / Path("__init__.py"), ModelInitSerializer(code_model=self.code_model, env=env).serialize()
249
+ models_path / Path("__init__.py"),
250
+ ModelInitSerializer(code_model=self.code_model, env=env).serialize(),
198
251
  )
199
252
 
200
253
  def _serialize_and_write_rest_layer(
@@ -202,55 +255,60 @@ class JinjaSerializer:
202
255
  ) -> None:
203
256
  rest_path = namespace_path / Path(self.code_model.rest_layer_name)
204
257
  operation_group_names = {
205
- rb.operation_group_name for rb in self.code_model.rest.request_builders
258
+ rb.operation_group_name for rb in self.code_model.request_builders
206
259
  }
207
260
 
208
261
  for operation_group_name in operation_group_names:
209
262
  request_builders = [
210
- r for r in self.code_model.rest.request_builders if r.operation_group_name == operation_group_name
263
+ r
264
+ for r in self.code_model.request_builders
265
+ if r.operation_group_name == operation_group_name
211
266
  ]
212
267
  self._serialize_and_write_single_rest_layer(
213
268
  env, rest_path, request_builders
214
269
  )
215
270
  if not "" in operation_group_names:
216
271
  self._autorestapi.write_file(
217
- rest_path / Path("__init__.py"), self.code_model.options['license_header']
272
+ rest_path / Path("__init__.py"),
273
+ self.code_model.options["license_header"],
218
274
  )
219
275
 
220
-
221
276
  def _serialize_and_write_single_rest_layer(
222
277
  self, env: Environment, rest_path: Path, request_builders: List[RequestBuilder]
223
278
  ) -> None:
224
279
  builder_group_name = request_builders[0].builder_group_name
225
- output_path = rest_path / Path(builder_group_name) if builder_group_name else rest_path
280
+ output_path = (
281
+ rest_path / Path(builder_group_name) if builder_group_name else rest_path
282
+ )
226
283
  # write generic request builders file
227
284
  self._autorestapi.write_file(
228
285
  output_path / Path("_request_builders.py"),
229
- RestGenericSerializer(
286
+ RequestBuildersGenericSerializer(
230
287
  code_model=self.code_model, env=env, request_builders=request_builders
231
- ).serialize_request_builders()
288
+ ).serialize_request_builders(),
232
289
  )
233
290
 
234
291
  # write python3 request builders file
235
292
  self._autorestapi.write_file(
236
293
  output_path / Path("_request_builders_py3.py"),
237
- RestPython3Serializer(
294
+ RequestBuildersPython3Serializer(
238
295
  code_model=self.code_model, env=env, request_builders=request_builders
239
- ).serialize_request_builders()
296
+ ).serialize_request_builders(),
240
297
  )
241
298
 
242
299
  # write rest init file
243
300
  self._autorestapi.write_file(
244
- output_path / Path("__init__.py"), RestSerializer(
301
+ output_path / Path("__init__.py"),
302
+ RequestBuildersSerializer(
245
303
  code_model=self.code_model, env=env, request_builders=request_builders
246
- ).serialize_init()
304
+ ).serialize_init(),
247
305
  )
248
306
 
249
307
  def _serialize_and_write_operations_file(
250
308
  self,
251
309
  env: Environment,
252
310
  namespace_path: Path,
253
- operation_group: Optional[OperationGroup] = None
311
+ operation_group: Optional[OperationGroup] = None,
254
312
  ) -> None:
255
313
  filename = operation_group.filename if operation_group else "_operations"
256
314
  # write first sync file
@@ -258,25 +316,31 @@ class JinjaSerializer:
258
316
  code_model=self.code_model,
259
317
  env=env,
260
318
  async_mode=False,
261
- is_python3_file=self.code_model.options['python3_only'],
262
- operation_group=operation_group
319
+ is_python3_file=self.code_model.options["python3_only"],
320
+ operation_group=operation_group,
263
321
  )
264
322
  self._autorestapi.write_file(
265
- namespace_path / Path(self.code_model.operations_folder_name) / Path(f"{filename}.py"),
323
+ namespace_path
324
+ / Path(self.code_model.operations_folder_name)
325
+ / Path(f"{filename}.py"),
266
326
  operation_group_serializer.serialize(),
267
327
  )
268
328
 
269
- if not self.code_model.options['python3_only'] and self.code_model.options["add_python3_operation_files"]:
329
+ if (
330
+ not self.code_model.options["python3_only"]
331
+ and self.code_model.options["add_python3_operation_files"]
332
+ ):
270
333
  # write typed second file if not python 3 only
271
334
  operation_group_serializer = OperationGroupsSerializer(
272
335
  code_model=self.code_model,
273
336
  env=env,
274
337
  async_mode=False,
275
338
  is_python3_file=True,
276
-
277
339
  )
278
340
  self._autorestapi.write_file(
279
- namespace_path / Path(self.code_model.operations_folder_name) / Path(f"{filename}_py3.py"),
341
+ namespace_path
342
+ / Path(self.code_model.operations_folder_name)
343
+ / Path(f"{filename}_py3.py"),
280
344
  operation_group_serializer.serialize(),
281
345
  )
282
346
 
@@ -287,7 +351,7 @@ class JinjaSerializer:
287
351
  env=env,
288
352
  async_mode=True,
289
353
  is_python3_file=True,
290
- operation_group=operation_group
354
+ operation_group=operation_group,
291
355
  )
292
356
  self._autorestapi.write_file(
293
357
  (
@@ -303,9 +367,13 @@ class JinjaSerializer:
303
367
  self, env: Environment, namespace_path: Path
304
368
  ) -> None:
305
369
  # write sync operations init file
306
- operations_init_serializer = OperationsInitSerializer(code_model=self.code_model, env=env, async_mode=False)
370
+ operations_init_serializer = OperationsInitSerializer(
371
+ code_model=self.code_model, env=env, async_mode=False
372
+ )
307
373
  self._autorestapi.write_file(
308
- namespace_path / Path(self.code_model.operations_folder_name) / Path("__init__.py"),
374
+ namespace_path
375
+ / Path(self.code_model.operations_folder_name)
376
+ / Path("__init__.py"),
309
377
  operations_init_serializer.serialize(),
310
378
  )
311
379
 
@@ -315,7 +383,10 @@ class JinjaSerializer:
315
383
  code_model=self.code_model, env=env, async_mode=True
316
384
  )
317
385
  self._autorestapi.write_file(
318
- namespace_path / Path("aio") / Path(self.code_model.operations_folder_name) / Path("__init__.py"),
386
+ namespace_path
387
+ / Path("aio")
388
+ / Path(self.code_model.operations_folder_name)
389
+ / Path("__init__.py"),
319
390
  operations_async_init_serializer.serialize(),
320
391
  )
321
392
 
@@ -336,80 +407,96 @@ class JinjaSerializer:
336
407
  self, namespace_path: Path, general_serializer: GeneralSerializer
337
408
  ):
338
409
  def _read_version_file(original_version_file_name: str) -> str:
339
- return self._autorestapi.read_file(namespace_path / original_version_file_name)
410
+ return self._autorestapi.read_file(
411
+ namespace_path / original_version_file_name
412
+ )
340
413
 
341
414
  def _write_version_file(original_version_file_name: str) -> None:
342
415
  self._autorestapi.write_file(
343
416
  namespace_path / Path("_version.py"),
344
- _read_version_file(original_version_file_name)
417
+ _read_version_file(original_version_file_name),
345
418
  )
346
- keep_version_file = self.code_model.options['keep_version_file']
419
+
420
+ keep_version_file = self.code_model.options["keep_version_file"]
347
421
  if keep_version_file and _read_version_file("_version.py"):
348
422
  _write_version_file(original_version_file_name="_version.py")
349
423
  elif keep_version_file and _read_version_file("version.py"):
350
424
  _write_version_file(original_version_file_name="version.py")
351
- elif self.code_model.options['package_version']:
425
+ elif self.code_model.options["package_version"]:
352
426
  self._autorestapi.write_file(
353
427
  namespace_path / Path("_version.py"),
354
- general_serializer.serialize_version_file()
428
+ general_serializer.serialize_version_file(),
355
429
  )
356
430
 
357
431
  def _serialize_and_write_top_level_folder(
358
432
  self, env: Environment, namespace_path: Path
359
433
  ) -> None:
360
- general_serializer = GeneralSerializer(code_model=self.code_model, env=env, async_mode=False)
434
+ general_serializer = GeneralSerializer(
435
+ code_model=self.code_model, env=env, async_mode=False
436
+ )
361
437
 
362
438
  self._autorestapi.write_file(
363
- namespace_path / Path("__init__.py"), general_serializer.serialize_init_file()
439
+ namespace_path / Path("__init__.py"),
440
+ general_serializer.serialize_init_file(),
364
441
  )
365
442
  p = namespace_path.parent
366
443
  while p != Path("."):
367
444
  # write pkgutil init file
368
445
  self._autorestapi.write_file(
369
- p / Path("__init__.py"), general_serializer.serialize_pkgutil_init_file()
446
+ p / Path("__init__.py"),
447
+ general_serializer.serialize_pkgutil_init_file(),
370
448
  )
371
449
  p = p.parent
372
450
 
373
451
  # Write the service client
374
- if self.code_model.rest.request_builders:
452
+ if self.code_model.request_builders:
375
453
  self._autorestapi.write_file(
376
454
  namespace_path / Path(f"{self.code_model.service_client.filename}.py"),
377
- general_serializer.serialize_service_client_file()
455
+ general_serializer.serialize_service_client_file(),
378
456
  )
379
457
 
380
458
  if self.code_model.need_vendored_code(async_mode=False):
381
459
  self._autorestapi.write_file(
382
460
  namespace_path / Path("_vendor.py"),
383
- general_serializer.serialize_vendor_file()
461
+ general_serializer.serialize_vendor_file(),
384
462
  )
385
463
 
386
464
  self._serialize_and_write_version_file(namespace_path, general_serializer)
387
465
 
388
466
  # write the empty py.typed file
389
- self._autorestapi.write_file(namespace_path / Path("py.typed"), "# Marker file for PEP 561.")
467
+ self._autorestapi.write_file(
468
+ namespace_path / Path("py.typed"), "# Marker file for PEP 561."
469
+ )
390
470
 
391
471
  # Write the config file
392
- if self.code_model.rest.request_builders:
472
+ if self.code_model.request_builders:
393
473
  self._autorestapi.write_file(
394
- namespace_path / Path("_configuration.py"), general_serializer.serialize_config_file()
474
+ namespace_path / Path("_configuration.py"),
475
+ general_serializer.serialize_config_file(),
395
476
  )
396
477
 
397
478
  # Write the setup file
398
479
  if self.code_model.options["basic_setup_py"]:
399
- self._autorestapi.write_file(Path("setup.py"), general_serializer.serialize_setup_file())
480
+ self._autorestapi.write_file(
481
+ Path("setup.py"), general_serializer.serialize_setup_file()
482
+ )
400
483
 
401
484
  def _serialize_and_write_aio_top_level_folder(
402
485
  self, env: Environment, namespace_path: Path
403
486
  ) -> None:
404
- aio_general_serializer = GeneralSerializer(code_model=self.code_model, env=env, async_mode=True)
487
+ aio_general_serializer = GeneralSerializer(
488
+ code_model=self.code_model, env=env, async_mode=True
489
+ )
405
490
 
406
491
  aio_path = namespace_path / Path("aio")
407
492
 
408
493
  # Write the __init__ file
409
- self._autorestapi.write_file(aio_path / Path("__init__.py"), aio_general_serializer.serialize_init_file())
494
+ self._autorestapi.write_file(
495
+ aio_path / Path("__init__.py"), aio_general_serializer.serialize_init_file()
496
+ )
410
497
 
411
498
  # Write the service client
412
- if self.code_model.rest.request_builders:
499
+ if self.code_model.request_builders:
413
500
  self._autorestapi.write_file(
414
501
  aio_path / Path(f"{self.code_model.service_client.filename}.py"),
415
502
  aio_general_serializer.serialize_service_client_file(),
@@ -417,15 +504,19 @@ class JinjaSerializer:
417
504
 
418
505
  # Write the config file
419
506
  self._autorestapi.write_file(
420
- aio_path / Path("_configuration.py"), aio_general_serializer.serialize_config_file()
507
+ aio_path / Path("_configuration.py"),
508
+ aio_general_serializer.serialize_config_file(),
421
509
  )
422
510
  if self.code_model.need_vendored_code(async_mode=True):
423
511
  self._autorestapi.write_file(
424
512
  aio_path / Path("_vendor.py"),
425
- aio_general_serializer.serialize_vendor_file()
513
+ aio_general_serializer.serialize_vendor_file(),
426
514
  )
427
515
 
428
-
429
- def _serialize_and_write_metadata(self, env: Environment, namespace_path: Path) -> None:
516
+ def _serialize_and_write_metadata(
517
+ self, env: Environment, namespace_path: Path
518
+ ) -> None:
430
519
  metadata_serializer = MetadataSerializer(self.code_model, env)
431
- self._autorestapi.write_file(namespace_path / Path("_metadata.json"), metadata_serializer.serialize())
520
+ self._autorestapi.write_file(
521
+ namespace_path / Path("_metadata.json"), metadata_serializer.serialize()
522
+ )