deepfos 1.1.42__tar.gz → 1.1.43__tar.gz

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 (188) hide show
  1. {deepfos-1.1.42 → deepfos-1.1.43}/CHANGELOG.md +10 -0
  2. {deepfos-1.1.42 → deepfos-1.1.43}/PKG-INFO +1 -1
  3. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/_version.py +3 -3
  4. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/deepmodel.py +55 -18
  5. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos.egg-info/PKG-INFO +1 -1
  6. {deepfos-1.1.42 → deepfos-1.1.43}/.gitattributes +0 -0
  7. {deepfos-1.1.42 → deepfos-1.1.43}/.gitee/ISSUE_GUIDELINES.md +0 -0
  8. {deepfos-1.1.42 → deepfos-1.1.43}/.gitee/ISSUE_TEMPLATE.md +0 -0
  9. {deepfos-1.1.42 → deepfos-1.1.43}/.gitignore +0 -0
  10. {deepfos-1.1.42 → deepfos-1.1.43}/MANIFEST.in +0 -0
  11. {deepfos-1.1.42 → deepfos-1.1.43}/README.md +0 -0
  12. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/__init__.py +0 -0
  13. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/algo/__init__.py +0 -0
  14. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/algo/graph.py +0 -0
  15. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/V1_1/__init__.py +0 -0
  16. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/V1_1/business_model.py +0 -0
  17. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/V1_1/dimension.py +0 -0
  18. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/V1_1/models/__init__.py +0 -0
  19. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/V1_1/models/business_model.py +0 -0
  20. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/V1_1/models/dimension.py +0 -0
  21. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/V1_2/__init__.py +0 -0
  22. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/V1_2/dimension.py +0 -0
  23. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/V1_2/models/__init__.py +0 -0
  24. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/V1_2/models/dimension.py +0 -0
  25. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/__init__.py +0 -0
  26. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/account.py +0 -0
  27. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/accounting_engines.py +0 -0
  28. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/app.py +0 -0
  29. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/approval_process.py +0 -0
  30. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/base.py +0 -0
  31. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/business_model.py +0 -0
  32. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/consolidation.py +0 -0
  33. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/consolidation_process.py +0 -0
  34. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/datatable.py +0 -0
  35. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/deepconnector.py +0 -0
  36. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/deepfos_task.py +0 -0
  37. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/deepmodel.py +0 -0
  38. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/dimension.py +0 -0
  39. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/financial_model.py +0 -0
  40. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/journal_model.py +0 -0
  41. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/journal_template.py +0 -0
  42. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/memory_financial_model.py +0 -0
  43. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/__init__.py +0 -0
  44. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/account.py +0 -0
  45. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/accounting_engines.py +0 -0
  46. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/app.py +0 -0
  47. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/approval_process.py +0 -0
  48. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/base.py +0 -0
  49. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/business_model.py +0 -0
  50. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/consolidation.py +0 -0
  51. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/consolidation_process.py +0 -0
  52. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/datatable_mysql.py +0 -0
  53. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/deepconnector.py +0 -0
  54. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/deepfos_task.py +0 -0
  55. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/deepmodel.py +0 -0
  56. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/dimension.py +0 -0
  57. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/financial_model.py +0 -0
  58. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/journal_model.py +0 -0
  59. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/journal_template.py +0 -0
  60. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/memory_financial_model.py +0 -0
  61. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/platform.py +0 -0
  62. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/python.py +0 -0
  63. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/reconciliation_engine.py +0 -0
  64. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/reconciliation_report.py +0 -0
  65. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/role_strategy.py +0 -0
  66. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/smartlist.py +0 -0
  67. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/space.py +0 -0
  68. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/system.py +0 -0
  69. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/variable.py +0 -0
  70. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/models/workflow.py +0 -0
  71. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/platform.py +0 -0
  72. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/python.py +0 -0
  73. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/reconciliation_engine.py +0 -0
  74. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/reconciliation_report.py +0 -0
  75. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/role_strategy.py +0 -0
  76. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/smartlist.py +0 -0
  77. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/space.py +0 -0
  78. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/system.py +0 -0
  79. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/variable.py +0 -0
  80. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/api/workflow.py +0 -0
  81. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/boost/__init__.py +0 -0
  82. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/boost/jstream.c +0 -0
  83. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/boost/jstream.pyx +0 -0
  84. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/boost/pandas.c +0 -0
  85. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/boost/pandas.pyx +0 -0
  86. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/boost/py_jstream.py +0 -0
  87. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/boost/py_pandas.py +0 -0
  88. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/cache.py +0 -0
  89. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/config.py +0 -0
  90. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/__init__.py +0 -0
  91. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/cube/__init__.py +0 -0
  92. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/cube/_base.py +0 -0
  93. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/cube/constants.py +0 -0
  94. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/cube/cube.py +0 -0
  95. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/cube/formula.py +0 -0
  96. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/cube/syscube.py +0 -0
  97. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/cube/typing.py +0 -0
  98. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/cube/utils.py +0 -0
  99. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/dimension/__init__.py +0 -0
  100. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/dimension/_base.py +0 -0
  101. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/dimension/dimcreator.py +0 -0
  102. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/dimension/dimension.py +0 -0
  103. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/dimension/dimexpr.py +0 -0
  104. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/dimension/dimmember.py +0 -0
  105. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/dimension/eledimension.py +0 -0
  106. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/dimension/filters.py +0 -0
  107. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/dimension/sysdimension.py +0 -0
  108. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/logictable/__init__.py +0 -0
  109. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/logictable/_cache.py +0 -0
  110. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/logictable/_operator.py +0 -0
  111. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/logictable/nodemixin.py +0 -0
  112. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/logictable/sqlcondition.py +0 -0
  113. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/core/logictable/tablemodel.py +0 -0
  114. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/__init__.py +0 -0
  115. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/cipher.py +0 -0
  116. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/clickhouse.py +0 -0
  117. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/connector.py +0 -0
  118. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/daclickhouse.py +0 -0
  119. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/dameng.py +0 -0
  120. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/damysql.py +0 -0
  121. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/dbkits.py +0 -0
  122. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/deepengine.py +0 -0
  123. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/deepmodel.py +0 -0
  124. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/deepmodel_kingbase.py +0 -0
  125. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/edb.py +0 -0
  126. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/gauss.py +0 -0
  127. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/kingbase.py +0 -0
  128. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/mysql.py +0 -0
  129. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/oracle.py +0 -0
  130. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/postgresql.py +0 -0
  131. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/sqlserver.py +0 -0
  132. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/db/utils.py +0 -0
  133. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/__init__.py +0 -0
  134. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/accounting.py +0 -0
  135. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/apvlprocess.py +0 -0
  136. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/base.py +0 -0
  137. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/bizmodel.py +0 -0
  138. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/datatable.py +0 -0
  139. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/deepconnector.py +0 -0
  140. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/dimension.py +0 -0
  141. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/fact_table.py +0 -0
  142. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/finmodel.py +0 -0
  143. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/journal.py +0 -0
  144. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/journal_template.py +0 -0
  145. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/pyscript.py +0 -0
  146. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/reconciliation.py +0 -0
  147. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/rolestrategy.py +0 -0
  148. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/smartlist.py +0 -0
  149. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/variable.py +0 -0
  150. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/element/workflow.py +0 -0
  151. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/exceptions/__init__.py +0 -0
  152. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/exceptions/hook.py +0 -0
  153. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lazy.py +0 -0
  154. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/__init__.py +0 -0
  155. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/_javaobj.py +0 -0
  156. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/asynchronous.py +0 -0
  157. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/concurrency.py +0 -0
  158. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/constant.py +0 -0
  159. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/decorator.py +0 -0
  160. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/deepchart.py +0 -0
  161. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/deepux.py +0 -0
  162. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/discovery.py +0 -0
  163. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/edb_lexer.py +0 -0
  164. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/eureka.py +0 -0
  165. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/filterparser.py +0 -0
  166. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/httpcli.py +0 -0
  167. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/jsonstreamer.py +0 -0
  168. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/msg.py +0 -0
  169. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/nacos.py +0 -0
  170. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/patch.py +0 -0
  171. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/redis.py +0 -0
  172. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/serutils.py +0 -0
  173. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/stopwatch.py +0 -0
  174. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/subtask.py +0 -0
  175. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/sysutils.py +0 -0
  176. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/lib/utils.py +0 -0
  177. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/local.py +0 -0
  178. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/options.py +0 -0
  179. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos/translation.py +0 -0
  180. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos.egg-info/SOURCES.txt +0 -0
  181. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos.egg-info/dependency_links.txt +0 -0
  182. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos.egg-info/not-zip-safe +0 -0
  183. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos.egg-info/requires.txt +0 -0
  184. {deepfos-1.1.42 → deepfos-1.1.43}/deepfos.egg-info/top_level.txt +0 -0
  185. {deepfos-1.1.42 → deepfos-1.1.43}/requirements.txt +0 -0
  186. {deepfos-1.1.42 → deepfos-1.1.43}/setup.cfg +0 -0
  187. {deepfos-1.1.42 → deepfos-1.1.43}/setup.py +0 -0
  188. {deepfos-1.1.42 → deepfos-1.1.43}/versioneer.py +0 -0
