deepfos 1.1.68__tar.gz → 1.1.69__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 (191) hide show
  1. {deepfos-1.1.68 → deepfos-1.1.69}/CHANGELOG.md +7 -0
  2. {deepfos-1.1.68 → deepfos-1.1.69}/PKG-INFO +1 -1
  3. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/_version.py +3 -3
  4. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/exceptions/__init__.py +1 -1
  5. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/msg.py +21 -7
  6. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/PKG-INFO +1 -1
  7. {deepfos-1.1.68 → deepfos-1.1.69}/.gitattributes +0 -0
  8. {deepfos-1.1.68 → deepfos-1.1.69}/.gitee/ISSUE_GUIDELINES.md +0 -0
  9. {deepfos-1.1.68 → deepfos-1.1.69}/.gitee/ISSUE_TEMPLATE.md +0 -0
  10. {deepfos-1.1.68 → deepfos-1.1.69}/.gitignore +0 -0
  11. {deepfos-1.1.68 → deepfos-1.1.69}/MANIFEST.in +0 -0
  12. {deepfos-1.1.68 → deepfos-1.1.69}/README.md +0 -0
  13. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/__init__.py +0 -0
  14. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/algo/__init__.py +0 -0
  15. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/algo/graph.py +0 -0
  16. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/__init__.py +0 -0
  17. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/business_model.py +0 -0
  18. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/dimension.py +0 -0
  19. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/models/__init__.py +0 -0
  20. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/models/business_model.py +0 -0
  21. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/models/dimension.py +0 -0
  22. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_2/__init__.py +0 -0
  23. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_2/dimension.py +0 -0
  24. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_2/models/__init__.py +0 -0
  25. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_2/models/dimension.py +0 -0
  26. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/__init__.py +0 -0
  27. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/account.py +0 -0
  28. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/accounting_engines.py +0 -0
  29. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/app.py +0 -0
  30. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/approval_process.py +0 -0
  31. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/base.py +0 -0
  32. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/business_model.py +0 -0
  33. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/consolidation.py +0 -0
  34. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/consolidation_process.py +0 -0
  35. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/datatable.py +0 -0
  36. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/deep_pipeline.py +0 -0
  37. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/deepconnector.py +0 -0
  38. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/deepfos_task.py +0 -0
  39. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/deepmodel.py +0 -0
  40. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/dimension.py +0 -0
  41. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/financial_model.py +0 -0
  42. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/journal_model.py +0 -0
  43. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/journal_template.py +0 -0
  44. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/memory_financial_model.py +0 -0
  45. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/__init__.py +0 -0
  46. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/account.py +0 -0
  47. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/accounting_engines.py +0 -0
  48. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/app.py +0 -0
  49. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/approval_process.py +0 -0
  50. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/base.py +0 -0
  51. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/business_model.py +0 -0
  52. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/consolidation.py +0 -0
  53. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/consolidation_process.py +0 -0
  54. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/datatable_mysql.py +0 -0
  55. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/deep_pipeline.py +0 -0
  56. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/deepconnector.py +0 -0
  57. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/deepfos_task.py +0 -0
  58. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/deepmodel.py +0 -0
  59. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/dimension.py +0 -0
  60. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/financial_model.py +0 -0
  61. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/journal_model.py +0 -0
  62. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/journal_template.py +0 -0
  63. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/memory_financial_model.py +0 -0
  64. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/platform.py +0 -0
  65. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/python.py +0 -0
  66. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/reconciliation_engine.py +0 -0
  67. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/reconciliation_report.py +0 -0
  68. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/role_strategy.py +0 -0
  69. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/smartlist.py +0 -0
  70. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/space.py +0 -0
  71. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/system.py +0 -0
  72. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/variable.py +0 -0
  73. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/workflow.py +0 -0
  74. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/platform.py +0 -0
  75. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/python.py +0 -0
  76. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/reconciliation_engine.py +0 -0
  77. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/reconciliation_report.py +0 -0
  78. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/role_strategy.py +0 -0
  79. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/smartlist.py +0 -0
  80. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/space.py +0 -0
  81. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/system.py +0 -0
  82. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/variable.py +0 -0
  83. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/workflow.py +0 -0
  84. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/__init__.py +0 -0
  85. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/jstream.c +0 -0
  86. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/jstream.pyx +0 -0
  87. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/pandas.c +0 -0
  88. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/pandas.pyx +0 -0
  89. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/py_jstream.py +0 -0
  90. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/py_pandas.py +0 -0
  91. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/cache.py +0 -0
  92. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/config.py +0 -0
  93. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/__init__.py +0 -0
  94. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/__init__.py +0 -0
  95. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/_base.py +0 -0
  96. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/constants.py +0 -0
  97. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/cube.py +0 -0
  98. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/formula.py +0 -0
  99. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/syscube.py +0 -0
  100. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/typing.py +0 -0
  101. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/utils.py +0 -0
  102. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/__init__.py +0 -0
  103. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/_base.py +0 -0
  104. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/dimcreator.py +0 -0
  105. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/dimension.py +0 -0
  106. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/dimexpr.py +0 -0
  107. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/dimmember.py +0 -0
  108. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/eledimension.py +0 -0
  109. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/filters.py +0 -0
  110. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/sysdimension.py +0 -0
  111. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/__init__.py +0 -0
  112. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/_cache.py +0 -0
  113. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/_operator.py +0 -0
  114. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/nodemixin.py +0 -0
  115. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/sqlcondition.py +0 -0
  116. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/tablemodel.py +0 -0
  117. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/__init__.py +0 -0
  118. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/cipher.py +0 -0
  119. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/clickhouse.py +0 -0
  120. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/connector.py +0 -0
  121. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/daclickhouse.py +0 -0
  122. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/dameng.py +0 -0
  123. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/damysql.py +0 -0
  124. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/dbkits.py +0 -0
  125. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/deepengine.py +0 -0
  126. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/deepmodel.py +0 -0
  127. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/deepmodel_kingbase.py +0 -0
  128. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/edb.py +0 -0
  129. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/gauss.py +0 -0
  130. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/kingbase.py +0 -0
  131. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/mysql.py +0 -0
  132. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/oracle.py +0 -0
  133. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/postgresql.py +0 -0
  134. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/sqlserver.py +0 -0
  135. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/utils.py +0 -0
  136. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/__init__.py +0 -0
  137. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/accounting.py +0 -0
  138. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/apvlprocess.py +0 -0
  139. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/base.py +0 -0
  140. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/bizmodel.py +0 -0
  141. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/datatable.py +0 -0
  142. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/deep_pipeline.py +0 -0
  143. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/deepconnector.py +0 -0
  144. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/deepmodel.py +0 -0
  145. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/dimension.py +0 -0
  146. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/fact_table.py +0 -0
  147. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/finmodel.py +0 -0
  148. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/journal.py +0 -0
  149. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/journal_template.py +0 -0
  150. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/pyscript.py +0 -0
  151. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/reconciliation.py +0 -0
  152. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/rolestrategy.py +0 -0
  153. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/smartlist.py +0 -0
  154. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/variable.py +0 -0
  155. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/workflow.py +0 -0
  156. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/exceptions/hook.py +0 -0
  157. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lazy.py +0 -0
  158. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/__init__.py +0 -0
  159. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/_javaobj.py +0 -0
  160. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/asynchronous.py +0 -0
  161. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/concurrency.py +0 -0
  162. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/constant.py +0 -0
  163. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/decorator.py +0 -0
  164. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/deepchart.py +0 -0
  165. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/deepux.py +0 -0
  166. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/discovery.py +0 -0
  167. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/edb_lexer.py +0 -0
  168. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/eureka.py +0 -0
  169. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/filterparser.py +0 -0
  170. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/httpcli.py +0 -0
  171. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/jsonstreamer.py +0 -0
  172. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/nacos.py +0 -0
  173. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/patch.py +0 -0
  174. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/redis.py +0 -0
  175. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/serutils.py +0 -0
  176. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/stopwatch.py +0 -0
  177. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/subtask.py +0 -0
  178. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/sysutils.py +0 -0
  179. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/utils.py +0 -0
  180. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/local.py +0 -0
  181. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/options.py +0 -0
  182. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/translation.py +0 -0
  183. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/SOURCES.txt +0 -0
  184. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/dependency_links.txt +0 -0
  185. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/not-zip-safe +0 -0
  186. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/requires.txt +0 -0
  187. {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/top_level.txt +0 -0
  188. {deepfos-1.1.68 → deepfos-1.1.69}/requirements.txt +0 -0
  189. {deepfos-1.1.68 → deepfos-1.1.69}/setup.cfg +0 -0
  190. {deepfos-1.1.68 → deepfos-1.1.69}/setup.py +0 -0
  191. {deepfos-1.1.68 → deepfos-1.1.69}/versioneer.py +0 -0
@@ -1,3 +1,10 @@
1
+ ## [1.1.69] - 2025-08-12
2
+
3
+ ### 新增
4
+
5
+ * 消息中心推送接受发送成功规则参数
6
+
7
+
1
8
  ## [1.1.68] - 2025-07-29
2
9
 
3
10
  ### 更新
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepfos
3
- Version: 1.1.68
3
+ Version: 1.1.69
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": "2025-08-07T03:10:50+0000",
11
+ "date": "2025-08-13T05:47:18+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "e1b02f36c62e37f03965c5219dc9426d19af95a8",
15
- "version": "1.1.68"
14
+ "full-revisionid": "8ee03bc48deaa7e1f492dac1690e50b4097da6ea",
15
+ "version": "1.1.69"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -200,7 +200,7 @@ class MsgCenterError(DeepfosBaseException):
200
200
  self.reasons = reasons
201
201
 
202
202
  def __str__(self):
203
- return '推送失败,报错信息:' + '\n'.join([r.errorMsg for r in self.reasons])
203
+ return '推送失败,响应错误详情:\n' + '\n'.join([str(r.dict()) for r in self.reasons])
204
204
 
205
205
 
206
206
  # -----------------------------------------------------------------------------
@@ -111,7 +111,8 @@ class AsyncMsgCenter:
111
111
  content_param: Dict[str, str] = None,
112
112
  attachments: Dict[str, Union[str, bytes]] = None,
113
113
  cc_email: List[str] = None,
114
- api_idx: Literal[0, 1] = 0
114
+ api_idx: Literal[0, 1] = 0,
115
+ success_rule: Literal['partial', 'all'] = 'all'
115
116
  ) -> List:
116
117
  payload = {
117
118
  'receiver': receivers,
@@ -139,7 +140,11 @@ class AsyncMsgCenter:
139
140
 
140
141
  api = self.type_api_map[tpl_type][api_idx]
141
142
  resp = await api(payload)
142
- if resp.failure:
143
+ if resp.failure and (
144
+ success_rule == 'all' or (
145
+ success_rule == 'partial' and not resp.success
146
+ )
147
+ ):
143
148
  raise MsgCenterError(*resp.failure)
144
149
 
145
150
  return resp.success
@@ -153,6 +158,7 @@ class AsyncMsgCenter:
153
158
  title_param: Dict[str, str] = None,
154
159
  content_param: Dict[str, str] = None,
155
160
  attachments: Dict[str, Union[str, bytes]] = None,
161
+ success_rule: Literal['partial', 'all'] = 'all'
156
162
  ) -> List:
157
163
  """推送指定消息模版的消息
158
164
 
@@ -164,6 +170,7 @@ class AsyncMsgCenter:
164
170
  title_param: 可选,标题变量
165
171
  content_param: 可选,内容变量
166
172
  attachments: 可选,站内消息或邮箱的消息附件,以 文件名: 文件(字符串/bytes) 的字典形式提供
173
+ success_rule: 可选,发送成功规则,'partial' 表示部分成功即可,'all' 表示所有收件人都必须成功
167
174
 
168
175
  .. admonition:: 示例
169
176
 
@@ -217,7 +224,7 @@ class AsyncMsgCenter:
217
224
  return await self._publish(
218
225
  template, sender=sender, receivers=receivers,
219
226
  title_param=title_param, content_param=content_param,
220
- attachments=attachments,
227
+ attachments=attachments, success_rule=success_rule,
221
228
  )
222
229
 
223
230
  async def send_mail(
@@ -229,6 +236,7 @@ class AsyncMsgCenter:
229
236
  content_param: Dict[str, str] = None,
230
237
  attachments: Dict[str, Union[str, bytes]] = None,
231
238
  cc_email: List[str] = None,
239
+ success_rule: Literal['partial', 'all'] = 'all'
232
240
  ) -> List:
233
241
  """发送指定消息模版的邮件
