@darabonba/python-generator 2.0.0 → 2.0.2

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 (38) hide show
  1. package/lib/generator.js +43 -29
  2. package/package.json +1 -1
  3. package/tests/expected/complex/tea_python_tests/client.py +5 -4
  4. package/tests/expected/complex/tea_python_tests/models.py +16 -16
  5. package/tests/expected/model/tea_python_tests/models.py +41 -58
  6. package/tests/expected/multi/tea_python_tests/model/user.py +3 -0
  7. package/tests/fixtures/complex/main.dara +1 -0
  8. package/tests/fixtures/multi/libraries/darabonba_Util_0.2.11/Teafile +7 -1
  9. package/tests/fixtures/multi/libraries/darabonba_Util_0.2.11/util.tea +2 -0
  10. package/tests/fixtures/multi/model/user.dara +2 -0
  11. package/tests/output/complex/tea_python_tests/client.py +5 -4
  12. package/tests/output/complex/tea_python_tests/models.py +16 -16
  13. package/tests/output/model/tea_python_tests/models.py +41 -58
  14. package/tests/output/multi/tea_python_tests/model/user.py +3 -0
  15. package/src/generator.js +0 -231
  16. package/src/langs/common/combinator.js +0 -193
  17. package/src/langs/common/config.js +0 -60
  18. package/src/langs/common/enum.js +0 -179
  19. package/src/langs/common/items.js +0 -551
  20. package/src/langs/common/package_info.js +0 -53
  21. package/src/langs/python/combinator.js +0 -1898
  22. package/src/langs/python/config.js +0 -169
  23. package/src/langs/python/files/.gitignore.tmpl +0 -5
  24. package/src/langs/python/files/__init__.py.tmpl +0 -1
  25. package/src/langs/python/files/setup.py.tmpl +0 -74
  26. package/src/langs/python/package_info.js +0 -78
  27. package/src/langs/python2/combinator.js +0 -1770
  28. package/src/langs/python2/config.js +0 -162
  29. package/src/langs/python2/files/.gitignore.tmpl +0 -5
  30. package/src/langs/python2/files/__init__.py.tmpl +0 -1
  31. package/src/langs/python2/files/setup.py.tmpl +0 -82
  32. package/src/langs/python2/package_info.js +0 -78
  33. package/src/lib/debug.js +0 -55
  34. package/src/lib/emitter.js +0 -95
  35. package/src/lib/helper.js +0 -207
  36. package/src/resolver/base.js +0 -282
  37. package/src/resolver/client.js +0 -1013
  38. package/src/resolver/model.js +0 -159
package/lib/generator.js CHANGED
@@ -59,7 +59,6 @@ class Visitor {
59
59
  // 新增:用于存储已使用的类型
60
60
  this.isAsyncFunction = false; // 新增:用于标记是否为异步函数
61
61
  this.isStaticFunction = true; // 新增:用于标记是否为非静态函数
62
- this.clientName = new Map(); // 新增:用于存储importName
63
62
  // this.moduleDir = this.config.modelDirName || 'Models'; // 新增,用于存储models文件
64
63
 
65
64
  this.output = '';
@@ -274,6 +273,8 @@ setup(
274
273
  this.notes = ast.notes;
275
274
  this.builtin = getBuiltin(this);
276
275
  ast.innerModule = new Map();
276
+
277
+ this.clientName = new Map();
277
278
  this.packageInfo = {};
278
279
  this.usedTypes = [];
279
280
  this.imports = [];
@@ -566,7 +567,9 @@ setup(
566
567
  this.emit('def __init__(self):\n', level + 2);
567
568
  }
568
569
  if (ast.initBody && ast.initBody.stmts.length !==0 ) {
570
+ this.isStaticFunction = false;
569
571
  this.visitStmts(ast.initBody, level + 4);
572
+ this.isStaticFunction = true;
570
573
  } else {
571
574
  this.emit('pass\n', level + 4);
572
575
  }
@@ -628,14 +631,15 @@ setup(
628
631
  throw new Error(`The '${aliasId}' has no Python supported.`);
629
632
  }
630
633
  let className = _camelCase(pyPkg.clientName || 'client');
634
+ let filename = _snakeCase(className);
631
635
  let classNamespace = pyPkg.package;
632
636
  let models = 'models';
633
637
  let exceptions = 'exceptions';
634
638
  if(inner && pkg.exports[inner]) {
635
639
  let pyPath = pkg.exports[inner];
636
- const [ filename ] = pyPath.split(path.sep).slice(-1);
637
- models = filename.replace(/(\.tea)$|(\.spec)$|(\.dara)$/gi, '') + '_models';
638
- exceptions = filename.replace(/(\.tea)$|(\.spec)$|(\.dara)$/gi, '') + '_exceptions';
640
+ filename = pyPath.split(path.sep).slice(-1)[0].replace(/(\.tea)$|(\.spec)$|(\.dara)$/gi, '');
641
+ models = filename + '_models';
642
+ exceptions = filename + '_exceptions';
639
643
  const arr = pyPath.split(path.sep).slice(1, -1);
640
644
  arr.map(key => {
641
645
  classNamespace += '.' + _snakeCase(key);
@@ -646,7 +650,7 @@ setup(
646
650
  const aliasName = this.getAliasName(className, aliasId);
647
651
  this.packageInfo[aliasId] = {
648
652
  aliasName: aliasName || className,
649
- fileName: _snakeCase(className),
653
+ fileName: filename,
650
654
  clientName: className,
651
655
  namemespace: classNamespace,
652
656
  models: models,
@@ -1124,29 +1128,27 @@ setup(
1124
1128
  }
1125
1129
  }
1126
1130
 
1127
- visitToMapField(fieldValue, key, value, level) {
1131
+ visitToMapField(fieldValue, fieldName, key, value, level, arr = false) {
1128
1132
  const deep = Math.floor(level / 4);
1129
1133
  if (fieldValue.type === 'modelBody' || fieldValue.type === 'moduleModel' ||
1130
1134
  fieldValue.type === 'subModel' || fieldValue.idType === 'model' ||
1131
1135
  (fieldValue.fieldType && (fieldValue.fieldType.type === 'moduleModel' ||
1132
1136
  fieldValue.fieldType.idType === 'model' || fieldValue.fieldType.idType === 'builtin_model'))) {
1133
- this.emit(`${key} = ${value}.to_map()`, level);
1137
+ let realVal = `${value}.to_map()`;
1134
1138
  if(deep > 1) {
1135
- this.emit(` if ${value} else None\n`);
1139
+ realVal += ` if ${value} else None`;
1136
1140
  }
1137
- this.emit('\n');
1141
+ this.emitFieldConvert(key, realVal, level, arr);
1138
1142
  } else if (fieldValue.type === 'array' || fieldValue.fieldType === 'array') {
1139
- this.emit(`l${deep} = 0\n`, level);
1140
1143
  this.emit(`${key} = []\n`, level);
1141
1144
  this.emit(`for k${deep} in ${value}:\n`, level);
1142
- this.emit(`l${deep} += 1\n`, level + 2);
1143
- this.visitToMapField(fieldValue.fieldItemType || fieldValue.subType, `${key}[l${deep}]`, `k${deep}`, level + 2);
1145
+ this.visitToMapField(fieldValue.fieldItemType || fieldValue.subType, fieldName, `${key}`, `k${deep}`, level + 2, true);
1144
1146
  } else if (fieldValue.fieldType === 'map' || fieldValue.type === 'map') {
1145
1147
  this.emit(`${key} = {}\n`, level);
1146
- this.emit(`for k${deep}, v${deep} in k.items():\n`, level);
1147
- this.visitToMapField(fieldValue.valueType, `${key}[k${deep}]`, `v${deep}`, level + 2);
1148
+ this.emit(`for k${deep}, v${deep} in self.${fieldName}.items():\n`, level);
1149
+ this.visitToMapField(fieldValue.valueType, fieldName, `${key}[k${deep}]`, `v${deep}`, level + 2);
1148
1150
  } else {
1149
- this.emit(`${key} = ${value}\n`, level);
1151
+ this.emitFieldConvert(key, value, level, arr);
1150
1152
  }
1151
1153
 
1152
1154
  }
@@ -1168,7 +1170,7 @@ setup(
1168
1170
  if(!this.checkFieldHasModel(node.fieldValue)) {
1169
1171
  this.emit(`result['${realName}'] = self.${param}`, level + 4);
1170
1172
  } else {
1171
- this.visitToMapField(node.fieldValue, `result['${realName}']`, `self.${param}`, level + 4);
1173
+ this.visitToMapField(node.fieldValue, param, `result['${realName}']`, `self.${param}`, level + 4);
1172
1174
  }
1173
1175
  this.emit('\n');
1174
1176
  }
@@ -1176,18 +1178,25 @@ setup(
1176
1178
  this.emit('\n');
1177
1179
  }
1178
1180
 
1179
- visitFromField(fieldValue, fieldName, key, value, level) {
1181
+ emitFieldConvert(key, value, level, arr) {
1182
+ if(arr) {
1183
+ this.emit(`${key}.append(${value})\n`, level);
1184
+ return;
1185
+ }
1186
+ this.emit(`${key} = ${value}\n`, level);
1187
+ }
1188
+
1189
+ visitFromField(fieldValue, fieldName, key, value, level, arr = false) {
1180
1190
  const deep = Math.floor(level / 4);
1181
1191
  if (fieldValue.type === 'modelBody') {
1182
- const subModelName = _subModelName(fieldName);
1183
- this.emit(`temp_model = ${subModelName}\n`, level);
1184
- this.emit(`${key} = temp_model.from_map(${value})\n`, level);
1192
+ const subModelName = _subModelName(_camelCase(fieldName));
1193
+ this.emit(`temp_model = ${subModelName}()\n`, level);
1194
+ this.emitFieldConvert(key, `temp_model.from_map(${value})`, level, arr);
1185
1195
  } else if (fieldValue.type === 'array' || fieldValue.fieldType === 'array') {
1186
1196
  this.emit(`l${deep} = 0\n`, level);
1187
1197
  this.emit(`${key} = []\n`, level);
1188
1198
  this.emit(`for k${deep} in ${value}:\n`, level);
1189
- this.emit(`l${deep} += 1\n`, level + 2);
1190
- this.visitFromField(fieldValue.fieldItemType || fieldValue.subType, fieldName, `${key}[l${deep}]`, `k${deep}`, level + 2);
1199
+ this.visitFromField(fieldValue.fieldItemType || fieldValue.subType, fieldName, `${key}`, `k${deep}`, level + 2, true);
1191
1200
  } else if (fieldValue.fieldType === 'map' || fieldValue.type === 'map') {
1192
1201
  this.emit(`${key} = {}\n`, level);
1193
1202
  this.emit(`for k${deep}, v${deep} in ${value}.items():\n`, level);
@@ -1198,25 +1207,30 @@ setup(
1198
1207
  const modelName = _subModelName(rest.map((item) => {
1199
1208
  return item.lexeme;
1200
1209
  }).join('.'));
1201
- this.emit(`${key} = ${this.getModelName(modelName, _name(moduleId), 'module')}.from_map(${value})\n`, level);
1210
+ this.emit(`temp_model = ${this.getModelName(modelName, _name(moduleId), 'module')}()\n`, level);
1211
+ this.emitFieldConvert(key, `temp_model.from_map(${value})`, level, arr);
1202
1212
  } else if (fieldValue.type === 'subModel') {
1203
1213
  const [moduleId, ...rest] = fieldValue.path;
1204
1214
  const subModelName = _subModelName([moduleId.lexeme, ...rest.map((item) => {
1205
1215
  return item.lexeme;
1206
1216
  })].join('.'));
1207
- this.emit(`${key} = ${subModelName}.from_map(${value})\n`, level);
1217
+ this.emit(`temp_model = ${subModelName}()\n`, level);
1218
+ this.emitFieldConvert(key, `temp_model.from_map(${value})`, level, arr);
1208
1219
  } else if (fieldValue.idType === 'model') {
1209
1220
  const modelName = _type(_name(fieldValue));
1210
- this.emit(`${key} = ${modelName}.from_map(${value})\n`, level);
1221
+ this.emit(`temp_model = ${modelName}()\n`, level);
1222
+ this.emitFieldConvert(key, `temp_model.from_map(${value})`, level, arr);
1211
1223
  } else if (fieldValue.fieldType && fieldValue.fieldType.idType === 'model') {
1212
1224
  const modelName = _type(_name(fieldValue.fieldType));
1213
- this.emit(`${key} = ${modelName}.from_map(${value})\n`, level);
1225
+ this.emit(`temp_model = ${modelName}()\n`, level);
1226
+ this.emitFieldConvert(key, `temp_model.from_map(${value})`, level, arr);
1214
1227
  } else if (fieldValue.fieldType && fieldValue.fieldType.idType === 'builtin_model') {
1215
1228
  const typeName = _type(_name(fieldValue.fieldType));
1216
1229
  this.pushImports(typeName);
1217
- this.emit(`${key} = ${typeName}.from_map(${value})\n`, level);
1230
+ this.emit(`temp_model = ${typeName}()\n`, level);
1231
+ this.emitFieldConvert(key, `temp_model.from_map(${value})`, level, arr);
1218
1232
  } else {
1219
- this.emit(`${key} = ${value}\n`, level);
1233
+ this.emitFieldConvert(key, value, level, arr);
1220
1234
  }
1221
1235
  }
1222
1236
 
@@ -1954,7 +1968,7 @@ setup(
1954
1968
  current = ast.propertyPathTypes[i];
1955
1969
  }
1956
1970
  }
1957
- this.emit(`${expr}[`, level);
1971
+ this.emit(`${expr}[`);
1958
1972
  this.visitExpr(ast.accessKey, level);
1959
1973
  this.emit(']');
1960
1974
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darabonba/python-generator",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "The darabonba generator for Python",
5
5
  "main": "lib/generator.js",
6
6
  "directories": {
@@ -29,8 +29,9 @@ class Client(SourceClient):
29
29
  source_config: source_models.Config,
30
30
  ):
31
31
  super().__init__(source_config)
32
- self._configs[0] = source_config
32
+ self._configs[0] = source_config
33
33
  test = SourceClient(source_config)
34
+ self.print_data(DaraCore.to_map(source_config), 'test')
34
35
 
35
36
  def complex_1(
36
37
  self,
@@ -978,7 +979,7 @@ class Client(SourceClient):
978
979
  'b',
979
980
  'c'
980
981
  ]
981
- configs[3] = config
982
+ configs[3] = config
982
983
  return configs
983
984
 
984
985
  @staticmethod
@@ -992,7 +993,7 @@ class Client(SourceClient):
992
993
  'c'
993
994
  ]
994
995
  }
995
- data["configs"][3] = config
996
+ data["configs"][3] = config
996
997
  return data.get("configs")
997
998
 
998
999
  @staticmethod
@@ -1000,7 +1001,7 @@ class Client(SourceClient):
1000
1001
  request: main_models.ComplexRequest,
1001
1002
  config: str,
1002
1003
  ) -> None:
1003
- request.configs.value[0] = config
1004
+ request.configs.value[0] = config
1004
1005
 
1005
1006
  @staticmethod
1006
1007
  def map_access(
@@ -401,10 +401,9 @@ class ComplexRequest(DaraModel):
401
401
  result['numMap'] = self.num_map
402
402
  if self.model_map is not None:
403
403
  result['modelMap'] = {}
404
- for k1, v1 in k.items():
404
+ for k1, v1 in self.model_map.items():
405
405
  result['modelMap'][k1] = v1.to_map() if v1 else None
406
406
 
407
-
408
407
  if self.request is not None:
409
408
  result['request'] = self.request.to_map()
410
409
 
@@ -424,12 +423,9 @@ class ComplexRequest(DaraModel):
424
423
  if self.str is not None:
425
424
  result['srt'] = self.str
426
425
  if self.part is not None:
427
- l1 = 0
428
426
  result['Part'] = []
429
427
  for k1 in self.part:
430
- l1 += 1
431
- result['Part'][l1] = k1.to_map() if k1 else None
432
-
428
+ result['Part'].append(k1.to_map() if k1 else None)
433
429
 
434
430
  return result
435
431
 
@@ -444,11 +440,11 @@ class ComplexRequest(DaraModel):
444
440
  if m.get('mapList') is not None:
445
441
  self.map_list = m.get('mapList')
446
442
  if m.get('header') is not None:
447
- temp_model = ComplexRequestHeader
443
+ temp_model = ComplexRequestHeader()
448
444
  self.header = temp_model.from_map(m.get('header'))
449
445
 
450
446
  if m.get('configs') is not None:
451
- temp_model = ComplexRequestConfigs
447
+ temp_model = ComplexRequestConfigs()
452
448
  self.configs = temp_model.from_map(m.get('configs'))
453
449
 
454
450
  if m.get('num') is not None:
@@ -500,10 +496,12 @@ class ComplexRequest(DaraModel):
500
496
  if m.get('byt') is not None:
501
497
  self.byt = m.get('byt')
502
498
  if m.get('req') is not None:
503
- self.req = DaraRequest.from_map(m.get('req'))
499
+ temp_model = DaraRequest()
500
+ self.req = temp_model.from_map(m.get('req'))
504
501
 
505
502
  if m.get('resp') is not None:
506
- self.resp = DaraResponse.from_map(m.get('resp'))
503
+ temp_model = DaraResponse()
504
+ self.resp = temp_model.from_map(m.get('resp'))
507
505
 
508
506
  if m.get('map') is not None:
509
507
  self.map = m.get('map')
@@ -512,15 +510,18 @@ class ComplexRequest(DaraModel):
512
510
  if m.get('modelMap') is not None:
513
511
  self.model_map = {}
514
512
  for k1, v1 in m.get('modelMap').items():
515
- self.model_map[k1] = SourceClient.from_map(v1)
513
+ temp_model = SourceClient()
514
+ self.model_map[k1] = temp_model.from_map(v1)
516
515
 
517
516
  if m.get('request') is not None:
518
- self.request = SourceClient.from_map(m.get('request'))
517
+ temp_model = SourceClient()
518
+ self.request = temp_model.from_map(m.get('request'))
519
519
 
520
520
  if m.get('client') is not None:
521
521
  self.client = m.get('client')
522
522
  if m.get('instance') is not None:
523
- self.instance = SourceClient.from_map(m.get('instance'))
523
+ temp_model = SourceClient()
524
+ self.instance = temp_model.from_map(m.get('instance'))
524
525
 
525
526
  if m.get('from') is not None:
526
527
  self.from_ = m.get('from')
@@ -536,9 +537,8 @@ class ComplexRequest(DaraModel):
536
537
  l1 = 0
537
538
  self.part = []
538
539
  for k1 in m.get('Part'):
539
- l1 += 1
540
- temp_model = ComplexRequestPart
541
- self.part[l1] = temp_model.from_map(k1)
540
+ temp_model = ComplexRequestPart()
541
+ self.part.append(temp_model.from_map(k1))
542
542
 
543
543
  return self
544
544
 
@@ -88,7 +88,7 @@ class MainFileModel(DaraModel):
88
88
  if m.get('str') is not None:
89
89
  self.str = m.get('str')
90
90
  if m.get('model') is not None:
91
- temp_model = MainFileModelModel
91
+ temp_model = MainFileModelModel()
92
92
  self.model = temp_model.from_map(m.get('model'))
93
93
 
94
94
  return self
@@ -152,7 +152,7 @@ class MyModelModel(DaraModel):
152
152
  if m.get('str') is not None:
153
153
  self.str = m.get('str')
154
154
  if m.get('model') is not None:
155
- temp_model = MyModelModelModel
155
+ temp_model = MyModelModelModel()
156
156
  self.model = temp_model.from_map(m.get('model'))
157
157
 
158
158
  return self
@@ -216,7 +216,7 @@ class MyModelSubmodel(DaraModel):
216
216
  if m.get('stringfield') is not None:
217
217
  self.stringfield = m.get('stringfield')
218
218
  if m.get('model') is not None:
219
- temp_model = MyModelSubmodelModel
219
+ temp_model = MyModelSubmodelModel()
220
220
  self.model = temp_model.from_map(m.get('model'))
221
221
 
222
222
  return self
@@ -265,7 +265,7 @@ class M(DaraModel):
265
265
  def from_map(self, m: dict = None):
266
266
  m = m or dict()
267
267
  if m.get('subM') is not None:
268
- temp_model = MSub_m
268
+ temp_model = MSubM()
269
269
  self.sub_m = temp_model.from_map(m.get('subM'))
270
270
 
271
271
  return self
@@ -520,57 +520,39 @@ class MyModel(DaraModel):
520
520
 
521
521
  if self.submodel_map is not None:
522
522
  result['submodelMap'] = {}
523
- for k1, v1 in k.items():
523
+ for k1, v1 in self.submodel_map.items():
524
524
  result['submodelMap'][k1] = v1.to_map() if v1 else None
525
525
 
526
-
527
526
  if self.map_model is not None:
528
527
  result['mapModel'] = {}
529
- for k1, v1 in k.items():
528
+ for k1, v1 in self.map_model.items():
530
529
  result['mapModel'][k1] = v1.to_map() if v1 else None
531
530
 
532
-
533
531
  if self.subarraymodel is not None:
534
- l1 = 0
535
532
  result['subarraymodel'] = []
536
533
  for k1 in self.subarraymodel:
537
- l1 += 1
538
- result['subarraymodel'][l1] = k1.to_map() if k1 else None
539
-
534
+ result['subarraymodel'].append(k1.to_map() if k1 else None)
540
535
 
541
536
  if self.subarray is not None:
542
- l1 = 0
543
537
  result['subarray'] = []
544
538
  for k1 in self.subarray:
545
- l1 += 1
546
- result['subarray'][l1] = k1.to_map() if k1 else None
547
-
539
+ result['subarray'].append(k1.to_map() if k1 else None)
548
540
 
549
541
  if self.ssubarray is not None:
550
- l1 = 0
551
542
  result['ssubarray'] = []
552
543
  for k1 in self.ssubarray:
553
- l1 += 1
554
- l2 = 0
555
- result['ssubarray'][l1] = []
544
+ result['ssubarray'] = []
556
545
  for k2 in k1:
557
- l2 += 1
558
- result['ssubarray'][l1][l2] = k2.to_map() if k2 else None
559
-
546
+ result['ssubarray'].append(k2.to_map() if k2 else None)
560
547
 
561
548
  if self.ssubmarray is not None:
562
549
  result['ssubmarray'] = self.ssubmarray
563
550
  if self.ssubmmarray is not None:
564
- l1 = 0
565
551
  result['ssubmmarray'] = []
566
552
  for k1 in self.ssubmmarray:
567
- l1 += 1
568
- l2 = 0
569
- result['ssubmmarray'][l1] = []
553
+ result['ssubmmarray'] = []
570
554
  for k2 in k1:
571
- l2 += 1
572
- result['ssubmmarray'][l1][l2] = k2.to_map() if k2 else None
573
-
555
+ result['ssubmmarray'].append(k2.to_map() if k2 else None)
574
556
 
575
557
  if self.maparray is not None:
576
558
  result['maparray'] = self.maparray
@@ -578,22 +560,19 @@ class MyModel(DaraModel):
578
560
  result['mapsubmarray'] = self.mapsubmarray
579
561
  if self.module_model_map is not None:
580
562
  result['moduleModelMap'] = {}
581
- for k1, v1 in k.items():
563
+ for k1, v1 in self.module_model_map.items():
582
564
  result['moduleModelMap'][k1] = v1.to_map() if v1 else None
583
565
 
584
-
585
566
  if self.sub_model_map is not None:
586
567
  result['subModelMap'] = {}
587
- for k1, v1 in k.items():
568
+ for k1, v1 in self.sub_model_map.items():
588
569
  result['subModelMap'][k1] = v1.to_map() if v1 else None
589
570
 
590
-
591
571
  if self.model_map is not None:
592
572
  result['modelMap'] = {}
593
- for k1, v1 in k.items():
573
+ for k1, v1 in self.model_map.items():
594
574
  result['modelMap'][k1] = v1.to_map() if v1 else None
595
575
 
596
-
597
576
  if self.module_map is not None:
598
577
  result['moduleMap'] = self.module_map
599
578
  if self.object is not None:
@@ -645,7 +624,7 @@ class MyModel(DaraModel):
645
624
  def from_map(self, m: dict = None):
646
625
  m = m or dict()
647
626
  if m.get('model') is not None:
648
- temp_model = MyModelModel
627
+ temp_model = MyModelModel()
649
628
  self.model = temp_model.from_map(m.get('model'))
650
629
 
651
630
  if m.get('stringfield') is not None:
@@ -659,44 +638,44 @@ class MyModel(DaraModel):
659
638
  if m.get('realName') is not None:
660
639
  self.name = m.get('realName')
661
640
  if m.get('submodel') is not None:
662
- temp_model = MyModelSubmodel
641
+ temp_model = MyModelSubmodel()
663
642
  self.submodel = temp_model.from_map(m.get('submodel'))
664
643
 
665
644
  if m.get('submodelMap') is not None:
666
645
  self.submodel_map = {}
667
646
  for k1, v1 in m.get('submodelMap').items():
668
- self.submodel_map[k1] = MyModelSubmodel.from_map(v1)
647
+ temp_model = MyModelSubmodel()
648
+ self.submodel_map[k1] = temp_model.from_map(v1)
669
649
 
670
650
  if m.get('mapModel') is not None:
671
651
  self.map_model = {}
672
652
  for k1, v1 in m.get('mapModel').items():
673
- self.map_model[k1] = M.from_map(v1)
653
+ temp_model = M()
654
+ self.map_model[k1] = temp_model.from_map(v1)
674
655
 
675
656
  if m.get('subarraymodel') is not None:
676
657
  l1 = 0
677
658
  self.subarraymodel = []
678
659
  for k1 in m.get('subarraymodel'):
679
- l1 += 1
680
- temp_model = MyModelSubarraymodel
681
- self.subarraymodel[l1] = temp_model.from_map(k1)
660
+ temp_model = MyModelSubarraymodel()
661
+ self.subarraymodel.append(temp_model.from_map(k1))
682
662
 
683
663
  if m.get('subarray') is not None:
684
664
  l1 = 0
685
665
  self.subarray = []
686
666
  for k1 in m.get('subarray'):
687
- l1 += 1
688
- self.subarray[l1] = M.from_map(k1)
667
+ temp_model = M()
668
+ self.subarray.append(temp_model.from_map(k1))
689
669
 
690
670
  if m.get('ssubarray') is not None:
691
671
  l1 = 0
692
672
  self.ssubarray = []
693
673
  for k1 in m.get('ssubarray'):
694
- l1 += 1
695
674
  l2 = 0
696
- self.ssubarray[l1] = []
675
+ self.ssubarray = []
697
676
  for k2 in k1:
698
- l2 += 1
699
- self.ssubarray[l1][l2] = M.from_map(k2)
677
+ temp_model = M()
678
+ self.ssubarray.append(temp_model.from_map(k2))
700
679
 
701
680
  if m.get('ssubmarray') is not None:
702
681
  self.ssubmarray = m.get('ssubmarray')
@@ -704,12 +683,11 @@ class MyModel(DaraModel):
704
683
  l1 = 0
705
684
  self.ssubmmarray = []
706
685
  for k1 in m.get('ssubmmarray'):
707
- l1 += 1
708
686
  l2 = 0
709
- self.ssubmmarray[l1] = []
687
+ self.ssubmmarray = []
710
688
  for k2 in k1:
711
- l2 += 1
712
- self.ssubmmarray[l1][l2] = SourceClient.from_map(k2)
689
+ temp_model = SourceClient()
690
+ self.ssubmmarray.append(temp_model.from_map(k2))
713
691
 
714
692
  if m.get('maparray') is not None:
715
693
  self.maparray = m.get('maparray')
@@ -718,17 +696,20 @@ class MyModel(DaraModel):
718
696
  if m.get('moduleModelMap') is not None:
719
697
  self.module_model_map = {}
720
698
  for k1, v1 in m.get('moduleModelMap').items():
721
- self.module_model_map[k1] = SourceClient.from_map(v1)
699
+ temp_model = SourceClient()
700
+ self.module_model_map[k1] = temp_model.from_map(v1)
722
701
 
723
702
  if m.get('subModelMap') is not None:
724
703
  self.sub_model_map = {}
725
704
  for k1, v1 in m.get('subModelMap').items():
726
- self.sub_model_map[k1] = MSubM.from_map(v1)
705
+ temp_model = MSubM()
706
+ self.sub_model_map[k1] = temp_model.from_map(v1)
727
707
 
728
708
  if m.get('modelMap') is not None:
729
709
  self.model_map = {}
730
710
  for k1, v1 in m.get('modelMap').items():
731
- self.model_map[k1] = M.from_map(v1)
711
+ temp_model = M()
712
+ self.model_map[k1] = temp_model.from_map(v1)
732
713
 
733
714
  if m.get('moduleMap') is not None:
734
715
  self.module_map = m.get('moduleMap')
@@ -739,10 +720,12 @@ class MyModel(DaraModel):
739
720
  if m.get('writable') is not None:
740
721
  self.writable = m.get('writable')
741
722
  if m.get('existModel') is not None:
742
- self.exist_model = M.from_map(m.get('existModel'))
723
+ temp_model = M()
724
+ self.exist_model = temp_model.from_map(m.get('existModel'))
743
725
 
744
726
  if m.get('request') is not None:
745
- self.request = DaraRequest.from_map(m.get('request'))
727
+ temp_model = DaraRequest()
728
+ self.request = temp_model.from_map(m.get('request'))
746
729
 
747
730
  if m.get('complexList') is not None:
748
731
  self.complex_list = m.get('complexList')
@@ -1,6 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # This file is auto-generated, don't edit it. Thanks.
3
3
  from __future__ import annotations
4
+ from alibabacloud_tea_util.util import Utils
4
5
  from tea_python_tests.lib.util import Util
5
6
  from typing import Generator, AsyncGenerator
6
7
 
@@ -12,12 +13,14 @@ class Client:
12
13
 
13
14
  @staticmethod
14
15
  def test() -> Generator[str, None, None]:
16
+ Utils.test()
15
17
  it = Util.test_1()
16
18
  for test in it:
17
19
  yield test
18
20
 
19
21
  @staticmethod
20
22
  async def test_async() -> AsyncGenerator[str, None, None]:
23
+ Utils.test()
21
24
  it = Util.test_1()
22
25
  for test in it:
23
26
  yield test
@@ -13,6 +13,7 @@ init(sourceConfig: Source.Config){
13
13
  super(sourceConfig);
14
14
  @configs[0] = sourceConfig;
15
15
  var test : Source = new Source(sourceConfig);
16
+ printData(sourceConfig, 'test');
16
17
  }
17
18
 
18
19
  exception Err1 = {
@@ -3,6 +3,9 @@
3
3
  "name": "Util",
4
4
  "version": "0.2.11",
5
5
  "main": "./main.tea",
6
+ "exports": {
7
+ "Util": "./util.tea"
8
+ },
6
9
  "releases": {
7
10
  "go": "github.com/alibabacloud-go/tea-utils/v2/service:v2.0.4",
8
11
  "ts": "@alicloud/tea-util:^1.4.7",
@@ -29,7 +32,10 @@
29
32
  },
30
33
  "python": {
31
34
  "package": "alibabacloud_tea_util",
32
- "clientName": "client"
35
+ "clientName": "client",
36
+ "exports": {
37
+ "Util": "Utils"
38
+ }
33
39
  },
34
40
  "python2": {
35
41
  "package": "alibabacloud_tea_util",
@@ -0,0 +1,2 @@
1
+ @clientName("Utils")
2
+ static function test(): void;
@@ -1,4 +1,5 @@
1
1
  import DARAUtil;
2
+ import DARAUtil.Util as Utils;
2
3
  import "../lib/util" Util;
3
4
 
4
5
 
@@ -13,6 +14,7 @@ model Info extends BaseInfo {
13
14
 
14
15
 
15
16
  static async function test(): asyncIterator[string]{
17
+ Utils.test();
16
18
  var it:iterator[string] = Util.test1();
17
19
  for(var test : it) {
18
20
  yield test;
@@ -29,8 +29,9 @@ class Client(SourceClient):
29
29
  source_config: source_models.Config,
30
30
  ):
31
31
  super().__init__(source_config)
32
- self._configs[0] = source_config
32
+ self._configs[0] = source_config
33
33
  test = SourceClient(source_config)
34
+ self.print_data(DaraCore.to_map(source_config), 'test')
34
35
 
35
36
  def complex_1(
36
37
  self,
@@ -978,7 +979,7 @@ class Client(SourceClient):
978
979
  'b',
979
980
  'c'
980
981
  ]
981
- configs[3] = config
982
+ configs[3] = config
982
983
  return configs
983
984
 
984
985
  @staticmethod
@@ -992,7 +993,7 @@ class Client(SourceClient):
992
993
  'c'
993
994
  ]
994
995
  }
995
- data["configs"][3] = config
996
+ data["configs"][3] = config
996
997
  return data.get("configs")
997
998
 
998
999
  @staticmethod
@@ -1000,7 +1001,7 @@ class Client(SourceClient):
1000
1001
  request: main_models.ComplexRequest,
1001
1002
  config: str,
1002
1003
  ) -> None:
1003
- request.configs.value[0] = config
1004
+ request.configs.value[0] = config
1004
1005
 
1005
1006
  @staticmethod
1006
1007
  def map_access(