deepfos 1.1.48__tar.gz → 1.1.50__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.48 → deepfos-1.1.50}/CHANGELOG.md +12 -0
  2. {deepfos-1.1.48 → deepfos-1.1.50}/PKG-INFO +1 -1
  3. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/_version.py +3 -3
  4. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/base.py +3 -3
  5. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/edb.py +2 -3
  6. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/deepmodel.py +1 -1
  7. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/journal.py +16 -3
  8. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/serutils.py +17 -4
  9. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/utils.py +8 -0
  10. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/options.py +1 -0
  11. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos.egg-info/PKG-INFO +1 -1
  12. {deepfos-1.1.48 → deepfos-1.1.50}/.gitattributes +0 -0
  13. {deepfos-1.1.48 → deepfos-1.1.50}/.gitee/ISSUE_GUIDELINES.md +0 -0
  14. {deepfos-1.1.48 → deepfos-1.1.50}/.gitee/ISSUE_TEMPLATE.md +0 -0
  15. {deepfos-1.1.48 → deepfos-1.1.50}/.gitignore +0 -0
  16. {deepfos-1.1.48 → deepfos-1.1.50}/MANIFEST.in +0 -0
  17. {deepfos-1.1.48 → deepfos-1.1.50}/README.md +0 -0
  18. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/__init__.py +0 -0
  19. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/algo/__init__.py +0 -0
  20. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/algo/graph.py +0 -0
  21. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/V1_1/__init__.py +0 -0
  22. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/V1_1/business_model.py +0 -0
  23. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/V1_1/dimension.py +0 -0
  24. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/V1_1/models/__init__.py +0 -0
  25. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/V1_1/models/business_model.py +0 -0
  26. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/V1_1/models/dimension.py +0 -0
  27. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/V1_2/__init__.py +0 -0
  28. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/V1_2/dimension.py +0 -0
  29. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/V1_2/models/__init__.py +0 -0
  30. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/V1_2/models/dimension.py +0 -0
  31. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/__init__.py +0 -0
  32. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/account.py +0 -0
  33. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/accounting_engines.py +0 -0
  34. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/app.py +0 -0
  35. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/approval_process.py +0 -0
  36. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/business_model.py +0 -0
  37. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/consolidation.py +0 -0
  38. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/consolidation_process.py +0 -0
  39. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/datatable.py +0 -0
  40. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/deepconnector.py +0 -0
  41. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/deepfos_task.py +0 -0
  42. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/deepmodel.py +0 -0
  43. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/dimension.py +0 -0
  44. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/financial_model.py +0 -0
  45. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/journal_model.py +0 -0
  46. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/journal_template.py +0 -0
  47. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/memory_financial_model.py +0 -0
  48. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/__init__.py +0 -0
  49. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/account.py +0 -0
  50. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/accounting_engines.py +0 -0
  51. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/app.py +0 -0
  52. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/approval_process.py +0 -0
  53. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/base.py +0 -0
  54. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/business_model.py +0 -0
  55. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/consolidation.py +0 -0
  56. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/consolidation_process.py +0 -0
  57. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/datatable_mysql.py +0 -0
  58. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/deepconnector.py +0 -0
  59. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/deepfos_task.py +0 -0
  60. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/deepmodel.py +0 -0
  61. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/dimension.py +0 -0
  62. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/financial_model.py +0 -0
  63. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/journal_model.py +0 -0
  64. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/journal_template.py +0 -0
  65. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/memory_financial_model.py +0 -0
  66. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/platform.py +0 -0
  67. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/python.py +0 -0
  68. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/reconciliation_engine.py +0 -0
  69. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/reconciliation_report.py +0 -0
  70. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/role_strategy.py +0 -0
  71. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/smartlist.py +0 -0
  72. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/space.py +0 -0
  73. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/system.py +0 -0
  74. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/variable.py +0 -0
  75. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/models/workflow.py +0 -0
  76. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/platform.py +0 -0
  77. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/python.py +0 -0
  78. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/reconciliation_engine.py +0 -0
  79. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/reconciliation_report.py +0 -0
  80. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/role_strategy.py +0 -0
  81. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/smartlist.py +0 -0
  82. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/space.py +0 -0
  83. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/system.py +0 -0
  84. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/variable.py +0 -0
  85. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/api/workflow.py +0 -0
  86. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/boost/__init__.py +0 -0
  87. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/boost/jstream.c +0 -0
  88. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/boost/jstream.pyx +0 -0
  89. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/boost/pandas.c +0 -0
  90. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/boost/pandas.pyx +0 -0
  91. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/boost/py_jstream.py +0 -0
  92. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/boost/py_pandas.py +0 -0
  93. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/cache.py +0 -0
  94. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/config.py +0 -0
  95. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/__init__.py +0 -0
  96. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/cube/__init__.py +0 -0
  97. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/cube/_base.py +0 -0
  98. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/cube/constants.py +0 -0
  99. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/cube/cube.py +0 -0
  100. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/cube/formula.py +0 -0
  101. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/cube/syscube.py +0 -0
  102. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/cube/typing.py +0 -0
  103. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/cube/utils.py +0 -0
  104. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/dimension/__init__.py +0 -0
  105. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/dimension/_base.py +0 -0
  106. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/dimension/dimcreator.py +0 -0
  107. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/dimension/dimension.py +0 -0
  108. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/dimension/dimexpr.py +0 -0
  109. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/dimension/dimmember.py +0 -0
  110. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/dimension/eledimension.py +0 -0
  111. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/dimension/filters.py +0 -0
  112. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/dimension/sysdimension.py +0 -0
  113. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/logictable/__init__.py +0 -0
  114. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/logictable/_cache.py +0 -0
  115. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/logictable/_operator.py +0 -0
  116. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/logictable/nodemixin.py +0 -0
  117. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/logictable/sqlcondition.py +0 -0
  118. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/core/logictable/tablemodel.py +0 -0
  119. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/__init__.py +0 -0
  120. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/cipher.py +0 -0
  121. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/clickhouse.py +0 -0
  122. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/connector.py +0 -0
  123. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/daclickhouse.py +0 -0
  124. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/dameng.py +0 -0
  125. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/damysql.py +0 -0
  126. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/dbkits.py +0 -0
  127. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/deepengine.py +0 -0
  128. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/deepmodel.py +0 -0
  129. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/deepmodel_kingbase.py +0 -0
  130. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/gauss.py +0 -0
  131. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/kingbase.py +0 -0
  132. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/mysql.py +0 -0
  133. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/oracle.py +0 -0
  134. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/postgresql.py +0 -0
  135. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/sqlserver.py +0 -0
  136. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/db/utils.py +0 -0
  137. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/__init__.py +0 -0
  138. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/accounting.py +0 -0
  139. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/apvlprocess.py +0 -0
  140. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/base.py +0 -0
  141. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/bizmodel.py +0 -0
  142. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/datatable.py +0 -0
  143. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/deepconnector.py +0 -0
  144. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/dimension.py +0 -0
  145. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/fact_table.py +0 -0
  146. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/finmodel.py +0 -0
  147. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/journal_template.py +0 -0
  148. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/pyscript.py +0 -0
  149. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/reconciliation.py +0 -0
  150. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/rolestrategy.py +0 -0
  151. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/smartlist.py +0 -0
  152. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/variable.py +0 -0
  153. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/element/workflow.py +0 -0
  154. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/exceptions/__init__.py +0 -0
  155. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/exceptions/hook.py +0 -0
  156. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lazy.py +0 -0
  157. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/__init__.py +0 -0
  158. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/_javaobj.py +0 -0
  159. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/asynchronous.py +0 -0
  160. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/concurrency.py +0 -0
  161. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/constant.py +0 -0
  162. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/decorator.py +0 -0
  163. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/deepchart.py +0 -0
  164. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/deepux.py +0 -0
  165. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/discovery.py +0 -0
  166. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/edb_lexer.py +0 -0
  167. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/eureka.py +0 -0
  168. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/filterparser.py +0 -0
  169. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/httpcli.py +0 -0
  170. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/jsonstreamer.py +0 -0
  171. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/msg.py +0 -0
  172. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/nacos.py +0 -0
  173. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/patch.py +0 -0
  174. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/redis.py +0 -0
  175. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/stopwatch.py +0 -0
  176. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/subtask.py +0 -0
  177. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/lib/sysutils.py +0 -0
  178. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/local.py +0 -0
  179. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos/translation.py +0 -0
  180. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos.egg-info/SOURCES.txt +0 -0
  181. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos.egg-info/dependency_links.txt +0 -0
  182. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos.egg-info/not-zip-safe +0 -0
  183. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos.egg-info/requires.txt +0 -0
  184. {deepfos-1.1.48 → deepfos-1.1.50}/deepfos.egg-info/top_level.txt +0 -0
  185. {deepfos-1.1.48 → deepfos-1.1.50}/requirements.txt +0 -0
  186. {deepfos-1.1.48 → deepfos-1.1.50}/setup.cfg +0 -0
  187. {deepfos-1.1.48 → deepfos-1.1.50}/setup.py +0 -0
  188. {deepfos-1.1.48 → deepfos-1.1.50}/versioneer.py +0 -0
@@ -1,3 +1,15 @@
1
+ ## [1.1.50] - 2024-12-19
2
+
3
+ ### 变更
4
+
5
+ * DeepModel query_df修正不提供shape时会返回空dataframe的问题
6
+
7
+ ## [1.1.49] - 2024-11-21
8
+
9
+ ### 变更
10
+
11
+ * 凭证组件元素table对象增加逻辑表数据库方言信息
12
+
1
13
  ## [1.1.48] - 2024-11-19
2
14
 
3
15
  ### 变更
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepfos
3
- Version: 1.1.48
3
+ Version: 1.1.50
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-11-19T06:10:30+0000",
11
+ "date": "2024-12-19T07:52:58+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "60898bc8289ae501908e0c30afa436c79839eb88",
15
- "version": "1.1.48"
14
+ "full-revisionid": "85140a17cfd13bd4a66f556235e5f74026002c38",
15
+ "version": "1.1.50"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -20,7 +20,7 @@ from loguru import logger
20
20
 
21
21
  from deepfos.cache import Manager, AppSeperatedLRUCache
22
22
  from deepfos.lib.httpcli import AioHttpCli
23
- from deepfos.lib.utils import concat_url, retry, to_version_tuple, repr_version
23
+ from deepfos.lib.utils import concat_url, retry, to_version_tuple, repr_version, trim_text
24
24
  from deepfos.lib.asynchronous import evloop
25
25
  from deepfos.lib.discovery import ServiceDiscovery
26
26
  from deepfos.lib.constant import UNSET, RE_SYS_SERVER_PARSER
@@ -453,7 +453,7 @@ class Route:
453
453
  "Detail: {text}.",
454
454
  url=lambda: req.url,
455
455
  code=lambda: status_code,
456
- text=lambda: text,
456
+ text=lambda: trim_text(text, OPTION.general.response_display_length_on_error),
457
457
  )
458
458
  flag, obj, err = False, None, f"[code: {status_code}] ErrMsg from server: {text}"
459
459
 
@@ -474,7 +474,7 @@ class Route:
474
474
  "Call API: {url} failed. "
475
475
  "Bad response because status is False. Detail: {text}.",
476
476
  url=lambda: req.url,
477
- text=lambda: text,
477
+ text=lambda: trim_text(text, OPTION.general.response_display_length_on_error),
478
478
  )
479
479
  flag, obj, err = False, resp.get('data'), resp.get('message', text)
480
480
  err_code = resp.get('code')
@@ -19,9 +19,8 @@ __all__ = ['create_async_client']
19
19
  def collect_output_frame(ele_desc: describe.AnyType):
20
20
  if isinstance(ele_desc, describe.ObjectType):
21
21
  return {
22
- field: collect_output_frame(element.type)
22
+ (field, element.is_implicit == 0): collect_output_frame(element.type)
23
23
  for field, element in ele_desc.elements.items()
24
- if element.is_implicit == 0
25
24
  }
26
25
  if isinstance(ele_desc, describe.ArrayType):
27
26
  return collect_output_frame(ele_desc.element_type)
@@ -108,7 +107,7 @@ class _AsyncEdgeDBConnection(AsyncIOConnection):
108
107
  )
109
108
  ))
110
109
  else:
111
- frame_desc = {}
110
+ frame_desc = None
112
111
  return frame_desc, result
113
112
  except errors.EdgeDBError as e:
114
113
  if query_context.retry_options is None:
@@ -985,7 +985,7 @@ class AsyncDeepModel(ElementBase[DeepModelAPI]):
985
985
  frame_desc, data = await self.client.query(ql, **kwargs)
986
986
 
987
987
  data = pd.DataFrame(data=serutils.serialize(
988
- data, ctx=serutils.Context(frame_desc=frame_desc)
988
+ data, ctx=serutils.Context(frame_desc=frame_desc, query_df=True)
989
989
  ))
990
990
  # Not records for dict-like
991
991
  if not isinstance(frame_desc, dict):
@@ -2,6 +2,7 @@ import uuid
2
2
 
3
3
  from pydantic import parse_obj_as
4
4
 
5
+ from deepfos.element.datatable import get_table_class
5
6
  from deepfos.exceptions import (
6
7
  JournalModelSaveError, JournalModelCheckError, JournalModelPostingError
7
8
  )
@@ -57,8 +58,6 @@ _escape_table = {
57
58
 
58
59
  class AsyncJournalModel(ElementBase[JournalModelAPI]):
59
60
  """凭证组件"""
60
- quote_char = '`'
61
-
62
61
  def __init__(
63
62
  self,
64
63
  element_name: str,
@@ -77,6 +76,15 @@ class AsyncJournalModel(ElementBase[JournalModelAPI]):
77
76
  res = await api.journal_model_data.get_config(element_info)
78
77
  return res
79
78
 
79
+ @cached_property
80
+ def quote_char(self) -> str:
81
+ try:
82
+ element_type = self.config.logicTable.dataTableInfo.elementDetail.elementType
83
+ dbcls = get_table_class(element_type)
84
+ return dbcls.quote_char
85
+ except Exception: # noqa
86
+ return '`'
87
+
80
88
  @cached_property
81
89
  def table_name(self) -> str:
82
90
  """数据表真实表名"""
@@ -95,7 +103,12 @@ class AsyncJournalModel(ElementBase[JournalModelAPI]):
95
103
  `pypika的github <https://github.com/kayak/pypika#tables-columns-schemas-and-databases>`_
96
104
 
97
105
  """
98
- return Table(self.table_name)
106
+ try:
107
+ element_type = self.config.logicTable.dataTableInfo.elementDetail.elementType
108
+ dbcls = get_table_class(element_type)
109
+ return Table(self.table_name, query_cls=dbcls.query)
110
+ except Exception: # noqa
111
+ return Table(self.table_name)
99
112
 
100
113
  def _parse_where(self, where: Union[None, Term, EmptyCriterion]) -> str:
101
114
  if isinstance(where, (Term, EmptyCriterion)):
@@ -15,6 +15,7 @@ from edgedb.datatypes import datatypes
15
15
  @dataclass(frozen=True)
16
16
  class Context:
17
17
  frame_desc: Any = None
18
+ query_df: bool = False
18
19
 
19
20
 
20
21
  @functools.singledispatch
@@ -124,18 +125,30 @@ def _object(o: edgedb.Object, ctx: Context = Context()):
124
125
  ret = {}
125
126
 
126
127
  if ctx.frame_desc is None:
127
- for attr in ignore_implicited_fields(o):
128
+ if ctx.query_df:
129
+ attrs = dir(o)
130
+ else:
131
+ attrs = ignore_implicited_fields(o)
132
+ for attr in attrs:
128
133
  try:
129
134
  ret[attr] = serialize(o[attr])
130
135
  except (KeyError, TypeError):
131
136
  ret[attr] = serialize(getattr(o, attr))
132
137
  return ret
133
138
 
134
- for attr in (desc := ctx.frame_desc):
139
+ ensure_one_field = ctx.query_df and len(ctx.frame_desc) == 1
140
+ for key, value in dict(ctx.frame_desc).items():
141
+ if isinstance(key, tuple):
142
+ # key: (field_name, not_implicit)
143
+ maybe_drop = ctx.frame_desc.pop(key)
144
+ if ensure_one_field or key[1]:
145
+ ctx.frame_desc[key[0]] = maybe_drop
146
+
147
+ for attr in ctx.frame_desc:
135
148
  try:
136
- ret[attr] = serialize(o[attr], Context(frame_desc=desc[attr]))
149
+ ret[attr] = serialize(o[attr], Context(frame_desc=ctx.frame_desc[attr]))
137
150
  except (KeyError, TypeError):
138
- ret[attr] = serialize(getattr(o, attr), Context(frame_desc=desc[attr]))
151
+ ret[attr] = serialize(getattr(o, attr), Context(frame_desc=ctx.frame_desc[attr]))
139
152
 
140
153
  return ret
141
154
 
@@ -993,3 +993,11 @@ class AliasGenerator(SimpleCounter):
993
993
  def get(self, hint: str = '') -> str:
994
994
  idx = self.nextval(hint)
995
995
  return f'{hint}{idx}'
996
+
997
+
998
+ def trim_text(content: str, limit: Union[int, None], appendor: str = '...') -> str:
999
+ limit = limit or 0
1000
+ if 0 < limit < len(content):
1001
+ return f"{content[:limit]} {appendor}"
1002
+ else:
1003
+ return content
@@ -425,6 +425,7 @@ class _General(_Category):
425
425
  parallel_mode = _Option(False, val_type=bool)
426
426
  socket_name = _Option(None, val_type=str)
427
427
  preserve_concurrency = _Option(1, val_type=int)
428
+ response_display_length_on_error = _Option(20000, val_type=int)
428
429
 
429
430
  def __get__(self, instance, owner) -> '_General':
430
431
  """defined to help ide"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepfos
3
- Version: 1.1.48
3
+ Version: 1.1.50
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