@@ -1,3 +1,13 @@
1
+ ## [1.1.43] - 2024-10-17
2
+
3
+ ### 变更
4
+
5
+ * DeepModel query_df处理Bool的cast不使用pd.BooleanDtype()
6
+
7
+ ### 新增
8
+
9
+ * DeepModel start_transaction支持flatten
10
+
1
11
  ## [1.1.42] - 2024-09-19
2
12
 
3
13
  ### 新增
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepfos
3
- Version: 1.1.42
3
+ Version: 1.1.43
4
4
  Summary: Collecions of useful and handy tools for deepfos platform
5
5
  Home-page: http://py.deepfos.com
6
6
  Author: deepfos-python-team
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2024-09-24T05:39:42+0000",
11
+ "date": "2024-10-17T06:20:32+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "14152a2be32b02192ca40c87779a76367645c6a4",
15
- "version": "1.1.42"
14
+ "full-revisionid": "70458d49459fef48654216c06f2665d6a68d3e07",
15
+ "version": "1.1.43"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -393,7 +393,7 @@ class FieldBool(BaseField):
393
393
  df[field_name] = df[field_name].apply(self.format_bool)
394
394
 
395
395
  def cast(self, df: pd.DataFrame, field_name: str, direct_access: bool = True):
396
- df[field_name] = df[field_name].astype(pd.BooleanDtype(), errors='ignore')
396
+ pass
397
397
 
