@autorest/python 5.13.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 (101) hide show
  1. package/ChangeLog.md +67 -0
  2. package/autorest/__init__.py +1 -2
  3. package/autorest/black/__init__.py +12 -5
  4. package/autorest/codegen/__init__.py +239 -105
  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 +21 -24
  9. package/autorest/codegen/models/client.py +70 -20
  10. package/autorest/codegen/models/code_model.py +144 -129
  11. package/autorest/codegen/models/constant_schema.py +32 -16
  12. package/autorest/codegen/models/credential_model.py +55 -0
  13. package/autorest/codegen/models/credential_schema.py +21 -16
  14. package/autorest/codegen/models/credential_schema_policy.py +11 -15
  15. package/autorest/codegen/models/dictionary_schema.py +27 -24
  16. package/autorest/codegen/models/enum_schema.py +41 -62
  17. package/autorest/codegen/models/imports.py +72 -41
  18. package/autorest/codegen/models/list_schema.py +40 -18
  19. package/autorest/codegen/models/lro_operation.py +61 -25
  20. package/autorest/codegen/models/lro_paging_operation.py +5 -6
  21. package/autorest/codegen/models/object_schema.py +113 -59
  22. package/autorest/codegen/models/operation.py +251 -111
  23. package/autorest/codegen/models/operation_group.py +67 -32
  24. package/autorest/codegen/models/paging_operation.py +48 -21
  25. package/autorest/codegen/models/parameter.py +182 -90
  26. package/autorest/codegen/models/parameter_list.py +184 -163
  27. package/autorest/codegen/models/primitive_schemas.py +89 -70
  28. package/autorest/codegen/models/property.py +49 -31
  29. package/autorest/codegen/models/request_builder.py +67 -32
  30. package/autorest/codegen/models/request_builder_parameter.py +54 -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 +35 -17
  34. package/autorest/codegen/models/utils.py +24 -1
  35. package/autorest/codegen/serializers/__init__.py +273 -89
  36. package/autorest/codegen/serializers/builder_serializer.py +711 -333
  37. package/autorest/codegen/serializers/client_serializer.py +114 -43
  38. package/autorest/codegen/serializers/general_serializer.py +84 -25
  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 +42 -14
  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 +9 -8
  45. package/autorest/codegen/serializers/operation_groups_serializer.py +20 -8
  46. package/autorest/codegen/serializers/operations_init_serializer.py +23 -11
  47. package/autorest/codegen/serializers/patch_serializer.py +14 -2
  48. package/autorest/codegen/serializers/{rest_serializer.py → request_builders_serializer.py} +29 -12
  49. package/autorest/codegen/serializers/utils.py +60 -21
  50. package/autorest/codegen/templates/CHANGELOG.md.jinja2 +6 -0
  51. package/autorest/codegen/templates/LICENSE.jinja2 +21 -0
  52. package/autorest/codegen/templates/MANIFEST.in.jinja2 +7 -0
  53. package/autorest/codegen/templates/README.md.jinja2 +105 -0
  54. package/autorest/codegen/templates/config.py.jinja2 +4 -4
  55. package/autorest/codegen/templates/dev_requirements.txt.jinja2 +10 -0
  56. package/autorest/codegen/templates/enum.py.jinja2 +1 -1
  57. package/autorest/codegen/templates/enum_container.py.jinja2 +0 -1
  58. package/autorest/codegen/templates/init.py.jinja2 +9 -6
  59. package/autorest/codegen/templates/keywords.jinja2 +14 -1
  60. package/autorest/codegen/templates/lro_operation.py.jinja2 +5 -7
  61. package/autorest/codegen/templates/lro_paging_operation.py.jinja2 +5 -7
  62. package/autorest/codegen/templates/metadata.json.jinja2 +10 -9
  63. package/autorest/codegen/templates/model.py.jinja2 +1 -6
  64. package/autorest/codegen/templates/model_init.py.jinja2 +7 -4
  65. package/autorest/codegen/templates/operation.py.jinja2 +8 -11
  66. package/autorest/codegen/templates/operation_group.py.jinja2 +15 -18
  67. package/autorest/codegen/templates/operation_groups_container.py.jinja2 +1 -2
  68. package/autorest/codegen/templates/operations_folder_init.py.jinja2 +4 -0
  69. package/autorest/codegen/templates/paging_operation.py.jinja2 +7 -8
  70. package/autorest/codegen/templates/patch.py.jinja2 +18 -29
  71. package/autorest/codegen/templates/request_builder.py.jinja2 +19 -14
  72. package/autorest/codegen/templates/setup.py.jinja2 +79 -20
  73. package/autorest/codegen/templates/vendor.py.jinja2 +12 -2
  74. package/autorest/jsonrpc/__init__.py +7 -12
  75. package/autorest/jsonrpc/localapi.py +4 -3
  76. package/autorest/jsonrpc/server.py +13 -6
  77. package/autorest/jsonrpc/stdstream.py +13 -6
  78. package/autorest/m2r/__init__.py +5 -8
  79. package/autorest/multiapi/__init__.py +24 -14
  80. package/autorest/multiapi/models/client.py +21 -11
  81. package/autorest/multiapi/models/code_model.py +23 -10
  82. package/autorest/multiapi/models/config.py +4 -1
  83. package/autorest/multiapi/models/constant_global_parameter.py +1 -0
  84. package/autorest/multiapi/models/global_parameter.py +2 -1
  85. package/autorest/multiapi/models/global_parameters.py +14 -8
  86. package/autorest/multiapi/models/imports.py +35 -18
  87. package/autorest/multiapi/models/mixin_operation.py +5 -5
  88. package/autorest/multiapi/models/operation_group.py +2 -1
  89. package/autorest/multiapi/models/operation_mixin_group.py +21 -10
  90. package/autorest/multiapi/serializers/__init__.py +18 -23
  91. package/autorest/multiapi/serializers/import_serializer.py +47 -15
  92. package/autorest/multiapi/serializers/multiapi_serializer.py +17 -17
  93. package/autorest/multiapi/templates/multiapi_operations_mixin.py.jinja2 +1 -1
  94. package/autorest/multiapi/utils.py +3 -3
  95. package/autorest/namer/__init__.py +2 -4
  96. package/autorest/namer/name_converter.py +200 -103
  97. package/autorest/namer/python_mappings.py +10 -22
  98. package/package.json +3 -3
  99. package/run-python3.js +2 -3
  100. package/venvtools.py +1 -1
  101. package/autorest/codegen/models/rest.py +0 -42
