@typespec/http-client-python 0.13.0-dev.2 → 0.13.0-dev.3

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 (103) hide show
  1. package/eng/scripts/setup/__pycache__/package_manager.cpython-39.pyc +0 -0
  2. package/eng/scripts/setup/__pycache__/venvtools.cpython-39.pyc +0 -0
  3. package/generator/build/lib/pygen/__init__.py +176 -2
  4. package/generator/build/lib/pygen/black.py +1 -1
  5. package/generator/build/lib/pygen/codegen/__init__.py +4 -256
  6. package/generator/build/lib/pygen/codegen/_utils.py +0 -3
  7. package/generator/build/lib/pygen/codegen/models/__init__.py +1 -1
  8. package/generator/build/lib/pygen/codegen/models/base_builder.py +1 -1
  9. package/generator/build/lib/pygen/codegen/models/client.py +12 -12
  10. package/generator/build/lib/pygen/codegen/models/code_model.py +10 -9
  11. package/generator/build/lib/pygen/codegen/models/enum_type.py +4 -4
  12. package/generator/build/lib/pygen/codegen/models/imports.py +1 -1
  13. package/generator/build/lib/pygen/codegen/models/list_type.py +6 -6
  14. package/generator/build/lib/pygen/codegen/models/lro_operation.py +1 -1
  15. package/generator/build/lib/pygen/codegen/models/operation.py +16 -16
  16. package/generator/build/lib/pygen/codegen/models/operation_group.py +4 -4
  17. package/generator/build/lib/pygen/codegen/models/paging_operation.py +4 -4
  18. package/generator/build/lib/pygen/codegen/models/parameter.py +8 -8
  19. package/generator/build/lib/pygen/codegen/models/property.py +1 -1
  20. package/generator/build/lib/pygen/codegen/models/request_builder.py +2 -2
  21. package/generator/build/lib/pygen/codegen/models/request_builder_parameter.py +2 -2
  22. package/generator/build/lib/pygen/codegen/models/response.py +3 -3
  23. package/generator/build/lib/pygen/codegen/serializers/__init__.py +27 -28
  24. package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +31 -31
  25. package/generator/build/lib/pygen/codegen/serializers/client_serializer.py +4 -4
  26. package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +4 -4
  27. package/generator/build/lib/pygen/codegen/serializers/metadata_serializer.py +1 -1
  28. package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +1 -1
  29. package/generator/build/lib/pygen/codegen/serializers/operations_init_serializer.py +1 -1
  30. package/generator/build/lib/pygen/codegen/serializers/sample_serializer.py +1 -1
  31. package/generator/build/lib/pygen/codegen/serializers/test_serializer.py +5 -5
  32. package/generator/build/lib/pygen/codegen/templates/config.py.jinja2 +1 -1
  33. package/generator/build/lib/pygen/codegen/templates/config_container.py.jinja2 +1 -1
  34. package/generator/build/lib/pygen/codegen/templates/conftest.py.jinja2 +1 -1
  35. package/generator/build/lib/pygen/codegen/templates/init.py.jinja2 +1 -1
  36. package/generator/build/lib/pygen/codegen/templates/metadata.json.jinja2 +2 -2
  37. package/generator/build/lib/pygen/codegen/templates/model_dpg.py.jinja2 +2 -2
  38. package/generator/build/lib/pygen/codegen/templates/operation_group.py.jinja2 +1 -1
  39. package/generator/build/lib/pygen/codegen/templates/operation_groups_container.py.jinja2 +1 -1
  40. package/generator/build/lib/pygen/codegen/templates/operation_tools.jinja2 +1 -1
  41. package/generator/build/lib/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +1 -1
  42. package/generator/build/lib/pygen/codegen/templates/packaging_templates/README.md.jinja2 +38 -7
  43. package/generator/build/lib/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
  44. package/generator/build/lib/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +9 -9
  45. package/generator/build/lib/pygen/codegen/templates/request_builder.py.jinja2 +1 -1
  46. package/generator/build/lib/pygen/codegen/templates/sample.py.jinja2 +1 -1
  47. package/generator/build/lib/pygen/codegen/templates/test.py.jinja2 +6 -6
  48. package/generator/build/lib/pygen/codegen/templates/version.py.jinja2 +1 -1
  49. package/generator/build/lib/pygen/preprocess/__init__.py +1 -1
  50. package/generator/build/lib/pygen/utils.py +4 -0
  51. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  52. package/generator/pygen/__init__.py +176 -2
  53. package/generator/pygen/black.py +1 -1
  54. package/generator/pygen/codegen/__init__.py +4 -256
  55. package/generator/pygen/codegen/_utils.py +0 -3
  56. package/generator/pygen/codegen/models/__init__.py +1 -1
  57. package/generator/pygen/codegen/models/base_builder.py +1 -1
  58. package/generator/pygen/codegen/models/client.py +12 -12
  59. package/generator/pygen/codegen/models/code_model.py +10 -9
  60. package/generator/pygen/codegen/models/enum_type.py +4 -4
  61. package/generator/pygen/codegen/models/imports.py +1 -1
  62. package/generator/pygen/codegen/models/list_type.py +6 -6
  63. package/generator/pygen/codegen/models/lro_operation.py +1 -1
  64. package/generator/pygen/codegen/models/operation.py +16 -16
  65. package/generator/pygen/codegen/models/operation_group.py +4 -4
  66. package/generator/pygen/codegen/models/paging_operation.py +4 -4
  67. package/generator/pygen/codegen/models/parameter.py +8 -8
  68. package/generator/pygen/codegen/models/property.py +1 -1
  69. package/generator/pygen/codegen/models/request_builder.py +2 -2
  70. package/generator/pygen/codegen/models/request_builder_parameter.py +2 -2
  71. package/generator/pygen/codegen/models/response.py +3 -3
  72. package/generator/pygen/codegen/serializers/__init__.py +27 -28
  73. package/generator/pygen/codegen/serializers/builder_serializer.py +31 -31
  74. package/generator/pygen/codegen/serializers/client_serializer.py +4 -4
  75. package/generator/pygen/codegen/serializers/general_serializer.py +4 -4
  76. package/generator/pygen/codegen/serializers/metadata_serializer.py +1 -1
  77. package/generator/pygen/codegen/serializers/model_serializer.py +1 -1
  78. package/generator/pygen/codegen/serializers/operations_init_serializer.py +1 -1
  79. package/generator/pygen/codegen/serializers/sample_serializer.py +1 -1
  80. package/generator/pygen/codegen/serializers/test_serializer.py +5 -5
  81. package/generator/pygen/codegen/templates/config.py.jinja2 +1 -1
  82. package/generator/pygen/codegen/templates/config_container.py.jinja2 +1 -1
  83. package/generator/pygen/codegen/templates/conftest.py.jinja2 +1 -1
  84. package/generator/pygen/codegen/templates/init.py.jinja2 +1 -1
  85. package/generator/pygen/codegen/templates/metadata.json.jinja2 +2 -2
  86. package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +2 -2
  87. package/generator/pygen/codegen/templates/operation_group.py.jinja2 +1 -1
  88. package/generator/pygen/codegen/templates/operation_groups_container.py.jinja2 +1 -1
  89. package/generator/pygen/codegen/templates/operation_tools.jinja2 +1 -1
  90. package/generator/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +1 -1
  91. package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +38 -7
  92. package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
  93. package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +9 -9
  94. package/generator/pygen/codegen/templates/request_builder.py.jinja2 +1 -1
  95. package/generator/pygen/codegen/templates/sample.py.jinja2 +1 -1
  96. package/generator/pygen/codegen/templates/test.py.jinja2 +6 -6
  97. package/generator/pygen/codegen/templates/version.py.jinja2 +1 -1
  98. package/generator/pygen/preprocess/__init__.py +1 -1
  99. package/generator/pygen/utils.py +4 -0
  100. package/generator/test/unittests/test_optional_return_type.py +5 -5
  101. package/generator/test/unittests/test_parameter_ordering.py +5 -5
  102. package/generator/test/unittests/test_sort_schema.py +4 -4
  103. package/package.json +1 -1
