@darabonba/python-generator 1.2.19 → 2.0.0

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 (129) hide show
  1. package/ChangeLog.md +0 -158
  2. package/lib/builtin.js +818 -0
  3. package/lib/generator.js +2704 -0
  4. package/lib/helper.js +422 -0
  5. package/package.json +6 -5
  6. package/tests/expected/alias/setup.py +79 -0
  7. package/tests/expected/alias/tea_python_tests/__init__.py +1 -0
  8. package/tests/expected/alias/tea_python_tests/client.py +35 -0
  9. package/tests/expected/annotation/tea_python_tests/__init__.py +1 -0
  10. package/tests/expected/annotation/tea_python_tests/client.py +93 -0
  11. package/tests/expected/annotation/tea_python_tests/models.py +37 -0
  12. package/tests/expected/api/tea_python_tests/__init__.py +1 -0
  13. package/tests/expected/api/tea_python_tests/client.py +106 -0
  14. package/tests/expected/builtin/tea_python_tests/client.py +685 -0
  15. package/tests/expected/comment/tea_python_tests/__init__.py +1 -0
  16. package/tests/expected/comment/tea_python_tests/client.py +288 -0
  17. package/tests/expected/comment/tea_python_tests/models.py +195 -0
  18. package/tests/expected/complex/tea_python_tests/__init__.py +1 -0
  19. package/tests/expected/complex/tea_python_tests/client.py +1168 -0
  20. package/tests/expected/complex/tea_python_tests/exceptions.py +39 -0
  21. package/tests/expected/complex/tea_python_tests/models.py +570 -0
  22. package/tests/expected/const/tea_python_tests/__init__.py +1 -0
  23. package/tests/expected/const/tea_python_tests/client.py +14 -0
  24. package/tests/expected/empty/setup.py +74 -0
  25. package/tests/expected/empty/tea_python_tests/__init__.py +1 -0
  26. package/tests/expected/empty/tea_python_tests/client.py +10 -0
  27. package/tests/expected/exec/tea_python_tests/__init__.py +1 -0
  28. package/tests/expected/exec/tea_python_tests/exec_client.py +21 -0
  29. package/tests/expected/function/tea_python_tests/__init__.py +1 -0
  30. package/tests/expected/function/tea_python_tests/client.py +64 -0
  31. package/tests/expected/import/setup.py +78 -0
  32. package/tests/expected/import/tea_python_tests/__init__.py +1 -0
  33. package/tests/expected/import/tea_python_tests/client.py +29 -0
  34. package/tests/expected/map/tea_python_tests/__init__.py +1 -0
  35. package/tests/expected/map/tea_python_tests/client.py +39 -0
  36. package/tests/expected/model/tea_python_tests/__init__.py +1 -0
  37. package/tests/expected/model/tea_python_tests/client.py +10 -0
  38. package/tests/expected/model/tea_python_tests/exceptions.py +28 -0
  39. package/tests/expected/model/tea_python_tests/models.py +780 -0
  40. package/tests/expected/multi/tea_python_tests/api.py +95 -0
  41. package/tests/expected/multi/tea_python_tests/client.py +40 -0
  42. package/tests/expected/multi/tea_python_tests/lib/util.py +19 -0
  43. package/tests/expected/multi/tea_python_tests/model/user.py +23 -0
  44. package/tests/expected/multi/tea_python_tests/model/user_exceptions.py +83 -0
  45. package/tests/expected/multi/tea_python_tests/model/user_models.py +145 -0
  46. package/tests/expected/statements/tea_python_tests/__init__.py +1 -0
  47. package/tests/expected/statements/tea_python_tests/client.py +86 -0
  48. package/tests/expected/super/tea_python_tests/__init__.py +1 -0
  49. package/tests/expected/super/tea_python_tests/client.py +16 -0
  50. package/tests/expected/typedef/setup.py +77 -0
  51. package/tests/expected/typedef/tea_python_tests/__init__.py +1 -0
  52. package/tests/expected/typedef/tea_python_tests/client.py +74 -0
  53. package/tests/expected/typedef/tea_python_tests/models.py +42 -0
  54. package/tests/fixtures/alias/Darafile +11 -0
  55. package/tests/fixtures/alias/libraries/Alias/Darafile +11 -0
  56. package/tests/fixtures/alias/libraries/Alias-Symbol/Darafile +11 -0
  57. package/tests/fixtures/builtin/Darafile +6 -0
  58. package/tests/fixtures/builtin/main.dara +333 -0
  59. package/tests/fixtures/complex/libraries/import.dara +18 -11
  60. package/tests/fixtures/complex/main.dara +451 -103
  61. package/tests/fixtures/import/libraries/Darafile +1 -1
  62. package/tests/fixtures/import/pack/Darafile +3 -0
  63. package/tests/fixtures/map/libraries/Darafile +3 -0
  64. package/tests/fixtures/map/libraries/import.dara +4 -0
  65. package/tests/fixtures/map/main.dara +17 -2
  66. package/tests/fixtures/model/.libraries.json +3 -0
  67. package/tests/fixtures/model/Darafile +5 -2
  68. package/tests/fixtures/model/libraries/Darafile +20 -0
  69. package/tests/fixtures/model/libraries/import.dara +27 -0
  70. package/tests/fixtures/model/main.dara +60 -42
  71. package/tests/fixtures/multi/.libraries.json +3 -0
  72. package/tests/fixtures/multi/Darafile +12 -0
  73. package/tests/fixtures/multi/api.dara +20 -0
  74. package/tests/fixtures/multi/lib/util.dara +5 -0
  75. package/tests/fixtures/multi/libraries/darabonba_Util_0.2.11/Teafile +62 -0
  76. package/tests/fixtures/multi/libraries/darabonba_Util_0.2.11/main.tea +244 -0
  77. package/tests/fixtures/multi/main.dara +32 -0
  78. package/tests/fixtures/multi/model/user.dara +33 -0
  79. package/tests/{python3.tests.js → main.tests.js} +107 -65
  80. package/tests/output/alias/setup.py +79 -0
  81. package/tests/output/alias/tea_python_tests/client.py +35 -0
  82. package/tests/output/annotation/setup.py +77 -0
  83. package/tests/output/annotation/tea_python_tests/client.py +93 -0
  84. package/tests/output/annotation/tea_python_tests/models.py +37 -0
  85. package/tests/output/api/setup.py +77 -0
  86. package/tests/output/api/tea_python_tests/client.py +106 -0
  87. package/tests/output/builtin/setup.py +77 -0
  88. package/tests/output/builtin/tea_python_tests/client.py +685 -0
  89. package/tests/output/comment/setup.py +77 -0
  90. package/tests/output/comment/tea_python_tests/client.py +288 -0
  91. package/tests/output/comment/tea_python_tests/models.py +195 -0
  92. package/tests/output/complex/setup.py +77 -0
  93. package/tests/output/complex/tea_python_tests/client.py +1168 -0
  94. package/tests/output/complex/tea_python_tests/exceptions.py +39 -0
  95. package/tests/output/complex/tea_python_tests/models.py +570 -0
  96. package/tests/output/const/setup.py +77 -0
  97. package/tests/output/const/tea_python_tests/client.py +14 -0
  98. package/tests/output/empty/setup.py +77 -0
  99. package/tests/output/empty/tea_python_tests/client.py +10 -0
  100. package/tests/output/exec/setup.py +77 -0
  101. package/tests/output/exec/tea_python_tests/exec_client.py +21 -0
  102. package/tests/output/function/setup.py +77 -0
  103. package/tests/output/function/tea_python_tests/client.py +64 -0
  104. package/tests/output/import/setup.py +78 -0
  105. package/tests/output/import/tea_python_tests/client.py +29 -0
  106. package/tests/output/map/setup.py +77 -0
  107. package/tests/output/map/tea_python_tests/client.py +39 -0
  108. package/tests/output/model/setup.py +77 -0
  109. package/tests/output/model/tea_python_tests/client.py +10 -0
  110. package/tests/output/model/tea_python_tests/exceptions.py +28 -0
  111. package/tests/output/model/tea_python_tests/models.py +780 -0
  112. package/tests/output/multi/setup.py +77 -0
  113. package/tests/output/multi/tea_python_tests/api.py +95 -0
  114. package/tests/output/multi/tea_python_tests/client.py +40 -0
  115. package/tests/output/multi/tea_python_tests/lib/util.py +19 -0
  116. package/tests/output/multi/tea_python_tests/model/user.py +23 -0
  117. package/tests/output/multi/tea_python_tests/model/user_exceptions.py +83 -0
  118. package/tests/output/multi/tea_python_tests/model/user_models.py +145 -0
  119. package/tests/output/statements/setup.py +77 -0
  120. package/tests/output/statements/tea_python_tests/client.py +86 -0
  121. package/tests/output/super/setup.py +77 -0
  122. package/tests/output/super/tea_python_tests/client.py +16 -0
  123. package/tests/output/typedef/setup.py +78 -0
  124. package/tests/output/typedef/tea_python_tests/client.py +74 -0
  125. package/tests/output/typedef/tea_python_tests/models.py +42 -0
  126. package/tests/common.tests.js +0 -244
  127. package/tests/lib.tests.js +0 -269
  128. package/tests/python2.tests.js +0 -283
  129. package/tests/resolver.tests.js +0 -434