@@ -12,7 +12,11 @@ from ...jsonrpc import AutorestAPI
12
12
 
13
13
  class MultiAPISerializer:
14
14
  def __init__(
15
- self, conf: Dict[str, Any], async_mode: bool, autorestapi: AutorestAPI, service_client_filename: str
15
+ self,
16
+ conf: Dict[str, Any],
17
+ async_mode: bool,
18
+ autorestapi: AutorestAPI,
19
+ service_client_filename: str,
16
20
  ):
17
21
  self.conf = conf
18
22
  self.async_mode = async_mode
@@ -33,64 +37,60 @@ class MultiAPISerializer:
33
37
  return Path(filename)
34
38
 
35
39
  def serialize(self):
36
- self._autorestapi.write_file(self._get_file_path("__init__.py"), self.serialize_multiapi_init())
40
+ self._autorestapi.write_file(
41
+ self._get_file_path("__init__.py"), self.serialize_multiapi_init()
42
+ )
37
43
 
38
44
  service_client_filename_with_py_extension = self.service_client_filename + ".py"
39
45
  self._autorestapi.write_file(
40
46
  self._get_file_path(service_client_filename_with_py_extension),
41
- self.serialize_multiapi_client()
47
+ self.serialize_multiapi_client(),
42
48
  )
43
49
 
44
50
  configuration_filename = "_configuration.py"
45
51
  self._autorestapi.write_file(
46
52
  self._get_file_path(configuration_filename),
47
- self.serialize_multiapi_config()
53
+ self.serialize_multiapi_config(),
48
54
  )
49
55
 
50
56
  operation_mixins_filename = "_operations_mixin.py"
51
57
  if self.conf["mixin_operations"]:
