@autorest/python 5.16.0 → 5.19.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 (96) hide show
  1. package/ChangeLog.md +79 -4
  2. package/README.md +30 -4
  3. package/autorest/__init__.py +1 -1
  4. package/autorest/codegen/__init__.py +55 -211
  5. package/autorest/codegen/models/__init__.py +116 -83
  6. package/autorest/codegen/models/base_builder.py +49 -88
  7. package/autorest/codegen/models/base_model.py +1 -1
  8. package/autorest/codegen/models/{base_schema.py → base_type.py} +61 -39
  9. package/autorest/codegen/models/client.py +165 -53
  10. package/autorest/codegen/models/code_model.py +122 -257
  11. package/autorest/codegen/models/combined_type.py +107 -0
  12. package/autorest/codegen/models/{constant_schema.py → constant_type.py} +49 -40
  13. package/autorest/codegen/models/credential_types.py +224 -0
  14. package/autorest/codegen/models/dictionary_type.py +131 -0
  15. package/autorest/codegen/models/enum_type.py +195 -0
  16. package/autorest/codegen/models/imports.py +80 -2
  17. package/autorest/codegen/models/list_type.py +149 -0
  18. package/autorest/codegen/models/lro_operation.py +79 -156
  19. package/autorest/codegen/models/lro_paging_operation.py +28 -11
  20. package/autorest/codegen/models/model_type.py +262 -0
  21. package/autorest/codegen/models/operation.py +331 -298
  22. package/autorest/codegen/models/operation_group.py +54 -91
  23. package/autorest/codegen/models/paging_operation.py +82 -123
  24. package/autorest/codegen/models/parameter.py +289 -396
  25. package/autorest/codegen/models/parameter_list.py +355 -360
  26. package/autorest/codegen/models/primitive_types.py +544 -0
  27. package/autorest/codegen/models/property.py +123 -139
  28. package/autorest/codegen/models/request_builder.py +130 -102
  29. package/autorest/codegen/models/request_builder_parameter.py +112 -100
  30. package/autorest/codegen/models/response.py +325 -0
  31. package/autorest/codegen/models/utils.py +12 -19
  32. package/autorest/codegen/serializers/__init__.py +55 -37
  33. package/autorest/codegen/serializers/builder_serializer.py +695 -1144
  34. package/autorest/codegen/serializers/client_serializer.py +92 -89
  35. package/autorest/codegen/serializers/general_serializer.py +15 -69
  36. package/autorest/codegen/serializers/import_serializer.py +7 -4
  37. package/autorest/codegen/serializers/metadata_serializer.py +15 -104
  38. package/autorest/codegen/serializers/model_base_serializer.py +49 -36
  39. package/autorest/codegen/serializers/model_generic_serializer.py +8 -6
  40. package/autorest/codegen/serializers/model_init_serializer.py +2 -4
  41. package/autorest/codegen/serializers/model_python3_serializer.py +22 -16
  42. package/autorest/codegen/serializers/operation_groups_serializer.py +7 -13
  43. package/autorest/codegen/serializers/parameter_serializer.py +174 -0
  44. package/autorest/codegen/serializers/request_builders_serializer.py +13 -30
  45. package/autorest/codegen/serializers/utils.py +0 -140
  46. package/autorest/codegen/templates/MANIFEST.in.jinja2 +1 -0
  47. package/autorest/codegen/templates/{service_client.py.jinja2 → client.py.jinja2} +10 -7
  48. package/autorest/codegen/templates/config.py.jinja2 +13 -13
  49. package/autorest/codegen/templates/enum.py.jinja2 +4 -4
  50. package/autorest/codegen/templates/enum_container.py.jinja2 +1 -1
  51. package/autorest/codegen/templates/init.py.jinja2 +2 -2
  52. package/autorest/codegen/templates/lro_operation.py.jinja2 +4 -1
  53. package/autorest/codegen/templates/lro_paging_operation.py.jinja2 +4 -1
  54. package/autorest/codegen/templates/metadata.json.jinja2 +33 -33
  55. package/autorest/codegen/templates/model.py.jinja2 +23 -24
  56. package/autorest/codegen/templates/model_container.py.jinja2 +2 -1
  57. package/autorest/codegen/templates/model_init.py.jinja2 +3 -5
  58. package/autorest/codegen/templates/operation.py.jinja2 +6 -8
  59. package/autorest/codegen/templates/operation_group.py.jinja2 +21 -8
  60. package/autorest/codegen/templates/operation_groups_container.py.jinja2 +2 -2
  61. package/autorest/codegen/templates/operation_tools.jinja2 +11 -3
  62. package/autorest/codegen/templates/paging_operation.py.jinja2 +2 -2
  63. package/autorest/codegen/templates/request_builder.py.jinja2 +10 -15
  64. package/autorest/codegen/templates/request_builders.py.jinja2 +1 -1
  65. package/autorest/codegen/templates/serialization.py.jinja2 +2006 -0
  66. package/autorest/codegen/templates/setup.py.jinja2 +13 -3
  67. package/autorest/codegen/templates/vendor.py.jinja2 +11 -1
  68. package/autorest/jsonrpc/server.py +15 -3
  69. package/autorest/m4reformatter/__init__.py +1126 -0
  70. package/autorest/multiapi/models/client.py +12 -2
  71. package/autorest/multiapi/models/code_model.py +1 -1
  72. package/autorest/multiapi/serializers/__init__.py +18 -4
  73. package/autorest/multiapi/templates/multiapi_config.py.jinja2 +3 -3
  74. package/autorest/multiapi/templates/multiapi_init.py.jinja2 +2 -2
  75. package/autorest/multiapi/templates/multiapi_operations_mixin.py.jinja2 +4 -4
  76. package/autorest/multiapi/templates/multiapi_service_client.py.jinja2 +9 -9
  77. package/autorest/postprocess/__init__.py +202 -0
  78. package/autorest/postprocess/get_all.py +19 -0
  79. package/autorest/postprocess/venvtools.py +73 -0
  80. package/autorest/preprocess/__init__.py +210 -0
  81. package/autorest/preprocess/helpers.py +54 -0
  82. package/autorest/{namer → preprocess}/python_mappings.py +21 -16
  83. package/package.json +2 -2
  84. package/autorest/codegen/models/credential_model.py +0 -55
  85. package/autorest/codegen/models/credential_schema.py +0 -95
  86. package/autorest/codegen/models/credential_schema_policy.py +0 -73
  87. package/autorest/codegen/models/dictionary_schema.py +0 -106
  88. package/autorest/codegen/models/enum_schema.py +0 -225
  89. package/autorest/codegen/models/list_schema.py +0 -135
  90. package/autorest/codegen/models/object_schema.py +0 -303
  91. package/autorest/codegen/models/primitive_schemas.py +0 -495
  92. package/autorest/codegen/models/request_builder_parameter_list.py +0 -249
  93. package/autorest/codegen/models/schema_request.py +0 -55
  94. package/autorest/codegen/models/schema_response.py +0 -141
  95. package/autorest/namer/__init__.py +0 -23
  96. package/autorest/namer/name_converter.py +0 -509