398
398
 
399
399
  class FieldFactory:
@@ -513,10 +513,10 @@ def _iter_single_assign(
513
513
  )
514
514
  )"""
515
515
  else:
516
- assign_string += f"""(
516
+ assign_string += f"""assert_single((
517
517
  select detached {target}
518
518
  filter .{main_field.business_key} = <{main_field.type}>(json_get(item, '{link}'))
519
- )"""
519
+ ))"""
520
520
 
521
521
  return assign_string
522
522
 
@@ -730,12 +730,13 @@ txn_support = flagmethod('_txn_support_')
730
730
 
731
731
 
732
732
  class _TxnConfig:
733
- __slots__ = ('qls', 'in_txn', 'txn_support')
733
+ __slots__ = ('qls', 'in_txn', 'txn_support', 'flatten')
734
734
 
735
735
  def __init__(self):
736
- self.qls = []
737
- self.in_txn = False
736
+ self.qls = [[]]
737
+ self.in_txn = [False]
738
738
  self.txn_support = False
739
+ self.flatten = False
739
740
 
740
741
 
741
742
  @lru_cache(maxsize=128, cache_factory=SpaceSeperatedLRUCache)
@@ -1107,8 +1108,8 @@ class AsyncDeepModel(ElementBase[DeepModelAPI]):
1107
1108
  ) -> Optional[List]:
1108
1109
  txn_conf = self._safe_get_txn_conf()
1109
1110
 
1110
- if txn_conf.in_txn and self._txn_support_:
1111
- txn_conf.qls.extend(qls_with_args)
1111
+ if txn_conf.in_txn[-1] and self._txn_support_:
1112
+ txn_conf.qls[-1].extend(qls_with_args)
1112
1113
  return
1113
1114
 
1114
1115
  return await self._execute(qls_with_args)
@@ -1577,7 +1578,7 @@ class AsyncDeepModel(ElementBase[DeepModelAPI]):
1577
1578
  await conn.close()
1578
1579
 
1579
1580
  @asynccontextmanager
1580
- async def start_transaction(self):
1581
+ async def start_transaction(self, flatten: bool = False):
1581
1582
  """开启事务
