@darabonba/python-generator 1.2.17 → 1.2.19
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/ChangeLog.md +6 -0
- package/package.json +2 -2
- package/src/langs/python/combinator.js +31 -31
- package/src/langs/python2/combinator.js +31 -31
- package/src/lib/helper.js +11 -1
- package/src/resolver/base.js +3 -1
- package/src/resolver/client.js +7 -4
- package/src/resolver/model.js +5 -3
- package/tests/expected/python2/complex/tea_python_tests/models.py +15 -15
- package/tests/expected/python2/function/tea_python_tests/client.py +3 -1
- package/tests/expected/python2/model/tea_python_tests/models.py +57 -30
- package/tests/expected/python3/complex/tea_python_tests/models.py +5 -5
- package/tests/expected/python3/function/tea_python_tests/client.py +3 -1
- package/tests/expected/python3/model/tea_python_tests/models.py +57 -29
- package/tests/fixtures/function/main.dara +2 -0
- package/tests/fixtures/model/main.dara +10 -8
package/ChangeLog.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@darabonba/python-generator",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.19",
|
|
4
4
|
"description": "The darabonba generator for Python",
|
|
5
5
|
"main": "src/generator.js",
|
|
6
6
|
"directories": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"author": "Alibaba Cloud OpenAPI Team",
|
|
31
31
|
"license": "Apache-2.0",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@darabonba/parser": "^1.
|
|
33
|
+
"@darabonba/parser": "^1.4.7",
|
|
34
34
|
"enum": "^3.0.4"
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -538,9 +538,9 @@ class Combinator extends CombinatorBase {
|
|
|
538
538
|
this.emitComplexValidate(emitter, `k${depth}`, fieldType.itemType, depth + 1);
|
|
539
539
|
this.levelDown();
|
|
540
540
|
} else {
|
|
541
|
-
emitter.emitln(`if self.${
|
|
541
|
+
emitter.emitln(`if self.${_varName(name)}:`, this.level);
|
|
542
542
|
this.levelUp();
|
|
543
|
-
emitter.emitln(`for k in self.${
|
|
543
|
+
emitter.emitln(`for k in self.${_varName(name)}:`, this.level);
|
|
544
544
|
this.levelUp();
|
|
545
545
|
this.emitComplexValidate(emitter, 'k', fieldType.itemType, depth + 1);
|
|
546
546
|
this.levelDown();
|
|
@@ -553,9 +553,9 @@ class Combinator extends CombinatorBase {
|
|
|
553
553
|
this.emitComplexValidate(emitter, `v${depth}`, fieldType.valType, depth + 1);
|
|
554
554
|
this.levelDown();
|
|
555
555
|
} else {
|
|
556
|
-
emitter.emitln(`if self.${
|
|
556
|
+
emitter.emitln(`if self.${_varName(name)}:`, this.level);
|
|
557
557
|
this.levelUp();
|
|
558
|
-
emitter.emitln(`for v in self.${
|
|
558
|
+
emitter.emitln(`for v in self.${_varName(name)}.values():`, this.level);
|
|
559
559
|
this.levelUp();
|
|
560
560
|
this.emitComplexValidate(emitter, 'v', fieldType.valType, depth + 1);
|
|
561
561
|
this.levelDown();
|
|
@@ -587,29 +587,29 @@ class Combinator extends CombinatorBase {
|
|
|
587
587
|
|
|
588
588
|
if (required.length > 0) {
|
|
589
589
|
emitter.emitln(
|
|
590
|
-
`self.validate_required(self.${
|
|
590
|
+
`self.validate_required(self.${_varName(prop.name)}, '${_varName(prop.name)}')`,
|
|
591
591
|
this.level
|
|
592
592
|
);
|
|
593
593
|
haveValidate = true;
|
|
594
594
|
}
|
|
595
595
|
if (maxLength.length > 0 || pattern.length > 0 || maximum.length > 0 || minimum.length > 0) {
|
|
596
|
-
emitter.emitln(`if self.${
|
|
596
|
+
emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
|
|
597
597
|
this.levelUp();
|
|
598
598
|
|
|
599
599
|
if (maxLength.length > 0) {
|
|
600
|
-
emitter.emitln(`self.validate_max_length(self.${
|
|
600
|
+
emitter.emitln(`self.validate_max_length(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${maxLength[0].value})`, this.level);
|
|
601
601
|
}
|
|
602
602
|
|
|
603
603
|
if (pattern.length > 0) {
|
|
604
|
-
emitter.emitln(`self.validate_pattern(self.${
|
|
604
|
+
emitter.emitln(`self.validate_pattern(self.${_varName(prop.name)}, '${_varName(prop.name)}', '${pattern[0].value}')`, this.level);
|
|
605
605
|
}
|
|
606
606
|
|
|
607
607
|
if (maximum.length > 0) {
|
|
608
|
-
emitter.emitln(`self.validate_maximum(self.${
|
|
608
|
+
emitter.emitln(`self.validate_maximum(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${maximum[0].value})`, this.level);
|
|
609
609
|
}
|
|
610
610
|
|
|
611
611
|
if (minimum.length > 0) {
|
|
612
|
-
emitter.emitln(`self.validate_minimum(self.${
|
|
612
|
+
emitter.emitln(`self.validate_minimum(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${minimum[0].value})`, this.level);
|
|
613
613
|
}
|
|
614
614
|
this.levelDown();
|
|
615
615
|
haveValidate = true;
|
|
@@ -624,9 +624,9 @@ class Combinator extends CombinatorBase {
|
|
|
624
624
|
emitter.emit(emt.output);
|
|
625
625
|
}
|
|
626
626
|
} else if (prop.type.objectType === 'model') {
|
|
627
|
-
emitter.emitln(`if self.${
|
|
627
|
+
emitter.emitln(`if self.${_varName(prop.name)}:`, this.level);
|
|
628
628
|
this.levelUp();
|
|
629
|
-
emitter.emitln(`self.${
|
|
629
|
+
emitter.emitln(`self.${_varName(prop.name)}.validate()`, this.level);
|
|
630
630
|
this.levelDown();
|
|
631
631
|
haveValidate = true;
|
|
632
632
|
}
|
|
@@ -666,9 +666,9 @@ class Combinator extends CombinatorBase {
|
|
|
666
666
|
}
|
|
667
667
|
} else {
|
|
668
668
|
emitter.emitln(`result['${fieldName}'] = []`, this.level);
|
|
669
|
-
emitter.emitln(`if self.${
|
|
669
|
+
emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
|
|
670
670
|
this.levelUp();
|
|
671
|
-
emitter.emitln(`for k in self.${
|
|
671
|
+
emitter.emitln(`for k in self.${_varName(name)}:`, this.level);
|
|
672
672
|
this.levelUp();
|
|
673
673
|
if (type.itemType.valType || type.itemType.itemType) {
|
|
674
674
|
const propInfo = {
|
|
@@ -710,9 +710,9 @@ class Combinator extends CombinatorBase {
|
|
|
710
710
|
}
|
|
711
711
|
} else {
|
|
712
712
|
emitter.emitln(`result['${fieldName}'] = {}`, this.level);
|
|
713
|
-
emitter.emitln(`if self.${
|
|
713
|
+
emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
|
|
714
714
|
this.levelUp();
|
|
715
|
-
emitter.emitln(`for k, v in self.${
|
|
715
|
+
emitter.emitln(`for k, v in self.${_varName(name)}.items():`, this.level);
|
|
716
716
|
this.levelUp();
|
|
717
717
|
if (type.valType.valType || type.valType.itemType) {
|
|
718
718
|
const propInfo = {
|
|
@@ -769,19 +769,19 @@ class Combinator extends CombinatorBase {
|
|
|
769
769
|
if (emt.needSave === true) {
|
|
770
770
|
emitter.emit(emt.output);
|
|
771
771
|
} else {
|
|
772
|
-
emitter.emitln(`if self.${
|
|
772
|
+
emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
|
|
773
773
|
this.levelUp();
|
|
774
|
-
emitter.emitln(`result['${name}'] = self.${
|
|
774
|
+
emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}`, this.level);
|
|
775
775
|
this.levelDown();
|
|
776
776
|
}
|
|
777
777
|
|
|
778
778
|
} else {
|
|
779
|
-
emitter.emitln(`if self.${
|
|
779
|
+
emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
|
|
780
780
|
this.levelUp();
|
|
781
781
|
if (prop.type.objectType === 'model') {
|
|
782
|
-
emitter.emitln(`result['${name}'] = self.${
|
|
782
|
+
emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}.to_map()`, this.level);
|
|
783
783
|
} else {
|
|
784
|
-
emitter.emitln(`result['${name}'] = self.${
|
|
784
|
+
emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}`, this.level);
|
|
785
785
|
}
|
|
786
786
|
this.levelDown();
|
|
787
787
|
}
|
|
@@ -819,7 +819,7 @@ class Combinator extends CombinatorBase {
|
|
|
819
819
|
emitter.emitln(`${carrier}['k${num}'] = l${depth}`, this.level);
|
|
820
820
|
}
|
|
821
821
|
} else {
|
|
822
|
-
emitter.emitln(`self.${
|
|
822
|
+
emitter.emitln(`self.${_varName(name)} = []`, this.level);
|
|
823
823
|
emitter.emitln(`if m.get('${fieldName}') is not None:`, this.level);
|
|
824
824
|
this.levelUp();
|
|
825
825
|
emitter.emitln(`for k in m.get('${fieldName}'):`, this.level);
|
|
@@ -831,11 +831,11 @@ class Combinator extends CombinatorBase {
|
|
|
831
831
|
type: type.itemType,
|
|
832
832
|
parentType: type.lexeme
|
|
833
833
|
};
|
|
834
|
-
this.emitComplexFromMap(emitter, propInfo, `self.${
|
|
834
|
+
this.emitComplexFromMap(emitter, propInfo, `self.${_varName(name)}`, depth + 1);
|
|
835
835
|
} else {
|
|
836
836
|
if (type.itemType.objectType === 'model') {
|
|
837
837
|
emitter.emitln(`temp_model = ${type.itemType.lexeme}()`, this.level);
|
|
838
|
-
emitter.emitln(`self.${
|
|
838
|
+
emitter.emitln(`self.${_varName(name)}.append(temp_model.from_map(k))`, this.level);
|
|
839
839
|
emitter.needSave = true;
|
|
840
840
|
} else {
|
|
841
841
|
emitter.needSave = false;
|
|
@@ -865,7 +865,7 @@ class Combinator extends CombinatorBase {
|
|
|
865
865
|
emitter.emitln(`${carrier}[k${num}] = d${depth}`, this.level);
|
|
866
866
|
}
|
|
867
867
|
} else {
|
|
868
|
-
emitter.emitln(`self.${
|
|
868
|
+
emitter.emitln(`self.${_varName(name)} = {}`, this.level);
|
|
869
869
|
emitter.emitln(`if m.get('${fieldName}') is not None:`, this.level);
|
|
870
870
|
this.levelUp();
|
|
871
871
|
emitter.emitln(`for k, v in m.get('${fieldName}').items():`, this.level);
|
|
@@ -877,11 +877,11 @@ class Combinator extends CombinatorBase {
|
|
|
877
877
|
type: type.valType,
|
|
878
878
|
parentType: type.lexeme
|
|
879
879
|
};
|
|
880
|
-
this.emitComplexFromMap(emitter, propInfo, `self.${
|
|
880
|
+
this.emitComplexFromMap(emitter, propInfo, `self.${_varName(name)}`, depth + 1);
|
|
881
881
|
} else {
|
|
882
882
|
if (type.valType.objectType === 'model') {
|
|
883
883
|
emitter.emitln(`temp_model = ${type.valType.lexeme}()`, this.level);
|
|
884
|
-
emitter.emitln(`self.${
|
|
884
|
+
emitter.emitln(`self.${_varName(name)}[k] = temp_model.from_map(v)`, this.level);
|
|
885
885
|
emitter.needSave = true;
|
|
886
886
|
} else {
|
|
887
887
|
emitter.needSave = false;
|
|
@@ -935,7 +935,7 @@ class Combinator extends CombinatorBase {
|
|
|
935
935
|
} else {
|
|
936
936
|
emitter.emitln(`if m.get('${name}') is not None:`, this.level);
|
|
937
937
|
this.levelUp();
|
|
938
|
-
emitter.emitln(`self.${
|
|
938
|
+
emitter.emitln(`self.${_varName(prop.name)} = m.get('${name}')`, this.level);
|
|
939
939
|
this.levelDown();
|
|
940
940
|
}
|
|
941
941
|
} else {
|
|
@@ -944,9 +944,9 @@ class Combinator extends CombinatorBase {
|
|
|
944
944
|
if (prop.type.objectType === 'model') {
|
|
945
945
|
let type = _type(prop.type);
|
|
946
946
|
emitter.emitln(`temp_model = ${type}()`, this.level);
|
|
947
|
-
emitter.emitln(`self.${
|
|
947
|
+
emitter.emitln(`self.${_varName(prop.name)} = temp_model.from_map(m['${name}'])`, this.level);
|
|
948
948
|
} else {
|
|
949
|
-
emitter.emitln(`self.${
|
|
949
|
+
emitter.emitln(`self.${_varName(prop.name)} = m.get('${name}')`, this.level);
|
|
950
950
|
}
|
|
951
951
|
this.levelDown();
|
|
952
952
|
}
|
|
@@ -1023,7 +1023,7 @@ class Combinator extends CombinatorBase {
|
|
|
1023
1023
|
emitter.emitln(`# ${d}`, this.level);
|
|
1024
1024
|
});
|
|
1025
1025
|
}
|
|
1026
|
-
emitter.emitln(`self.${
|
|
1026
|
+
emitter.emitln(`self.${_varName(prop.name)} = ${_varName(prop.name)}`, this.level);
|
|
1027
1027
|
});
|
|
1028
1028
|
if (construct.body.length > 0) {
|
|
1029
1029
|
construct.body.forEach(gram => {
|
|
@@ -479,9 +479,9 @@ class Combinator extends CombinatorBase {
|
|
|
479
479
|
this.emitComplexValidate(emitter, `k${depth}`, fieldType.itemType, depth + 1);
|
|
480
480
|
this.levelDown();
|
|
481
481
|
} else {
|
|
482
|
-
emitter.emitln(`if self.${
|
|
482
|
+
emitter.emitln(`if self.${_varName(name)}:`, this.level);
|
|
483
483
|
this.levelUp();
|
|
484
|
-
emitter.emitln(`for k in self.${
|
|
484
|
+
emitter.emitln(`for k in self.${_varName(name)}:`, this.level);
|
|
485
485
|
this.levelUp();
|
|
486
486
|
this.emitComplexValidate(emitter, 'k', fieldType.itemType, depth + 1);
|
|
487
487
|
this.levelDown();
|
|
@@ -494,9 +494,9 @@ class Combinator extends CombinatorBase {
|
|
|
494
494
|
this.emitComplexValidate(emitter, `v${depth}`, fieldType.valType, depth + 1);
|
|
495
495
|
this.levelDown();
|
|
496
496
|
} else {
|
|
497
|
-
emitter.emitln(`if self.${
|
|
497
|
+
emitter.emitln(`if self.${_varName(name)}:`, this.level);
|
|
498
498
|
this.levelUp();
|
|
499
|
-
emitter.emitln(`for v in self.${
|
|
499
|
+
emitter.emitln(`for v in self.${_varName(name)}.values():`, this.level);
|
|
500
500
|
this.levelUp();
|
|
501
501
|
this.emitComplexValidate(emitter, 'v', fieldType.valType, depth + 1);
|
|
502
502
|
this.levelDown();
|
|
@@ -528,29 +528,29 @@ class Combinator extends CombinatorBase {
|
|
|
528
528
|
|
|
529
529
|
if (required.length > 0) {
|
|
530
530
|
emitter.emitln(
|
|
531
|
-
`self.validate_required(self.${
|
|
531
|
+
`self.validate_required(self.${_varName(prop.name)}, '${_varName(prop.name)}')`,
|
|
532
532
|
this.level
|
|
533
533
|
);
|
|
534
534
|
haveValidate = true;
|
|
535
535
|
}
|
|
536
536
|
if (maxLength.length > 0 || pattern.length > 0 || maximum.length > 0 || minimum.length > 0) {
|
|
537
|
-
emitter.emitln(`if self.${
|
|
537
|
+
emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
|
|
538
538
|
this.levelUp();
|
|
539
539
|
|
|
540
540
|
if (maxLength.length > 0) {
|
|
541
|
-
emitter.emitln(`self.validate_max_length(self.${
|
|
541
|
+
emitter.emitln(`self.validate_max_length(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${maxLength[0].value})`, this.level);
|
|
542
542
|
}
|
|
543
543
|
|
|
544
544
|
if (pattern.length > 0) {
|
|
545
|
-
emitter.emitln(`self.validate_pattern(self.${
|
|
545
|
+
emitter.emitln(`self.validate_pattern(self.${_varName(prop.name)}, '${_varName(prop.name)}', '${pattern[0].value}')`, this.level);
|
|
546
546
|
}
|
|
547
547
|
|
|
548
548
|
if (maximum.length > 0) {
|
|
549
|
-
emitter.emitln(`self.validate_maximum(self.${
|
|
549
|
+
emitter.emitln(`self.validate_maximum(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${maximum[0].value})`, this.level);
|
|
550
550
|
}
|
|
551
551
|
|
|
552
552
|
if (minimum.length > 0) {
|
|
553
|
-
emitter.emitln(`self.validate_minimum(self.${
|
|
553
|
+
emitter.emitln(`self.validate_minimum(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${minimum[0].value})`, this.level);
|
|
554
554
|
}
|
|
555
555
|
this.levelDown();
|
|
556
556
|
haveValidate = true;
|
|
@@ -565,9 +565,9 @@ class Combinator extends CombinatorBase {
|
|
|
565
565
|
emitter.emit(emt.output);
|
|
566
566
|
}
|
|
567
567
|
} else if (prop.type.objectType === 'model') {
|
|
568
|
-
emitter.emitln(`if self.${
|
|
568
|
+
emitter.emitln(`if self.${_varName(prop.name)}:`, this.level);
|
|
569
569
|
this.levelUp();
|
|
570
|
-
emitter.emitln(`self.${
|
|
570
|
+
emitter.emitln(`self.${_varName(prop.name)}.validate()`, this.level);
|
|
571
571
|
this.levelDown();
|
|
572
572
|
haveValidate = true;
|
|
573
573
|
}
|
|
@@ -607,9 +607,9 @@ class Combinator extends CombinatorBase {
|
|
|
607
607
|
}
|
|
608
608
|
} else {
|
|
609
609
|
emitter.emitln(`result['${fieldName}'] = []`, this.level);
|
|
610
|
-
emitter.emitln(`if self.${
|
|
610
|
+
emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
|
|
611
611
|
this.levelUp();
|
|
612
|
-
emitter.emitln(`for k in self.${
|
|
612
|
+
emitter.emitln(`for k in self.${_varName(name)}:`, this.level);
|
|
613
613
|
this.levelUp();
|
|
614
614
|
if (type.itemType.valType || type.itemType.itemType) {
|
|
615
615
|
const propInfo = {
|
|
@@ -651,9 +651,9 @@ class Combinator extends CombinatorBase {
|
|
|
651
651
|
}
|
|
652
652
|
} else {
|
|
653
653
|
emitter.emitln(`result['${fieldName}'] = {}`, this.level);
|
|
654
|
-
emitter.emitln(`if self.${
|
|
654
|
+
emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
|
|
655
655
|
this.levelUp();
|
|
656
|
-
emitter.emitln(`for k, v in self.${
|
|
656
|
+
emitter.emitln(`for k, v in self.${_varName(name)}.items():`, this.level);
|
|
657
657
|
this.levelUp();
|
|
658
658
|
if (type.valType.valType || type.valType.itemType) {
|
|
659
659
|
const propInfo = {
|
|
@@ -710,19 +710,19 @@ class Combinator extends CombinatorBase {
|
|
|
710
710
|
if (emt.needSave === true) {
|
|
711
711
|
emitter.emit(emt.output);
|
|
712
712
|
} else {
|
|
713
|
-
emitter.emitln(`if self.${
|
|
713
|
+
emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
|
|
714
714
|
this.levelUp();
|
|
715
|
-
emitter.emitln(`result['${name}'] = self.${
|
|
715
|
+
emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}`, this.level);
|
|
716
716
|
this.levelDown();
|
|
717
717
|
}
|
|
718
718
|
|
|
719
719
|
} else {
|
|
720
|
-
emitter.emitln(`if self.${
|
|
720
|
+
emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
|
|
721
721
|
this.levelUp();
|
|
722
722
|
if (prop.type.objectType === 'model') {
|
|
723
|
-
emitter.emitln(`result['${name}'] = self.${
|
|
723
|
+
emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}.to_map()`, this.level);
|
|
724
724
|
} else {
|
|
725
|
-
emitter.emitln(`result['${name}'] = self.${
|
|
725
|
+
emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}`, this.level);
|
|
726
726
|
}
|
|
727
727
|
this.levelDown();
|
|
728
728
|
}
|
|
@@ -760,7 +760,7 @@ class Combinator extends CombinatorBase {
|
|
|
760
760
|
emitter.emitln(`${carrier}['k${num}'] = l${depth}`, this.level);
|
|
761
761
|
}
|
|
762
762
|
} else {
|
|
763
|
-
emitter.emitln(`self.${
|
|
763
|
+
emitter.emitln(`self.${_varName(name)} = []`, this.level);
|
|
764
764
|
emitter.emitln(`if m.get('${fieldName}') is not None:`, this.level);
|
|
765
765
|
this.levelUp();
|
|
766
766
|
emitter.emitln(`for k in m.get('${fieldName}'):`, this.level);
|
|
@@ -772,11 +772,11 @@ class Combinator extends CombinatorBase {
|
|
|
772
772
|
type: type.itemType,
|
|
773
773
|
parentType: type.lexeme
|
|
774
774
|
};
|
|
775
|
-
this.emitComplexFromMap(emitter, propInfo, `self.${
|
|
775
|
+
this.emitComplexFromMap(emitter, propInfo, `self.${_varName(name)}`, depth + 1);
|
|
776
776
|
} else {
|
|
777
777
|
if (type.itemType.objectType === 'model') {
|
|
778
778
|
emitter.emitln(`temp_model = ${type.itemType.lexeme}()`, this.level);
|
|
779
|
-
emitter.emitln(`self.${
|
|
779
|
+
emitter.emitln(`self.${_varName(name)}.append(temp_model.from_map(k))`, this.level);
|
|
780
780
|
emitter.needSave = true;
|
|
781
781
|
} else {
|
|
782
782
|
emitter.needSave = false;
|
|
@@ -806,7 +806,7 @@ class Combinator extends CombinatorBase {
|
|
|
806
806
|
emitter.emitln(`${carrier}[k${num}] = d${depth}`, this.level);
|
|
807
807
|
}
|
|
808
808
|
} else {
|
|
809
|
-
emitter.emitln(`self.${
|
|
809
|
+
emitter.emitln(`self.${_varName(name)} = {}`, this.level);
|
|
810
810
|
emitter.emitln(`if m.get('${fieldName}') is not None:`, this.level);
|
|
811
811
|
this.levelUp();
|
|
812
812
|
emitter.emitln(`for k, v in m.get('${fieldName}').items():`, this.level);
|
|
@@ -818,11 +818,11 @@ class Combinator extends CombinatorBase {
|
|
|
818
818
|
type: type.valType,
|
|
819
819
|
parentType: type.lexeme
|
|
820
820
|
};
|
|
821
|
-
this.emitComplexFromMap(emitter, propInfo, `self.${
|
|
821
|
+
this.emitComplexFromMap(emitter, propInfo, `self.${_varName(name)}`, depth + 1);
|
|
822
822
|
} else {
|
|
823
823
|
if (type.valType.objectType === 'model') {
|
|
824
824
|
emitter.emitln(`temp_model = ${type.valType.lexeme}()`, this.level);
|
|
825
|
-
emitter.emitln(`self.${
|
|
825
|
+
emitter.emitln(`self.${_varName(name)}[k] = temp_model.from_map(v)`, this.level);
|
|
826
826
|
emitter.needSave = true;
|
|
827
827
|
} else {
|
|
828
828
|
emitter.needSave = false;
|
|
@@ -876,7 +876,7 @@ class Combinator extends CombinatorBase {
|
|
|
876
876
|
} else {
|
|
877
877
|
emitter.emitln(`if m.get('${name}') is not None:`, this.level);
|
|
878
878
|
this.levelUp();
|
|
879
|
-
emitter.emitln(`self.${
|
|
879
|
+
emitter.emitln(`self.${_varName(prop.name)} = m.get('${name}')`, this.level);
|
|
880
880
|
this.levelDown();
|
|
881
881
|
}
|
|
882
882
|
} else {
|
|
@@ -885,9 +885,9 @@ class Combinator extends CombinatorBase {
|
|
|
885
885
|
if (prop.type.objectType === 'model') {
|
|
886
886
|
let type = _type(prop.type);
|
|
887
887
|
emitter.emitln(`temp_model = ${type}()`, this.level);
|
|
888
|
-
emitter.emitln(`self.${
|
|
888
|
+
emitter.emitln(`self.${_varName(prop.name)} = temp_model.from_map(m['${name}'])`, this.level);
|
|
889
889
|
} else {
|
|
890
|
-
emitter.emitln(`self.${
|
|
890
|
+
emitter.emitln(`self.${_varName(prop.name)} = m.get('${name}')`, this.level);
|
|
891
891
|
}
|
|
892
892
|
this.levelDown();
|
|
893
893
|
}
|
|
@@ -965,7 +965,7 @@ class Combinator extends CombinatorBase {
|
|
|
965
965
|
}
|
|
966
966
|
|
|
967
967
|
const fieldType = this.typeHint(prop.type);
|
|
968
|
-
emitter.emitln(`self.${
|
|
968
|
+
emitter.emitln(`self.${_varName(prop.name)} = ${_varName(prop.name)} # type: ${fieldType}`, this.level);
|
|
969
969
|
});
|
|
970
970
|
if (construct.body.length > 0) {
|
|
971
971
|
construct.body.forEach(gram => {
|
package/src/lib/helper.js
CHANGED
|
@@ -41,7 +41,12 @@ function _subModelName(name) {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
function _string(str) {
|
|
44
|
-
|
|
44
|
+
if (str.string === '""') {
|
|
45
|
+
return '\\"\\"';
|
|
46
|
+
}
|
|
47
|
+
return str.string.replace(/([^\\])"+|^"/g, function (str) {
|
|
48
|
+
return str.replace(/"/g, '\\"');
|
|
49
|
+
});
|
|
45
50
|
}
|
|
46
51
|
|
|
47
52
|
function _isBasicType(type) {
|
|
@@ -172,9 +177,14 @@ function _toSnakeCase(str) {
|
|
|
172
177
|
return res;
|
|
173
178
|
}
|
|
174
179
|
|
|
180
|
+
function _escape(str) {
|
|
181
|
+
return str.includes('-') ? `${str}` : str;
|
|
182
|
+
}
|
|
183
|
+
|
|
175
184
|
|
|
176
185
|
module.exports = {
|
|
177
186
|
_config,
|
|
187
|
+
_escape,
|
|
178
188
|
_upperFirst,
|
|
179
189
|
_camelCase,
|
|
180
190
|
_string,
|
package/src/resolver/base.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
const debug = require('../lib/debug');
|
|
4
4
|
|
|
5
5
|
const {
|
|
6
|
+
_string,
|
|
7
|
+
_escape,
|
|
6
8
|
_isBasicType
|
|
7
9
|
} = require('../lib/helper');
|
|
8
10
|
|
|
@@ -176,7 +178,7 @@ class BaseResolver {
|
|
|
176
178
|
} else if (typeNode.type === 'modelBody') {
|
|
177
179
|
// is sub model
|
|
178
180
|
typeInfo['objectType'] = 'model';
|
|
179
|
-
typeInfo['lexeme'] = this.combinator.addModelInclude([this.object.name, sourceNode.fieldName.lexeme].join('.'));
|
|
181
|
+
typeInfo['lexeme'] = this.combinator.addModelInclude([this.object.name, _escape(sourceNode.fieldName.lexeme) || _string(sourceNode.fieldName)].join('.'));
|
|
180
182
|
return typeInfo;
|
|
181
183
|
} else if (_isBasicType(typeNode.type)) {
|
|
182
184
|
return this.resolveType(typeNode.type, typeNode);
|
package/src/resolver/client.js
CHANGED
|
@@ -43,7 +43,10 @@ const {
|
|
|
43
43
|
} = require('../langs/common/enum');
|
|
44
44
|
|
|
45
45
|
const {
|
|
46
|
-
_isBasicType
|
|
46
|
+
_isBasicType,
|
|
47
|
+
_string,
|
|
48
|
+
_escape
|
|
49
|
+
|
|
47
50
|
} = require('../lib/helper');
|
|
48
51
|
|
|
49
52
|
const systemPackage = ['Util'];
|
|
@@ -158,7 +161,7 @@ class ClientResolver extends BaseResolver {
|
|
|
158
161
|
ast.params.params.forEach(p => {
|
|
159
162
|
var param = new GrammerValue();
|
|
160
163
|
param.type = this.resolveType(p.paramType, p);
|
|
161
|
-
param.key = p.paramName.lexeme;
|
|
164
|
+
param.key = _escape(p.paramName.lexeme || _string(p.paramName));
|
|
162
165
|
if (p.needValidate) {
|
|
163
166
|
func.addBodyNode(new GrammerCall('method', [
|
|
164
167
|
{ type: 'object', name: param.key },
|
|
@@ -450,8 +453,8 @@ class ClientResolver extends BaseResolver {
|
|
|
450
453
|
valGrammer.needCast = true;
|
|
451
454
|
exprChild.isExpand = true;
|
|
452
455
|
}
|
|
453
|
-
if (field.fieldName && field.fieldName.lexeme) {
|
|
454
|
-
exprChild.key = field.fieldName.lexeme;
|
|
456
|
+
if (field.fieldName && (field.fieldName.lexeme || field.fieldName.string)) {
|
|
457
|
+
exprChild.key = (field.fieldName.lexeme) || _string(field.fieldName);
|
|
455
458
|
}
|
|
456
459
|
this.renderGrammerValue(exprChild, field.expr, expectedType);
|
|
457
460
|
this.findComments(valGrammer, field);
|
package/src/resolver/model.js
CHANGED
|
@@ -6,7 +6,9 @@ const assert = require('assert');
|
|
|
6
6
|
const BaseResolver = require('./base');
|
|
7
7
|
|
|
8
8
|
const {
|
|
9
|
-
|
|
9
|
+
_string,
|
|
10
|
+
_escape,
|
|
11
|
+
_isBasicType,
|
|
10
12
|
} = require('../lib/helper');
|
|
11
13
|
|
|
12
14
|
const {
|
|
@@ -95,7 +97,7 @@ class ModelResolver extends BaseResolver {
|
|
|
95
97
|
|
|
96
98
|
const prop = new PropItem();
|
|
97
99
|
prop.belong = object.index;
|
|
98
|
-
prop.name = node.fieldName.lexeme;
|
|
100
|
+
prop.name = _escape(node.fieldName.lexeme) || _string(node.fieldName);
|
|
99
101
|
prop.type = this.resolveType(node.fieldValue, node);
|
|
100
102
|
|
|
101
103
|
prop.modify.push(Modify.public());
|
|
@@ -141,7 +143,7 @@ class ModelResolver extends BaseResolver {
|
|
|
141
143
|
}
|
|
142
144
|
|
|
143
145
|
findSubModelsUsed(node, subModelUsed = [], pre = '') {
|
|
144
|
-
let name = node.fieldName.lexeme;
|
|
146
|
+
let name = _escape(node.fieldName.lexeme) || _string(node.fieldName);
|
|
145
147
|
if (pre !== '') {
|
|
146
148
|
name = pre + '.' + name;
|
|
147
149
|
}
|
|
@@ -162,11 +162,11 @@ class ComplexRequest(TeaModel):
|
|
|
162
162
|
# test keywords
|
|
163
163
|
self.from_ = from_ # type: str
|
|
164
164
|
# test keywords
|
|
165
|
-
self.
|
|
165
|
+
self.self_ = self_ # type: str
|
|
166
166
|
# test keywords
|
|
167
|
-
self.
|
|
167
|
+
self.print_ = print_ # type: str
|
|
168
168
|
# test keywords
|
|
169
|
-
self.
|
|
169
|
+
self.exec_ = exec_ # type: str
|
|
170
170
|
|
|
171
171
|
def validate(self):
|
|
172
172
|
self.validate_required(self.access_key, 'access_key')
|
|
@@ -199,9 +199,9 @@ class ComplexRequest(TeaModel):
|
|
|
199
199
|
if k2:
|
|
200
200
|
k2.validate()
|
|
201
201
|
self.validate_required(self.from_, 'from_')
|
|
202
|
-
self.validate_required(self.
|
|
203
|
-
self.validate_required(self.
|
|
204
|
-
self.validate_required(self.
|
|
202
|
+
self.validate_required(self.self_, 'self_')
|
|
203
|
+
self.validate_required(self.print_, 'print_')
|
|
204
|
+
self.validate_required(self.exec_, 'exec_')
|
|
205
205
|
|
|
206
206
|
def to_map(self):
|
|
207
207
|
_map = super(ComplexRequest, self).to_map()
|
|
@@ -249,12 +249,12 @@ class ComplexRequest(TeaModel):
|
|
|
249
249
|
result['ComplexList2'].append(l1)
|
|
250
250
|
if self.from_ is not None:
|
|
251
251
|
result['from'] = self.from_
|
|
252
|
-
if self.
|
|
253
|
-
result['self'] = self.
|
|
254
|
-
if self.
|
|
255
|
-
result['print'] = self.
|
|
256
|
-
if self.
|
|
257
|
-
result['exec'] = self.
|
|
252
|
+
if self.self_ is not None:
|
|
253
|
+
result['self'] = self.self_
|
|
254
|
+
if self.print_ is not None:
|
|
255
|
+
result['print'] = self.print_
|
|
256
|
+
if self.exec_ is not None:
|
|
257
|
+
result['exec'] = self.exec_
|
|
258
258
|
return result
|
|
259
259
|
|
|
260
260
|
def from_map(self, m=None):
|
|
@@ -305,11 +305,11 @@ class ComplexRequest(TeaModel):
|
|
|
305
305
|
if m.get('from') is not None:
|
|
306
306
|
self.from_ = m.get('from')
|
|
307
307
|
if m.get('self') is not None:
|
|
308
|
-
self.
|
|
308
|
+
self.self_ = m.get('self')
|
|
309
309
|
if m.get('print') is not None:
|
|
310
|
-
self.
|
|
310
|
+
self.print_ = m.get('print')
|
|
311
311
|
if m.get('exec') is not None:
|
|
312
|
-
self.
|
|
312
|
+
self.exec_ = m.get('exec')
|
|
313
313
|
return self
|
|
314
314
|
|
|
315
315
|
|
|
@@ -145,7 +145,8 @@ class MyModel(TeaModel):
|
|
|
145
145
|
def __init__(self, stringfield=None, bytesfield=None, stringarrayfield=None, mapfield=None, name=None,
|
|
146
146
|
submodel=None, subarray=None, maparray=None, object=None, numberfield=None, readable=None, exist_model=None,
|
|
147
147
|
class_end_time=None, max_length=None, min_length=None, maximum=None, minimum=None, test_3=None,
|
|
148
|
-
array_array_model=None, array_map_model=None, map_model=None, submodel_map=None, sub_model_model=None
|
|
148
|
+
array_array_model=None, array_map_model=None, map_model=None, submodel_map=None, sub_model_model=None,
|
|
149
|
+
map_array_map=None, map_array_model=None):
|
|
149
150
|
self.stringfield = stringfield # type: str
|
|
150
151
|
self.bytesfield = bytesfield # type: bytes
|
|
151
152
|
self.stringarrayfield = stringarrayfield # type: list[str]
|
|
@@ -175,6 +176,8 @@ class MyModel(TeaModel):
|
|
|
175
176
|
self.map_model = map_model # type: dict[str, M]
|
|
176
177
|
self.submodel_map = submodel_map # type: dict[str, MyModelSubmodel]
|
|
177
178
|
self.sub_model_model = sub_model_model # type: MyModelSubModelModel
|
|
179
|
+
self.map_array_map = map_array_map # type: dict[str, list[dict[str, str]]]
|
|
180
|
+
self.map_array_model = map_array_model # type: dict[str, list[M]]
|
|
178
181
|
|
|
179
182
|
def validate(self):
|
|
180
183
|
self.validate_required(self.stringfield, 'stringfield')
|
|
@@ -226,6 +229,11 @@ class MyModel(TeaModel):
|
|
|
226
229
|
self.validate_required(self.sub_model_model, 'sub_model_model')
|
|
227
230
|
if self.sub_model_model:
|
|
228
231
|
self.sub_model_model.validate()
|
|
232
|
+
if self.map_array_model:
|
|
233
|
+
for v in self.map_array_model.values():
|
|
234
|
+
for k1 in v:
|
|
235
|
+
if k1:
|
|
236
|
+
k1.validate()
|
|
229
237
|
|
|
230
238
|
def to_map(self):
|
|
231
239
|
_map = super(MyModel, self).to_map()
|
|
@@ -244,13 +252,13 @@ class MyModel(TeaModel):
|
|
|
244
252
|
if self.name is not None:
|
|
245
253
|
result['realName'] = self.name
|
|
246
254
|
if self.submodel is not None:
|
|
247
|
-
result['
|
|
248
|
-
result['
|
|
255
|
+
result['SubModel'] = self.submodel.to_map()
|
|
256
|
+
result['SubArray'] = []
|
|
249
257
|
if self.subarray is not None:
|
|
250
258
|
for k in self.subarray:
|
|
251
|
-
result['
|
|
259
|
+
result['SubArray'].append(k.to_map() if k else None)
|
|
252
260
|
if self.maparray is not None:
|
|
253
|
-
result['
|
|
261
|
+
result['MapArray'] = self.maparray
|
|
254
262
|
if self.object is not None:
|
|
255
263
|
result['object'] = self.object
|
|
256
264
|
if self.numberfield is not None:
|
|
@@ -271,30 +279,39 @@ class MyModel(TeaModel):
|
|
|
271
279
|
result['minimum'] = self.minimum
|
|
272
280
|
if self.test_3 is not None:
|
|
273
281
|
result['test3'] = self.test_3
|
|
274
|
-
result['
|
|
282
|
+
result['ArrayArrayModel'] = []
|
|
275
283
|
if self.array_array_model is not None:
|
|
276
284
|
for k in self.array_array_model:
|
|
277
285
|
l1 = []
|
|
278
286
|
for k1 in k:
|
|
279
287
|
l1.append(k1.to_map() if k1 else None)
|
|
280
|
-
result['
|
|
281
|
-
result['
|
|
288
|
+
result['ArrayArrayModel'].append(l1)
|
|
289
|
+
result['ArrayMapModel'] = []
|
|
282
290
|
if self.array_map_model is not None:
|
|
283
291
|
for k in self.array_map_model:
|
|
284
292
|
d1 = {}
|
|
285
293
|
for k1 ,v1 in k.items():
|
|
286
294
|
d1[k1] = v1.to_map()
|
|
287
|
-
result['
|
|
288
|
-
result['
|
|
295
|
+
result['ArrayMapModel'].append(d1)
|
|
296
|
+
result['MapModel'] = {}
|
|
289
297
|
if self.map_model is not None:
|
|
290
298
|
for k, v in self.map_model.items():
|
|
291
|
-
result['
|
|
292
|
-
result['
|
|
299
|
+
result['MapModel'][k] = v.to_map()
|
|
300
|
+
result['SubmodelMap'] = {}
|
|
293
301
|
if self.submodel_map is not None:
|
|
294
302
|
for k, v in self.submodel_map.items():
|
|
295
|
-
result['
|
|
303
|
+
result['SubmodelMap'][k] = v.to_map()
|
|
296
304
|
if self.sub_model_model is not None:
|
|
297
|
-
result['
|
|
305
|
+
result['SubModelModel'] = self.sub_model_model.to_map()
|
|
306
|
+
if self.map_array_map is not None:
|
|
307
|
+
result['MapArrayMap'] = self.map_array_map
|
|
308
|
+
result['MapArrayModel'] = {}
|
|
309
|
+
if self.map_array_model is not None:
|
|
310
|
+
for k, v in self.map_array_model.items():
|
|
311
|
+
l1 = []
|
|
312
|
+
for k1 in v:
|
|
313
|
+
l1.append(k1.to_map() if k1 else None)
|
|
314
|
+
result['MapArrayModel'][k] = l1
|
|
298
315
|
return result
|
|
299
316
|
|
|
300
317
|
def from_map(self, m=None):
|
|
@@ -309,16 +326,16 @@ class MyModel(TeaModel):
|
|
|
309
326
|
self.mapfield = m.get('mapfield')
|
|
310
327
|
if m.get('realName') is not None:
|
|
311
328
|
self.name = m.get('realName')
|
|
312
|
-
if m.get('
|
|
329
|
+
if m.get('SubModel') is not None:
|
|
313
330
|
temp_model = MyModelSubmodel()
|
|
314
|
-
self.submodel = temp_model.from_map(m['
|
|
331
|
+
self.submodel = temp_model.from_map(m['SubModel'])
|
|
315
332
|
self.subarray = []
|
|
316
|
-
if m.get('
|
|
317
|
-
for k in m.get('
|
|
333
|
+
if m.get('SubArray') is not None:
|
|
334
|
+
for k in m.get('SubArray'):
|
|
318
335
|
temp_model = M()
|
|
319
336
|
self.subarray.append(temp_model.from_map(k))
|
|
320
|
-
if m.get('
|
|
321
|
-
self.maparray = m.get('
|
|
337
|
+
if m.get('MapArray') is not None:
|
|
338
|
+
self.maparray = m.get('MapArray')
|
|
322
339
|
if m.get('object') is not None:
|
|
323
340
|
self.object = m.get('object')
|
|
324
341
|
if m.get('numberfield') is not None:
|
|
@@ -341,34 +358,44 @@ class MyModel(TeaModel):
|
|
|
341
358
|
if m.get('test3') is not None:
|
|
342
359
|
self.test_3 = m.get('test3')
|
|
343
360
|
self.array_array_model = []
|
|
344
|
-
if m.get('
|
|
345
|
-
for k in m.get('
|
|
361
|
+
if m.get('ArrayArrayModel') is not None:
|
|
362
|
+
for k in m.get('ArrayArrayModel'):
|
|
346
363
|
l1 = []
|
|
347
364
|
for k1 in k:
|
|
348
365
|
temp_model = M()
|
|
349
366
|
l1.append(temp_model.from_map(k1))
|
|
350
367
|
self.array_array_model.append(l1)
|
|
351
368
|
self.array_map_model = []
|
|
352
|
-
if m.get('
|
|
353
|
-
for k in m.get('
|
|
369
|
+
if m.get('ArrayMapModel') is not None:
|
|
370
|
+
for k in m.get('ArrayMapModel'):
|
|
354
371
|
d1 = {}
|
|
355
372
|
for k1 ,v1 in k.items():
|
|
356
373
|
temp_model = M()
|
|
357
374
|
d1[k1] = temp_model.from_map(v1)
|
|
358
375
|
self.array_map_model.append(d1)
|
|
359
376
|
self.map_model = {}
|
|
360
|
-
if m.get('
|
|
361
|
-
for k, v in m.get('
|
|
377
|
+
if m.get('MapModel') is not None:
|
|
378
|
+
for k, v in m.get('MapModel').items():
|
|
362
379
|
temp_model = M()
|
|
363
380
|
self.map_model[k] = temp_model.from_map(v)
|
|
364
381
|
self.submodel_map = {}
|
|
365
|
-
if m.get('
|
|
366
|
-
for k, v in m.get('
|
|
382
|
+
if m.get('SubmodelMap') is not None:
|
|
383
|
+
for k, v in m.get('SubmodelMap').items():
|
|
367
384
|
temp_model = MyModelSubmodel()
|
|
368
385
|
self.submodel_map[k] = temp_model.from_map(v)
|
|
369
|
-
if m.get('
|
|
386
|
+
if m.get('SubModelModel') is not None:
|
|
370
387
|
temp_model = MyModelSubModelModel()
|
|
371
|
-
self.sub_model_model = temp_model.from_map(m['
|
|
388
|
+
self.sub_model_model = temp_model.from_map(m['SubModelModel'])
|
|
389
|
+
if m.get('MapArrayMap') is not None:
|
|
390
|
+
self.map_array_map = m.get('MapArrayMap')
|
|
391
|
+
self.map_array_model = {}
|
|
392
|
+
if m.get('MapArrayModel') is not None:
|
|
393
|
+
for k, v in m.get('MapArrayModel').items():
|
|
394
|
+
l1 = []
|
|
395
|
+
for k1 in v:
|
|
396
|
+
temp_model = M()
|
|
397
|
+
l1.append(temp_model.from_map(k1))
|
|
398
|
+
self.map_array_model['k'] = l1
|
|
372
399
|
return self
|
|
373
400
|
|
|
374
401
|
|
|
@@ -196,7 +196,7 @@ class ComplexRequest(TeaModel):
|
|
|
196
196
|
# test keywords
|
|
197
197
|
self.from_ = from_
|
|
198
198
|
# test keywords
|
|
199
|
-
self.
|
|
199
|
+
self.self_ = self_
|
|
200
200
|
# test keywords
|
|
201
201
|
self.print = print
|
|
202
202
|
# test keywords
|
|
@@ -233,7 +233,7 @@ class ComplexRequest(TeaModel):
|
|
|
233
233
|
if k2:
|
|
234
234
|
k2.validate()
|
|
235
235
|
self.validate_required(self.from_, 'from_')
|
|
236
|
-
self.validate_required(self.
|
|
236
|
+
self.validate_required(self.self_, 'self_')
|
|
237
237
|
self.validate_required(self.print, 'print')
|
|
238
238
|
self.validate_required(self.exec, 'exec')
|
|
239
239
|
|
|
@@ -283,8 +283,8 @@ class ComplexRequest(TeaModel):
|
|
|
283
283
|
result['ComplexList2'].append(l1)
|
|
284
284
|
if self.from_ is not None:
|
|
285
285
|
result['from'] = self.from_
|
|
286
|
-
if self.
|
|
287
|
-
result['self'] = self.
|
|
286
|
+
if self.self_ is not None:
|
|
287
|
+
result['self'] = self.self_
|
|
288
288
|
if self.print is not None:
|
|
289
289
|
result['print'] = self.print
|
|
290
290
|
if self.exec is not None:
|
|
@@ -339,7 +339,7 @@ class ComplexRequest(TeaModel):
|
|
|
339
339
|
if m.get('from') is not None:
|
|
340
340
|
self.from_ = m.get('from')
|
|
341
341
|
if m.get('self') is not None:
|
|
342
|
-
self.
|
|
342
|
+
self.self_ = m.get('self')
|
|
343
343
|
if m.get('print') is not None:
|
|
344
344
|
self.print = m.get('print')
|
|
345
345
|
if m.get('exec') is not None:
|
|
@@ -197,6 +197,8 @@ class MyModel(TeaModel):
|
|
|
197
197
|
map_model: Dict[str, M] = None,
|
|
198
198
|
submodel_map: Dict[str, MyModelSubmodel] = None,
|
|
199
199
|
sub_model_model: MyModelSubModelModel = None,
|
|
200
|
+
map_array_map: Dict[str, List[Dict[str, str]]] = None,
|
|
201
|
+
map_array_model: Dict[str, List[M]] = None,
|
|
200
202
|
):
|
|
201
203
|
self.stringfield = stringfield
|
|
202
204
|
self.bytesfield = bytesfield
|
|
@@ -227,6 +229,8 @@ class MyModel(TeaModel):
|
|
|
227
229
|
self.map_model = map_model
|
|
228
230
|
self.submodel_map = submodel_map
|
|
229
231
|
self.sub_model_model = sub_model_model
|
|
232
|
+
self.map_array_map = map_array_map
|
|
233
|
+
self.map_array_model = map_array_model
|
|
230
234
|
|
|
231
235
|
def validate(self):
|
|
232
236
|
self.validate_required(self.stringfield, 'stringfield')
|
|
@@ -278,6 +282,11 @@ class MyModel(TeaModel):
|
|
|
278
282
|
self.validate_required(self.sub_model_model, 'sub_model_model')
|
|
279
283
|
if self.sub_model_model:
|
|
280
284
|
self.sub_model_model.validate()
|
|
285
|
+
if self.map_array_model:
|
|
286
|
+
for v in self.map_array_model.values():
|
|
287
|
+
for k1 in v:
|
|
288
|
+
if k1:
|
|
289
|
+
k1.validate()
|
|
281
290
|
|
|
282
291
|
def to_map(self):
|
|
283
292
|
_map = super().to_map()
|
|
@@ -296,13 +305,13 @@ class MyModel(TeaModel):
|
|
|
296
305
|
if self.name is not None:
|
|
297
306
|
result['realName'] = self.name
|
|
298
307
|
if self.submodel is not None:
|
|
299
|
-
result['
|
|
300
|
-
result['
|
|
308
|
+
result['SubModel'] = self.submodel.to_map()
|
|
309
|
+
result['SubArray'] = []
|
|
301
310
|
if self.subarray is not None:
|
|
302
311
|
for k in self.subarray:
|
|
303
|
-
result['
|
|
312
|
+
result['SubArray'].append(k.to_map() if k else None)
|
|
304
313
|
if self.maparray is not None:
|
|
305
|
-
result['
|
|
314
|
+
result['MapArray'] = self.maparray
|
|
306
315
|
if self.object is not None:
|
|
307
316
|
result['object'] = self.object
|
|
308
317
|
if self.numberfield is not None:
|
|
@@ -323,30 +332,39 @@ class MyModel(TeaModel):
|
|
|
323
332
|
result['minimum'] = self.minimum
|
|
324
333
|
if self.test_3 is not None:
|
|
325
334
|
result['test3'] = self.test_3
|
|
326
|
-
result['
|
|
335
|
+
result['ArrayArrayModel'] = []
|
|
327
336
|
if self.array_array_model is not None:
|
|
328
337
|
for k in self.array_array_model:
|
|
329
338
|
l1 = []
|
|
330
339
|
for k1 in k:
|
|
331
340
|
l1.append(k1.to_map() if k1 else None)
|
|
332
|
-
result['
|
|
333
|
-
result['
|
|
341
|
+
result['ArrayArrayModel'].append(l1)
|
|
342
|
+
result['ArrayMapModel'] = []
|
|
334
343
|
if self.array_map_model is not None:
|
|
335
344
|
for k in self.array_map_model:
|
|
336
345
|
d1 = {}
|
|
337
346
|
for k1 ,v1 in k.items():
|
|
338
347
|
d1[k1] = v1.to_map()
|
|
339
|
-
result['
|
|
340
|
-
result['
|
|
348
|
+
result['ArrayMapModel'].append(d1)
|
|
349
|
+
result['MapModel'] = {}
|
|
341
350
|
if self.map_model is not None:
|
|
342
351
|
for k, v in self.map_model.items():
|
|
343
|
-
result['
|
|
344
|
-
result['
|
|
352
|
+
result['MapModel'][k] = v.to_map()
|
|
353
|
+
result['SubmodelMap'] = {}
|
|
345
354
|
if self.submodel_map is not None:
|
|
346
355
|
for k, v in self.submodel_map.items():
|
|
347
|
-
result['
|
|
356
|
+
result['SubmodelMap'][k] = v.to_map()
|
|
348
357
|
if self.sub_model_model is not None:
|
|
349
|
-
result['
|
|
358
|
+
result['SubModelModel'] = self.sub_model_model.to_map()
|
|
359
|
+
if self.map_array_map is not None:
|
|
360
|
+
result['MapArrayMap'] = self.map_array_map
|
|
361
|
+
result['MapArrayModel'] = {}
|
|
362
|
+
if self.map_array_model is not None:
|
|
363
|
+
for k, v in self.map_array_model.items():
|
|
364
|
+
l1 = []
|
|
365
|
+
for k1 in v:
|
|
366
|
+
l1.append(k1.to_map() if k1 else None)
|
|
367
|
+
result['MapArrayModel'][k] = l1
|
|
350
368
|
return result
|
|
351
369
|
|
|
352
370
|
def from_map(self, m: dict = None):
|
|
@@ -361,16 +379,16 @@ class MyModel(TeaModel):
|
|
|
361
379
|
self.mapfield = m.get('mapfield')
|
|
362
380
|
if m.get('realName') is not None:
|
|
363
381
|
self.name = m.get('realName')
|
|
364
|
-
if m.get('
|
|
382
|
+
if m.get('SubModel') is not None:
|
|
365
383
|
temp_model = MyModelSubmodel()
|
|
366
|
-
self.submodel = temp_model.from_map(m['
|
|
384
|
+
self.submodel = temp_model.from_map(m['SubModel'])
|
|
367
385
|
self.subarray = []
|
|
368
|
-
if m.get('
|
|
369
|
-
for k in m.get('
|
|
386
|
+
if m.get('SubArray') is not None:
|
|
387
|
+
for k in m.get('SubArray'):
|
|
370
388
|
temp_model = M()
|
|
371
389
|
self.subarray.append(temp_model.from_map(k))
|
|
372
|
-
if m.get('
|
|
373
|
-
self.maparray = m.get('
|
|
390
|
+
if m.get('MapArray') is not None:
|
|
391
|
+
self.maparray = m.get('MapArray')
|
|
374
392
|
if m.get('object') is not None:
|
|
375
393
|
self.object = m.get('object')
|
|
376
394
|
if m.get('numberfield') is not None:
|
|
@@ -393,34 +411,44 @@ class MyModel(TeaModel):
|
|
|
393
411
|
if m.get('test3') is not None:
|
|
394
412
|
self.test_3 = m.get('test3')
|
|
395
413
|
self.array_array_model = []
|
|
396
|
-
if m.get('
|
|
397
|
-
for k in m.get('
|
|
414
|
+
if m.get('ArrayArrayModel') is not None:
|
|
415
|
+
for k in m.get('ArrayArrayModel'):
|
|
398
416
|
l1 = []
|
|
399
417
|
for k1 in k:
|
|
400
418
|
temp_model = M()
|
|
401
419
|
l1.append(temp_model.from_map(k1))
|
|
402
420
|
self.array_array_model.append(l1)
|
|
403
421
|
self.array_map_model = []
|
|
404
|
-
if m.get('
|
|
405
|
-
for k in m.get('
|
|
422
|
+
if m.get('ArrayMapModel') is not None:
|
|
423
|
+
for k in m.get('ArrayMapModel'):
|
|
406
424
|
d1 = {}
|
|
407
425
|
for k1, v1 in k.items():
|
|
408
426
|
temp_model = M()
|
|
409
427
|
d1[k1] = temp_model.from_map(v1)
|
|
410
428
|
self.array_map_model.append(d1)
|
|
411
429
|
self.map_model = {}
|
|
412
|
-
if m.get('
|
|
413
|
-
for k, v in m.get('
|
|
430
|
+
if m.get('MapModel') is not None:
|
|
431
|
+
for k, v in m.get('MapModel').items():
|
|
414
432
|
temp_model = M()
|
|
415
433
|
self.map_model[k] = temp_model.from_map(v)
|
|
416
434
|
self.submodel_map = {}
|
|
417
|
-
if m.get('
|
|
418
|
-
for k, v in m.get('
|
|
435
|
+
if m.get('SubmodelMap') is not None:
|
|
436
|
+
for k, v in m.get('SubmodelMap').items():
|
|
419
437
|
temp_model = MyModelSubmodel()
|
|
420
438
|
self.submodel_map[k] = temp_model.from_map(v)
|
|
421
|
-
if m.get('
|
|
439
|
+
if m.get('SubModelModel') is not None:
|
|
422
440
|
temp_model = MyModelSubModelModel()
|
|
423
|
-
self.sub_model_model = temp_model.from_map(m['
|
|
441
|
+
self.sub_model_model = temp_model.from_map(m['SubModelModel'])
|
|
442
|
+
if m.get('MapArrayMap') is not None:
|
|
443
|
+
self.map_array_map = m.get('MapArrayMap')
|
|
444
|
+
self.map_array_model = {}
|
|
445
|
+
if m.get('MapArrayModel') is not None:
|
|
446
|
+
for k, v in m.get('MapArrayModel').items():
|
|
447
|
+
l1 = []
|
|
448
|
+
for k1 in v:
|
|
449
|
+
temp_model = M()
|
|
450
|
+
l1.append(temp_model.from_map(k1))
|
|
451
|
+
self.map_array_model['k'] = l1
|
|
424
452
|
return self
|
|
425
453
|
|
|
426
454
|
|
|
@@ -16,9 +16,9 @@ model MyModel = {
|
|
|
16
16
|
name: string(name='realName'),
|
|
17
17
|
submodel: {
|
|
18
18
|
stringfield: string,
|
|
19
|
-
},
|
|
20
|
-
subarray: [ M ],
|
|
21
|
-
maparray: [ map[string]any ],
|
|
19
|
+
} (name='SubModel'),
|
|
20
|
+
subarray: [ M ] (name='SubArray'),
|
|
21
|
+
maparray: [ map[string]any ] (name='MapArray'),
|
|
22
22
|
object: object,
|
|
23
23
|
numberfield: integer,
|
|
24
24
|
readable: readable,
|
|
@@ -29,15 +29,17 @@ model MyModel = {
|
|
|
29
29
|
maximum?: long(description='校验最大值', example='10000', maximum='99000000'),
|
|
30
30
|
minimum?: long(description='校验最小值', example='10000', minimum='0'),
|
|
31
31
|
test3: [[string]](description='test3 desc', name='test3'),
|
|
32
|
-
arrayArrayModel: [[M]],
|
|
33
|
-
arrayMapModel: [ map[string]M ],
|
|
32
|
+
arrayArrayModel: [[M]] (name='ArrayArrayModel'),
|
|
33
|
+
arrayMapModel: [ map[string]M ] (name='ArrayMapModel'),
|
|
34
34
|
|
|
35
|
-
mapModel: map[string]M,
|
|
36
|
-
submodelMap: map[string]MyModel.submodel,
|
|
35
|
+
mapModel: map[string]M (name='MapModel'),
|
|
36
|
+
submodelMap: map[string]MyModel.submodel (name='SubmodelMap'),
|
|
37
37
|
|
|
38
38
|
subModelModel: {
|
|
39
39
|
subModel: [ M ]
|
|
40
|
-
}
|
|
40
|
+
} (name='SubModelModel'),
|
|
41
|
+
mapArrayMap?: map[string][ map[string]string ] (name='MapArrayMap'),
|
|
42
|
+
mapArrayModel?: map[string][ M ] (name='MapArrayModel'),
|
|
41
43
|
};
|
|
42
44
|
|
|
43
45
|
model M = {
|