@typespec/http-client-python 0.5.0 → 0.6.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.
- package/dist/emitter/code-model.d.ts.map +1 -1
- package/dist/emitter/code-model.js +10 -7
- package/dist/emitter/code-model.js.map +1 -1
- package/dist/emitter/emitter.d.ts.map +1 -1
- package/dist/emitter/emitter.js +35 -7
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/http.js +1 -1
- package/dist/emitter/http.js.map +1 -1
- package/dist/emitter/lib.d.ts +1 -0
- package/dist/emitter/lib.d.ts.map +1 -1
- package/dist/emitter/lib.js +1 -0
- package/dist/emitter/lib.js.map +1 -1
- package/dist/emitter/types.d.ts.map +1 -1
- package/dist/emitter/types.js +7 -4
- package/dist/emitter/types.js.map +1 -1
- package/dist/emitter/utils.d.ts +1 -0
- package/dist/emitter/utils.d.ts.map +1 -1
- package/dist/emitter/utils.js +19 -0
- package/dist/emitter/utils.js.map +1 -1
- package/emitter/src/code-model.ts +16 -6
- package/emitter/src/emitter.ts +37 -11
- package/emitter/src/http.ts +1 -1
- package/emitter/src/lib.ts +4 -0
- package/emitter/src/types.ts +16 -4
- package/emitter/src/utils.ts +27 -0
- package/emitter/temp/tsconfig.tsbuildinfo +1 -1
- package/eng/scripts/Test-Packages.ps1 +1 -1
- package/eng/scripts/ci/regenerate.ts +21 -14
- package/eng/scripts/setup/__pycache__/venvtools.cpython-38.pyc +0 -0
- package/eng/scripts/setup/install.py +0 -5
- package/eng/scripts/setup/install.ts +0 -20
- package/generator/build/lib/pygen/black.py +2 -2
- package/generator/build/lib/pygen/codegen/__init__.py +6 -4
- package/generator/build/lib/pygen/codegen/_utils.py +4 -0
- package/generator/build/lib/pygen/codegen/models/base.py +2 -3
- package/generator/build/lib/pygen/codegen/models/base_builder.py +5 -3
- package/generator/build/lib/pygen/codegen/models/client.py +28 -19
- package/generator/build/lib/pygen/codegen/models/code_model.py +200 -33
- package/generator/build/lib/pygen/codegen/models/combined_type.py +8 -5
- package/generator/build/lib/pygen/codegen/models/constant_type.py +2 -3
- package/generator/build/lib/pygen/codegen/models/credential_types.py +1 -2
- package/generator/build/lib/pygen/codegen/models/dictionary_type.py +2 -3
- package/generator/build/lib/pygen/codegen/models/enum_type.py +47 -24
- package/generator/build/lib/pygen/codegen/models/imports.py +14 -12
- package/generator/build/lib/pygen/codegen/models/list_type.py +2 -3
- package/generator/build/lib/pygen/codegen/models/lro_operation.py +8 -4
- package/generator/build/lib/pygen/codegen/models/lro_paging_operation.py +2 -2
- package/generator/build/lib/pygen/codegen/models/model_type.py +34 -19
- package/generator/build/lib/pygen/codegen/models/operation.py +66 -29
- package/generator/build/lib/pygen/codegen/models/operation_group.py +56 -11
- package/generator/build/lib/pygen/codegen/models/paging_operation.py +9 -6
- package/generator/build/lib/pygen/codegen/models/parameter.py +10 -10
- package/generator/build/lib/pygen/codegen/models/parameter_list.py +7 -7
- package/generator/build/lib/pygen/codegen/models/primitive_types.py +23 -43
- package/generator/build/lib/pygen/codegen/models/property.py +7 -7
- package/generator/build/lib/pygen/codegen/models/request_builder.py +9 -15
- package/generator/build/lib/pygen/codegen/models/response.py +6 -8
- package/generator/build/lib/pygen/codegen/models/utils.py +11 -0
- package/generator/build/lib/pygen/codegen/serializers/__init__.py +201 -242
- package/generator/build/lib/pygen/codegen/serializers/base_serializer.py +19 -1
- package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +53 -35
- package/generator/build/lib/pygen/codegen/serializers/client_serializer.py +9 -5
- package/generator/build/lib/pygen/codegen/serializers/enum_serializer.py +17 -3
- package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +26 -14
- package/generator/build/lib/pygen/codegen/serializers/metadata_serializer.py +26 -8
- package/generator/build/lib/pygen/codegen/serializers/model_init_serializer.py +9 -4
- package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +62 -22
- package/generator/build/lib/pygen/codegen/serializers/operation_groups_serializer.py +19 -16
- package/generator/build/lib/pygen/codegen/serializers/operations_init_serializer.py +5 -10
- package/generator/build/lib/pygen/codegen/serializers/parameter_serializer.py +10 -7
- package/generator/build/lib/pygen/codegen/serializers/request_builders_serializer.py +10 -1
- package/generator/build/lib/pygen/codegen/serializers/sample_serializer.py +7 -10
- package/generator/build/lib/pygen/codegen/serializers/test_serializer.py +24 -28
- package/generator/build/lib/pygen/codegen/serializers/types_serializer.py +6 -1
- package/generator/build/lib/pygen/codegen/serializers/utils.py +1 -15
- package/generator/build/lib/pygen/codegen/templates/client_container.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/config_container.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/enum_container.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/init.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/model_container.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/operations_folder_init.py.jinja2 +2 -4
- package/generator/build/lib/pygen/codegen/templates/test.py.jinja2 +3 -3
- package/generator/build/lib/pygen/codegen/templates/testpreparer.py.jinja2 +2 -2
- package/generator/build/lib/pygen/codegen/templates/vendor.py.jinja2 +4 -4
- package/generator/build/lib/pygen/preprocess/__init__.py +0 -4
- package/generator/dev_requirements.txt +2 -2
- package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
- package/generator/pygen/black.py +2 -2
- package/generator/pygen/codegen/__init__.py +6 -4
- package/generator/pygen/codegen/_utils.py +4 -0
- package/generator/pygen/codegen/models/base.py +2 -3
- package/generator/pygen/codegen/models/base_builder.py +5 -3
- package/generator/pygen/codegen/models/client.py +28 -19
- package/generator/pygen/codegen/models/code_model.py +200 -33
- package/generator/pygen/codegen/models/combined_type.py +8 -5
- package/generator/pygen/codegen/models/constant_type.py +2 -3
- package/generator/pygen/codegen/models/credential_types.py +1 -2
- package/generator/pygen/codegen/models/dictionary_type.py +2 -3
- package/generator/pygen/codegen/models/enum_type.py +47 -24
- package/generator/pygen/codegen/models/imports.py +14 -12
- package/generator/pygen/codegen/models/list_type.py +2 -3
- package/generator/pygen/codegen/models/lro_operation.py +8 -4
- package/generator/pygen/codegen/models/lro_paging_operation.py +2 -2
- package/generator/pygen/codegen/models/model_type.py +34 -19
- package/generator/pygen/codegen/models/operation.py +66 -29
- package/generator/pygen/codegen/models/operation_group.py +56 -11
- package/generator/pygen/codegen/models/paging_operation.py +9 -6
- package/generator/pygen/codegen/models/parameter.py +10 -10
- package/generator/pygen/codegen/models/parameter_list.py +7 -7
- package/generator/pygen/codegen/models/primitive_types.py +23 -43
- package/generator/pygen/codegen/models/property.py +7 -7
- package/generator/pygen/codegen/models/request_builder.py +9 -15
- package/generator/pygen/codegen/models/response.py +6 -8
- package/generator/pygen/codegen/models/utils.py +11 -0
- package/generator/pygen/codegen/serializers/__init__.py +201 -242
- package/generator/pygen/codegen/serializers/base_serializer.py +19 -1
- package/generator/pygen/codegen/serializers/builder_serializer.py +53 -35
- package/generator/pygen/codegen/serializers/client_serializer.py +9 -5
- package/generator/pygen/codegen/serializers/enum_serializer.py +17 -3
- package/generator/pygen/codegen/serializers/general_serializer.py +26 -14
- package/generator/pygen/codegen/serializers/metadata_serializer.py +26 -8
- package/generator/pygen/codegen/serializers/model_init_serializer.py +9 -4
- package/generator/pygen/codegen/serializers/model_serializer.py +62 -22
- package/generator/pygen/codegen/serializers/operation_groups_serializer.py +19 -16
- package/generator/pygen/codegen/serializers/operations_init_serializer.py +5 -10
- package/generator/pygen/codegen/serializers/parameter_serializer.py +10 -7
- package/generator/pygen/codegen/serializers/request_builders_serializer.py +10 -1
- package/generator/pygen/codegen/serializers/sample_serializer.py +7 -10
- package/generator/pygen/codegen/serializers/test_serializer.py +24 -28
- package/generator/pygen/codegen/serializers/types_serializer.py +6 -1
- package/generator/pygen/codegen/serializers/utils.py +1 -15
- package/generator/pygen/codegen/templates/client_container.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/config_container.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/enum_container.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/init.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/model_container.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +2 -4
- package/generator/pygen/codegen/templates/test.py.jinja2 +3 -3
- package/generator/pygen/codegen/templates/testpreparer.py.jinja2 +2 -2
- package/generator/pygen/codegen/templates/vendor.py.jinja2 +4 -4
- package/generator/pygen/preprocess/__init__.py +0 -4
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_flatten_async.py +1 -1
- package/generator/test/{generic_mock_api_tests/asynctests/test_payload_pageable_async.py → azure/mock_api_tests/asynctests/test_azure_payload_pageable_async.py} +1 -1
- package/generator/test/azure/mock_api_tests/asynctests/test_client_namespace_async.py +31 -0
- package/generator/test/azure/mock_api_tests/conftest.py +5 -4
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_flatten.py +1 -1
- package/generator/test/{generic_mock_api_tests/test_payload_pageable.py → azure/mock_api_tests/test_azure_payload_pageable.py} +1 -1
- package/generator/test/azure/mock_api_tests/test_client_namespace.py +29 -0
- package/generator/test/{generic_mock_api_tests → azure/mock_api_tests}/test_resiliency_srv_driven.py +4 -2
- package/generator/test/{generic_mock_api_tests/asynctests → azure/mock_api_tests}/test_resiliency_srv_driven_async.py +4 -2
- package/generator/test/azure/requirements.txt +11 -9
- package/generator/test/azure/tox.ini +2 -2
- package/generator/test/generic_mock_api_tests/conftest.py +9 -4
- package/generator/test/unbranded/mock_api_tests/conftest.py +4 -4
- package/generator/test/unbranded/mock_api_tests/test_unbranded.py +1 -1
- package/generator/test/unbranded/requirements.txt +2 -9
- package/generator/test/unbranded/tox.ini +2 -2
- package/package.json +5 -6
- package/generator/requirements.txt +0 -7
- /package/generator/test/{generic_mock_api_tests → azure/mock_api_tests}/asynctests/test_client_naming_async.py +0 -0
- /package/generator/test/{generic_mock_api_tests → azure/mock_api_tests}/asynctests/test_client_structure_async.py +0 -0
- /package/generator/test/{generic_mock_api_tests → azure/mock_api_tests}/test_client_naming.py +0 -0
- /package/generator/test/{generic_mock_api_tests → azure/mock_api_tests}/test_client_structure.py +0 -0
|
@@ -49,8 +49,7 @@ class PrimitiveType(BaseType):
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
class BooleanType(PrimitiveType):
|
|
52
|
-
|
|
53
|
-
def serialization_type(self) -> str:
|
|
52
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
54
53
|
return "bool"
|
|
55
54
|
|
|
56
55
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -66,8 +65,7 @@ class BinaryType(PrimitiveType):
|
|
|
66
65
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
67
66
|
self.type = "IO"
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
def serialization_type(self) -> str:
|
|
68
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
71
69
|
return self.type
|
|
72
70
|
|
|
73
71
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -84,17 +82,9 @@ class BinaryType(PrimitiveType):
|
|
|
84
82
|
return self.get_declaration(b"bytes")
|
|
85
83
|
|
|
86
84
|
def imports(self, **kwargs: Any) -> FileImport:
|
|
87
|
-
from .combined_type import CombinedType
|
|
88
|
-
from .operation import OperationBase
|
|
89
|
-
|
|
90
85
|
file_import = FileImport(self.code_model)
|
|
91
86
|
file_import.add_submodule_import("typing", "IO", ImportType.STDLIB)
|
|
92
|
-
|
|
93
|
-
if (
|
|
94
|
-
isinstance(operation, OperationBase)
|
|
95
|
-
and operation.parameters.has_body
|
|
96
|
-
and isinstance(operation.parameters.body_parameter.type, CombinedType)
|
|
97
|
-
):
|
|
87
|
+
if kwargs.get("need_import_iobase", False):
|
|
98
88
|
file_import.add_submodule_import("io", "IOBase", ImportType.STDLIB)
|
|
99
89
|
return file_import
|
|
100
90
|
|
|
@@ -107,8 +97,7 @@ class BinaryIteratorType(PrimitiveType):
|
|
|
107
97
|
def _iterator_name(self, **kwargs: Any) -> str:
|
|
108
98
|
return "AsyncIterator" if kwargs.pop("async_mode") else "Iterator"
|
|
109
99
|
|
|
110
|
-
|
|
111
|
-
def serialization_type(self) -> str:
|
|
100
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
112
101
|
return "IO"
|
|
113
102
|
|
|
114
103
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -135,8 +124,7 @@ class BinaryIteratorType(PrimitiveType):
|
|
|
135
124
|
|
|
136
125
|
|
|
137
126
|
class AnyType(PrimitiveType):
|
|
138
|
-
|
|
139
|
-
def serialization_type(self) -> str:
|
|
127
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
140
128
|
return "object"
|
|
141
129
|
|
|
142
130
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -160,8 +148,7 @@ class AnyType(PrimitiveType):
|
|
|
160
148
|
|
|
161
149
|
|
|
162
150
|
class AnyObjectType(PrimitiveType):
|
|
163
|
-
|
|
164
|
-
def serialization_type(self) -> str:
|
|
151
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
165
152
|
return "object"
|
|
166
153
|
|
|
167
154
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -239,8 +226,7 @@ class IntegerType(NumberType):
|
|
|
239
226
|
if yaml_data.get("encode") == "string":
|
|
240
227
|
self.encode = "str"
|
|
241
228
|
|
|
242
|
-
|
|
243
|
-
def serialization_type(self) -> str:
|
|
229
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
244
230
|
return "int"
|
|
245
231
|
|
|
246
232
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -259,8 +245,7 @@ class IntegerType(NumberType):
|
|
|
259
245
|
|
|
260
246
|
|
|
261
247
|
class FloatType(NumberType):
|
|
262
|
-
|
|
263
|
-
def serialization_type(self) -> str:
|
|
248
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
264
249
|
return "float"
|
|
265
250
|
|
|
266
251
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -279,8 +264,7 @@ class FloatType(NumberType):
|
|
|
279
264
|
|
|
280
265
|
|
|
281
266
|
class DecimalType(NumberType):
|
|
282
|
-
|
|
283
|
-
def serialization_type(self) -> str:
|
|
267
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
284
268
|
return "decimal"
|
|
285
269
|
|
|
286
270
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -342,8 +326,7 @@ class StringType(PrimitiveType):
|
|
|
342
326
|
def get_declaration(self, value) -> str:
|
|
343
327
|
return f"'{value}'" if value == '"' else f'"{value}"'
|
|
344
328
|
|
|
345
|
-
|
|
346
|
-
def serialization_type(self) -> str:
|
|
329
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
347
330
|
return "str"
|
|
348
331
|
|
|
349
332
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -363,8 +346,7 @@ class DatetimeType(PrimitiveType):
|
|
|
363
346
|
else "rfc7231"
|
|
364
347
|
)
|
|
365
348
|
|
|
366
|
-
|
|
367
|
-
def serialization_type(self) -> str:
|
|
349
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
368
350
|
formats_to_attribute_type = {
|
|
369
351
|
"rfc3339": "iso-8601",
|
|
370
352
|
"rfc7231": "rfc-1123",
|
|
@@ -410,8 +392,7 @@ class DatetimeType(PrimitiveType):
|
|
|
410
392
|
|
|
411
393
|
|
|
412
394
|
class TimeType(PrimitiveType):
|
|
413
|
-
|
|
414
|
-
def serialization_type(self) -> str:
|
|
395
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
415
396
|
return "time"
|
|
416
397
|
|
|
417
398
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -457,8 +438,7 @@ class UnixTimeType(PrimitiveType):
|
|
|
457
438
|
def encode(self) -> str:
|
|
458
439
|
return "unix-timestamp"
|
|
459
440
|
|
|
460
|
-
|
|
461
|
-
def serialization_type(self) -> str:
|
|
441
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
462
442
|
return "unix-time"
|
|
463
443
|
|
|
464
444
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -500,8 +480,7 @@ class UnixTimeType(PrimitiveType):
|
|
|
500
480
|
|
|
501
481
|
|
|
502
482
|
class DateType(PrimitiveType):
|
|
503
|
-
|
|
504
|
-
def serialization_type(self) -> str:
|
|
483
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
505
484
|
return "date"
|
|
506
485
|
|
|
507
486
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -543,8 +522,7 @@ class DateType(PrimitiveType):
|
|
|
543
522
|
|
|
544
523
|
|
|
545
524
|
class DurationType(PrimitiveType):
|
|
546
|
-
|
|
547
|
-
def serialization_type(self) -> str:
|
|
525
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
548
526
|
return "duration"
|
|
549
527
|
|
|
550
528
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
@@ -590,8 +568,7 @@ class ByteArraySchema(PrimitiveType):
|
|
|
590
568
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
591
569
|
self.encode = yaml_data.get("encode", "base64")
|
|
592
570
|
|
|
593
|
-
|
|
594
|
-
def serialization_type(self) -> str:
|
|
571
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
595
572
|
if self.encode == "base64url":
|
|
596
573
|
return "base64"
|
|
597
574
|
return "bytearray"
|
|
@@ -628,8 +605,7 @@ class SdkCoreType(PrimitiveType):
|
|
|
628
605
|
def instance_check_template(self) -> str:
|
|
629
606
|
return f"isinstance({{}}, {self.name})"
|
|
630
607
|
|
|
631
|
-
|
|
632
|
-
def serialization_type(self) -> str:
|
|
608
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
633
609
|
return self.name
|
|
634
610
|
|
|
635
611
|
|
|
@@ -646,8 +622,12 @@ class MultiPartFileType(PrimitiveType):
|
|
|
646
622
|
|
|
647
623
|
def imports(self, **kwargs: Any) -> FileImport:
|
|
648
624
|
file_import = super().imports(**kwargs)
|
|
649
|
-
|
|
650
|
-
file_import.add_submodule_import(
|
|
625
|
+
serialize_namespace = kwargs.get("serialize_namespace", self.code_model.namespace)
|
|
626
|
+
file_import.add_submodule_import(
|
|
627
|
+
self.code_model.get_relative_import_path(serialize_namespace, module_name="_vendor"),
|
|
628
|
+
self.name,
|
|
629
|
+
ImportType.LOCAL,
|
|
630
|
+
)
|
|
651
631
|
return file_import
|
|
652
632
|
|
|
653
633
|
@property
|
|
@@ -76,9 +76,8 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
|
|
|
76
76
|
def is_input(self):
|
|
77
77
|
return not (self.constant or self.readonly or self.is_discriminator)
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
return self.type.serialization_type
|
|
79
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
80
|
+
return self.type.serialization_type(**kwargs)
|
|
82
81
|
|
|
83
82
|
@property
|
|
84
83
|
def msrest_deserialization_key(self) -> str:
|
|
@@ -99,10 +98,10 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
|
|
|
99
98
|
def xml_metadata(self) -> Optional[Dict[str, Union[str, bool]]]:
|
|
100
99
|
return self.yaml_data.get("xmlMetadata")
|
|
101
100
|
|
|
102
|
-
def type_annotation(self, *, is_operation_file: bool = False) -> str:
|
|
101
|
+
def type_annotation(self, *, is_operation_file: bool = False, **kwargs: Any) -> str:
|
|
103
102
|
if self.is_base_discriminator:
|
|
104
103
|
return "str"
|
|
105
|
-
types_type_annotation = self.type.type_annotation(is_operation_file=is_operation_file)
|
|
104
|
+
types_type_annotation = self.type.type_annotation(is_operation_file=is_operation_file, **kwargs)
|
|
106
105
|
if self.optional and self.client_default_value is None:
|
|
107
106
|
return f"Optional[{types_type_annotation}]"
|
|
108
107
|
return types_type_annotation
|
|
@@ -144,12 +143,13 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
|
|
|
144
143
|
file_import = FileImport(self.code_model)
|
|
145
144
|
if self.is_discriminator and isinstance(self.type, EnumType):
|
|
146
145
|
return file_import
|
|
147
|
-
file_import.merge(self.type.imports(**kwargs
|
|
146
|
+
file_import.merge(self.type.imports(**kwargs))
|
|
148
147
|
if self.optional and self.client_default_value is None:
|
|
149
148
|
file_import.add_submodule_import("typing", "Optional", ImportType.STDLIB)
|
|
150
149
|
if self.code_model.options["models_mode"] == "dpg":
|
|
150
|
+
serialize_namespace = kwargs.get("serialize_namespace", self.code_model.namespace)
|
|
151
151
|
file_import.add_submodule_import(
|
|
152
|
-
"
|
|
152
|
+
self.code_model.get_relative_import_path(serialize_namespace, module_name="_model_base"),
|
|
153
153
|
"rest_discriminator" if self.is_discriminator else "rest_field",
|
|
154
154
|
ImportType.LOCAL,
|
|
155
155
|
)
|
|
@@ -7,11 +7,12 @@ from typing import (
|
|
|
7
7
|
Any,
|
|
8
8
|
Callable,
|
|
9
9
|
Dict,
|
|
10
|
-
List,
|
|
11
10
|
TypeVar,
|
|
12
11
|
TYPE_CHECKING,
|
|
13
12
|
Union,
|
|
14
13
|
Optional,
|
|
14
|
+
Sequence,
|
|
15
|
+
cast,
|
|
15
16
|
)
|
|
16
17
|
from abc import abstractmethod
|
|
17
18
|
|
|
@@ -34,7 +35,7 @@ ParameterListType = TypeVar(
|
|
|
34
35
|
)
|
|
35
36
|
|
|
36
37
|
|
|
37
|
-
class RequestBuilderBase(BaseBuilder[ParameterListType,
|
|
38
|
+
class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder"]]):
|
|
38
39
|
def __init__(
|
|
39
40
|
self,
|
|
40
41
|
yaml_data: Dict[str, Any],
|
|
@@ -43,7 +44,7 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, List["RequestBuilder"]])
|
|
|
43
44
|
name: str,
|
|
44
45
|
parameters: ParameterListType,
|
|
45
46
|
*,
|
|
46
|
-
overloads: Optional[
|
|
47
|
+
overloads: Optional[Sequence["RequestBuilder"]] = None,
|
|
47
48
|
) -> None:
|
|
48
49
|
super().__init__(
|
|
49
50
|
code_model=code_model,
|
|
@@ -53,7 +54,7 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, List["RequestBuilder"]])
|
|
|
53
54
|
parameters=parameters,
|
|
54
55
|
overloads=overloads,
|
|
55
56
|
)
|
|
56
|
-
self.overloads:
|
|
57
|
+
self.overloads: Sequence["RequestBuilder"] = overloads or []
|
|
57
58
|
self.url: str = yaml_data["url"]
|
|
58
59
|
self.method: str = yaml_data["method"]
|
|
59
60
|
self.want_tracing = False
|
|
@@ -84,15 +85,12 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, List["RequestBuilder"]])
|
|
|
84
85
|
def response_docstring_type(self, **kwargs) -> str:
|
|
85
86
|
return f"~{self.code_model.core_library}.rest.HttpRequest"
|
|
86
87
|
|
|
87
|
-
def imports(self) -> FileImport:
|
|
88
|
+
def imports(self, **kwargs) -> FileImport:
|
|
88
89
|
file_import = FileImport(self.code_model)
|
|
89
|
-
relative_path = ".."
|
|
90
|
-
if not self.code_model.options["builders_visibility"] == "embedded" and self.group_name:
|
|
91
|
-
relative_path = "..." if self.group_name else ".."
|
|
92
90
|
if self.abstract:
|
|
93
91
|
return file_import
|
|
94
92
|
for parameter in self.parameters.method:
|
|
95
|
-
file_import.merge(parameter.imports(async_mode=False,
|
|
93
|
+
file_import.merge(parameter.imports(async_mode=False, **kwargs))
|
|
96
94
|
|
|
97
95
|
file_import.add_submodule_import(
|
|
98
96
|
"rest",
|
|
@@ -108,11 +106,7 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, List["RequestBuilder"]])
|
|
|
108
106
|
)
|
|
109
107
|
file_import.add_submodule_import("typing", "Any", ImportType.STDLIB, typing_section=TypingSection.CONDITIONAL)
|
|
110
108
|
file_import.add_msrest_import(
|
|
111
|
-
|
|
112
|
-
"..."
|
|
113
|
-
if (not self.code_model.options["builders_visibility"] == "embedded" and self.group_name)
|
|
114
|
-
else ".."
|
|
115
|
-
),
|
|
109
|
+
serialize_namespace=kwargs.get("serialize_namespace", self.code_model.namespace),
|
|
116
110
|
msrest_import_type=MsrestImportType.Serializer,
|
|
117
111
|
typing_section=TypingSection.REGULAR,
|
|
118
112
|
)
|
|
@@ -154,7 +148,7 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, List["RequestBuilder"]])
|
|
|
154
148
|
# So add operation group name is effective method
|
|
155
149
|
|
|
156
150
|
overloads = [
|
|
157
|
-
RequestBuilder.from_yaml(rb_yaml_data, code_model, client)
|
|
151
|
+
cast(RequestBuilder, RequestBuilder.from_yaml(rb_yaml_data, code_model, client))
|
|
158
152
|
for rb_yaml_data in yaml_data.get("overloads", [])
|
|
159
153
|
]
|
|
160
154
|
parameter_list = cls.parameter_list_type()(yaml_data, code_model)
|
|
@@ -29,9 +29,8 @@ class ResponseHeader(BaseModel):
|
|
|
29
29
|
self.wire_name: str = yaml_data["wireName"]
|
|
30
30
|
self.type = type
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return self.type.serialization_type
|
|
32
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
33
|
+
return self.type.serialization_type(**kwargs)
|
|
35
34
|
|
|
36
35
|
@classmethod
|
|
37
36
|
def from_yaml(cls, yaml_data: Dict[str, Any], code_model: "CodeModel") -> "ResponseHeader":
|
|
@@ -88,10 +87,9 @@ class Response(BaseModel):
|
|
|
88
87
|
)
|
|
89
88
|
return retval
|
|
90
89
|
|
|
91
|
-
|
|
92
|
-
def serialization_type(self) -> str:
|
|
90
|
+
def serialization_type(self, **kwargs: Any) -> str:
|
|
93
91
|
if self.type:
|
|
94
|
-
return self.type.serialization_type
|
|
92
|
+
return self.type.serialization_type(**kwargs)
|
|
95
93
|
return "None"
|
|
96
94
|
|
|
97
95
|
def type_annotation(self, **kwargs: Any) -> str:
|
|
@@ -120,9 +118,9 @@ class Response(BaseModel):
|
|
|
120
118
|
if self.nullable:
|
|
121
119
|
file_import.add_submodule_import("typing", "Optional", ImportType.STDLIB)
|
|
122
120
|
if isinstance(self.type, CombinedType) and self.type.name:
|
|
123
|
-
|
|
121
|
+
serialize_namespace = kwargs.get("serialize_namespace", self.code_model.namespace)
|
|
124
122
|
file_import.add_submodule_import(
|
|
125
|
-
|
|
123
|
+
self.code_model.get_relative_import_path(serialize_namespace),
|
|
126
124
|
"_types",
|
|
127
125
|
ImportType.LOCAL,
|
|
128
126
|
TypingSection.TYPING,
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
# --------------------------------------------------------------------------
|
|
6
6
|
from typing import TypeVar, Dict
|
|
7
7
|
|
|
8
|
+
from enum import Enum
|
|
9
|
+
|
|
8
10
|
T = TypeVar("T")
|
|
9
11
|
OrderedSet = Dict[T, None]
|
|
10
12
|
|
|
@@ -19,3 +21,12 @@ def add_to_pylint_disable(curr_str: str, entry: str) -> str:
|
|
|
19
21
|
if curr_str:
|
|
20
22
|
return f"{curr_str},{entry}"
|
|
21
23
|
return f" # pylint: disable={entry}"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class NamespaceType(str, Enum):
|
|
27
|
+
"""Special signal for impports"""
|
|
28
|
+
|
|
29
|
+
MODEL = "model"
|
|
30
|
+
OPERATION = "operation"
|
|
31
|
+
CLIENT = "client"
|
|
32
|
+
TYPES_FILE = "types_file"
|