@@ -14,10 +14,11 @@ from .request_builder import RequestBuilder, OverloadedRequestBuilder
14
14
  from .operation_group import OperationGroup
15
15
  from .utils import NamespaceType
16
16
  from .._utils import DEFAULT_HEADER_TEXT, DEFAULT_LICENSE_DESCRIPTION
17
+ from ... import OptionsDict
17
18
 
18
19
 
19
20
  def _is_legacy(options) -> bool:
20
- return not (options.get("version_tolerant") or options.get("low_level_client"))
21
+ return not (options.get("version-tolerant") or options.get("low-level-client"))
21
22
 
22
23
 
23
24
  def get_all_operation_groups_recursively(clients: List[Client]) -> List[OperationGroup]:
@@ -72,7 +73,7 @@ class CodeModel: # pylint: disable=too-many-public-methods, disable=too-many-in
72
73
  def __init__(
73
74
  self,
74
75
  yaml_data: Dict[str, Any],
75
- options: Dict[str, Any],
76
+ options: OptionsDict,
76
77
  ) -> None:
77
78
  self.yaml_data = yaml_data
78
79
  self.options = options
@@ -86,7 +87,7 @@ class CodeModel: # pylint: disable=too-many-public-methods, disable=too-many-in
86
87
  self.clients: List[Client] = [
87
88
  Client.from_yaml(client_yaml_data, self) for client_yaml_data in yaml_data["clients"]
88
89
  ]
