@autorest/python 6.13.11 → 6.13.12
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.
|
@@ -350,9 +350,7 @@ class Client(_ClientConfigBase[ClientGlobalParameterList]):
|
|
|
350
350
|
elif self.code_model.options["models_mode"] == "msrest":
|
|
351
351
|
# in this case, we have client_models = {} in the service client, which needs a type annotation
|
|
352
352
|
# this import will always be commented, so will always add it to the typing section
|
|
353
|
-
file_import.add_submodule_import(
|
|
354
|
-
"typing", "Dict", ImportType.STDLIB, TypingSection.TYPING
|
|
355
|
-
)
|
|
353
|
+
file_import.add_submodule_import("typing", "Dict", ImportType.STDLIB)
|
|
356
354
|
file_import.add_submodule_import("copy", "deepcopy", ImportType.STDLIB)
|
|
357
355
|
return file_import
|
|
358
356
|
|
|
@@ -605,6 +605,56 @@ class Model(_MyMutableMapping):
|
|
|
605
605
|
}
|
|
606
606
|
return v.as_dict(exclude_readonly=exclude_readonly) if hasattr(v, "as_dict") else v
|
|
607
607
|
|
|
608
|
+
def _deserialize_model(model_deserializer: typing.Optional[typing.Callable], obj):
|
|
609
|
+
if _is_model(obj):
|
|
610
|
+
return obj
|
|
611
|
+
return _deserialize(model_deserializer, obj)
|
|
612
|
+
|
|
613
|
+
def _deserialize_with_optional(if_obj_deserializer: typing.Optional[typing.Callable], obj):
|
|
614
|
+
if obj is None:
|
|
615
|
+
return obj
|
|
616
|
+
return _deserialize_with_callable(if_obj_deserializer, obj)
|
|
617
|
+
|
|
618
|
+
def _deserialize_with_union(deserializers, obj):
|
|
619
|
+
for deserializer in deserializers:
|
|
620
|
+
try:
|
|
621
|
+
return _deserialize(deserializer, obj)
|
|
622
|
+
except DeserializationError:
|
|
623
|
+
pass
|
|
624
|
+
raise DeserializationError()
|
|
625
|
+
|
|
626
|
+
def _deserialize_dict(
|
|
627
|
+
value_deserializer: typing.Optional[typing.Callable],
|
|
628
|
+
module: typing.Optional[str],
|
|
629
|
+
obj: typing.Dict[typing.Any, typing.Any],
|
|
630
|
+
):
|
|
631
|
+
if obj is None:
|
|
632
|
+
return obj
|
|
633
|
+
return {
|
|
634
|
+
k: _deserialize(value_deserializer, v, module)
|
|
635
|
+
for k, v in obj.items()
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
def _deserialize_multiple_sequence(
|
|
639
|
+
entry_deserializers: typing.List[typing.Optional[typing.Callable]],
|
|
640
|
+
module: typing.Optional[str],
|
|
641
|
+
obj,
|
|
642
|
+
):
|
|
643
|
+
if obj is None:
|
|
644
|
+
return obj
|
|
645
|
+
return type(obj)(
|
|
646
|
+
_deserialize(deserializer, entry, module)
|
|
647
|
+
for entry, deserializer in zip(obj, entry_deserializers)
|
|
648
|
+
)
|
|
649
|
+
|
|
650
|
+
def _deserialize_sequence(
|
|
651
|
+
deserializer: typing.Optional[typing.Callable],
|
|
652
|
+
module: typing.Optional[str],
|
|
653
|
+
obj,
|
|
654
|
+
):
|
|
655
|
+
if obj is None:
|
|
656
|
+
return obj
|
|
657
|
+
return type(obj)(_deserialize(deserializer, entry, module) for entry in obj)
|
|
608
658
|
|
|
609
659
|
def _get_deserialize_callable_from_annotation( # pylint: disable=R0911, R0915, R0912
|
|
610
660
|
annotation: typing.Any,
|
|
@@ -633,11 +683,6 @@ def _get_deserialize_callable_from_annotation( # pylint: disable=R0911, R0915,
|
|
|
633
683
|
if rf:
|
|
634
684
|
rf._is_model = True
|
|
635
685
|
|
|
636
|
-
def _deserialize_model(model_deserializer: typing.Optional[typing.Callable], obj):
|
|
637
|
-
if _is_model(obj):
|
|
638
|
-
return obj
|
|
639
|
-
return _deserialize(model_deserializer, obj)
|
|
640
|
-
|
|
641
686
|
return functools.partial(_deserialize_model, annotation) # pyright: ignore
|
|
642
687
|
except Exception:
|
|
643
688
|
pass
|
|
@@ -656,11 +701,6 @@ def _get_deserialize_callable_from_annotation( # pylint: disable=R0911, R0915,
|
|
|
656
701
|
next(a for a in annotation.__args__ if a != type(None)), module, rf # pyright: ignore
|
|
657
702
|
)
|
|
658
703
|
|
|
659
|
-
def _deserialize_with_optional(if_obj_deserializer: typing.Optional[typing.Callable], obj):
|
|
660
|
-
if obj is None:
|
|
661
|
-
return obj
|
|
662
|
-
return _deserialize_with_callable(if_obj_deserializer, obj)
|
|
663
|
-
|
|
664
704
|
return functools.partial(_deserialize_with_optional, if_obj_deserializer)
|
|
665
705
|
except AttributeError:
|
|
666
706
|
pass
|
|
@@ -674,14 +714,6 @@ def _get_deserialize_callable_from_annotation( # pylint: disable=R0911, R0915,
|
|
|
674
714
|
)
|
|
675
715
|
]
|
|
676
716
|
|
|
677
|
-
def _deserialize_with_union(deserializers, obj):
|
|
678
|
-
for deserializer in deserializers:
|
|
679
|
-
try:
|
|
680
|
-
return _deserialize(deserializer, obj)
|
|
681
|
-
except DeserializationError:
|
|
682
|
-
pass
|
|
683
|
-
raise DeserializationError()
|
|
684
|
-
|
|
685
717
|
return functools.partial(_deserialize_with_union, deserializers)
|
|
686
718
|
|
|
687
719
|
try:
|
|
@@ -690,20 +722,11 @@ def _get_deserialize_callable_from_annotation( # pylint: disable=R0911, R0915,
|
|
|
690
722
|
annotation.__args__[1], module, rf # pyright: ignore
|
|
691
723
|
)
|
|
692
724
|
|
|
693
|
-
|
|
694
|
-
value_deserializer: typing.Optional[typing.Callable],
|
|
695
|
-
obj: typing.Dict[typing.Any, typing.Any],
|
|
696
|
-
):
|
|
697
|
-
if obj is None:
|
|
698
|
-
return obj
|
|
699
|
-
return {
|
|
700
|
-
k: _deserialize(value_deserializer, v, module)
|
|
701
|
-
for k, v in obj.items()
|
|
702
|
-
}
|
|
703
|
-
|
|
725
|
+
|
|
704
726
|
return functools.partial(
|
|
705
727
|
_deserialize_dict,
|
|
706
728
|
value_deserializer,
|
|
729
|
+
module,
|
|
707
730
|
)
|
|
708
731
|
except (AttributeError, IndexError):
|
|
709
732
|
pass
|
|
@@ -711,34 +734,18 @@ def _get_deserialize_callable_from_annotation( # pylint: disable=R0911, R0915,
|
|
|
711
734
|
if annotation._name in ["List", "Set", "Tuple", "Sequence"]: # pyright: ignore
|
|
712
735
|
if len(annotation.__args__) > 1: # pyright: ignore
|
|
713
736
|
|
|
714
|
-
def _deserialize_multiple_sequence(
|
|
715
|
-
entry_deserializers: typing.List[typing.Optional[typing.Callable]],
|
|
716
|
-
obj,
|
|
717
|
-
):
|
|
718
|
-
if obj is None:
|
|
719
|
-
return obj
|
|
720
|
-
return type(obj)(
|
|
721
|
-
_deserialize(deserializer, entry, module)
|
|
722
|
-
for entry, deserializer in zip(obj, entry_deserializers)
|
|
723
|
-
)
|
|
724
737
|
|
|
725
738
|
entry_deserializers = [
|
|
726
739
|
_get_deserialize_callable_from_annotation(dt, module, rf) for dt in annotation.__args__ # pyright: ignore
|
|
727
740
|
]
|
|
728
|
-
return functools.partial(_deserialize_multiple_sequence, entry_deserializers)
|
|
741
|
+
return functools.partial(_deserialize_multiple_sequence, entry_deserializers, module)
|
|
729
742
|
deserializer = _get_deserialize_callable_from_annotation(
|
|
730
743
|
annotation.__args__[0], module, rf # pyright: ignore
|
|
731
744
|
)
|
|
732
745
|
|
|
733
|
-
|
|
734
|
-
deserializer: typing.Optional[typing.Callable],
|
|
735
|
-
obj,
|
|
736
|
-
):
|
|
737
|
-
if obj is None:
|
|
738
|
-
return obj
|
|
739
|
-
return type(obj)(_deserialize(deserializer, entry, module) for entry in obj)
|
|
746
|
+
|
|
740
747
|
|
|
741
|
-
return functools.partial(_deserialize_sequence, deserializer)
|
|
748
|
+
return functools.partial(_deserialize_sequence, deserializer, module)
|
|
742
749
|
except (TypeError, IndexError, AttributeError, SyntaxError):
|
|
743
750
|
pass
|
|
744
751
|
|