52
58
  self._autorestapi.write_file(
53
59
  self._get_file_path(operation_mixins_filename),
54
- self.serialize_multiapi_operation_mixins()
60
+ self.serialize_multiapi_operation_mixins(),
55
61
  )
56
62
 
57
63
  if self._autorestapi.read_file("_version.py"):
58
64
  self._autorestapi.write_file(
59
- "_version.py",
60
- self._autorestapi.read_file("_version.py")
65
+ "_version.py", self._autorestapi.read_file("_version.py")
61
66
  )
62
67
  elif self._autorestapi.read_file("version.py"):
63
68
  self._autorestapi.write_file(
64
- "_version.py",
65
- self._autorestapi.read_file("version.py")
69
+ "_version.py", self._autorestapi.read_file("version.py")
66
70
  )
67
71
  else:
68
72
  self._autorestapi.write_file(
69
- Path("_version.py"),
70
- self.serialize_multiapi_version()
73
+ Path("_version.py"), self.serialize_multiapi_version()
71
74
  )
72
75
 
73
76
  # don't erase patch file
74
77
  if self._autorestapi.read_file("_patch.py"):
75
78
  self._autorestapi.write_file(
76
- "_patch.py",
77
- self._autorestapi.read_file("_patch.py")
79
+ "_patch.py", self._autorestapi.read_file("_patch.py")
78
80
  )
79
81
 
80
82
  self._autorestapi.write_file(
81
- Path("models.py"),
82
- self.serialize_multiapi_models()
83
+ Path("models.py"), self.serialize_multiapi_models()
83
84
  )
84
85
 
85
86
  self._autorestapi.write_file(Path("py.typed"), "# Marker file for PEP 561.")
86
87
 
87
-
88
88
  def serialize_multiapi_init(self) -> str:
89
89
  template = self.env.get_template("multiapi_init.py.jinja2")
90
90
  return template.render(
91
91
  service_client_filename=self.service_client_filename,
92
92
  client_name=self.conf["client_name"],
93
- async_mode=self.async_mode
93
+ async_mode=self.async_mode,
94
94
  )
95
95
 
96
96
  def serialize_multiapi_client(self) -> str:
@@ -34,5 +34,5 @@ class {{ code_model.service_client.name }}OperationsMixin(object):
34
34
  mixin_instance._serialize.client_side_validation = False
35
35
  {% endif %}
36
36
  mixin_instance._deserialize = Deserializer(self._models_dict(api_version))
37
- return {{ "await " if mixin_operation.coroutine(async_mode) }}mixin_instance.{{ mixin_operation.name }}({{ mixin_operation.call }}{{ ", **kwargs" if mixin_operation.call else "**kwargs" }})
37
+ return {{ "await " if mixin_operation.coroutine(async_mode) }}mixin_instance.{{ mixin_operation.name }}({{ mixin_operation.call(async_mode) }})
38
38
  {% endfor %}
@@ -12,14 +12,14 @@ _LOGGER = logging.getLogger(__name__)
12
12
  def _sync_or_async(async_mode: bool) -> str:
13
13
  return "async" if async_mode else "sync"
14
14
 
15
+
15
16
  def _get_default_api_version_from_list(
16
17
  mod_to_api_version: Dict[str, str],
17
18
  api_versions_list: List[str],
18
19
  preview_mode: bool,
19
- user_specified_default_api: Optional[str]
20
+ user_specified_default_api: Optional[str],
20
21
  ) -> str:
21
- """Get the floating latest, from a random list of API versions.
22
- """
22
+ """Get the floating latest, from a random list of API versions."""
23
23
 
24
24
  # I need user_specified_default_api to be v2019_06_07_preview shaped if it exists, let's be smart
25
25
  # and change it automatically so I can take both syntax as input
@@ -16,10 +16,8 @@ _LOGGER = logging.getLogger(__name__)
16
16
 
17
17
 
18
18
  class Namer(YamlUpdatePlugin):
19
- """Add Python naming information.
20
- """
19
+ """Add Python naming information."""
21
20
 
22
21
  def update_yaml(self, yaml_data: Dict[str, Any]) -> None:
23
- """Convert in place the YAML str.
24
- """
22
+ """Convert in place the YAML str."""
25
23
  NameConverter.convert_yaml_names(yaml_data)