89
- if self.options["models_mode"] and self.model_types:
90
+ if self.options["models-mode"] and self.model_types:
90
91
  self.sort_model_types()
91
92
  self.named_unions: List[CombinedType] = [
92
93
  t for t in self.types_map.values() if isinstance(t, CombinedType) and t.name
@@ -227,7 +228,7 @@ class CodeModel: # pylint: disable=too-many-public-methods, disable=too-many-in
227
228
  @property
228
229
  def rest_layer_name(self) -> str:
229
230
  """If we have a separate rest layer, what is its name?"""
230
- return "rest" if self.options["builders_visibility"] == "public" else "_rest"
231
+ return "rest" if self.options["builders-visibility"] == "public" else "_rest"
231
232
 
232
233
  @property
233
234
  def client_filename(self) -> str:
@@ -247,12 +248,12 @@ class CodeModel: # pylint: disable=too-many-public-methods, disable=too-many-in
247
248
  return (
248
249
  self.need_utils_utils(async_mode, client_namespace)
249
250
  or self.need_utils_serialization
250
- or self.options["models_mode"] == "dpg"
251
+ or self.options["models-mode"] == "dpg"
251
252
  )
252
253
 
253
254
  @property
254
255
  def need_utils_serialization(self) -> bool:
255
- return not self.options["client_side_validation"]
256
+ return not self.options["client-side-validation"]
256
257
 
257
258
  def need_utils_utils(self, async_mode: bool, client_namespace: str) -> bool:
258
259
  return (
@@ -267,7 +268,7 @@ class CodeModel: # pylint: disable=too-many-public-methods, disable=too-many-in
267
268
  (not async_mode)
268
269
  and self.is_top_namespace(client_namespace)
269
270
  and self.has_form_data
270
- and self.options["models_mode"] == "dpg"
271
+ and self.options["models-mode"] == "dpg"
271
272
  )
272
273
 
273
274
  def need_utils_etag(self, client_namespace: str) -> bool:
@@ -292,7 +293,7 @@ class CodeModel: # pylint: disable=too-many-public-methods, disable=too-many-in
292
293
  if client_namespace not in self._operations_folder_name:
293
294
  name = "operations"
294
295
  operation_groups = self.client_namespace_types.get(client_namespace, ClientNamespaceType()).operation_groups
295
- if self.options["version_tolerant"] and all(og.is_mixin for og in operation_groups):
296
+ if self.options["version-tolerant"] and all(og.is_mixin for og in operation_groups):
296
297
  name = f"_{name}"
297
298
  self._operations_folder_name[client_namespace] = name
298
299
  return self._operations_folder_name[client_namespace]
@@ -427,7 +428,7 @@ class CodeModel: # pylint: disable=too-many-public-methods, disable=too-many-in
427
428
  license_header = self.yaml_data.get("licenseInfo", {}).get("header", "")
428
429
  else:
429
430
  # typespec azure case without custom license and swagger case
430
- license_header = self.options.get("header_text") or DEFAULT_HEADER_TEXT
431
+ license_header = self.options.get("header-text") or DEFAULT_HEADER_TEXT
431
432
  if license_header:
432
433
  license_header = license_header.replace("\n", "\n# ")
433
434
  license_header = (
@@ -170,7 +170,7 @@ class EnumType(BaseType):
170
170
  :return: The type annotation for this schema
171
171
  :rtype: str
172
172
  """
173
- if self.code_model.options["models_mode"]:
173
+ if self.code_model.options["models-mode"]:
174
174
 
175
175
  module_name = ""
176
176
  if kwargs.get("need_model_alias", True):
@@ -190,13 +190,13 @@ class EnumType(BaseType):
190
190
  return self.value_type.get_declaration(value)
191
191
 
192
192
  def docstring_text(self, **kwargs: Any) -> str:
193
- if self.code_model.options["models_mode"]:
193
+ if self.code_model.options["models-mode"]:
194
194
  return self.name
195
195
  return self.value_type.type_annotation(**kwargs)
196
196
 
197
197
  def docstring_type(self, **kwargs: Any) -> str:
198
198
  """The python type used for RST syntax input and type annotation."""
199
- if self.code_model.options["models_mode"]:
199
+ if self.code_model.options["models-mode"]:
200
200
  type_annotation = self.value_type.type_annotation(**kwargs)
201
201
  enum_type_annotation = f"{self.client_namespace}.models.{self.name}"
202
202
  return f"{type_annotation} or ~{enum_type_annotation}"
@@ -230,7 +230,7 @@ class EnumType(BaseType):
230
230
  def imports(self, **kwargs: Any) -> FileImport:
231
231
  file_import = FileImport(self.code_model)
232
232
  file_import.merge(self.value_type.imports(**kwargs))
233
- if self.code_model.options["models_mode"]:
233
+ if self.code_model.options["models-mode"]:
234
234
  file_import.add_submodule_import("typing", "Union", ImportType.STDLIB, TypingSection.CONDITIONAL)
235
235
 
236
236
  serialize_namespace = kwargs.get("serialize_namespace", self.code_model.namespace)
@@ -255,7 +255,7 @@ class FileImport:
255
255
  msrest_import_type: MsrestImportType,
256
256
  typing_section: TypingSection,
257
257
  ):
258
- if self.code_model.options["client_side_validation"]:
258
+ if self.code_model.options["client-side-validation"]:
259
259
  if msrest_import_type == MsrestImportType.Module:
260
260
  self.add_import("msrest.serialization", ImportType.SDKCORE, typing_section)
261
261
  else:
@@ -34,9 +34,9 @@ class ListType(BaseType):
34
34
 
35
35
  def type_annotation(self, **kwargs: Any) -> str:
36
36
  if (
37
- self.code_model.options["version_tolerant"]
37
+ self.code_model.options["version-tolerant"]
38
38
  and self.element_type.is_xml
39
- and not self.code_model.options["models_mode"]
39
+ and not self.code_model.options["models-mode"]
40
40
  ):
41
41
  # this means we're version tolerant XML, we just return the XML element
42
42
  return self.element_type.type_annotation(**kwargs)
@@ -68,13 +68,13 @@ class ListType(BaseType):
68
68
  return ", ".join(attrs_list)
69
69
 
70
70
  def docstring_type(self, **kwargs: Any) -> str:
71
- if self.code_model.options["version_tolerant"] and self.element_type.xml_metadata:
71
+ if self.code_model.options["version-tolerant"] and self.element_type.xml_metadata:
72
72
  # this means we're version tolerant XML, we just return the XML element
73
73
  return self.element_type.docstring_type(**kwargs)
74
74
  return f"list[{self.element_type.docstring_type(**kwargs)}]"
75
75
 
76
76
  def docstring_text(self, **kwargs: Any) -> str:
77
- if self.code_model.options["version_tolerant"] and self.element_type.xml_metadata:
77
+ if self.code_model.options["version-tolerant"] and self.element_type.xml_metadata:
78
78
  # this means we're version tolerant XML, we just return the XML element
79
79
  return self.element_type.docstring_text(**kwargs)
80
80
  return f"list of {self.element_type.docstring_text(**kwargs)}"
@@ -129,9 +129,9 @@ class ListType(BaseType):
129
129
  def imports(self, **kwargs: Any) -> FileImport:
130
130
  file_import = FileImport(self.code_model)
131
131
  if not (
132
- self.code_model.options["version_tolerant"]
132
+ self.code_model.options["version-tolerant"]
133
133
  and self.element_type.is_xml
134
- and not self.code_model.options["models_mode"]
134
+ and not self.code_model.options["models-mode"]
135
135
  ):
136
136
  file_import.add_submodule_import("typing", "List", ImportType.STDLIB, TypingSection.CONDITIONAL)
137
137
  file_import.merge(self.element_type.imports(**kwargs))
@@ -125,7 +125,7 @@ class LROOperationBase(OperationBase[LROResponseType]):
125
125
  ImportType.SDKCORE,
126
126
  )
127
127
  if (
128
- self.code_model.options["models_mode"] == "dpg"
128
+ self.code_model.options["models-mode"] == "dpg"
129
129
  and self.lro_response
130
130
  and self.lro_response.type
131
131
  and self.lro_response.type.type == "model"
@@ -124,7 +124,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
124
124
  return successful_response_with_body and successful_response_without_body
125
125
 
126
126
  def response_type_annotation(self, **kwargs) -> str:
127
- if self.code_model.options["head_as_boolean"] and self.request_builder.method.lower() == "head":
127
+ if self.code_model.options["head-as-boolean"] and self.request_builder.method.lower() == "head":
128
128
  return "bool"
129
129
  response_type_annotations: OrderedSet[str] = {
130
130
  response.type_annotation(**kwargs): None for response in self.responses if response.type
@@ -148,13 +148,13 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
148
148
  return retval
149
149
 
150
150
  def cls_type_annotation(self, *, async_mode: bool, **kwargs: Any) -> str:
151
- if self.request_builder.method.lower() == "head" and self.code_model.options["head_as_boolean"]:
151
+ if self.request_builder.method.lower() == "head" and self.code_model.options["head-as-boolean"]:
152
152
  return "ClsType[None]"
153
153
  return f"ClsType[{self.response_type_annotation(async_mode=async_mode, **kwargs)}]"
154
154
 
155
155
  def _response_docstring_helper(self, attr_name: str, **kwargs: Any) -> str:
156
156
  responses_with_body = [r for r in self.responses if r.type]
157
- if self.request_builder.method.lower() == "head" and self.code_model.options["head_as_boolean"]:
157
+ if self.request_builder.method.lower() == "head" and self.code_model.options["head-as-boolean"]:
158
158
  return "bool"
159
159
  if responses_with_body:
160
160
  response_docstring_values: OrderedSet[str] = {
@@ -170,9 +170,9 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
170
170
 
171
171
  def response_docstring_text(self, **kwargs) -> str:
172
172
  retval = self._response_docstring_helper("docstring_text", **kwargs)
173
- if not self.code_model.options["version_tolerant"]:
173
+ if not self.code_model.options["version-tolerant"]:
174
174
  retval += " or the result of cls(response)"
175
- if self.code_model.options["models_mode"] == "dpg" and any(
175
+ if self.code_model.options["models-mode"] == "dpg" and any(
176
176
  isinstance(r.type, ModelType) for r in self.responses
177
177
  ):
178
178
  r = next(r for r in self.responses if isinstance(r.type, ModelType))
@@ -202,7 +202,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
202
202
  exception_schema = default_exceptions[0].type
203
203
  if isinstance(exception_schema, ModelType):
204
204
  return exception_schema.type_annotation(skip_quote=True)
205
- return None if self.code_model.options["models_mode"] == "dpg" else "'object'"
205
+ return None if self.code_model.options["models-mode"] == "dpg" else "'object'"
206
206
 
207
207
  @property
208
208
  def non_default_errors(self) -> List[Response]:
@@ -248,7 +248,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
248
248
  async_mode=async_mode, need_import_iobase=self.need_import_iobase, **kwargs
249
249
  )
250
250
  )
251
- if self.code_model.options["models_mode"]:
251
+ if self.code_model.options["models-mode"]:
252
252
  for exception in self.exceptions:
253
253
  file_import.merge(
254
254
  exception.imports_for_multiapi(
@@ -275,7 +275,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
275
275
  @property
276
276
  def need_validation(self) -> bool:
277
277
  """Whether we need parameter / operation validation. For API version."""
278
- return self.code_model.options["validate_versioning"] and (
278
+ return self.code_model.options["validate-versioning"] and (
279
279
  bool(self.added_on) or any(p for p in self.parameters if p.added_on)
280
280
  )
281
281
 
@@ -287,7 +287,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
287
287
  ) -> FileImport:
288
288
  """Helper method to get a request builder import."""
289
289
  file_import = FileImport(self.code_model)
290
- if self.code_model.options["builders_visibility"] != "embedded":
290
+ if self.code_model.options["builders-visibility"] != "embedded":
291
291
  group_name = request_builder.group_name
292
292
  rest_import_path = "..." if async_mode else ".."
293
293
  if group_name:
@@ -304,7 +304,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
304
304
  import_type=ImportType.LOCAL,
305
305
  alias="rest",
306
306
  )
307
- if self.code_model.options["builders_visibility"] == "embedded" and async_mode:
307
+ if self.code_model.options["builders-visibility"] == "embedded" and async_mode:
308
308
  file_import.add_submodule_import(
309
309
  self.code_model.get_relative_import_path(
310
310
  serialize_namespace,
@@ -341,7 +341,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
341
341
  file_import.merge(
342
342
  response.imports(async_mode=async_mode, need_import_iobase=self.need_import_iobase, **kwargs)
343
343
  )
344
- if self.code_model.options["models_mode"]:
344
+ if self.code_model.options["models-mode"]:
345
345
  for exception in self.exceptions:
346
346
  file_import.merge(exception.imports(async_mode=async_mode, **kwargs))
347
347
 
@@ -369,7 +369,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
369
369
  errors.extend(["StreamConsumedError", "StreamClosedError"])
370
370
  for error in errors:
371
371
  file_import.add_submodule_import("exceptions", error, ImportType.SDKCORE)
372
- if self.code_model.options["azure_arm"]:
372
+ if self.code_model.options["azure-arm"]:
373
373
  file_import.add_submodule_import("azure.mgmt.core.exceptions", "ARMErrorFormat", ImportType.SDKCORE)
374
374
  file_import.add_mutable_mapping_import()
375
375
 
@@ -418,7 +418,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
418
418
  "HttpResponse",
419
419
  ImportType.SDKCORE,
420
420
  )
421
- if self.code_model.options["builders_visibility"] == "embedded" and not async_mode:
421
+ if self.code_model.options["builders-visibility"] == "embedded" and not async_mode:
422
422
  file_import.merge(self.request_builder.imports(**kwargs))
423
423
  file_import.add_submodule_import(
424
424
  f"{'' if self.code_model.is_azure_flavor else 'runtime.'}pipeline",
@@ -439,7 +439,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
439
439
  file_import.merge(self.get_request_builder_import(self.request_builder, async_mode, serialize_namespace))
440
440
  if self.overloads:
441
441
  file_import.add_submodule_import("typing", "overload", ImportType.STDLIB)
442
- if self.code_model.options["models_mode"] == "dpg":
442
+ if self.code_model.options["models-mode"] == "dpg":
443
443
  relative_path = self.code_model.get_relative_import_path(
444
444
  serialize_namespace, module_name="_utils.model_base"
445
445
  )
@@ -491,7 +491,7 @@ class OperationBase( # pylint: disable=too-many-public-methods,too-many-instanc
491
491
  # in a mixin
492
492
  basename = self.code_model.clients[0].legacy_filename
493
493
 
494
- if basename == "operations" or self.code_model.options["combine_operation_files"]:
494
+ if basename == "operations" or self.code_model.options["combine-operation-files"]:
495
495
  return "_operations"
496
496
  return f"_{basename}_operations"
497
497
 
@@ -543,7 +543,7 @@ class Operation(OperationBase[Response]):
543
543
  "distributed_trace_async",
544
544
  ImportType.SDKCORE,
545
545
  )
546
- if self.has_response_body and not self.has_optional_return_type and not self.code_model.options["models_mode"]:
546
+ if self.has_response_body and not self.has_optional_return_type and not self.code_model.options["models-mode"]:
547
547
  file_import.add_submodule_import("typing", "cast", ImportType.STDLIB)
548
548
 
549
549
  return file_import
@@ -40,7 +40,7 @@ class OperationGroup(BaseModel):
40
40
  self.operations = operations
41
41
  self.api_versions = api_versions
42
42
  self.operation_groups: List[OperationGroup] = []
43
- if self.code_model.options["show_operations"]:
43
+ if self.code_model.options["show-operations"]:
44
44
  self.operation_groups = [
45
45
  OperationGroup.from_yaml(op_group, code_model, client)
46
46
  for op_group in self.yaml_data.get("operationGroups", [])
@@ -78,7 +78,7 @@ class OperationGroup(BaseModel):
78
78
  for operation in self.operations:
79
79
  file_import.merge(operation.imports_for_multiapi(async_mode, **kwargs))
80
80
  if (self.code_model.model_types or self.code_model.enums) and self.code_model.options[
81
- "models_mode"
81
+ "models-mode"
82
82
  ] == "msrest":
83
83
  file_import.add_submodule_import(relative_path, "models", ImportType.LOCAL, alias="_models")
84
84
  return file_import
@@ -110,7 +110,7 @@ class OperationGroup(BaseModel):
110
110
 
111
111
  for operation in self.operations:
112
112
  file_import.merge(operation.imports(async_mode, **kwargs))
113
- if not self.code_model.options["combine_operation_files"]:
113
+ if not self.code_model.options["combine-operation-files"]:
114
114
  for og in self.operation_groups:
115
115
  file_import.add_submodule_import(
116
116
  self.code_model.get_relative_import_path(
@@ -138,7 +138,7 @@ class OperationGroup(BaseModel):
138
138
  # for multiapi
139
139
  if (
140
140
  (self.code_model.public_model_types)
141
- and self.code_model.options["models_mode"] == "msrest"
141
+ and self.code_model.options["models-mode"] == "msrest"
142
142
  and not self.is_mixin
143
143
  ):
144
144
  file_import.add_submodule_import(
@@ -92,14 +92,14 @@ class PagingOperationBase(OperationBase[PagingResponseType]):
92
92
  if not wire_name:
93
93
  # That's an ok scenario, it just means no next page possible
94
94
  return None
95
- if self.code_model.options["models_mode"] == "msrest":
95
+ if self.code_model.options["models-mode"] == "msrest":
96
96
  return self._get_attr_name(wire_name)
97
97
  return wire_name
98
98
 
99
99
  @property
100
100
  def item_name(self) -> str:
101
101
  wire_name = self.yaml_data["itemName"]
102
- if self.code_model.options["models_mode"] == "msrest":
102
+ if self.code_model.options["models-mode"] == "msrest":
103
103
  # we don't use the paging model for dpg
104
104
  return self._get_attr_name(wire_name)
105
105
  return wire_name
@@ -135,7 +135,7 @@ class PagingOperationBase(OperationBase[PagingResponseType]):
135
135
  )
136
136
  if (
137
137
  self.next_request_builder
138
- and self.code_model.options["builders_visibility"] == "embedded"
138
+ and self.code_model.options["builders-visibility"] == "embedded"
139
139
  and not async_mode
140
140
  ):
141
141
  file_import.merge(self.next_request_builder.imports(**kwargs))
@@ -168,7 +168,7 @@ class PagingOperationBase(OperationBase[PagingResponseType]):
168
168
  "case_insensitive_dict",
169
169
  ImportType.SDKCORE,
170
170
  )
171
- if self.code_model.options["models_mode"] == "dpg":
171
+ if self.code_model.options["models-mode"] == "dpg":
172
172
  relative_path = self.code_model.get_relative_import_path(
173
173
  serialize_namespace, module_name="_utils.model_base"
174
174
  )
@@ -237,7 +237,7 @@ class BodyParameter(_ParameterBase):
237
237
  return (
238
238
  self.type.is_form_data
239
239
  or bool(self.entries)
240
- or ("multipart/form-data" in self.content_types and self.code_model.options["from_typespec"])
240
+ or ("multipart/form-data" in self.content_types and self.code_model.options["from-typespec"])
241
241
  )
242
242
 
243
243
  @property
@@ -314,7 +314,7 @@ class Parameter(_ParameterBase):
314
314
 
315
315
  @property
316
316
  def hide_in_operation_signature(self) -> bool:
317
- if self.code_model.options["version_tolerant"] and self.client_name == "maxpagesize":
317
+ if self.code_model.options["version-tolerant"] and self.client_name == "maxpagesize":
318
318
  return True
319
319
  return self.is_continuation_token
320
320
 
@@ -342,7 +342,7 @@ class Parameter(_ParameterBase):
342
342
  ) -> ParameterMethodLocation:
343
343
  if not self.in_method_signature:
344
344
  raise ValueError(f"Parameter '{self.client_name}' is not in the method.")
345
- if self.code_model.options["models_mode"] == "dpg" and self.in_flattened_body:
345
+ if self.code_model.options["models-mode"] == "dpg" and self.in_flattened_body:
346
346
  return ParameterMethodLocation.KEYWORD_ONLY
347
347
  if self.grouper:
348
348
  return ParameterMethodLocation.POSITIONAL
@@ -356,7 +356,7 @@ class Parameter(_ParameterBase):
356
356
  ParameterLocation.HEADER,
357
357
  ParameterLocation.QUERY,
358
358
  )
359
- if self.code_model.options["only_path_and_body_params_positional"] and query_or_header:
359
+ if self.code_model.options["only-path-and-body-params-positional"] and query_or_header:
360
360
  return ParameterMethodLocation.KEYWORD_ONLY
361
361
  # for optional path parameter, we need to use keyword only
362
362
  if self.location == ParameterLocation.PATH and self.optional:
@@ -385,15 +385,15 @@ class ClientParameter(Parameter):
385
385
  return ParameterMethodLocation.KWARG
386
386
  if (
387
387
  self.is_host
388
- and (self.code_model.options["version_tolerant"] or self.code_model.options["low_level_client"])
389
- and not self.code_model.options["azure_arm"]
388
+ and (self.code_model.options["version-tolerant"] or self.code_model.options["low-level-client"])
389
+ and not self.code_model.options["azure-arm"]
390
390
  ):
391
391
  # this means i am the base url
392
392
  return ParameterMethodLocation.KEYWORD_ONLY
393
393
  if (
394
394
  self.client_default_value is not None
395
- and self.code_model.options["from_typespec"]
396
- and not self.code_model.options["azure_arm"]
395
+ and self.code_model.options["from-typespec"]
396
+ and not self.code_model.options["azure-arm"]
397
397
  ):
398
398
  return ParameterMethodLocation.KEYWORD_ONLY
399
399
  return ParameterMethodLocation.POSITIONAL
@@ -152,7 +152,7 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
152
152
  file_import.merge(self.type.imports(**kwargs))
153
153
  if (self.optional and self.client_default_value is None) or self.readonly:
154
154
  file_import.add_submodule_import("typing", "Optional", ImportType.STDLIB)
155
- if self.code_model.options["models_mode"] == "dpg":
155
+ if self.code_model.options["models-mode"] == "dpg":
156
156
  serialize_namespace = kwargs.get("serialize_namespace", self.code_model.namespace)
157
157
  file_import.add_submodule_import(
158
158
  self.code_model.get_relative_import_path(serialize_namespace, module_name="_utils.model_base"),
@@ -110,7 +110,7 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder
110
110
  msrest_import_type=MsrestImportType.Serializer,
111
111
  typing_section=TypingSection.REGULAR,
112
112
  )
113
- if self.overloads and self.code_model.options["builders_visibility"] != "embedded":
113
+ if self.overloads and self.code_model.options["builders-visibility"] != "embedded":
114
114
  file_import.add_submodule_import("typing", "overload", ImportType.STDLIB)
115
115
  return file_import
116
116
 
@@ -127,7 +127,7 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder
127
127
  client: "Client",
128
128
  ) -> str:
129
129
  additional_mark = ""
130
- if code_model.options["combine_operation_files"] and code_model.options["builders_visibility"] == "embedded":
130
+ if code_model.options["combine-operation-files"] and code_model.options["builders-visibility"] == "embedded":
131
131
  additional_mark = yaml_data["groupName"] or client.yaml_data["builderPadName"]
132
132
  names = [
133
133
  "build",
@@ -26,7 +26,7 @@ class RequestBuilderBodyParameter(BodyParameter):
26
26
  if (
27
27
  isinstance(self.type, (BinaryType, StringType))
28
28
  or any("xml" in ct for ct in self.content_types)
29
- or self.code_model.options["models_mode"] == "dpg"
29
+ or self.code_model.options["models-mode"] == "dpg"
30
30
  ):
31
31
  self.client_name = "content"
32
32
  else:
@@ -40,7 +40,7 @@ class RequestBuilderBodyParameter(BodyParameter):
40
40
  @property
41
41
  def in_method_signature(self) -> bool:
42
42
  return (
43
- super().in_method_signature and not self.is_partial_body and self.code_model.options["models_mode"] != "dpg"
43
+ super().in_method_signature and not self.is_partial_body and self.code_model.options["models-mode"] != "dpg"
44
44
  )
45
45
 
46
46
  @property
@@ -191,7 +191,7 @@ class PagingResponse(Response):
191
191
 
192
192
  def docstring_text(self, **kwargs: Any) -> str:
193
193
  base_description = "An iterator like instance of "
194
- if not self.code_model.options["version_tolerant"]:
194
+ if not self.code_model.options["version-tolerant"]:
195
195
  base_description += "either "
196
196
  return base_description + self.item_type.docstring_text(**kwargs)
197
197
 
@@ -266,7 +266,7 @@ class LROResponse(Response):
266
266
  def docstring_text(self, **kwargs) -> str:
267
267
  super_text = super().docstring_text(**kwargs)
268
268
  base_description = f"An instance of {self.get_poller(kwargs.get('async_mode', False))} that returns "
269
- if not self.code_model.options["version_tolerant"]:
269
+ if not self.code_model.options["version-tolerant"]:
270
270
  base_description += "either "
271
271
  return base_description + super_text
272
272
 
@@ -321,7 +321,7 @@ class LROPagingResponse(LROResponse, PagingResponse):
321
321
 
322
322
  def docstring_text(self, **kwargs) -> str:
323
323
  base_description = "An instance of LROPoller that returns an iterator like instance of "
324
- if not self.code_model.options["version_tolerant"]:
324
+ if not self.code_model.options["version-tolerant"]:
325
325
  base_description += "either "
326
326
  return base_description + Response.docstring_text(self)
327
327