deepfos 1.1.69__tar.gz → 1.1.71__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.
- {deepfos-1.1.69 → deepfos-1.1.71}/CHANGELOG.md +15 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/PKG-INFO +1 -1
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/_version.py +3 -3
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/deep_pipeline.py +1 -1
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/deep_pipeline.py +14 -3
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/system.py +2 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/deep_pipeline.py +29 -16
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/msg.py +15 -3
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos.egg-info/PKG-INFO +1 -1
- {deepfos-1.1.69 → deepfos-1.1.71}/.gitattributes +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/.gitee/ISSUE_GUIDELINES.md +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/.gitee/ISSUE_TEMPLATE.md +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/.gitignore +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/MANIFEST.in +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/README.md +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/algo/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/algo/graph.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/V1_1/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/V1_1/business_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/V1_1/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/V1_1/models/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/V1_1/models/business_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/V1_1/models/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/V1_2/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/V1_2/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/V1_2/models/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/V1_2/models/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/account.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/accounting_engines.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/app.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/approval_process.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/base.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/business_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/consolidation.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/consolidation_process.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/datatable.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/deepconnector.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/deepfos_task.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/deepmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/financial_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/journal_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/journal_template.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/memory_financial_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/account.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/accounting_engines.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/app.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/approval_process.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/base.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/business_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/consolidation.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/consolidation_process.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/datatable_mysql.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/deepconnector.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/deepfos_task.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/deepmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/financial_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/journal_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/journal_template.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/memory_financial_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/platform.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/python.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/reconciliation_engine.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/reconciliation_report.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/role_strategy.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/smartlist.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/space.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/variable.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/models/workflow.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/platform.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/python.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/reconciliation_engine.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/reconciliation_report.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/role_strategy.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/smartlist.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/space.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/system.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/variable.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/api/workflow.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/boost/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/boost/jstream.c +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/boost/jstream.pyx +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/boost/pandas.c +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/boost/pandas.pyx +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/boost/py_jstream.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/boost/py_pandas.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/cache.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/config.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/cube/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/cube/_base.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/cube/constants.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/cube/cube.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/cube/formula.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/cube/syscube.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/cube/typing.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/cube/utils.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/dimension/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/dimension/_base.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/dimension/dimcreator.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/dimension/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/dimension/dimexpr.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/dimension/dimmember.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/dimension/eledimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/dimension/filters.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/dimension/sysdimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/logictable/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/logictable/_cache.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/logictable/_operator.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/logictable/nodemixin.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/logictable/sqlcondition.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/core/logictable/tablemodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/cipher.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/clickhouse.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/connector.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/daclickhouse.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/dameng.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/damysql.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/dbkits.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/deepengine.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/deepmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/deepmodel_kingbase.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/edb.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/gauss.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/kingbase.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/mysql.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/oracle.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/postgresql.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/sqlserver.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/db/utils.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/accounting.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/apvlprocess.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/base.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/bizmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/datatable.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/deepconnector.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/deepmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/fact_table.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/finmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/journal.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/journal_template.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/pyscript.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/reconciliation.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/rolestrategy.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/smartlist.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/variable.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/element/workflow.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/exceptions/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/exceptions/hook.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lazy.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/_javaobj.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/asynchronous.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/concurrency.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/constant.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/decorator.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/deepchart.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/deepux.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/discovery.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/edb_lexer.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/eureka.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/filterparser.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/httpcli.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/jsonstreamer.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/nacos.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/patch.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/redis.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/serutils.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/stopwatch.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/subtask.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/sysutils.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/lib/utils.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/local.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/options.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos/translation.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos.egg-info/SOURCES.txt +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos.egg-info/dependency_links.txt +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos.egg-info/not-zip-safe +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos.egg-info/requires.txt +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/deepfos.egg-info/top_level.txt +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/requirements.txt +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/setup.cfg +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/setup.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.71}/versioneer.py +0 -0
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-08-
|
|
11
|
+
"date": "2025-08-20T06:19:57+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.1.
|
|
14
|
+
"full-revisionid": "e2b7caff4237e4df0c64899b4d6d948f41512291",
|
|
15
|
+
"version": "1.1.71"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -12,7 +12,7 @@ class RunAPI(ChildAPI):
|
|
|
12
12
|
endpoint = '/'
|
|
13
13
|
|
|
14
14
|
@post('run')
|
|
15
|
-
def run_async(self, run_info: RunInfo) -> Union[str, Awaitable[str]]:
|
|
15
|
+
def run_async(self, run_info: Union[RunInfo, RunInfoWithParam]) -> Union[str, Awaitable[str]]:
|
|
16
16
|
"""
|
|
17
17
|
异步执行数据流
|
|
18
18
|
异步执行数据流,返回任务id
|
|
@@ -3,11 +3,24 @@ from typing import Any, Optional
|
|
|
3
3
|
from .base import BaseModel
|
|
4
4
|
|
|
5
5
|
__all__ = [
|
|
6
|
-
"RunInfo", "FlowInfo",
|
|
6
|
+
"RunInfo", "FlowInfo", "RunInfoWithParam",
|
|
7
7
|
]
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class RunInfo(BaseModel):
|
|
11
|
+
#: 元素名/编码
|
|
12
|
+
elementName: str
|
|
13
|
+
#: 元素类型
|
|
14
|
+
elementType: str = "DPL"
|
|
15
|
+
#: 文件路径
|
|
16
|
+
path: Optional[str] = None
|
|
17
|
+
#: 文件夹id
|
|
18
|
+
folderId: Optional[str] = None
|
|
19
|
+
# 是否在同一个进程执行
|
|
20
|
+
inProcess: bool = False
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class RunInfoWithParam(BaseModel):
|
|
11
24
|
#: 元素名/编码
|
|
12
25
|
elementName: str
|
|
13
26
|
#: 元素类型
|
|
@@ -30,8 +43,6 @@ class Revision(BaseModel):
|
|
|
30
43
|
|
|
31
44
|
|
|
32
45
|
class Configure(BaseModel):
|
|
33
|
-
#: 超时时间(秒)
|
|
34
|
-
timeout: int
|
|
35
46
|
#: 公共脚本
|
|
36
47
|
prelude: Optional[str] = None
|
|
37
48
|
#: 实例名称
|
|
@@ -954,6 +954,8 @@ class MsgPushHasAttachmentRequestVO(BaseModel):
|
|
|
954
954
|
params: Optional[List[MessageTemplateParamVO]] = None
|
|
955
955
|
#: 接收对象(用户/用户组)
|
|
956
956
|
receiver: List[MessageReceiverVO]
|
|
957
|
+
#: 抄送对象(用户/用户组)
|
|
958
|
+
ccEmail: Optional[List[MessageReceiverVO]] = None
|
|
957
959
|
#: 发送人
|
|
958
960
|
sender: Optional[str] = None
|
|
959
961
|
#: 模板编码
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import time
|
|
3
|
+
import warnings
|
|
3
4
|
from math import ceil
|
|
4
5
|
from typing import Any, TYPE_CHECKING, List
|
|
5
6
|
|
|
6
7
|
from deepfos import OPTION
|
|
7
8
|
from deepfos.api.deep_pipeline import DeepPipelineAPI
|
|
8
|
-
from deepfos.api.models.deep_pipeline import RunInfo, FlowInfo
|
|
9
|
+
from deepfos.api.models.deep_pipeline import RunInfo, FlowInfo, RunInfoWithParam
|
|
9
10
|
from deepfos.element.base import ElementBase, SyncMeta
|
|
10
11
|
from deepfos.exceptions import (
|
|
11
12
|
APIResponseError, RunIdInvalid, RunTerminated,
|
|
12
13
|
ReleaseFlowTimeout, RunFailedError, ReleaseFlowNotExists,
|
|
13
14
|
)
|
|
14
15
|
from deepfos.lib.asynchronous import future_property
|
|
16
|
+
from deepfos.lib.constant import UNSET
|
|
15
17
|
from deepfos.lib.decorator import cached_property
|
|
16
18
|
|
|
17
19
|
errcode_map = {
|
|
@@ -47,7 +49,7 @@ class AsyncDeepPipeline(ElementBase[DeepPipelineAPI]):
|
|
|
47
49
|
|
|
48
50
|
async def run(
|
|
49
51
|
self,
|
|
50
|
-
parameter: Any =
|
|
52
|
+
parameter: Any = UNSET,
|
|
51
53
|
timeout: int = None,
|
|
52
54
|
in_process: bool = True,
|
|
53
55
|
) -> Any:
|
|
@@ -57,25 +59,29 @@ class AsyncDeepPipeline(ElementBase[DeepPipelineAPI]):
|
|
|
57
59
|
Args:
|
|
58
60
|
parameter: 执行参数
|
|
59
61
|
timeout: 超时时间(秒)
|
|
60
|
-
in_process:
|
|
62
|
+
in_process: 是否在同一个进程执行(仅作新旧兼容,实际只会在同一个进程执行,即不带启停启动)
|
|
61
63
|
|
|
62
64
|
Returns:
|
|
63
65
|
执行结果
|
|
64
66
|
"""
|
|
65
|
-
|
|
67
|
+
if not in_process:
|
|
68
|
+
warnings.warn(
|
|
69
|
+
'同步启动固定为同一个进程执行(不带启停启动),in_process参数为False不会影响该行为'
|
|
70
|
+
)
|
|
71
|
+
run_id = await self.run_async(parameter, True)
|
|
66
72
|
return await self.result(run_id, timeout)
|
|
67
73
|
|
|
68
74
|
async def run_async(
|
|
69
75
|
self,
|
|
70
|
-
parameter: Any =
|
|
71
|
-
in_process: bool =
|
|
76
|
+
parameter: Any = UNSET,
|
|
77
|
+
in_process: bool = False,
|
|
72
78
|
) -> str:
|
|
73
79
|
"""
|
|
74
80
|
异步启动数据流
|
|
75
81
|
|
|
76
82
|
Args:
|
|
77
83
|
parameter: 执行参数
|
|
78
|
-
in_process:
|
|
84
|
+
in_process: 是否在同一个进程执行,默认False,即带启停启动
|
|
79
85
|
|
|
80
86
|
Returns:
|
|
81
87
|
执行ID
|
|
@@ -83,14 +89,21 @@ class AsyncDeepPipeline(ElementBase[DeepPipelineAPI]):
|
|
|
83
89
|
if not self.has_approved_release:
|
|
84
90
|
raise ReleaseFlowNotExists('暂无启用中状态的数据流版本')
|
|
85
91
|
|
|
86
|
-
|
|
87
|
-
RunInfo(
|
|
92
|
+
if parameter is UNSET:
|
|
93
|
+
payload = RunInfo(
|
|
94
|
+
elementName=self.element_name,
|
|
95
|
+
folderId=self.element_info.folderId,
|
|
96
|
+
inProcess=in_process
|
|
97
|
+
)
|
|
98
|
+
else:
|
|
99
|
+
payload = RunInfoWithParam(
|
|
88
100
|
elementName=self.element_name,
|
|
89
101
|
parameter=parameter,
|
|
90
102
|
folderId=self.element_info.folderId,
|
|
91
103
|
inProcess=in_process
|
|
92
104
|
)
|
|
93
|
-
|
|
105
|
+
|
|
106
|
+
return await self.async_api.run.run_async(payload)
|
|
94
107
|
|
|
95
108
|
async def result(self, run_id: str, timeout: int = None) -> Any:
|
|
96
109
|
"""
|
|
@@ -134,14 +147,14 @@ class AsyncDeepPipeline(ElementBase[DeepPipelineAPI]):
|
|
|
134
147
|
async def run_batch(
|
|
135
148
|
self,
|
|
136
149
|
parameters: List[Any],
|
|
137
|
-
in_process: bool =
|
|
150
|
+
in_process: bool = False,
|
|
138
151
|
) -> List[str]:
|
|
139
152
|
"""
|
|
140
153
|
批量异步启动数据流
|
|
141
154
|
|
|
142
155
|
Args:
|
|
143
156
|
parameters: 执行参数列表
|
|
144
|
-
in_process:
|
|
157
|
+
in_process: 是否在同一个进程执行,默认False,即带启停启动
|
|
145
158
|
|
|
146
159
|
Returns:
|
|
147
160
|
执行ID列表
|
|
@@ -162,7 +175,7 @@ class DeepPipeline(AsyncDeepPipeline, metaclass=SyncMeta):
|
|
|
162
175
|
if TYPE_CHECKING: # pragma: no cover
|
|
163
176
|
def run(
|
|
164
177
|
self,
|
|
165
|
-
parameter: Any =
|
|
178
|
+
parameter: Any = UNSET,
|
|
166
179
|
timeout: int = None,
|
|
167
180
|
in_process: bool = True,
|
|
168
181
|
) -> Any:
|
|
@@ -170,8 +183,8 @@ class DeepPipeline(AsyncDeepPipeline, metaclass=SyncMeta):
|
|
|
170
183
|
|
|
171
184
|
def run_async(
|
|
172
185
|
self,
|
|
173
|
-
parameter: Any =
|
|
174
|
-
in_process: bool =
|
|
186
|
+
parameter: Any = UNSET,
|
|
187
|
+
in_process: bool = False,
|
|
175
188
|
) -> str:
|
|
176
189
|
...
|
|
177
190
|
|
|
@@ -181,6 +194,6 @@ class DeepPipeline(AsyncDeepPipeline, metaclass=SyncMeta):
|
|
|
181
194
|
def run_batch(
|
|
182
195
|
self,
|
|
183
196
|
parameters: List[Any],
|
|
184
|
-
in_process: bool =
|
|
197
|
+
in_process: bool = False,
|
|
185
198
|
):
|
|
186
199
|
...
|
|
@@ -110,7 +110,7 @@ class AsyncMsgCenter:
|
|
|
110
110
|
title_param: Dict[str, str] = None,
|
|
111
111
|
content_param: Dict[str, str] = None,
|
|
112
112
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
113
|
-
cc_email: List
|
|
113
|
+
cc_email: List = None,
|
|
114
114
|
api_idx: Literal[0, 1] = 0,
|
|
115
115
|
success_rule: Literal['partial', 'all'] = 'all'
|
|
116
116
|
) -> List:
|
|
@@ -158,7 +158,9 @@ class AsyncMsgCenter:
|
|
|
158
158
|
title_param: Dict[str, str] = None,
|
|
159
159
|
content_param: Dict[str, str] = None,
|
|
160
160
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
161
|
-
success_rule: Literal['partial', 'all'] = 'all'
|
|
161
|
+
success_rule: Literal['partial', 'all'] = 'all',
|
|
162
|
+
cc_users: List[str] = None,
|
|
163
|
+
cc_groups: List[str] = None,
|
|
162
164
|
) -> List:
|
|
163
165
|
"""推送指定消息模版的消息
|
|
164
166
|
|
|
@@ -171,6 +173,8 @@ class AsyncMsgCenter:
|
|
|
171
173
|
content_param: 可选,内容变量
|
|
172
174
|
attachments: 可选,站内消息或邮箱的消息附件,以 文件名: 文件(字符串/bytes) 的字典形式提供
|
|
173
175
|
success_rule: 可选,发送成功规则,'partial' 表示部分成功即可,'all' 表示所有收件人都必须成功
|
|
176
|
+
cc_users: 可选,抄送人userid列表
|
|
177
|
+
cc_groups: 可选,抄送人groupid列表
|
|
174
178
|
|
|
175
179
|
.. admonition:: 示例
|
|
176
180
|
|
|
@@ -217,6 +221,11 @@ class AsyncMsgCenter:
|
|
|
217
221
|
receivers.extend([{'id': r, 'type': 'USER'} for r in receiver_users])
|
|
218
222
|
if receiver_groups:
|
|
219
223
|
receivers.extend([{'id': r, 'type': 'GROUP'} for r in receiver_groups])
|
|
224
|
+
cc_email = []
|
|
225
|
+
if cc_users:
|
|
226
|
+
cc_email.extend([{'id': r, 'type': 'USER'} for r in cc_users])
|
|
227
|
+
if cc_groups:
|
|
228
|
+
cc_email.extend([{'id': r, 'type': 'GROUP'} for r in cc_groups])
|
|
220
229
|
|
|
221
230
|
if not receivers:
|
|
222
231
|
raise ValueError('需提供receiver_users和receiver_groups中的至少一项')
|
|
@@ -225,6 +234,7 @@ class AsyncMsgCenter:
|
|
|
225
234
|
template, sender=sender, receivers=receivers,
|
|
226
235
|
title_param=title_param, content_param=content_param,
|
|
227
236
|
attachments=attachments, success_rule=success_rule,
|
|
237
|
+
cc_email=cc_email
|
|
228
238
|
)
|
|
229
239
|
|
|
230
240
|
async def send_mail(
|
|
@@ -379,7 +389,9 @@ class MsgCenter(AsyncMsgCenter, metaclass=SyncMeta):
|
|
|
379
389
|
title_param: Dict[str, str] = None,
|
|
380
390
|
content_param: Dict[str, str] = None,
|
|
381
391
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
382
|
-
success_rule: Literal['partial', 'all'] = 'all'
|
|
392
|
+
success_rule: Literal['partial', 'all'] = 'all',
|
|
393
|
+
cc_users: List[str] = None,
|
|
394
|
+
cc_groups: List[str] = None,
|
|
383
395
|
) -> List:
|
|
384
396
|
...
|
|
385
397
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|