234
242
 
@@ -240,6 +248,7 @@ class AsyncMsgCenter:
240
248
  content_param: 可选,内容变量
241
249
  attachments: 可选,附件,以 文件名: 文件(字符串/bytes) 的字典形式提供
242
250
  cc_email: 可选,抄送人列表
251
+ success_rule: 可选,发送成功规则,'partial' 表示部分成功即可,'all' 表示所有收件人都必须成功
243
252
 
244
253
 
245
254
  .. admonition:: 示例
@@ -289,7 +298,7 @@ class AsyncMsgCenter:
289
298
  template, sender=sender, receivers=receivers,
290
299
  title_param=title_param, content_param=content_param,
291
300
  attachments=attachments, cc_email=cc_email,
292
- api_idx=1
301
+ api_idx=1, success_rule=success_rule,
293
302
  )
294
303
 
295
304
  async def send_sms(
@@ -298,7 +307,8 @@ class AsyncMsgCenter:
298
307
  receivers: List[str],
299
308
  sender: str = None,
300
309
  title_param: Dict[str, str] = None,
301
- content_param: Dict[str, str] = None
310
+ content_param: Dict[str, str] = None,
311
+ success_rule: Literal['partial', 'all'] = 'all'
302
312
  ) -> List:
303
313
  """发送指定消息模版的短信
304
314
 
@@ -308,6 +318,7 @@ class AsyncMsgCenter:
308
318
  sender: 可选,发送人userid,默认为当前用户id
309
319
  title_param: 可选,标题变量
310
320
  content_param: 可选,内容变量
321
+ success_rule: 可选,发送成功规则,'partial' 表示部分成功即可,'all' 表示所有收件人都必须成功
311
322
 
312
323
 
313
324
  .. admonition:: 示例
@@ -351,7 +362,7 @@ class AsyncMsgCenter:
351
362
  return await self._publish(
352
363
  template, sender=sender, receivers=receivers,
353
364
  title_param=title_param, content_param=content_param,
354
- api_idx=1
365
+ api_idx=1, success_rule=success_rule,
355
366
  )
356
367
 
357
368
 
@@ -368,6 +379,7 @@ class MsgCenter(AsyncMsgCenter, metaclass=SyncMeta):
368
379
  title_param: Dict[str, str] = None,
369
380
  content_param: Dict[str, str] = None,
370
381
  attachments: Dict[str, Union[str, bytes]] = None,
382
+ success_rule: Literal['partial', 'all'] = 'all'
371
383
  ) -> List:
372
384
  ...
373
385
 
@@ -380,6 +392,7 @@ class MsgCenter(AsyncMsgCenter, metaclass=SyncMeta):
380
392
  content_param: Dict[str, str] = None,
381
393
  attachments: Dict[str, Union[str, bytes]] = None,
382
394
  cc_email: List[str] = None,
395
+ success_rule: Literal['partial', 'all'] = 'all'
383
396
  ) -> List:
384
397
  ...
385
398
 
@@ -389,6 +402,7 @@ class MsgCenter(AsyncMsgCenter, metaclass=SyncMeta):
389
402
  receivers: List[str],
390
403
  sender: str = None,
391
404
  title_param: Dict[str, str] = None,
392
- content_param: Dict[str, str] = None
405
+ content_param: Dict[str, str] = None,
406
+ success_rule: Literal['partial', 'all'] = 'all'
393
407
  ) -> List:
394
408
  ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepfos
3
- Version: 1.1.68
3
+ Version: 1.1.69
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