@darabonba/python-generator 1.2.10 → 1.2.11
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 +4 -0
- package/package.json +1 -1
- package/src/resolver/base.js +4 -4
- package/tests/expected/python2/complex/tea_python_tests/client.py +12 -0
- package/tests/expected/python2/complex/tea_python_tests/models.py +66 -1
- package/tests/expected/python3/complex/tea_python_tests/client.py +12 -0
- package/tests/expected/python3/complex/tea_python_tests/models.py +70 -0
- package/tests/fixtures/complex/main.dara +13 -0
package/ChangeLog.md
CHANGED
package/package.json
CHANGED
package/src/resolver/base.js
CHANGED
|
@@ -153,7 +153,7 @@ class BaseResolver {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
resolveType(typeNode, sourceNode, prop) {
|
|
156
|
-
let typeInfo = {objectType: 'module'};
|
|
156
|
+
let typeInfo = { objectType: 'module' };
|
|
157
157
|
if (typeNode.idType) {
|
|
158
158
|
if (typeNode.idType === 'model') {
|
|
159
159
|
typeInfo['objectType'] = 'model';
|
|
@@ -172,7 +172,7 @@ class BaseResolver {
|
|
|
172
172
|
debug.stack(typeNode, sourceNode);
|
|
173
173
|
} else if (typeNode.type) {
|
|
174
174
|
if (typeNode.type === 'fieldType') {
|
|
175
|
-
return this.resolveType(typeNode.fieldType, typeNode);
|
|
175
|
+
return this.resolveType(typeNode.fieldType, typeNode, prop);
|
|
176
176
|
} else if (typeNode.type === 'modelBody') {
|
|
177
177
|
// is sub model
|
|
178
178
|
typeInfo['objectType'] = 'model';
|
|
@@ -239,14 +239,14 @@ class BaseResolver {
|
|
|
239
239
|
let itemType;
|
|
240
240
|
if (sourceNode.fieldItemType.type === 'modelBody') {
|
|
241
241
|
typeInfo['objectType'] = 'model';
|
|
242
|
-
typeInfo['lexeme'] = this.combinator.addModelInclude(sourceNode.itemType);
|
|
242
|
+
typeInfo['lexeme'] = this.combinator.addModelInclude(sourceNode.itemType ? sourceNode.itemType : prop);
|
|
243
243
|
itemType = typeInfo;
|
|
244
244
|
} else if (sourceNode.fieldItemType.idType === 'model') {
|
|
245
245
|
typeInfo['objectType'] = 'model';
|
|
246
246
|
typeInfo['lexeme'] = this.combinator.addModelInclude(sourceNode.fieldItemType.lexeme);
|
|
247
247
|
itemType = typeInfo;
|
|
248
248
|
} else {
|
|
249
|
-
itemType = this.resolveType(sourceNode.fieldItemType, sourceNode);
|
|
249
|
+
itemType = this.resolveType(sourceNode.fieldItemType, sourceNode, sourceNode.itemType ? sourceNode.itemType : prop);
|
|
250
250
|
}
|
|
251
251
|
const arrayType = {
|
|
252
252
|
lexeme: 'array',
|
|
@@ -163,6 +163,18 @@ class Client(SourceClient):
|
|
|
163
163
|
'1'
|
|
164
164
|
]
|
|
165
165
|
|
|
166
|
+
@staticmethod
|
|
167
|
+
def array_2():
|
|
168
|
+
temp = source_models.Config()
|
|
169
|
+
any_arr = [
|
|
170
|
+
temp
|
|
171
|
+
]
|
|
172
|
+
return [
|
|
173
|
+
[
|
|
174
|
+
any_arr
|
|
175
|
+
]
|
|
176
|
+
]
|
|
177
|
+
|
|
166
178
|
def template_string(self):
|
|
167
179
|
return '/%s' % TeaConverter.to_unicode(self._protocol)
|
|
168
180
|
|
|
@@ -89,8 +89,38 @@ class ComplexRequestPart(TeaModel):
|
|
|
89
89
|
return self
|
|
90
90
|
|
|
91
91
|
|
|
92
|
+
class ComplexRequestComplexList(TeaModel):
|
|
93
|
+
def __init__(self, name=None, code=None):
|
|
94
|
+
self.name = name # type: str
|
|
95
|
+
self.code = code # type: int
|
|
96
|
+
|
|
97
|
+
def validate(self):
|
|
98
|
+
pass
|
|
99
|
+
|
|
100
|
+
def to_map(self):
|
|
101
|
+
_map = super(ComplexRequestComplexList, self).to_map()
|
|
102
|
+
if _map is not None:
|
|
103
|
+
return _map
|
|
104
|
+
|
|
105
|
+
result = dict()
|
|
106
|
+
if self.name is not None:
|
|
107
|
+
result['Name'] = self.name
|
|
108
|
+
if self.code is not None:
|
|
109
|
+
result['Code'] = self.code
|
|
110
|
+
return result
|
|
111
|
+
|
|
112
|
+
def from_map(self, m=None):
|
|
113
|
+
m = m or dict()
|
|
114
|
+
if m.get('Name') is not None:
|
|
115
|
+
self.name = m.get('Name')
|
|
116
|
+
if m.get('Code') is not None:
|
|
117
|
+
self.code = m.get('Code')
|
|
118
|
+
return self
|
|
119
|
+
|
|
120
|
+
|
|
92
121
|
class ComplexRequest(TeaModel):
|
|
93
|
-
def __init__(self, access_key=None, body=None, strs=None, header=None, num=None, configs=None, part=None
|
|
122
|
+
def __init__(self, access_key=None, body=None, strs=None, header=None, num=None, configs=None, part=None,
|
|
123
|
+
complex_list=None, complex_list_1=None):
|
|
94
124
|
self.access_key = access_key # type: str
|
|
95
125
|
# Body
|
|
96
126
|
self.body = body # type: READABLE
|
|
@@ -102,6 +132,8 @@ class ComplexRequest(TeaModel):
|
|
|
102
132
|
self.configs = configs # type: ComplexRequestConfigs
|
|
103
133
|
# Part
|
|
104
134
|
self.part = part # type: list[ComplexRequestPart]
|
|
135
|
+
self.complex_list = complex_list # type: list[list[list[ComplexRequestComplexList]]]
|
|
136
|
+
self.complex_list_1 = complex_list_1 # type: list[list[dict[str, str]]]
|
|
105
137
|
|
|
106
138
|
def validate(self):
|
|
107
139
|
self.validate_required(self.access_key, 'access_key')
|
|
@@ -118,6 +150,14 @@ class ComplexRequest(TeaModel):
|
|
|
118
150
|
for k in self.part:
|
|
119
151
|
if k:
|
|
120
152
|
k.validate()
|
|
153
|
+
self.validate_required(self.complex_list, 'complex_list')
|
|
154
|
+
if self.complex_list:
|
|
155
|
+
for k in self.complex_list:
|
|
156
|
+
for k1 in k:
|
|
157
|
+
for k2 in k1:
|
|
158
|
+
if k2:
|
|
159
|
+
k2.validate()
|
|
160
|
+
self.validate_required(self.complex_list_1, 'complex_list_1')
|
|
121
161
|
|
|
122
162
|
def to_map(self):
|
|
123
163
|
_map = super(ComplexRequest, self).to_map()
|
|
@@ -141,6 +181,18 @@ class ComplexRequest(TeaModel):
|
|
|
141
181
|
if self.part is not None:
|
|
142
182
|
for k in self.part:
|
|
143
183
|
result['Part'].append(k.to_map() if k else None)
|
|
184
|
+
result['complexList'] = []
|
|
185
|
+
if self.complex_list is not None:
|
|
186
|
+
for k in self.complex_list:
|
|
187
|
+
l1 = []
|
|
188
|
+
for k1 in k:
|
|
189
|
+
l2 = []
|
|
190
|
+
for k2 in k1:
|
|
191
|
+
l2.append(k2.to_map() if k2 else None)
|
|
192
|
+
l1.append(l2)
|
|
193
|
+
result['complexList'].append(l1)
|
|
194
|
+
if self.complex_list_1 is not None:
|
|
195
|
+
result['complexList1'] = self.complex_list_1
|
|
144
196
|
return result
|
|
145
197
|
|
|
146
198
|
def from_map(self, m=None):
|
|
@@ -164,6 +216,19 @@ class ComplexRequest(TeaModel):
|
|
|
164
216
|
for k in m.get('Part'):
|
|
165
217
|
temp_model = ComplexRequestPart()
|
|
166
218
|
self.part.append(temp_model.from_map(k))
|
|
219
|
+
self.complex_list = []
|
|
220
|
+
if m.get('complexList') is not None:
|
|
221
|
+
for k in m.get('complexList'):
|
|
222
|
+
l1 = []
|
|
223
|
+
for k1 in k:
|
|
224
|
+
l2 = []
|
|
225
|
+
for k2 in k1:
|
|
226
|
+
temp_model = ComplexRequestComplexList()
|
|
227
|
+
l2.append(temp_model.from_map(k2))
|
|
228
|
+
l1.append(l2)
|
|
229
|
+
self.complex_list.append(l1)
|
|
230
|
+
if m.get('complexList1') is not None:
|
|
231
|
+
self.complex_list_1 = m.get('complexList1')
|
|
167
232
|
return self
|
|
168
233
|
|
|
169
234
|
|
|
@@ -337,6 +337,18 @@ class Client(SourceClient):
|
|
|
337
337
|
'1'
|
|
338
338
|
]
|
|
339
339
|
|
|
340
|
+
@staticmethod
|
|
341
|
+
def array_2() -> List[List[Any]]:
|
|
342
|
+
temp = source_models.Config()
|
|
343
|
+
any_arr = [
|
|
344
|
+
temp
|
|
345
|
+
]
|
|
346
|
+
return [
|
|
347
|
+
[
|
|
348
|
+
any_arr
|
|
349
|
+
]
|
|
350
|
+
]
|
|
351
|
+
|
|
340
352
|
def template_string(self) -> str:
|
|
341
353
|
return f'/{self._protocol}'
|
|
342
354
|
|
|
@@ -101,6 +101,39 @@ class ComplexRequestPart(TeaModel):
|
|
|
101
101
|
return self
|
|
102
102
|
|
|
103
103
|
|
|
104
|
+
class ComplexRequestComplexList(TeaModel):
|
|
105
|
+
def __init__(
|
|
106
|
+
self,
|
|
107
|
+
name: str = None,
|
|
108
|
+
code: int = None,
|
|
109
|
+
):
|
|
110
|
+
self.name = name
|
|
111
|
+
self.code = code
|
|
112
|
+
|
|
113
|
+
def validate(self):
|
|
114
|
+
pass
|
|
115
|
+
|
|
116
|
+
def to_map(self):
|
|
117
|
+
_map = super().to_map()
|
|
118
|
+
if _map is not None:
|
|
119
|
+
return _map
|
|
120
|
+
|
|
121
|
+
result = dict()
|
|
122
|
+
if self.name is not None:
|
|
123
|
+
result['Name'] = self.name
|
|
124
|
+
if self.code is not None:
|
|
125
|
+
result['Code'] = self.code
|
|
126
|
+
return result
|
|
127
|
+
|
|
128
|
+
def from_map(self, m: dict = None):
|
|
129
|
+
m = m or dict()
|
|
130
|
+
if m.get('Name') is not None:
|
|
131
|
+
self.name = m.get('Name')
|
|
132
|
+
if m.get('Code') is not None:
|
|
133
|
+
self.code = m.get('Code')
|
|
134
|
+
return self
|
|
135
|
+
|
|
136
|
+
|
|
104
137
|
class ComplexRequest(TeaModel):
|
|
105
138
|
def __init__(
|
|
106
139
|
self,
|
|
@@ -111,6 +144,8 @@ class ComplexRequest(TeaModel):
|
|
|
111
144
|
num: int = None,
|
|
112
145
|
configs: ComplexRequestConfigs = None,
|
|
113
146
|
part: List[ComplexRequestPart] = None,
|
|
147
|
+
complex_list: List[List[List[ComplexRequestComplexList]]] = None,
|
|
148
|
+
complex_list_1: List[List[Dict[str, str]]] = None,
|
|
114
149
|
):
|
|
115
150
|
self.access_key = access_key
|
|
116
151
|
# Body
|
|
@@ -123,6 +158,8 @@ class ComplexRequest(TeaModel):
|
|
|
123
158
|
self.configs = configs
|
|
124
159
|
# Part
|
|
125
160
|
self.part = part
|
|
161
|
+
self.complex_list = complex_list
|
|
162
|
+
self.complex_list_1 = complex_list_1
|
|
126
163
|
|
|
127
164
|
def validate(self):
|
|
128
165
|
self.validate_required(self.access_key, 'access_key')
|
|
@@ -139,6 +176,14 @@ class ComplexRequest(TeaModel):
|
|
|
139
176
|
for k in self.part:
|
|
140
177
|
if k:
|
|
141
178
|
k.validate()
|
|
179
|
+
self.validate_required(self.complex_list, 'complex_list')
|
|
180
|
+
if self.complex_list:
|
|
181
|
+
for k in self.complex_list:
|
|
182
|
+
for k1 in k:
|
|
183
|
+
for k2 in k1:
|
|
184
|
+
if k2:
|
|
185
|
+
k2.validate()
|
|
186
|
+
self.validate_required(self.complex_list_1, 'complex_list_1')
|
|
142
187
|
|
|
143
188
|
def to_map(self):
|
|
144
189
|
_map = super().to_map()
|
|
@@ -162,6 +207,18 @@ class ComplexRequest(TeaModel):
|
|
|
162
207
|
if self.part is not None:
|
|
163
208
|
for k in self.part:
|
|
164
209
|
result['Part'].append(k.to_map() if k else None)
|
|
210
|
+
result['complexList'] = []
|
|
211
|
+
if self.complex_list is not None:
|
|
212
|
+
for k in self.complex_list:
|
|
213
|
+
l1 = []
|
|
214
|
+
for k1 in k:
|
|
215
|
+
l2 = []
|
|
216
|
+
for k2 in k1:
|
|
217
|
+
l2.append(k2.to_map() if k2 else None)
|
|
218
|
+
l1.append(l2)
|
|
219
|
+
result['complexList'].append(l1)
|
|
220
|
+
if self.complex_list_1 is not None:
|
|
221
|
+
result['complexList1'] = self.complex_list_1
|
|
165
222
|
return result
|
|
166
223
|
|
|
167
224
|
def from_map(self, m: dict = None):
|
|
@@ -185,6 +242,19 @@ class ComplexRequest(TeaModel):
|
|
|
185
242
|
for k in m.get('Part'):
|
|
186
243
|
temp_model = ComplexRequestPart()
|
|
187
244
|
self.part.append(temp_model.from_map(k))
|
|
245
|
+
self.complex_list = []
|
|
246
|
+
if m.get('complexList') is not None:
|
|
247
|
+
for k in m.get('complexList'):
|
|
248
|
+
l1 = []
|
|
249
|
+
for k1 in k:
|
|
250
|
+
l2 = []
|
|
251
|
+
for k2 in k1:
|
|
252
|
+
temp_model = ComplexRequestComplexList()
|
|
253
|
+
l2.append(temp_model.from_map(k2))
|
|
254
|
+
l1.append(l2)
|
|
255
|
+
self.complex_list.append(l1)
|
|
256
|
+
if m.get('complexList1') is not None:
|
|
257
|
+
self.complex_list_1 = m.get('complexList1')
|
|
188
258
|
return self
|
|
189
259
|
|
|
190
260
|
|
|
@@ -29,6 +29,13 @@ model ComplexRequest = {
|
|
|
29
29
|
partNumber?: string(description='PartNumber', name='PartNumber')
|
|
30
30
|
}
|
|
31
31
|
](description='Part', name='Part'),
|
|
32
|
+
complexList: [[[
|
|
33
|
+
{
|
|
34
|
+
name?: string(name='Name'),
|
|
35
|
+
code?: int32(name='Code'),
|
|
36
|
+
}
|
|
37
|
+
]]](name='complexList'),
|
|
38
|
+
complexList1: [[map[string]string]],
|
|
32
39
|
}
|
|
33
40
|
|
|
34
41
|
async function hello(request: object, strs: [ string ]): [ string ] {
|
|
@@ -138,6 +145,12 @@ static function array1(): [ string ] {
|
|
|
138
145
|
return ["1"];
|
|
139
146
|
}
|
|
140
147
|
|
|
148
|
+
static function array2(): [[ any ]] {
|
|
149
|
+
var temp = new Source.Config{};
|
|
150
|
+
var anyArr : [Source.Config] = [temp];
|
|
151
|
+
return [[anyArr]];
|
|
152
|
+
}
|
|
153
|
+
|
|
141
154
|
async function TemplateString(): string {
|
|
142
155
|
return `/${@protocol}`;
|
|
143
156
|
}
|