@@ -0,0 +1,288 @@
1
+ # -*- coding: utf-8 -*-
2
+ # This file is auto-generated, don't edit it. Thanks.
3
+ from __future__ import annotations
4
+ from tea_python_tests import models as main_models
5
+ from darabonba.core import DaraCore
6
+ from darabonba.exceptions import UnretryableException
7
+ from darabonba.policy.retry import RetryPolicyContext
8
+ from darabonba.request import DaraRequest
9
+ from typing import List, Dict, BinaryIO, Any
10
+
11
+
12
+ # top comment
13
+ """
14
+ * @remarks
15
+ * top annotation
16
+ """
17
+ class Client:
18
+ # type's comment
19
+ _a: List[str] = None
20
+ _comple_list: List[List[str]] = None
21
+ _endpoint_map: Dict[str, str] = None
22
+ def __init__(self):
23
+ # string declate comment
24
+ str = 'sss'
25
+ # new model instance comment
26
+ model_instance = main_models.Test1(
27
+ test = 'test',
28
+ # est declare back comment
29
+ test_2 = 'test2'
30
+ )
31
+ array = [
32
+ # array string comment
33
+ 'string',
34
+ # array number comment
35
+ 300
36
+ # array back comment
37
+ ]
38
+
39
+ """
40
+ * @remarks
41
+ * testAPI
42
+ """
43
+ # estAPI comment one
44
+ # estAPI comment two
45
+ def test_api(self) -> None:
46
+ _runtime = {
47
+ }
48
+ _last_request = None
49
+ _last_response = None
50
+ _retries_attempted = 0
51
+ _context = RetryPolicyContext(
52
+ retries_attempted= _retries_attempted
53
+ )
54
+ while DaraCore.should_retry(_runtime.get('retryOptions'), _context):
55
+ if _retries_attempted > 0:
56
+ _backoff_time = DaraCore.get_backoff_time(_runtime.get('retryOptions'), _context)
57
+ if _backoff_time > 0:
58
+ DaraCore.sleep(_backoff_time)
59
+ _retries_attempted = _retries_attempted + 1
60
+ try:
61
+ _request = DaraRequest()
62
+ # new model instance comment
63
+ model_instance = main_models.Test1(
64
+ # test declare front comment
65
+ test = 'test',
66
+ # test2 declare front comment
67
+ test_2 = 'test2'
68
+ )
69
+ # number declare comment
70
+ num = 123
71
+ # static function call comment
72
+ self.static_func()
73
+ _last_request = _request
74
+ _response = DaraCore.do_action(_request, _runtime)
75
+ _last_response = _response
76
+ # static async function call
77
+ self.test_func('test', True, [
78
+ [
79
+ 'str'
80
+ ],
81
+ [
82
+ 'str1'
83
+ ]
84
+ ])
85
+ # return comment
86
+ return
87
+ except Exception as e:
88
+ _context = RetryPolicyContext(
89
+ retries_attempted= _retries_attempted,
90
+ http_request = _last_request,
91
+ http_response = _last_response,
92
+ exception = e
93
+ )
94
+ continue
95
+ raise UnretryableException(_context)
96
+
97
+ async def test_api_async(self) -> None:
98
+ _runtime = {
99
+ }
100
+ _last_request = None
101
+ _last_response = None
102
+ _retries_attempted = 0
103
+ _context = RetryPolicyContext(
104
+ retries_attempted= _retries_attempted
105
+ )
106
+ while DaraCore.should_retry(_runtime.get('retryOptions'), _context):
107
+ if _retries_attempted > 0:
108
+ _backoff_time = DaraCore.get_backoff_time(_runtime.get('retryOptions'), _context)
109
+ if _backoff_time > 0:
110
+ DaraCore.sleep(_backoff_time)
111
+ _retries_attempted = _retries_attempted + 1
112
+ try:
113
+ _request = DaraRequest()
114
+ # new model instance comment
115
+ model_instance = main_models.Test1(
116
+ # test declare front comment
117
+ test = 'test',
118
+ # test2 declare front comment
119
+ test_2 = 'test2'
120
+ )
121
+ # number declare comment
122
+ num = 123
123
+ # static function call comment
124
+ self.static_func()
125
+ _last_request = _request
126
+ _response = await DaraCore.async_do_action(_request, _runtime)
127
+ _last_response = _response
128
+ # static async function call
129
+ await self.test_func_async('test', True, [
130
+ [
131
+ 'str'
132
+ ],
133
+ [
134
+ 'str1'
135
+ ]
136
+ ])
137
+ # return comment
138
+ return
139
+ except Exception as e:
140
+ _context = RetryPolicyContext(
141
+ retries_attempted= _retries_attempted,
142
+ http_request = _last_request,
143
+ http_response = _last_response,
144
+ exception = e
145
+ )
146
+ continue
147
+ raise UnretryableException(_context)
148
+
149
+ # testAPI2 comment
150
+ def test_api2(self) -> None:
151
+ _runtime = {
152
+ 'retry': True,
153
+ }
154
+ _last_request = None
155
+ _last_response = None
156
+ _retries_attempted = 0
157
+ _context = RetryPolicyContext(
158
+ retries_attempted= _retries_attempted
159
+ )
160
+ while DaraCore.should_retry(_runtime.get('retryOptions'), _context):
161
+ if _retries_attempted > 0:
162
+ _backoff_time = DaraCore.get_backoff_time(_runtime.get('retryOptions'), _context)
163
+ if _backoff_time > 0:
164
+ DaraCore.sleep(_backoff_time)
165
+ _retries_attempted = _retries_attempted + 1
166
+ try:
167
+ _request = DaraRequest()
168
+ # new model instance comment
169
+ model_instance = main_models.Test3()
170
+ # boolean declare comment
171
+ bool = True
172
+ if bool:
173
+ # mpty if
174
+ pass
175
+ else:
176
+ # mpty else
177
+ pass
178
+ # api function call comment
179
+ self.test_api()
180
+ # back comment
181
+ _last_request = _request
182
+ _response = DaraCore.do_action(_request, _runtime)
183
+ _last_response = _response
184
+ # empty return comment
185
+ pass
186
+ except Exception as e:
187
+ _context = RetryPolicyContext(
188
+ retries_attempted= _retries_attempted,
189
+ http_request = _last_request,
190
+ http_response = _last_response,
191
+ exception = e
192
+ )
193
+ continue
194
+ raise UnretryableException(_context)
195
+
196
+ async def test_api2_async(self) -> None:
197
+ _runtime = {
198
+ 'retry': True,
199
+ }
200
+ _last_request = None
201
+ _last_response = None
202
+ _retries_attempted = 0
203
+ _context = RetryPolicyContext(
204
+ retries_attempted= _retries_attempted
205
+ )
206
+ while DaraCore.should_retry(_runtime.get('retryOptions'), _context):
207
+ if _retries_attempted > 0:
208
+ _backoff_time = DaraCore.get_backoff_time(_runtime.get('retryOptions'), _context)
209
+ if _backoff_time > 0:
210
+ DaraCore.sleep(_backoff_time)
211
+ _retries_attempted = _retries_attempted + 1
212
+ try:
213
+ _request = DaraRequest()
214
+ # new model instance comment
215
+ model_instance = main_models.Test3()
216
+ # boolean declare comment
217
+ bool = True
218
+ if bool:
219
+ # mpty if
220
+ pass
221
+ else:
222
+ # mpty else
223
+ pass
224
+ # api function call comment
225
+ await self.test_api_async()
226
+ # back comment
227
+ _last_request = _request
228
+ _response = await DaraCore.async_do_action(_request, _runtime)
229
+ _last_response = _response
230
+ # empty return comment
231
+ pass
232
+ except Exception as e:
233
+ _context = RetryPolicyContext(
234
+ retries_attempted= _retries_attempted,
235
+ http_request = _last_request,
236
+ http_response = _last_response,
237
+ exception = e
238
+ )
239
+ continue
240
+ raise UnretryableException(_context)
241
+
242
+ @staticmethod
243
+ def static_func() -> None:
244
+ a = [
245
+ # empty annotation comment
246
+ ]
247
+
248
+ @staticmethod
249
+ def test_func(
250
+ str: str,
251
+ val: bool,
252
+ comple_list: List[List[str]],
253
+ ) -> str:
254
+ # empty comment1
255
+ # empty comment2
256
+ s = 'test'
257
+ return s
258
+
259
+ @staticmethod
260
+ async def test_func_async(
261
+ str: str,
262
+ val: bool,
263
+ comple_list: List[List[str]],
264
+ ) -> str:
265
+ # empty comment1
266
+ # empty comment2
267
+ s = 'test'
268
+ return s
269
+
270
+ @staticmethod
271
+ def test_func_params(
272
+ comple_list: List[List[str]],
273
+ map_test: Dict[str, str],
274
+ read: BinaryIO,
275
+ any_test: Any,
276
+ test_1: main_models.Test1,
277
+ ) -> None:
278
+ pass
279
+
280
+ @staticmethod
281
+ async def test_func_params_async(
282
+ comple_list: List[List[str]],
283
+ map_test: Dict[str, str],
284
+ read: BinaryIO,
285
+ any_test: Any,
286
+ test_1: main_models.Test1,
287
+ ) -> None:
288
+ pass
@@ -0,0 +1,195 @@
1
+ # -*- coding: utf-8 -*-
2
+ # This file is auto-generated, don't edit it. Thanks.
3
+ from __future__ import annotations
4
+ from darabonba.model import DaraModel
5
+ from typing import List
6
+
7
+
8
+ # import comment
9
+
10
+
11
+ """
12
+ * @remarks
13
+ * TestModel
14
+ """
15
+ class Test1(DaraModel):
16
+ def __init__(
17
+ self,
18
+ test: str = None,
19
+ # odel的test back comment
20
+ test_2: str = None,
21
+ # odel的test2 back comment
22
+ test_3: List[List[str]] = None,
23
+ test_5: str = None,
24
+ sts: str = None,
25
+ a_sts: str = None,
26
+ ):
27
+ # test desc
28
+ self.test = test
29
+ # odel的test back comment
30
+ # test2 desc
31
+ self.test_2 = test_2
32
+ # odel的test2 back comment
33
+ # test3 desc
34
+ self.test_3 = test_3
35
+ # test desc
36
+ self.test_5 = test_5
37
+ # sts desc
38
+ self.sts = sts
39
+ # asts desc
40
+ self.a_sts = a_sts
41
+
42
+ def validate(self):
43
+ self.validate_required(self.test, 'test')
44
+ # odel的test back comment
45
+ self.validate_required(self.test_2, 'test_2')
46
+ # odel的test2 back comment
47
+ self.validate_required(self.test_3, 'test_3')
48
+ self.validate_required(self.test_5, 'test_5')
49
+ self.validate_required(self.sts, 'sts')
50
+ self.validate_required(self.a_sts, 'a_sts')
51
+
52
+ def to_map(self):
53
+ _map = super().to_map()
54
+ if _map is not None:
55
+ return _map
56
+
57
+ result = dict()
58
+ if self.test is not None:
59
+ result['test'] = self.test
60
+ # odel的test back comment
61
+ if self.test_2 is not None:
62
+ result['test2'] = self.test_2
63
+ # odel的test2 back comment
64
+ if self.test_3 is not None:
65
+ result['test3'] = self.test_3
66
+ if self.test_5 is not None:
67
+ result['test5'] = self.test_5
68
+ if self.sts is not None:
69
+ result['sts'] = self.sts
70
+ if self.a_sts is not None:
71
+ result['asts'] = self.a_sts
72
+ return result
73
+
74
+ def from_map(self, m: dict = None):
75
+ m = m or dict()
76
+ if m.get('test') is not None:
77
+ self.test = m.get('test')
78
+ # odel的test back comment
79
+ if m.get('test2') is not None:
80
+ self.test_2 = m.get('test2')
81
+ # odel的test2 back comment
82
+ if m.get('test3') is not None:
83
+ self.test_3 = m.get('test3')
84
+ if m.get('test5') is not None:
85
+ self.test_5 = m.get('test5')
86
+ if m.get('sts') is not None:
87
+ self.sts = m.get('sts')
88
+ if m.get('asts') is not None:
89
+ self.a_sts = m.get('asts')
90
+ return self
91
+
92
+ """
93
+ * @remarks
94
+ * TestModel2
95
+ """
96
+ class Test2(DaraModel):
97
+ def __init__(
98
+ self,
99
+ # model的test front comment
100
+ test: str = None,
101
+ # model的test front comment
102
+ test_2: str = None,
103
+ ):
104
+ # model的test front comment
105
+ # test desc
106
+ self.test = test
107
+ # model的test front comment
108
+ # test2 desc
109
+ self.test_2 = test_2
110
+
111
+ def validate(self):
112
+ # model的test front comment
113
+ self.validate_required(self.test, 'test')
114
+ # model的test front comment
115
+ self.validate_required(self.test_2, 'test_2')
116
+
117
+ def to_map(self):
118
+ _map = super().to_map()
119
+ if _map is not None:
120
+ return _map
121
+
122
+ result = dict()
123
+ # model的test front comment
124
+ if self.test is not None:
125
+ result['test'] = self.test
126
+ # model的test front comment
127
+ if self.test_2 is not None:
128
+ result['test2'] = self.test_2
129
+ return result
130
+
131
+ def from_map(self, m: dict = None):
132
+ m = m or dict()
133
+ # model的test front comment
134
+ if m.get('test') is not None:
135
+ self.test = m.get('test')
136
+ # model的test front comment
137
+ if m.get('test2') is not None:
138
+ self.test_2 = m.get('test2')
139
+ return self
140
+
141
+ """
142
+ * @remarks
143
+ * TestModel3
144
+ """
145
+ class Test3(DaraModel):
146
+ def __init__(
147
+ self,
148
+ # model的test front comment
149
+ test: str = None,
150
+ # empty comment1
151
+ # empy comment2
152
+ test_1: str = None,
153
+ ):
154
+ # model的test front comment
155
+ # test desc
156
+ self.test = test
157
+ # empty comment1
158
+ # empy comment2
159
+ # test desc
160
+ self.test_1 = test_1
161
+
162
+ def validate(self):
163
+ # model的test front comment
164
+ self.validate_required(self.test, 'test')
165
+ # empty comment1
166
+ # empy comment2
167
+ self.validate_required(self.test_1, 'test_1')
168
+
169
+ def to_map(self):
170
+ _map = super().to_map()
171
+ if _map is not None:
172
+ return _map
173
+
174
+ result = dict()
175
+ # model的test front comment
176
+ if self.test is not None:
177
+ result['test'] = self.test
178
+ # empty comment1
179
+ # empy comment2
180
+ if self.test_1 is not None:
181
+ result['test1'] = self.test_1
182
+ return result
183
+
184
+ def from_map(self, m: dict = None):
185
+ m = m or dict()
186
+ # model的test front comment
187
+ if m.get('test') is not None:
188
+ self.test = m.get('test')
189
+ # empty comment1
190
+ # empy comment2
191
+ if m.get('test1') is not None:
192
+ self.test_1 = m.get('test1')
193
+ return self
194
+
195
+ # odel的test back comment
@@ -0,0 +1 @@
1
+ __version__ = "1.0.0"