1582
1583
 
1583
1584
  上下文管理器,使用with语法开启上下文,上下文中的ql将作为事务执行
@@ -1617,14 +1618,32 @@ class AsyncDeepModel(ElementBase[DeepModelAPI]):
1617
1618
  仅 :func:`insert_df` :func:`execute` 方法支持在事务中执行
1618
1619
 
1619
1620
  """
1620
- self._safe_get_txn_conf().in_txn = True
1621
+ try:
1622
+ self._txn_.get()
1623
+ except LookupError:
1624
+ self._txn_.set(_TxnConfig())
1625
+
1626
+ bak_flatten = self._txn_.get().flatten
1627
+ self._txn_.get().in_txn.append(True)
1628
+
1629
+ if flatten and not self._txn_.get().flatten:
1630
+ force_submit = True
1631
+ else:
1632
+ force_submit = False
1633
+
1634
+ self._txn_.get().flatten = bak_flatten or flatten
1635
+
1636
+ if not self._txn_.get().flatten:
1637
+ self._txn_.get().qls.append([])
1621
1638
 
1622
1639
  try:
1623
1640
  yield
1624
- if qls := self._txn_.get().qls:
1625
- await self._execute(qls)
1641
+ if force_submit or not self._txn_.get().flatten:
1642
+ if qls := self._txn_.get().qls.pop():
1643
+ await self._execute(qls)
1626
1644
  finally:
1627
- self._txn_.set(_TxnConfig())
1645
+ self._txn_.get().in_txn.pop()
1646
+ self._txn_.get().flatten = bak_flatten
1628
1647
 
1629
1648
  @contextmanager
1630
1649
  def with_globals(self, globals_):
@@ -1712,7 +1731,7 @@ class DeepModel(AsyncDeepModel, metaclass=SyncMeta):
1712
1731
  ...
1713
1732
 
1714
1733
  @contextmanager
1715
- def start_transaction(self):
1734
+ def start_transaction(self, flatten: bool = False):
1716
1735
  """开启事务
1717
1736
 
1718
1737
  上下文管理器,使用with语法开启上下文,上下文中的ql将作为事务执行
@@ -1752,11 +1771,29 @@ class DeepModel(AsyncDeepModel, metaclass=SyncMeta):
1752
1771
  仅 :func:`insert_df` :func:`execute` 方法支持在事务中执行
1753
1772
 
1754
1773
  """
1755
- self._safe_get_txn_conf().in_txn = True
1774
+ try:
1775
+ self._txn_.get()
1776
+ except LookupError:
1777
+ self._txn_.set(_TxnConfig())
1778
+
1779
+ bak_flatten = self._txn_.get().flatten
1780
+ self._txn_.get().in_txn.append(True)
1781
+
1782
+ if flatten and not self._txn_.get().flatten:
1783
+ force_submit = True
1784
+ else:
1785
+ force_submit = False
1786
+
1787
+ self._txn_.get().flatten = bak_flatten or flatten
1788
+
1789
+ if not self._txn_.get().flatten:
1790
+ self._txn_.get().qls.append([])
1756
1791
 
1757
1792
  try:
1758
1793
  yield
1759
- if qls := self._txn_.get().qls:
1760
- evloop.run(self._execute(qls))
1794
+ if force_submit or not self._txn_.get().flatten:
1795
+ if qls := self._txn_.get().qls.pop():
1796
+ evloop.run(self._execute(qls))
1761
1797
  finally:
1762
- self._txn_.set(_TxnConfig())
1798
+ self._txn_.get().in_txn.pop()
1799
+ self._txn_.get().flatten = bak_flatten
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepfos
3
- Version: 1.1.42
3
+ Version: 1.1.43
4
4
  Summary: Collecions of useful and handy tools for deepfos platform
5
5
  Home-page: http://py.deepfos.com
6
6
  Author: deepfos-python-team
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes