@darabonba/python-generator 2.0.7 → 2.0.9

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 (57) hide show
  1. package/ChangeLog.md +9 -0
  2. package/lib/generator.js +18 -9
  3. package/package.json +1 -1
  4. package/tests/expected/complex/tea_python_tests/models/__init__.py +6 -6
  5. package/tests/expected/complex/tea_python_tests/models/_complex_request.py +110 -0
  6. package/tests/expected/model/tea_python_tests/models/__init__.py +13 -13
  7. package/tests/expected/model/tea_python_tests/models/_m.py +19 -0
  8. package/tests/{output/model/tea_python_tests/models/_main_file_model.py → expected/model/tea_python_tests/models/_main_file.py} +27 -0
  9. package/tests/expected/model/tea_python_tests/models/_my_model.py +156 -7
  10. package/tests/expected/modelConfig/tea_python_tests/models/__init__.py +13 -13
  11. package/tests/expected/modelConfig/tea_python_tests/models/_m.py +19 -0
  12. package/tests/expected/modelConfig/tea_python_tests/models/{_main_file_model.py → _main_file.py} +27 -0
  13. package/tests/expected/modelConfig/tea_python_tests/models/_my_model.py +156 -7
  14. package/tests/output/complex/tea_python_tests/models/__init__.py +6 -6
  15. package/tests/output/complex/tea_python_tests/models/_complex_request.py +110 -0
  16. package/tests/output/model/tea_python_tests/models/__init__.py +13 -13
  17. package/tests/output/model/tea_python_tests/models/_m.py +19 -0
  18. package/tests/{expected/model/tea_python_tests/models/_main_file_model.py → output/model/tea_python_tests/models/_main_file.py} +27 -0
  19. package/tests/output/model/tea_python_tests/models/_my_model.py +156 -7
  20. package/tests/output/modelConfig/tea_python_tests/models/__init__.py +13 -13
  21. package/tests/output/modelConfig/tea_python_tests/models/_m.py +19 -0
  22. package/tests/output/modelConfig/tea_python_tests/models/{_main_file_model.py → _main_file.py} +27 -0
  23. package/tests/output/modelConfig/tea_python_tests/models/_my_model.py +156 -7
  24. package/tests/expected/complex/tea_python_tests/models/_complex_request_configs.py +0 -52
  25. package/tests/expected/complex/tea_python_tests/models/_complex_request_header.py +0 -43
  26. package/tests/expected/complex/tea_python_tests/models/_complex_request_part.py +0 -34
  27. package/tests/expected/model/tea_python_tests/models/_main_file_model_model.py +0 -33
  28. package/tests/expected/model/tea_python_tests/models/_msub_m.py +0 -25
  29. package/tests/expected/model/tea_python_tests/models/_my_model_model.py +0 -46
  30. package/tests/expected/model/tea_python_tests/models/_my_model_model_model.py +0 -33
  31. package/tests/expected/model/tea_python_tests/models/_my_model_subarraymodel.py +0 -23
  32. package/tests/expected/model/tea_python_tests/models/_my_model_submodel.py +0 -46
  33. package/tests/expected/model/tea_python_tests/models/_my_model_submodel_model.py +0 -33
  34. package/tests/expected/modelConfig/tea_python_tests/models/_main_file_model_model.py +0 -33
  35. package/tests/expected/modelConfig/tea_python_tests/models/_msub_m.py +0 -25
  36. package/tests/expected/modelConfig/tea_python_tests/models/_my_model_model.py +0 -46
  37. package/tests/expected/modelConfig/tea_python_tests/models/_my_model_model_model.py +0 -33
  38. package/tests/expected/modelConfig/tea_python_tests/models/_my_model_subarraymodel.py +0 -23
  39. package/tests/expected/modelConfig/tea_python_tests/models/_my_model_submodel.py +0 -46
  40. package/tests/expected/modelConfig/tea_python_tests/models/_my_model_submodel_model.py +0 -33
  41. package/tests/output/complex/tea_python_tests/models/_complex_request_configs.py +0 -52
  42. package/tests/output/complex/tea_python_tests/models/_complex_request_header.py +0 -43
  43. package/tests/output/complex/tea_python_tests/models/_complex_request_part.py +0 -34
  44. package/tests/output/model/tea_python_tests/models/_main_file_model_model.py +0 -33
  45. package/tests/output/model/tea_python_tests/models/_msub_m.py +0 -25
  46. package/tests/output/model/tea_python_tests/models/_my_model_model.py +0 -46
  47. package/tests/output/model/tea_python_tests/models/_my_model_model_model.py +0 -33
  48. package/tests/output/model/tea_python_tests/models/_my_model_subarraymodel.py +0 -23
  49. package/tests/output/model/tea_python_tests/models/_my_model_submodel.py +0 -46
  50. package/tests/output/model/tea_python_tests/models/_my_model_submodel_model.py +0 -33
  51. package/tests/output/modelConfig/tea_python_tests/models/_main_file_model_model.py +0 -33
  52. package/tests/output/modelConfig/tea_python_tests/models/_msub_m.py +0 -25
  53. package/tests/output/modelConfig/tea_python_tests/models/_my_model_model.py +0 -46
  54. package/tests/output/modelConfig/tea_python_tests/models/_my_model_model_model.py +0 -33
  55. package/tests/output/modelConfig/tea_python_tests/models/_my_model_subarraymodel.py +0 -23
  56. package/tests/output/modelConfig/tea_python_tests/models/_my_model_submodel.py +0 -46
  57. package/tests/output/modelConfig/tea_python_tests/models/_my_model_submodel_model.py +0 -33
package/ChangeLog.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # ChangeLog
2
2
 
3
+ # 2.0.9
4
+ - Fixed the arr & map init error in from map
5
+
6
+ # 2.0.8
7
+ - Optimized the directory structure of models
8
+
9
+ # 2.0.7
10
+ - Fixed the FileField from.
11
+
3
12
  # 2.0.6
4
13
  - Fixed the from map init submodel name.
5
14
 
package/lib/generator.js CHANGED
@@ -328,7 +328,7 @@ setup(
328
328
  if (models.length > 0 || subModels.length > 0) {
329
329
  // 存一笔 models
330
330
  this.modelInitBefore(ast, level);
331
- this.visitModelInit(subModels.concat(models));
331
+ this.visitModelInit(models, subModels);
332
332
  }
333
333
 
334
334
  const exceptions = ast.moduleBody.nodes.filter((item) => {
@@ -1242,23 +1242,23 @@ setup(
1242
1242
  this.emit(`temp_model = ${this.getModelName(subModelName)}()\n`, level);
1243
1243
  this.emitFieldConvert(key, `temp_model.from_map(${value})`, level, arr);
1244
1244
  } else if (fieldValue.type === 'array' || fieldValue.fieldType === 'array') {
1245
- this.emit(`for k${deep} in ${value}:\n`, level);
1246
1245
  let subKey = key;
1247
1246
  if(deep > 1) {
1248
1247
  subKey = `l${deep - 1}`;
1249
- this.emit(`${subKey} = []\n`, level + 2);
1248
+ this.emit(`${subKey} = []\n`, level);
1250
1249
  }
1250
+ this.emit(`for k${deep} in ${value}:\n`, level);
1251
1251
  this.visitFromField(fieldValue.fieldItemType || fieldValue.subType, fieldName, `${subKey}`, `k${deep}`, level + 2, true);
1252
1252
  if(deep > 1) {
1253
1253
  this.emitFieldConvert(key, subKey, level, arr);
1254
1254
  }
1255
1255
  } else if (fieldValue.fieldType === 'map' || fieldValue.type === 'map') {
1256
- this.emit(`for k${deep}, v${deep} in ${value}.items():\n`, level);
1257
1256
  let subKey = key;
1258
1257
  if(deep > 1) {
1259
1258
  subKey = `d${deep - 1}`;
1260
- this.emit(`${subKey} = {}\n`, level + 2);
1259
+ this.emit(`${subKey} = {}\n`, level);
1261
1260
  }
1261
+ this.emit(`for k${deep}, v${deep} in ${value}.items():\n`, level);
1262
1262
  this.visitFromField(fieldValue.valueType, fieldName, `${subKey}[k${deep}]`, `v${deep}`, level + 2);
1263
1263
  if(deep > 1) {
1264
1264
  this.emitFieldConvert(key, subKey, level, arr);
@@ -1433,13 +1433,13 @@ setup(
1433
1433
  return extendFileds.concat(ast.nodes);
1434
1434
  }
1435
1435
 
1436
- visitModel(modelBody, modelName, extendOn, level) {
1436
+ visitModel(modelBody, modelName, extendOn, level, filename) {
1437
1437
  // const modelDir = path.join(path.dirname(filepath), this.modelDir);
1438
1438
  this.emit(`class ${modelName}`, level);
1439
1439
  this.visitExtendOn(extendOn);
1440
1440
  this.emit(':\n');
1441
1441
  this.visitModelBody(modelBody, level + 2, modelName);
1442
- this.saveBuffer(path.join(this.modelPath, `_${_snakeCase(modelName)}.py`));
1442
+ this.saveBuffer(path.join(this.modelPath, filename || `_${_snakeCase(modelName)}.py`));
1443
1443
  this.usedTypes = [];
1444
1444
  this.imports = [];
1445
1445
  this.output = '';
@@ -1481,7 +1481,7 @@ setup(
1481
1481
  this.visitModel(ast.modelBody, modelName, ast.extendOn, level);
1482
1482
  }
1483
1483
 
1484
- visitModelInit(models) {
1484
+ visitModelInit(models, subModels) {
1485
1485
  const modelNames = [];
1486
1486
  const moreExports = this.moreExports || [];
1487
1487
  for (let i = 0; i < models.length; i++) {
@@ -1490,6 +1490,14 @@ setup(
1490
1490
  modelNames.push(modelName);
1491
1491
  this.emit(`from ._${_snakeCase(modelName)} import ${modelName}\n`);
1492
1492
  }
1493
+
1494
+ for (let i = 0; i < subModels.length; i++) {
1495
+ const ast = subModels[i];
1496
+ const modelName = _subModelName(_name(ast.modelName));
1497
+ const mainModelName = _name(ast.modelName).split('.')[0];
1498
+ modelNames.push(modelName);
1499
+ this.emit(`from ._${_snakeCase(mainModelName)} import ${modelName}\n`);
1500
+ }
1493
1501
 
1494
1502
  this.emit('\n__all__ = [\n');
1495
1503
  this.emit(modelNames.join(',\n '), 2);
@@ -1629,7 +1637,8 @@ setup(
1629
1637
  eachSubModel(ast, level) {
1630
1638
  assert.equal(ast.type, 'model');
1631
1639
  const modelName = _subModelName(_name(ast.modelName));
1632
- this.visitModel(ast.modelBody, modelName, ast.extendOn, level);
1640
+ const mainModelName = _name(ast.modelName).split('.')[0];
1641
+ this.visitModel(ast.modelBody, modelName, ast.extendOn, level, `_${_snakeCase(mainModelName)}.py`);
1633
1642
  }
1634
1643
 
1635
1644
  visitObjectFieldValue(ast, level) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darabonba/python-generator",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "The darabonba generator for Python",
5
5
  "main": "lib/generator.js",
6
6
  "directories": {
@@ -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
+
@@ -450,8 +450,8 @@ class MyModel(DaraModel):
450
450
  self.ssubarray = []
451
451
  if m.get('ssubarray') is not None:
452
452
  for k1 in m.get('ssubarray'):
453
+ l1 = []
453
454
  for k2 in k1:
454
- l1 = []
455
455
  temp_model = main_models.M()
456
456
  l1.append(temp_model.from_map(k2))
457
457
  self.ssubarray.append(l1)
@@ -465,8 +465,8 @@ class MyModel(DaraModel):
465
465
  self.ssubmmarray = []
466
466
  if m.get('ssubmmarray') is not None:
467
467
  for k1 in m.get('ssubmmarray'):
468
+ l1 = []
468
469
  for k2 in k1:
469
- l1 = []
470
470
  temp_model = source_models.Request()
471
471
  l1.append(temp_model.from_map(k2))
472
472
  self.ssubmmarray.append(l1)
@@ -474,10 +474,10 @@ class MyModel(DaraModel):
474
474
  self.sssubmmarray = []
475
475
  if m.get('sssubmmarray') is not None:
476
476
  for k1 in m.get('sssubmmarray'):
477
+ l1 = []
477
478
  for k2 in k1:
478
- l1 = []
479
+ l2 = []
479
480
  for k3 in k2:
480
- l2 = []
481
481
  temp_model = source_models.Request()
482
482
  l2.append(temp_model.from_map(k3))
483
483
  l1.append(l2)
@@ -498,8 +498,8 @@ class MyModel(DaraModel):
498
498
  self.arr_module_model_map = []
499
499
  if m.get('arrModuleModelMap') is not None:
500
500
  for k1 in m.get('arrModuleModelMap'):
501
+ d1 = {}
501
502
  for k2, v2 in k1.items():
502
- d1 = {}
503
503
  temp_model = source_models.Request()
504
504
  d1[k2] = temp_model.from_map(v2)
505
505
  self.arr_module_model_map.append(d1)
@@ -507,10 +507,10 @@ class MyModel(DaraModel):
507
507
  self.arrs_module_model_map = []
508
508
  if m.get('arrsModuleModelMap') is not None:
509
509
  for k1 in m.get('arrsModuleModelMap'):
510
+ l1 = []
510
511
  for k2 in k1:
511
- l1 = []
512
+ d2 = {}
512
513
  for k3, v3 in k2.items():
513
- d2 = {}
514
514
  temp_model = source_models.Request()
515
515
  d2[k3] = temp_model.from_map(v3)
516
516
  l1.append(d2)
@@ -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
+