@autorest/python 6.33.0 → 6.34.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 (44) hide show
  1. package/autorest/multiapi/serializers/__init__.py +5 -1
  2. package/autorest/multiapi/templates/multiapi_operations_mixin.py.jinja2 +1 -1
  3. package/autorest/multiapi/templates/multiapi_utils_init.py.jinja2 +10 -0
  4. package/generator/build/lib/pygen/codegen/models/code_model.py +22 -11
  5. package/generator/build/lib/pygen/codegen/models/imports.py +13 -9
  6. package/generator/build/lib/pygen/codegen/models/lro_operation.py +1 -1
  7. package/generator/build/lib/pygen/codegen/models/model_type.py +3 -2
  8. package/generator/build/lib/pygen/codegen/models/operation.py +10 -3
  9. package/generator/build/lib/pygen/codegen/models/operation_group.py +27 -31
  10. package/generator/build/lib/pygen/codegen/models/paging_operation.py +3 -1
  11. package/generator/build/lib/pygen/codegen/models/parameter.py +4 -1
  12. package/generator/build/lib/pygen/codegen/models/primitive_types.py +2 -2
  13. package/generator/build/lib/pygen/codegen/models/property.py +1 -1
  14. package/generator/build/lib/pygen/codegen/serializers/__init__.py +31 -29
  15. package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +1 -1
  16. package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +37 -34
  17. package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +4 -3
  18. package/generator/build/lib/pygen/codegen/serializers/parameter_serializer.py +6 -1
  19. package/generator/build/lib/pygen/codegen/templates/model_dpg.py.jinja2 +1 -1
  20. package/generator/build/lib/pygen/codegen/templates/operation_group.py.jinja2 +3 -3
  21. package/generator/build/lib/pygen/codegen/templates/{vendor.py.jinja2 → utils.py.jinja2} +11 -12
  22. package/generator/component-detection-pip-report.json +4 -5
  23. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  24. package/generator/pygen/codegen/models/code_model.py +22 -11
  25. package/generator/pygen/codegen/models/imports.py +13 -9
  26. package/generator/pygen/codegen/models/lro_operation.py +1 -1
  27. package/generator/pygen/codegen/models/model_type.py +3 -2
  28. package/generator/pygen/codegen/models/operation.py +10 -3
  29. package/generator/pygen/codegen/models/operation_group.py +27 -31
  30. package/generator/pygen/codegen/models/paging_operation.py +3 -1
  31. package/generator/pygen/codegen/models/parameter.py +4 -1
  32. package/generator/pygen/codegen/models/primitive_types.py +2 -2
  33. package/generator/pygen/codegen/models/property.py +1 -1
  34. package/generator/pygen/codegen/serializers/__init__.py +31 -29
  35. package/generator/pygen/codegen/serializers/builder_serializer.py +1 -1
  36. package/generator/pygen/codegen/serializers/general_serializer.py +37 -34
  37. package/generator/pygen/codegen/serializers/model_serializer.py +4 -3
  38. package/generator/pygen/codegen/serializers/parameter_serializer.py +6 -1
  39. package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +1 -1
  40. package/generator/pygen/codegen/templates/operation_group.py.jinja2 +3 -3
  41. package/generator/pygen/codegen/templates/{vendor.py.jinja2 → utils.py.jinja2} +11 -12
  42. package/generator/pygen.egg-info/SOURCES.txt +1 -1
  43. package/package.json +2 -2
  44. package/scripts/__pycache__/venvtools.cpython-310.pyc +0 -0
@@ -109,6 +109,7 @@ class ParameterSerializer:
109
109
  return f"[{serialize_line} if q is not None else '' for q in {origin_name}]"
110
110
  return serialize_line
111
111
 
