@darabonba/python-generator 2.0.6 → 2.0.8

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 (58) hide show
  1. package/ChangeLog.md +6 -0
  2. package/lib/generator.js +14 -5
  3. package/lib/helper.js +1 -1
  4. package/package.json +1 -1
  5. package/tests/expected/complex/tea_python_tests/models/__init__.py +6 -6
  6. package/tests/expected/complex/tea_python_tests/models/_complex_request.py +110 -0
  7. package/tests/expected/model/tea_python_tests/models/__init__.py +13 -13
  8. package/tests/expected/model/tea_python_tests/models/_m.py +19 -0
  9. package/tests/{output/model/tea_python_tests/models/_main_file_model.py → expected/model/tea_python_tests/models/_main_file.py} +27 -0
  10. package/tests/expected/model/tea_python_tests/models/_my_model.py +149 -0
  11. package/tests/expected/modelConfig/tea_python_tests/models/__init__.py +13 -13
  12. package/tests/expected/modelConfig/tea_python_tests/models/_m.py +19 -0
  13. package/tests/expected/modelConfig/tea_python_tests/models/{_main_file_model.py → _main_file.py} +27 -0
  14. package/tests/expected/modelConfig/tea_python_tests/models/_my_model.py +149 -0
  15. package/tests/output/complex/tea_python_tests/models/__init__.py +6 -6
  16. package/tests/output/complex/tea_python_tests/models/_complex_request.py +110 -0
  17. package/tests/output/model/tea_python_tests/models/__init__.py +13 -13
  18. package/tests/output/model/tea_python_tests/models/_m.py +19 -0
  19. package/tests/{expected/model/tea_python_tests/models/_main_file_model.py → output/model/tea_python_tests/models/_main_file.py} +27 -0
  20. package/tests/output/model/tea_python_tests/models/_my_model.py +149 -0
  21. package/tests/output/modelConfig/tea_python_tests/models/__init__.py +13 -13
  22. package/tests/output/modelConfig/tea_python_tests/models/_m.py +19 -0
  23. package/tests/output/modelConfig/tea_python_tests/models/{_main_file_model.py → _main_file.py} +27 -0
  24. package/tests/output/modelConfig/tea_python_tests/models/_my_model.py +149 -0
  25. package/tests/expected/complex/tea_python_tests/models/_complex_request_configs.py +0 -52
  26. package/tests/expected/complex/tea_python_tests/models/_complex_request_header.py +0 -43
  27. package/tests/expected/complex/tea_python_tests/models/_complex_request_part.py +0 -34
  28. package/tests/expected/model/tea_python_tests/models/_main_file_model_model.py +0 -33
  29. package/tests/expected/model/tea_python_tests/models/_msub_m.py +0 -25
  30. package/tests/expected/model/tea_python_tests/models/_my_model_model.py +0 -46
  31. package/tests/expected/model/tea_python_tests/models/_my_model_model_model.py +0 -33
  32. package/tests/expected/model/tea_python_tests/models/_my_model_subarraymodel.py +0 -23
  33. package/tests/expected/model/tea_python_tests/models/_my_model_submodel.py +0 -46
  34. package/tests/expected/model/tea_python_tests/models/_my_model_submodel_model.py +0 -33
  35. package/tests/expected/modelConfig/tea_python_tests/models/_main_file_model_model.py +0 -33
  36. package/tests/expected/modelConfig/tea_python_tests/models/_msub_m.py +0 -25
  37. package/tests/expected/modelConfig/tea_python_tests/models/_my_model_model.py +0 -46
  38. package/tests/expected/modelConfig/tea_python_tests/models/_my_model_model_model.py +0 -33
  39. package/tests/expected/modelConfig/tea_python_tests/models/_my_model_subarraymodel.py +0 -23
  40. package/tests/expected/modelConfig/tea_python_tests/models/_my_model_submodel.py +0 -46
  41. package/tests/expected/modelConfig/tea_python_tests/models/_my_model_submodel_model.py +0 -33
  42. package/tests/output/complex/tea_python_tests/models/_complex_request_configs.py +0 -52
  43. package/tests/output/complex/tea_python_tests/models/_complex_request_header.py +0 -43
  44. package/tests/output/complex/tea_python_tests/models/_complex_request_part.py +0 -34
  45. package/tests/output/model/tea_python_tests/models/_main_file_model_model.py +0 -33
  46. package/tests/output/model/tea_python_tests/models/_msub_m.py +0 -25
  47. package/tests/output/model/tea_python_tests/models/_my_model_model.py +0 -46
  48. package/tests/output/model/tea_python_tests/models/_my_model_model_model.py +0 -33
  49. package/tests/output/model/tea_python_tests/models/_my_model_subarraymodel.py +0 -23
  50. package/tests/output/model/tea_python_tests/models/_my_model_submodel.py +0 -46
  51. package/tests/output/model/tea_python_tests/models/_my_model_submodel_model.py +0 -33
  52. package/tests/output/modelConfig/tea_python_tests/models/_main_file_model_model.py +0 -33
  53. package/tests/output/modelConfig/tea_python_tests/models/_msub_m.py +0 -25
  54. package/tests/output/modelConfig/tea_python_tests/models/_my_model_model.py +0 -46
  55. package/tests/output/modelConfig/tea_python_tests/models/_my_model_model_model.py +0 -33
  56. package/tests/output/modelConfig/tea_python_tests/models/_my_model_subarraymodel.py +0 -23
  57. package/tests/output/modelConfig/tea_python_tests/models/_my_model_submodel.py +0 -46
  58. package/tests/output/modelConfig/tea_python_tests/models/_my_model_submodel_model.py +0 -33
@@ -598,3 +598,152 @@ class MyModel(DaraModel):
598
598
 
599
599
  return self
600
600
 
601
+ class MyModelSubarraymodel(DaraModel):
602
+ def __init__(self):
603
+ pass
604
+ def validate(self):
605
+ pass
606
+
607
+ def to_map(self):
608
+ result = dict()
609
+ _map = super().to_map()
610
+ if _map is not None:
611
+ result = _map
612
+ return result
613
+
614
+ def from_map(self, m: dict = None):
615
+ m = m or dict()
616
+ return self
617
+
618
+ class MyModelSubmodel(DaraModel):
619
+ def __init__(
620
+ self, *,
621
+ stringfield: str = None,
622
+ model: main_models.MyModelSubmodelModel = None,
623
+ ):
624
+ self.stringfield = stringfield
625
+ self.model = model
626
+
627
+ def validate(self):
628
+ self.validate_required(self.stringfield, 'stringfield')
629
+ self.validate_required(self.model, 'model')
630
+ if self.model:
631
+ self.model.validate()
632
+
633
+ def to_map(self):
634
+ result = dict()
635
+ _map = super().to_map()
636
+ if _map is not None:
637
+ result = _map
638
+ if self.stringfield is not None:
639
+ result['stringfield'] = self.stringfield
640
+
641
+ if self.model is not None:
642
+ result['model'] = self.model.to_map()
643
+
644
+ return result
645
+
646
+ def from_map(self, m: dict = None):
647
+ m = m or dict()
648
+ if m.get('stringfield') is not None:
649
+ self.stringfield = m.get('stringfield')
650
+
651
+ if m.get('model') is not None:
652
+ temp_model = main_models.MyModelSubmodelModel()
653
+ self.model = temp_model.from_map(m.get('model'))
654
+
655
+ return self
656
+
657
+ class MyModelSubmodelModel(DaraModel):
658
+ def __init__(
659
+ self, *,
660
+ str: str = None,
661
+ ):
662
+ self.str = str
663
+
664
+ def validate(self):
665
+ self.validate_required(self.str, 'str')
666
+
667
+ def to_map(self):
668
+ result = dict()
669
+ _map = super().to_map()
670
+ if _map is not None:
671
+ result = _map
672
+ if self.str is not None:
673
+ result['str'] = self.str
674
+
675
+ return result
676
+
677
+ def from_map(self, m: dict = None):
678
+ m = m or dict()
679
+ if m.get('str') is not None:
680
+ self.str = m.get('str')
681
+
682
+ return self
683
+
684
+ class MyModelModel(DaraModel):
685
+ def __init__(
686
+ self, *,
687
+ str: str = None,
688
+ model: main_models.MyModelModelModel = None,
689
+ ):
690
+ self.str = str
691
+ self.model = model
692
+
693
+ def validate(self):
694
+ self.validate_required(self.str, 'str')
695
+ self.validate_required(self.model, 'model')
696
+ if self.model:
697
+ self.model.validate()
698
+
699
+ def to_map(self):
700
+ result = dict()
701
+ _map = super().to_map()
702
+ if _map is not None:
703
+ result = _map
704
+ if self.str is not None:
705
+ result['str'] = self.str
706
+
707
+ if self.model is not None:
708
+ result['model'] = self.model.to_map()
709
+
710
+ return result
711
+
712
+ def from_map(self, m: dict = None):
713
+ m = m or dict()
714
+ if m.get('str') is not None:
715
+ self.str = m.get('str')
716
+
717
+ if m.get('model') is not None:
718
+ temp_model = main_models.MyModelModelModel()
719
+ self.model = temp_model.from_map(m.get('model'))
720
+
721
+ return self
722
+
723
+ class MyModelModelModel(DaraModel):
724
+ def __init__(
725
+ self, *,
726
+ str: str = None,
727
+ ):
728
+ self.str = str
729
+
730
+ def validate(self):
731
+ self.validate_required(self.str, 'str')
732
+
733
+ def to_map(self):
734
+ result = dict()
735
+ _map = super().to_map()
736
+ if _map is not None:
737
+ result = _map
738
+ if self.str is not None:
739
+ result['str'] = self.str
740
+
741
+ return result
742
+
743
+ def from_map(self, m: dict = None):
744
+ m = m or dict()
745
+ if m.get('str') is not None:
746
+ self.str = m.get('str')
747
+
748
+ return self
749
+
@@ -4,16 +4,16 @@ from __future__ import annotations
4
4
 
5
5
 
6
6
 
7
- from ._complex_request_header import ComplexRequestHeader
8
- from ._complex_request_configs import ComplexRequestConfigs
9
- from ._complex_request_part import ComplexRequestPart
10
7
  from ._complex_request import ComplexRequest
11
8
  from ._response import Response
9
+ from ._complex_request import ComplexRequestHeader
10
+ from ._complex_request import ComplexRequestConfigs
11
+ from ._complex_request import ComplexRequestPart
12
12
 
13
13
  __all__ = [
14
+ ComplexRequest,
15
+ Response,
14
16
  ComplexRequestHeader,
15
17
  ComplexRequestConfigs,
16
- ComplexRequestPart,
17
- ComplexRequest,
18
- Response
18
+ ComplexRequestPart
19
19
  ]
@@ -461,3 +461,113 @@ class ComplexRequest(DaraModel):
461
461
 
462
462
  return self
463
463
 
464
+ class ComplexRequestPart(DaraModel):
465
+ def __init__(
466
+ self,
467
+ part_number: str = None,
468
+ ):
469
+ # PartNumber
470
+ self.part_number = part_number
471
+
472
+ def validate(self):
473
+ pass
474
+
475
+ def to_map(self):
476
+ result = dict()
477
+ _map = super().to_map()
478
+ if _map is not None:
479
+ result = _map
480
+ if self.part_number is not None:
481
+ result['PartNumber'] = self.part_number
482
+
483
+ return result
484
+
485
+ def from_map(self, m: dict = None):
486
+ m = m or dict()
487
+ if m.get('PartNumber') is not None:
488
+ self.part_number = m.get('PartNumber')
489
+
490
+ return self
491
+
492
+ class ComplexRequestConfigs(DaraModel):
493
+ def __init__(
494
+ self,
495
+ key: str = None,
496
+ value: List[str] = None,
497
+ extra: Dict[str, str] = None,
498
+ ):
499
+ self.key = key
500
+ self.value = value
501
+ self.extra = extra
502
+
503
+ def validate(self):
504
+ self.validate_required(self.key, 'key')
505
+ self.validate_required(self.value, 'value')
506
+ self.validate_required(self.extra, 'extra')
507
+
508
+ def to_map(self):
509
+ result = dict()
510
+ _map = super().to_map()
511
+ if _map is not None:
512
+ result = _map
513
+ if self.key is not None:
514
+ result['key'] = self.key
515
+
516
+ if self.value is not None:
517
+ result['value'] = self.value
518
+
519
+ if self.extra is not None:
520
+ result['extra'] = self.extra
521
+
522
+ return result
523
+
524
+ def from_map(self, m: dict = None):
525
+ m = m or dict()
526
+ if m.get('key') is not None:
527
+ self.key = m.get('key')
528
+
529
+ if m.get('value') is not None:
530
+ self.value = m.get('value')
531
+
532
+ if m.get('extra') is not None:
533
+ self.extra = m.get('extra')
534
+
535
+ return self
536
+
537
+
538
+
539
+ class ComplexRequestHeader(DaraModel):
540
+ def __init__(
541
+ self,
542
+ content: str = None,
543
+ ):
544
+ # The ID of the security group to which you want to assign the instance. Instances in the same security group can communicate with each other. The maximum number of instances that a security group can contain depends on the type of the security group. For more information, see the "Security group limits" section in [Limits](https://help.aliyun.com/document_detail/25412.html#SecurityGroupQuota).
545
+ #
546
+ # >Notice: The network type of the new instance must be the same as that of the security group specified by the `SecurityGroupId` parameter. For example, if the specified security group is of the VPC type, the new instance is also of the VPC type and you must specify `VSwitchId`.
547
+ #
548
+ # If you do not use `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template, you must specify SecurityGroupId. Take note of the following items:
549
+ #
550
+ # * You can set `SecurityGroupId` to specify a single security group or set `SecurityGroupIds.N` to specify one or more security groups. However, you cannot specify both `SecurityGroupId` and `SecurityGroupIds.N`.
551
+ # * If `NetworkInterface.N.InstanceType` is set to `Primary`, you cannot specify `SecurityGroupId` or `SecurityGroupIds.N` but can specify `NetworkInterface.N.SecurityGroupId` or `NetworkInterface.N.SecurityGroupIds.N`.
552
+ self.content = content
553
+
554
+ def validate(self):
555
+ self.validate_required(self.content, 'content')
556
+
557
+ def to_map(self):
558
+ result = dict()
559
+ _map = super().to_map()
560
+ if _map is not None:
561
+ result = _map
562
+ if self.content is not None:
563
+ result['Content'] = self.content
564
+
565
+ return result
566
+
567
+ def from_map(self, m: dict = None):
568
+ m = m or dict()
569
+ if m.get('Content') is not None:
570
+ self.content = m.get('Content')
571
+
572
+ return self
573
+
@@ -4,20 +4,24 @@ from __future__ import annotations
4
4
 
5
5
 
6
6
 
7
- from ._msub_m import MSubM
8
- from ._main_file_model_model import MainFileModelModel
9
- from ._main_file_model import MainFileModel
10
- from ._my_model_model_model import MyModelModelModel
11
- from ._my_model_model import MyModelModel
12
- from ._my_model_submodel_model import MyModelSubmodelModel
13
- from ._my_model_submodel import MyModelSubmodel
14
- from ._my_model_subarraymodel import MyModelSubarraymodel
15
7
  from ._m import M
16
8
  from ._class import Class
17
9
  from ._model import Model
18
10
  from ._my_model import MyModel
11
+ from ._m import MSubM
12
+ from ._main_file import MainFileModelModel
13
+ from ._main_file import MainFileModel
14
+ from ._my_model import MyModelModelModel
15
+ from ._my_model import MyModelModel
16
+ from ._my_model import MyModelSubmodelModel
17
+ from ._my_model import MyModelSubmodel
18
+ from ._my_model import MyModelSubarraymodel
19
19
 
20
20
  __all__ = [
21
+ M,
22
+ Class,
23
+ Model,
24
+ MyModel,
21
25
  MSubM,
22
26
  MainFileModelModel,
23
27
  MainFileModel,
@@ -25,9 +29,5 @@ __all__ = [
25
29
  MyModelModel,
26
30
  MyModelSubmodelModel,
27
31
  MyModelSubmodel,
28
- MyModelSubarraymodel,
29
- M,
30
- Class,
31
- Model,
32
- MyModel
32
+ MyModelSubarraymodel
33
33
  ]
@@ -35,3 +35,22 @@ class M(DaraModel):
35
35
 
36
36
  return self
37
37
 
38
+
39
+
40
+ class MSubM(DaraModel):
41
+ def __init__(self):
42
+ pass
43
+ def validate(self):
44
+ pass
45
+
46
+ def to_map(self):
47
+ result = dict()
48
+ _map = super().to_map()
49
+ if _map is not None:
50
+ result = _map
51
+ return result
52
+
53
+ def from_map(self, m: dict = None):
54
+ m = m or dict()
55
+ return self
56
+
@@ -44,3 +44,30 @@ class MainFileModel(DaraModel):
44
44
 
45
45
  return self
46
46
 
47
+ class MainFileModelModel(DaraModel):
48
+ def __init__(
49
+ self,
50
+ str: str = None,
51
+ ):
52
+ self.str = str
53
+
54
+ def validate(self):
55
+ self.validate_required(self.str, 'str')
56
+
57
+ def to_map(self):
58
+ result = dict()
59
+ _map = super().to_map()
60
+ if _map is not None:
61
+ result = _map
62
+ if self.str is not None:
63
+ result['str'] = self.str
64
+
65
+ return result
66
+
67
+ def from_map(self, m: dict = None):
68
+ m = m or dict()
69
+ if m.get('str') is not None:
70
+ self.str = m.get('str')
71
+
72
+ return self
73
+
@@ -598,3 +598,152 @@ class MyModel(DaraModel):
598
598
 
599
599
  return self
600
600
 
601
+ class MyModelSubarraymodel(DaraModel):
602
+ def __init__(self):
603
+ pass
604
+ def validate(self):
605
+ pass
606
+
607
+ def to_map(self):
608
+ result = dict()
609
+ _map = super().to_map()
610
+ if _map is not None:
611
+ result = _map
612
+ return result
613
+
614
+ def from_map(self, m: dict = None):
615
+ m = m or dict()
616
+ return self
617
+
618
+ class MyModelSubmodel(DaraModel):
619
+ def __init__(
620
+ self,
621
+ stringfield: str = None,
622
+ model: main_models.MyModelSubmodelModel = None,
623
+ ):
624
+ self.stringfield = stringfield
625
+ self.model = model
626
+
627
+ def validate(self):
628
+ self.validate_required(self.stringfield, 'stringfield')
629
+ self.validate_required(self.model, 'model')
630
+ if self.model:
631
+ self.model.validate()
632
+
633
+ def to_map(self):
634
+ result = dict()
635
+ _map = super().to_map()
636
+ if _map is not None:
637
+ result = _map
638
+ if self.stringfield is not None:
639
+ result['stringfield'] = self.stringfield
640
+
641
+ if self.model is not None:
642
+ result['model'] = self.model.to_map()
643
+
644
+ return result
645
+
646
+ def from_map(self, m: dict = None):
647
+ m = m or dict()
648
+ if m.get('stringfield') is not None:
649
+ self.stringfield = m.get('stringfield')
650
+
651
+ if m.get('model') is not None:
652
+ temp_model = main_models.MyModelSubmodelModel()
653
+ self.model = temp_model.from_map(m.get('model'))
654
+
655
+ return self
656
+
657
+ class MyModelSubmodelModel(DaraModel):
658
+ def __init__(
659
+ self,
660
+ str: str = None,
661
+ ):
662
+ self.str = str
663
+
664
+ def validate(self):
665
+ self.validate_required(self.str, 'str')
666
+
667
+ def to_map(self):
668
+ result = dict()
669
+ _map = super().to_map()
670
+ if _map is not None:
671
+ result = _map
672
+ if self.str is not None:
673
+ result['str'] = self.str
674
+
675
+ return result
676
+
677
+ def from_map(self, m: dict = None):
678
+ m = m or dict()
679
+ if m.get('str') is not None:
680
+ self.str = m.get('str')
681
+
682
+ return self
683
+
684
+ class MyModelModel(DaraModel):
685
+ def __init__(
686
+ self,
687
+ str: str = None,
688
+ model: main_models.MyModelModelModel = None,
689
+ ):
690
+ self.str = str
691
+ self.model = model
692
+
693
+ def validate(self):
694
+ self.validate_required(self.str, 'str')
695
+ self.validate_required(self.model, 'model')
696
+ if self.model:
697
+ self.model.validate()
698
+
699
+ def to_map(self):
700
+ result = dict()
701
+ _map = super().to_map()
702
+ if _map is not None:
703
+ result = _map
704
+ if self.str is not None:
705
+ result['str'] = self.str
706
+
707
+ if self.model is not None:
708
+ result['model'] = self.model.to_map()
709
+
710
+ return result
711
+
712
+ def from_map(self, m: dict = None):
713
+ m = m or dict()
714
+ if m.get('str') is not None:
715
+ self.str = m.get('str')
716
+
717
+ if m.get('model') is not None:
718
+ temp_model = main_models.MyModelModelModel()
719
+ self.model = temp_model.from_map(m.get('model'))
720
+
721
+ return self
722
+
723
+ class MyModelModelModel(DaraModel):
724
+ def __init__(
725
+ self,
726
+ str: str = None,
727
+ ):
728
+ self.str = str
729
+
730
+ def validate(self):
731
+ self.validate_required(self.str, 'str')
732
+
733
+ def to_map(self):
734
+ result = dict()
735
+ _map = super().to_map()
736
+ if _map is not None:
737
+ result = _map
738
+ if self.str is not None:
739
+ result['str'] = self.str
740
+
741
+ return result
742
+
743
+ def from_map(self, m: dict = None):
744
+ m = m or dict()
745
+ if m.get('str') is not None:
746
+ self.str = m.get('str')
747
+
748
+ return self
749
+
@@ -4,20 +4,24 @@ from __future__ import annotations
4
4
 
5
5
 
6
6
 
7
- from ._msub_m import MSubM
8
- from ._main_file_model_model import MainFileModelModel
9
- from ._main_file_model import MainFileModel
10
- from ._my_model_model_model import MyModelModelModel
11
- from ._my_model_model import MyModelModel
12
- from ._my_model_submodel_model import MyModelSubmodelModel
13
- from ._my_model_submodel import MyModelSubmodel
14
- from ._my_model_subarraymodel import MyModelSubarraymodel
15
7
  from ._m import M
16
8
  from ._class import Class
17
9
  from ._model import Model
18
10
  from ._my_model import MyModel
11
+ from ._m import MSubM
12
+ from ._main_file import MainFileModelModel
13
+ from ._main_file import MainFileModel
14
+ from ._my_model import MyModelModelModel
15
+ from ._my_model import MyModelModel
16
+ from ._my_model import MyModelSubmodelModel
17
+ from ._my_model import MyModelSubmodel
18
+ from ._my_model import MyModelSubarraymodel
19
19
 
20
20
  __all__ = [
21
+ M,
22
+ Class,
23
+ Model,
24
+ MyModel,
21
25
  MSubM,
22
26
  MainFileModelModel,
23
27
  MainFileModel,
@@ -25,9 +29,5 @@ __all__ = [
25
29
  MyModelModel,
26
30
  MyModelSubmodelModel,
27
31
  MyModelSubmodel,
28
- MyModelSubarraymodel,
29
- M,
30
- Class,
31
- Model,
32
- MyModel
32
+ MyModelSubarraymodel
33
33
  ]
@@ -35,3 +35,22 @@ class M(DaraModel):
35
35
 
36
36
  return self
37
37
 
38
+
39
+
40
+ class MSubM(DaraModel):
41
+ def __init__(self):
42
+ pass
43
+ def validate(self):
44
+ pass
45
+
46
+ def to_map(self):
47
+ result = dict()
48
+ _map = super().to_map()
49
+ if _map is not None:
50
+ result = _map
51
+ return result
52
+
53
+ def from_map(self, m: dict = None):
54
+ m = m or dict()
55
+ return self
56
+
@@ -44,3 +44,30 @@ class MainFileModel(DaraModel):
44
44
 
45
45
  return self
46
46
 
47
+ class MainFileModelModel(DaraModel):
48
+ def __init__(
49
+ self, *,
50
+ str: str = None,
51
+ ):
52
+ self.str = str
53
+
54
+ def validate(self):
55
+ self.validate_required(self.str, 'str')
56
+
57
+ def to_map(self):
58
+ result = dict()
59
+ _map = super().to_map()
60
+ if _map is not None:
61
+ result = _map
62
+ if self.str is not None:
63
+ result['str'] = self.str
64
+
65
+ return result
66
+
67
+ def from_map(self, m: dict = None):
68
+ m = m or dict()
69
+ if m.get('str') is not None:
70
+ self.str = m.get('str')
71
+
72
+ return self
73
+