@@ -7,7 +7,7 @@ import re
7
7
  {% endif -%}
8
8
  from setuptools import setup, find_packages
9
9
 
10
- {% set package_name_render = package_name or code_model.class_name %}
10
+ {% set package_name_render = package_name or code_model.client.name %}
11
11
 
12
12
  PACKAGE_NAME = "{{ package_name_render|lower }}"
13
13
  {% if package_mode -%}
@@ -30,7 +30,7 @@ if not version:
30
30
  {% else %}
31
31
  version = "{{ code_model.options['package_version'] }}"
32
32
  {% set description = "%s"|format(package_name_render) %}
33
- {% set long_description = code_model.description %}
33
+ {% set long_description = code_model.client.description %}
34
34
  {% set author_email = "" %}
35
35
  {% set url = "" %}
36
36
  {% endif -%}
@@ -65,18 +65,28 @@ setup(
65
65
  packages=find_packages(
66
66
  exclude=[
67
67
  "tests",
68
+ {% if pkgutil_names %}
68
69
  # Exclude packages that will be covered by PEP420 or nspkg
70
+ {% endif %}
69
71
  {%- for pkgutil_name in pkgutil_names %}
70
72
  "{{ pkgutil_name }}",
71
73
  {%- endfor %}
72
74
  ]
73
75
  ),
76
+ include_package_data=True,
77
+ package_data={
78
+ 'pytyped': ['py.typed'],
79
+ },
74
80
  {% else %}
75
81
  packages=find_packages(),
76
82
  include_package_data=True,
77
83
  {% endif %}
78
84
  install_requires=[
85
+ {% if code_model.is_legacy %}
79
86
  "{{ dependency_msrest }}",
87
+ {% else %}
88
+ "isodate>=0.6.1",
89
+ {% endif %}
80
90
  {% if azure_arm %}
81
91
  "{{ dependency_azure_mgmt_core }}",
82
92
  {% else %}
@@ -87,7 +97,7 @@ setup(
87
97
  python_requires=">=3.6",
88
98
  {% else %}
89
99
  long_description="""\
90
- {{ code_model.description }}
100
+ {{ code_model.client.description }}
91
101
  """
92
102
  {% endif %}
93
103
  )
@@ -30,7 +30,17 @@ def _format_url_section(template, **kwargs):
30
30
  class MixinABC(ABC):
31
31
  """DO NOT use this class. It is for internal typing use only."""
32
32
  _client: "{{ keywords.async_class }}PipelineClient"
33
- _config: {{ code_model.class_name }}Configuration
33
+ _config: {{ code_model.client.name }}Configuration
34
34
  _serialize: "Serializer"
35
35
  _deserialize: "Deserializer"
36
36
  {% endif %}
37
+ {% if code_model.has_abstract_operations %}
38
+
39
+ def raise_if_not_implemented(cls, abstract_methods):
40
+ not_implemented = [f for f in abstract_methods if not callable(getattr(cls, f, None))]
41
+ if not_implemented:
42
+ raise NotImplementedError("The following methods on operation group '{}' are not implemented: '{}'."
43
+ " Please refer to https://aka.ms/azsdk/python/dpcodegen/python/customize to learn how to customize.".format(
44
+ cls.__name__, '\', \''.join(not_implemented))
45
+ )
46
+ {% endif %}
@@ -18,7 +18,15 @@ _LOGGER = logging.getLogger(__name__)
18
18
 
19
19
  @dispatcher.add_method
20
20
  def GetPluginNames():
21
- return ["codegen", "m2r", "namer", "black", "multiapiscript"]
21
+ return [
22
+ "codegen",
23
+ "m2r",
24
+ "preprocess",
25
+ "m4reformatter",
26
+ "black",
27
+ "multiapiscript",
28
+ "postprocess",
29
+ ]
22
30
 
23
31
 
24
32
  @dispatcher.add_method
@@ -36,10 +44,14 @@ def Process(plugin_name: str, session_id: str) -> bool:
36
44
  )
37
45
  if plugin_name == "m2r":
38
46
  from ..m2r import M2R as PluginToLoad
39
- elif plugin_name == "namer":
40
- from ..namer import Namer as PluginToLoad # type: ignore
47
+ elif plugin_name == "preprocess":
48
+ from ..preprocess import PreProcessPlugin as PluginToLoad # type: ignore
49
+ elif plugin_name == "m4reformatter":
50
+ from ..m4reformatter import M4Reformatter as PluginToLoad # type: ignore
41
51
  elif plugin_name == "codegen":
42
52
  from ..codegen import CodeGenerator as PluginToLoad # type: ignore
53
+ elif plugin_name == "postprocess":
54
+ from ..postprocess import PostProcessPlugin as PluginToLoad # type: ignore
43
55
  elif plugin_name == "black":
44
56
  from ..black import BlackScriptPlugin as PluginToLoad # type: ignore
45
57
  elif plugin_name == "multiapiscript":