112
+ # pylint: disable=line-too-long
112
113
  def serialize_path(
113
114
  self,
114
115
  parameters: Union[
@@ -124,7 +125,11 @@ class ParameterSerializer:
124
125
  [
125
126
  ' "{}": {},'.format(
126
127
  path_parameter.wire_name,
127
- self.serialize_parameter(path_parameter, serializer_name),
128
+ (
129
+ f'"" if {path_parameter.full_client_name} is None else "/" + {self.serialize_parameter(path_parameter, serializer_name)}'
130
+ if path_parameter.optional and isinstance(path_parameter, RequestBuilderParameter)
131
+ else self.serialize_parameter(path_parameter, serializer_name)
132
+ ),
128
133
  )
129
134
  for path_parameter in parameters
130
135
  ]
@@ -19,7 +19,7 @@
19
19
  """
20
20
 
21
21
  {% if model.is_polymorphic %}
22
- __mapping__: Dict[str, _model_base.Model] = {}
22
+ __mapping__: Dict[str, _Model] = {}
23
23
  {% endif %}
24
24
  {% for p in serializer.get_properties_to_declare(model)%}
25
25
  {{ serializer.declare_property(p) }}
@@ -1,4 +1,4 @@
1
- {% set base_class = ("(" + operation_group.base_class + ")") if operation_group.base_class else "" %}
1
+ {% set base_class = ("(" + operation_group.base_class(async_mode) + ")") if operation_group.base_class(async_mode) else "" %}
2
2
  {% macro check_abstract_methods() %}
3
3
  {% if operation_group.has_abstract_operations %}
4
4
  raise_if_not_implemented(self.__class__, [
@@ -8,9 +8,9 @@
8
8
  ])
9
9
  {% endif %}
10
10
  {% endmacro %}
11
- {% if operation_group.base_class %}
11
+ {% if operation_group.base_class(async_mode) %}
12
12
  class {{ operation_group.class_name }}( {{ operation_group.pylint_disable() }}
13
- {{ operation_group.base_class }}
13
+ {{ operation_group.base_class(async_mode) }}
14
14
  ):
15
15
  {% else %}
16
16
  class {{ operation_group.class_name }}: {{ operation_group.pylint_disable() }}
@@ -5,20 +5,19 @@
5
5
 
6
6
  {{ imports }}
7
7
 
8
- {% if code_model.need_vendored_mixin(client_namespace) %}
9
- {% for client in clients | selectattr("has_mixin") %}
10
- {% set pylint_disable = "# pylint: disable=name-too-long" if (client.name | length) + ("MixinABC" | length) > 40 else "" %}
11
- class {{ client.name }}MixinABC( {{ pylint_disable }}
12
- ABC
13
- ):
8
+ {% if code_model.need_utils_mixin %}
9
+
10
+ TClient = TypeVar("TClient")
11
+ TConfig = TypeVar("TConfig")
12
+
13
+ class ClientMixinABC(ABC, Generic[TClient, TConfig]):
14
14
  """DO NOT use this class. It is for internal typing use only."""
15
- _client: "{{ keywords.async_class }}PipelineClient"
16
- _config: {{ client.name }}Configuration
15
+ _client: TClient
16
+ _config: TConfig
17
17
  _serialize: "Serializer"
18
18
  _deserialize: "Deserializer"
19
- {% endfor %}
20
19
  {% endif %}
21
- {% if code_model.need_vendored_abstract(client_namespace) %}
20
+ {% if code_model.need_utils_abstract(client_namespace) %}
22
21
 
23
22
  def raise_if_not_implemented(cls, abstract_methods):
24
23
  not_implemented = [f for f in abstract_methods if not callable(getattr(cls, f, None))]
@@ -29,7 +28,7 @@ def raise_if_not_implemented(cls, abstract_methods):
29
28
  )
30
29
  {% endif %}
31
30
 
32
- {% if code_model.need_vendored_etag(client_namespace) %}
31
+ {% if code_model.need_utils_etag(client_namespace) %}
33
32
  def quote_etag(etag: Optional[str]) -> Optional[str]:
34
33
  if not etag or etag == "*":
35
34
  return etag
@@ -59,7 +58,7 @@ def prep_if_none_match(etag: Optional[str], match_condition: Optional[MatchCondi
59
58
  return "*"
60
59
  return None
61
60
  {% endif %}
62
- {% if code_model.need_vendored_form_data(async_mode, client_namespace) %}
61
+ {% if code_model.need_utils_form_data(async_mode, client_namespace) %}
63
62
  # file-like tuple could be `(filename, IO (or bytes))` or `(filename, IO (or bytes), content_type)`
64
63
  FileContent = Union[str, bytes, IO[str], IO[bytes]]
65
64
 
@@ -92,8 +92,8 @@ pygen/codegen/templates/serialization.py.jinja2
92
92
  pygen/codegen/templates/test.py.jinja2
93
93
  pygen/codegen/templates/testpreparer.py.jinja2
94
94
  pygen/codegen/templates/types.py.jinja2
95
+ pygen/codegen/templates/utils.py.jinja2
95
96
  pygen/codegen/templates/validation.py.jinja2
96
- pygen/codegen/templates/vendor.py.jinja2
97
97
  pygen/codegen/templates/version.py.jinja2
98
98
  pygen/codegen/templates/packaging_templates/CHANGELOG.md.jinja2
99
99
  pygen/codegen/templates/packaging_templates/LICENSE.jinja2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autorest/python",
3
- "version": "6.33.0",
3
+ "version": "6.34.0",
4
4
  "description": "The Python extension for generators in AutoRest.",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "homepage": "https://github.com/Azure/autorest.python/blob/main/README.md",
21
21
  "dependencies": {
22
- "@typespec/http-client-python": "~0.10.0",
22
+ "@typespec/http-client-python": "~0.11.1",
23
23
  "@autorest/system-requirements": "~1.0.2",
24
24
  "fs-extra": "~11.2.0",
25
25
  "tsx": "~4.19.1"