deepfos 1.1.42__tar.gz → 1.1.44__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.42 → deepfos-1.1.44}/CHANGELOG.md +16 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/PKG-INFO +1 -1
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/_version.py +3 -3
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/deepmodel.py +57 -20
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos.egg-info/PKG-INFO +1 -1
- {deepfos-1.1.42 → deepfos-1.1.44}/.gitattributes +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/.gitee/ISSUE_GUIDELINES.md +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/.gitee/ISSUE_TEMPLATE.md +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/.gitignore +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/MANIFEST.in +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/README.md +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/algo/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/algo/graph.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/V1_1/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/V1_1/business_model.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/V1_1/dimension.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/V1_1/models/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/V1_1/models/business_model.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/V1_1/models/dimension.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/V1_2/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/V1_2/dimension.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/V1_2/models/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/V1_2/models/dimension.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/account.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/accounting_engines.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/app.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/approval_process.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/base.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/business_model.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/consolidation.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/consolidation_process.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/datatable.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/deepconnector.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/deepfos_task.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/deepmodel.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/dimension.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/financial_model.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/journal_model.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/journal_template.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/memory_financial_model.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/account.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/accounting_engines.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/app.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/approval_process.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/base.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/business_model.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/consolidation.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/consolidation_process.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/datatable_mysql.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/deepconnector.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/deepfos_task.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/deepmodel.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/dimension.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/financial_model.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/journal_model.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/journal_template.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/memory_financial_model.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/platform.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/python.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/reconciliation_engine.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/reconciliation_report.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/role_strategy.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/smartlist.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/space.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/system.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/variable.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/models/workflow.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/platform.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/python.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/reconciliation_engine.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/reconciliation_report.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/role_strategy.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/smartlist.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/space.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/system.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/variable.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/api/workflow.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/boost/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/boost/jstream.c +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/boost/jstream.pyx +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/boost/pandas.c +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/boost/pandas.pyx +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/boost/py_jstream.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/boost/py_pandas.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/cache.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/config.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/cube/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/cube/_base.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/cube/constants.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/cube/cube.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/cube/formula.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/cube/syscube.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/cube/typing.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/cube/utils.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/dimension/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/dimension/_base.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/dimension/dimcreator.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/dimension/dimension.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/dimension/dimexpr.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/dimension/dimmember.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/dimension/eledimension.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/dimension/filters.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/dimension/sysdimension.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/logictable/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/logictable/_cache.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/logictable/_operator.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/logictable/nodemixin.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/logictable/sqlcondition.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/core/logictable/tablemodel.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/cipher.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/clickhouse.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/connector.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/daclickhouse.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/dameng.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/damysql.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/dbkits.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/deepengine.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/deepmodel.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/deepmodel_kingbase.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/edb.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/gauss.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/kingbase.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/mysql.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/oracle.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/postgresql.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/sqlserver.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/db/utils.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/accounting.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/apvlprocess.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/base.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/bizmodel.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/datatable.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/deepconnector.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/dimension.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/fact_table.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/finmodel.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/journal.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/journal_template.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/pyscript.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/reconciliation.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/rolestrategy.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/smartlist.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/variable.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/element/workflow.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/exceptions/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/exceptions/hook.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lazy.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/__init__.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/_javaobj.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/asynchronous.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/concurrency.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/constant.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/decorator.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/deepchart.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/deepux.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/discovery.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/edb_lexer.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/eureka.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/filterparser.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/httpcli.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/jsonstreamer.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/msg.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/nacos.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/patch.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/redis.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/serutils.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/stopwatch.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/subtask.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/sysutils.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/lib/utils.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/local.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/options.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos/translation.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos.egg-info/SOURCES.txt +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos.egg-info/dependency_links.txt +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos.egg-info/not-zip-safe +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos.egg-info/requires.txt +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/deepfos.egg-info/top_level.txt +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/requirements.txt +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/setup.cfg +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/setup.py +0 -0
- {deepfos-1.1.42 → deepfos-1.1.44}/versioneer.py +0 -0
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## [1.1.44] - 2024-10-21
|
|
2
|
+
|
|
3
|
+
### 变更
|
|
4
|
+
|
|
5
|
+
* DeepModel query_df处理std::decimal类型列的cast使用float作为dtype
|
|
6
|
+
|
|
7
|
+
## [1.1.43] - 2024-10-17
|
|
8
|
+
|
|
9
|
+
### 变更
|
|
10
|
+
|
|
11
|
+
* DeepModel query_df处理Bool的cast不使用pd.BooleanDtype()
|
|
12
|
+
|
|
13
|
+
### 新增
|
|
14
|
+
|
|
15
|
+
* DeepModel start_transaction支持flatten
|
|
16
|
+
|
|
1
17
|
## [1.1.42] - 2024-09-19
|
|
2
18
|
|
|
3
19
|
### 新增
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2024-
|
|
11
|
+
"date": "2024-10-21T08:14:04+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.1.
|
|
14
|
+
"full-revisionid": "81ec9211612d91a85e107e567bd28282295c42c5",
|
|
15
|
+
"version": "1.1.44"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -6,7 +6,7 @@ import json
|
|
|
6
6
|
import uuid
|
|
7
7
|
from contextlib import asynccontextmanager, contextmanager
|
|
8
8
|
from contextvars import ContextVar
|
|
9
|
-
from itertools import
|
|
9
|
+
from itertools import count
|
|
10
10
|
from typing import (
|
|
11
11
|
List, TYPE_CHECKING, Any, Dict, Union, NamedTuple,
|
|
12
12
|
Iterable, Optional, Literal
|
|
@@ -380,7 +380,7 @@ class FieldInt(BaseField):
|
|
|
380
380
|
|
|
381
381
|
class FieldDecimal(FieldString):
|
|
382
382
|
def cast(self, df: pd.DataFrame, field_name: str, direct_access: bool = True):
|
|
383
|
-
df[field_name] = df[field_name].astype(
|
|
383
|
+
df[field_name] = df[field_name].astype(float, errors='ignore')
|
|
384
384
|
|
|
385
385
|
|
|
386
386
|
class FieldBool(BaseField):
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
1625
|
-
|
|
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_.
|
|
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
|
-
|
|
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
|
|
1760
|
-
|
|
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_.
|
|
1798
|
+
self._txn_.get().in_txn.pop()
|
|
1799
|
+
self._txn_.get().flatten = bak_flatten
|
|
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
|
|
File without changes
|