deepfos 1.1.36__tar.gz → 1.1.38__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.36 → deepfos-1.1.38}/CHANGELOG.md +28 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/PKG-INFO +17 -1
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/_version.py +3 -3
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/deepmodel.py +57 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/deepmodel.py +51 -1
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/edb.py +4 -3
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/deepmodel.py +42 -18
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/dimension.py +1 -1
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/decorator.py +20 -8
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/utils.py +3 -2
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos.egg-info/PKG-INFO +17 -1
- {deepfos-1.1.36 → deepfos-1.1.38}/.gitattributes +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/.gitee/ISSUE_GUIDELINES.md +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/.gitee/ISSUE_TEMPLATE.md +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/.gitignore +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/MANIFEST.in +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/README.md +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/algo/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/algo/graph.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/V1_1/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/V1_1/business_model.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/V1_1/dimension.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/V1_1/models/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/V1_1/models/business_model.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/V1_1/models/dimension.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/V1_2/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/V1_2/dimension.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/V1_2/models/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/V1_2/models/dimension.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/account.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/accounting_engines.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/app.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/approval_process.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/base.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/business_model.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/consolidation.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/consolidation_process.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/datatable.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/deepconnector.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/deepfos_task.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/dimension.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/financial_model.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/journal_model.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/journal_template.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/memory_financial_model.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/account.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/accounting_engines.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/app.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/approval_process.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/base.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/business_model.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/consolidation.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/consolidation_process.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/datatable_mysql.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/deepconnector.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/deepfos_task.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/dimension.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/financial_model.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/journal_model.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/journal_template.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/memory_financial_model.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/platform.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/python.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/reconciliation_engine.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/reconciliation_report.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/role_strategy.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/smartlist.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/space.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/system.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/variable.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/models/workflow.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/platform.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/python.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/reconciliation_engine.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/reconciliation_report.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/role_strategy.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/smartlist.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/space.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/system.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/variable.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/api/workflow.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/boost/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/boost/jstream.c +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/boost/jstream.pyx +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/boost/pandas.c +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/boost/pandas.pyx +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/boost/py_jstream.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/boost/py_pandas.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/cache.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/config.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/cube/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/cube/_base.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/cube/constants.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/cube/cube.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/cube/formula.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/cube/syscube.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/cube/typing.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/cube/utils.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/dimension/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/dimension/_base.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/dimension/dimcreator.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/dimension/dimension.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/dimension/dimexpr.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/dimension/dimmember.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/dimension/eledimension.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/dimension/filters.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/dimension/sysdimension.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/logictable/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/logictable/_cache.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/logictable/_operator.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/logictable/nodemixin.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/logictable/sqlcondition.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/core/logictable/tablemodel.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/cipher.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/clickhouse.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/connector.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/daclickhouse.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/dameng.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/damysql.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/dbkits.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/deepengine.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/deepmodel.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/deepmodel_kingbase.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/gauss.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/kingbase.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/mysql.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/oracle.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/postgresql.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/sqlserver.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/db/utils.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/accounting.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/apvlprocess.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/base.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/bizmodel.py +1 -1
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/datatable.py +1 -1
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/deepconnector.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/fact_table.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/finmodel.py +1 -1
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/journal.py +1 -1
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/journal_template.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/pyscript.py +2 -2
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/reconciliation.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/rolestrategy.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/smartlist.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/variable.py +1 -1
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/element/workflow.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/exceptions/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/exceptions/hook.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lazy.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/__init__.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/_javaobj.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/asynchronous.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/concurrency.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/constant.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/deepchart.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/deepux.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/discovery.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/eureka.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/filterparser.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/httpcli.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/jsonstreamer.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/msg.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/nacos.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/patch.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/redis.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/serutils.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/stopwatch.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/subtask.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/lib/sysutils.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/local.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/options.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos/translation.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos.egg-info/SOURCES.txt +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos.egg-info/dependency_links.txt +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos.egg-info/not-zip-safe +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos.egg-info/requires.txt +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/deepfos.egg-info/top_level.txt +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/requirements.txt +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/setup.cfg +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/setup.py +0 -0
- {deepfos-1.1.36 → deepfos-1.1.38}/versioneer.py +0 -0
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
## [1.1.38] - 2024-06-21
|
|
2
|
+
|
|
3
|
+
### 新增
|
|
4
|
+
|
|
5
|
+
* DeepModel增加获取查询语句接口
|
|
6
|
+
|
|
7
|
+
### 变更
|
|
8
|
+
|
|
9
|
+
* 无
|
|
10
|
+
|
|
11
|
+
### 文档
|
|
12
|
+
|
|
13
|
+
* 无
|
|
14
|
+
|
|
15
|
+
## [1.1.37] - 2024-06-14
|
|
16
|
+
|
|
17
|
+
### 新增
|
|
18
|
+
|
|
19
|
+
* DeepModel兼容外部库的直连
|
|
20
|
+
|
|
21
|
+
### 变更
|
|
22
|
+
|
|
23
|
+
* 无
|
|
24
|
+
|
|
25
|
+
### 文档
|
|
26
|
+
|
|
27
|
+
* 无
|
|
28
|
+
|
|
1
29
|
## [1.1.36] - 2024-06-05
|
|
2
30
|
|
|
3
31
|
### 新增
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: deepfos
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.38
|
|
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
|
|
@@ -12,3 +12,19 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.9
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
14
14
|
Requires-Python: >=3.8.3
|
|
15
|
+
Requires-Dist: pandas==1.2.0
|
|
16
|
+
Requires-Dist: requests==2.25.1
|
|
17
|
+
Requires-Dist: pymysql==0.9.3
|
|
18
|
+
Requires-Dist: aiohttp==3.8.4
|
|
19
|
+
Requires-Dist: pydantic==1.8.2
|
|
20
|
+
Requires-Dist: cachetools==4.2.2
|
|
21
|
+
Requires-Dist: loguru==0.5.3
|
|
22
|
+
Requires-Dist: PyPika==0.48.8
|
|
23
|
+
Requires-Dist: aiomysql==0.0.22
|
|
24
|
+
Requires-Dist: clickhouse-driver==0.2.2
|
|
25
|
+
Requires-Dist: aioredis==2.0.1
|
|
26
|
+
Requires-Dist: redis==4.5.3
|
|
27
|
+
Requires-Dist: deepfos-ipc~=1.2.3
|
|
28
|
+
Requires-Dist: typing-extensions==4.5.0
|
|
29
|
+
Requires-Dist: edgedb~=1.4.0
|
|
30
|
+
Requires-Dist: asyncpg~=0.29.0
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2024-
|
|
11
|
+
"date": "2024-07-02T02:20:30+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.1.
|
|
14
|
+
"full-revisionid": "13c09c30d5637a7c35615e4e528623fe5dbdfcc2",
|
|
15
|
+
"version": "1.1.38"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -77,6 +77,15 @@ class SeqAPI(ChildAPI):
|
|
|
77
77
|
"""
|
|
78
78
|
return {'param': {'id': id, 'filterValue': filter_value}}
|
|
79
79
|
|
|
80
|
+
|
|
81
|
+
class ShardingAPI(ChildAPI):
|
|
82
|
+
endpoint = '/sharding'
|
|
83
|
+
|
|
84
|
+
@get('database')
|
|
85
|
+
def database(self, ) -> Union[SimpleSpaceConnectionConfig, Awaitable[SimpleSpaceConnectionConfig]]:
|
|
86
|
+
return {}
|
|
87
|
+
|
|
88
|
+
|
|
80
89
|
class DeepQLAPI(ChildAPI):
|
|
81
90
|
endpoint = '/public/deepql/actions'
|
|
82
91
|
|
|
@@ -89,6 +98,42 @@ class DeepQLAPI(ChildAPI):
|
|
|
89
98
|
return {'body': {'module': module, 'query': query, 'variables': variables}}
|
|
90
99
|
|
|
91
100
|
|
|
101
|
+
class PresentationAPI(ChildAPI):
|
|
102
|
+
endpoint = '/presentation-layer'
|
|
103
|
+
|
|
104
|
+
@get('ql-selector/ql-record-info')
|
|
105
|
+
def ql_record_info(self, qlType: str, recordCode: str) -> Union[QlRecordVO, Awaitable[QlRecordVO]]:
|
|
106
|
+
"""获取单条记录
|
|
107
|
+
|
|
108
|
+
Args:
|
|
109
|
+
qlType: 查询类型 'deepql'|'analysisql'
|
|
110
|
+
recordCode: 查询编码
|
|
111
|
+
|
|
112
|
+
"""
|
|
113
|
+
return {'param': {'qlType': qlType, 'recordCode': recordCode}}
|
|
114
|
+
|
|
115
|
+
@get('ql-selector/ql-records')
|
|
116
|
+
def ql_records(self, qlType: str = None, qlRecordType: str = None) -> Union[List[QlRecordVO], Awaitable[List[QlRecordVO]]]:
|
|
117
|
+
"""获取所有的ql记录
|
|
118
|
+
|
|
119
|
+
Args:
|
|
120
|
+
qlType: 查询类型 'deepql'|'analysisql'
|
|
121
|
+
qlRecordType: 记录类型:个人PERSONAL /公共:PUBLIC
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
|
|
125
|
+
"""
|
|
126
|
+
return {'param': {'qlType': qlType, 'qlRecordType': qlRecordType}}
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class ExtraAPI(ChildAPI):
|
|
130
|
+
endpoint = '/'
|
|
131
|
+
|
|
132
|
+
@get('git-version')
|
|
133
|
+
def version(self, ) -> Union[str, Awaitable[str]]:
|
|
134
|
+
return {}
|
|
135
|
+
|
|
136
|
+
|
|
92
137
|
class DeepModelAPI(DynamicRootAPI, builtin=True):
|
|
93
138
|
module_type = 'DM'
|
|
94
139
|
default_version = (1, 0)
|
|
@@ -112,3 +157,15 @@ class DeepModelAPI(DynamicRootAPI, builtin=True):
|
|
|
112
157
|
@cached_property
|
|
113
158
|
def seq(self) -> SeqAPI:
|
|
114
159
|
return SeqAPI(self)
|
|
160
|
+
|
|
161
|
+
@cached_property
|
|
162
|
+
def sharding(self) -> ShardingAPI:
|
|
163
|
+
return ShardingAPI(self)
|
|
164
|
+
|
|
165
|
+
@cached_property
|
|
166
|
+
def presentation(self) -> PresentationAPI:
|
|
167
|
+
return PresentationAPI(self)
|
|
168
|
+
|
|
169
|
+
@cached_property
|
|
170
|
+
def extra(self) -> ExtraAPI:
|
|
171
|
+
return ExtraAPI(self)
|
|
@@ -19,7 +19,10 @@ __all__ = [
|
|
|
19
19
|
"RuleErrorMsg",
|
|
20
20
|
"RuleParam",
|
|
21
21
|
"SequenceInstance",
|
|
22
|
-
"_IndexParam"
|
|
22
|
+
"_IndexParam",
|
|
23
|
+
"SimpleSpaceConnectionConfig",
|
|
24
|
+
"QlGlobalVariableVO",
|
|
25
|
+
"QlRecordVO"
|
|
23
26
|
]
|
|
24
27
|
|
|
25
28
|
|
|
@@ -254,5 +257,52 @@ class SequenceInstance(BaseModel):
|
|
|
254
257
|
sequenceName: Optional[str]
|
|
255
258
|
|
|
256
259
|
|
|
260
|
+
class SimpleSpaceConnectionConfig(BaseModel):
|
|
261
|
+
space: str
|
|
262
|
+
dbType: Optional[str]
|
|
263
|
+
dbName: Optional[str]
|
|
264
|
+
schema_: Optional[str] = Field(alias='schema')
|
|
265
|
+
edgedbName: str
|
|
266
|
+
edgedbSchema: Optional[str]
|
|
267
|
+
createTime: Optional[str]
|
|
268
|
+
updateTime: Optional[str]
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
class QlGlobalVariableVO(BaseModel):
|
|
272
|
+
#: 编码
|
|
273
|
+
code: Optional[str]
|
|
274
|
+
#: 类型
|
|
275
|
+
type: Optional[str]
|
|
276
|
+
#: 值
|
|
277
|
+
value: Optional[str]
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
class QlRecordVO(BaseModel):
|
|
281
|
+
#: 应用标识
|
|
282
|
+
app: Optional[str]
|
|
283
|
+
#: 空间标识
|
|
284
|
+
space: Optional[str]
|
|
285
|
+
#: 用户id
|
|
286
|
+
userId: Optional[str]
|
|
287
|
+
#: 创建时间
|
|
288
|
+
createTime: Optional[str]
|
|
289
|
+
#: 应用标识
|
|
290
|
+
globalVariables: Optional[List[QlGlobalVariableVO]]
|
|
291
|
+
#: 主键标识
|
|
292
|
+
qlRecordId: Optional[str]
|
|
293
|
+
#: QL类型:deepql|graphql|analysisql
|
|
294
|
+
qlType: Optional[str]
|
|
295
|
+
#: ql编码
|
|
296
|
+
recordCode: Optional[str]
|
|
297
|
+
#: 记录内容
|
|
298
|
+
recordContent: Optional[str]
|
|
299
|
+
#: 记录名称
|
|
300
|
+
recordName: Optional[str]
|
|
301
|
+
#: 记录类型:个人PERSONAL /公共:PUBLIC
|
|
302
|
+
recordType: Optional[str]
|
|
303
|
+
#: 变量
|
|
304
|
+
variables: Any
|
|
305
|
+
|
|
306
|
+
|
|
257
307
|
ObjectParam.update_forward_refs()
|
|
258
308
|
ObjectLinkParam.update_forward_refs()
|
|
@@ -170,9 +170,10 @@ deprecated_space = [
|
|
|
170
170
|
]
|
|
171
171
|
|
|
172
172
|
|
|
173
|
-
def create_async_client(default_module=None):
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
def create_async_client(default_module=None, dbname=None):
|
|
174
|
+
if dbname is None:
|
|
175
|
+
space = OPTION.api.header['space']
|
|
176
|
+
dbname = None if space in deprecated_space else f"deepmodel_space{space}"
|
|
176
177
|
cli = _AsyncIOClient(
|
|
177
178
|
connection_class=_AsyncEdgeDBConnection,
|
|
178
179
|
max_concurrency=None,
|
|
@@ -23,6 +23,7 @@ from deepfos.api.models.deepmodel import (
|
|
|
23
23
|
ObjectBasicDTO, ObjectParam,
|
|
24
24
|
QueryResultObjectInfo, QueryResult
|
|
25
25
|
)
|
|
26
|
+
from deepfos.cache import SpaceSeperatedLRUCache
|
|
26
27
|
from deepfos.db.edb import create_async_client
|
|
27
28
|
from deepfos.element.base import ElementBase, SyncMeta
|
|
28
29
|
from deepfos.exceptions import (
|
|
@@ -32,8 +33,8 @@ from deepfos.exceptions import (
|
|
|
32
33
|
)
|
|
33
34
|
from deepfos.lib import serutils
|
|
34
35
|
from deepfos.lib.asynchronous import future_property, evloop
|
|
35
|
-
from deepfos.lib.decorator import flagmethod, cached_property
|
|
36
|
-
from deepfos.lib.utils import AliasGenerator
|
|
36
|
+
from deepfos.lib.decorator import flagmethod, cached_property, lru_cache
|
|
37
|
+
from deepfos.lib.utils import AliasGenerator, to_version_tuple
|
|
37
38
|
|
|
38
39
|
__all__ = ['AsyncDeepModel', 'DeepModel', 'to_fields', 'QueryWithArgs']
|
|
39
40
|
|
|
@@ -737,6 +738,19 @@ class _TxnConfig:
|
|
|
737
738
|
self.txn_support = False
|
|
738
739
|
|
|
739
740
|
|
|
741
|
+
@lru_cache(maxsize=128, cache_factory=SpaceSeperatedLRUCache)
|
|
742
|
+
async def get_element_info():
|
|
743
|
+
from deepfos.api.space import SpaceAPI
|
|
744
|
+
from deepfos.api.models.app import ElementRelationInfo
|
|
745
|
+
from deepfos.exceptions import ElementTypeMissingError
|
|
746
|
+
modules = await SpaceAPI(sync=False).module.get_usable_module()
|
|
747
|
+
target_module = ['MAINVIEW', 'DM']
|
|
748
|
+
for mdl in modules:
|
|
749
|
+
if mdl.moduleType in target_module and mdl.status == 1:
|
|
750
|
+
return ElementRelationInfo.construct_from(mdl)
|
|
751
|
+
raise ElementTypeMissingError('DeepModel组件在空间内不可用')
|
|
752
|
+
|
|
753
|
+
|
|
740
754
|
# -----------------------------------------------------------------------------
|
|
741
755
|
# core
|
|
742
756
|
class AsyncDeepModel(ElementBase[DeepModelAPI]):
|
|
@@ -753,32 +767,42 @@ class AsyncDeepModel(ElementBase[DeepModelAPI]):
|
|
|
753
767
|
self.appmodule = f"app{OPTION.api.header['app']}"
|
|
754
768
|
self.spacemodule = f"space{OPTION.api.header['space']}"
|
|
755
769
|
self.direct_access = direct_access
|
|
756
|
-
|
|
757
|
-
|
|
770
|
+
self.alias = AliasGenerator()
|
|
771
|
+
self.pg_dsn = pg_dsn
|
|
772
|
+
|
|
773
|
+
@future_property
|
|
774
|
+
async def client(self):
|
|
775
|
+
if self.direct_access:
|
|
776
|
+
api = await self.wait_for('async_api')
|
|
777
|
+
ver = await api.extra.version()
|
|
778
|
+
if to_version_tuple(ver, -1) >= (3, 0, 18, 8, 0):
|
|
779
|
+
db_info = await api.sharding.database()
|
|
780
|
+
space = OPTION.api.header['space']
|
|
781
|
+
if db_info.space != space:
|
|
782
|
+
raise ValueError(
|
|
783
|
+
f'Space id in sharding database info invalid. '
|
|
784
|
+
f'Expected space id: {space}, actual: {db_info.space}'
|
|
785
|
+
)
|
|
786
|
+
dbname = db_info.edgedbName
|
|
787
|
+
else:
|
|
788
|
+
dbname = None
|
|
789
|
+
client = create_async_client(
|
|
790
|
+
default_module=self.appmodule,
|
|
791
|
+
dbname=dbname
|
|
792
|
+
)
|
|
758
793
|
if user_id := OPTION.api.header.get('user'):
|
|
759
|
-
|
|
794
|
+
client = client.with_globals(
|
|
760
795
|
**{
|
|
761
796
|
f'{self.spacemodule}::current_user_id':
|
|
762
797
|
user_id
|
|
763
798
|
}
|
|
764
799
|
)
|
|
765
|
-
|
|
766
|
-
self.client = None
|
|
767
|
-
self.alias = AliasGenerator()
|
|
768
|
-
self.pg_dsn = pg_dsn
|
|
800
|
+
return client
|
|
769
801
|
|
|
770
802
|
@future_property
|
|
771
803
|
async def element_info(self):
|
|
772
804
|
"""元素信息"""
|
|
773
|
-
|
|
774
|
-
from deepfos.api.models.app import ElementRelationInfo
|
|
775
|
-
from deepfos.exceptions import ElementTypeMissingError
|
|
776
|
-
modules = await SpaceAPI(sync=False).module.get_usable_module()
|
|
777
|
-
target_module = ['MAINVIEW', 'DM']
|
|
778
|
-
for mdl in modules:
|
|
779
|
-
if mdl.moduleType in target_module and mdl.status == 1:
|
|
780
|
-
return ElementRelationInfo.construct_from(mdl)
|
|
781
|
-
raise ElementTypeMissingError('DeepModel组件在空间内不可用')
|
|
805
|
+
return await get_element_info()
|
|
782
806
|
|
|
783
807
|
@future_property
|
|
784
808
|
async def async_api(self):
|
|
@@ -166,12 +166,12 @@ class AsyncDimension(ElementBase[DimensionAPI]):
|
|
|
166
166
|
strict: bool = False,
|
|
167
167
|
server_name: str = None,
|
|
168
168
|
):
|
|
169
|
-
super().__init__(element_name, folder_id, path, server_name)
|
|
170
169
|
self._add_memo = CIMultiDict()
|
|
171
170
|
self._del_memo = CIMultiDict()
|
|
172
171
|
self._upd_memo = CIMultiDict()
|
|
173
172
|
self.__member_memo = None if strict else CIMultiDict()
|
|
174
173
|
self._strict = strict
|
|
174
|
+
super().__init__(element_name, folder_id, path, server_name)
|
|
175
175
|
|
|
176
176
|
@cached_property
|
|
177
177
|
def _datatable_class(self) -> T_AsyncDatatableClass:
|
|
@@ -282,16 +282,28 @@ def lru_cache(maxsize=128, cache_factory=LRUCache):
|
|
|
282
282
|
cache = Manager.create_cache(cache_factory, maxsize=maxsize)
|
|
283
283
|
|
|
284
284
|
def deco_fun(func):
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
285
|
+
if inspect.iscoroutinefunction(func):
|
|
286
|
+
@functools.wraps(func)
|
|
287
|
+
async def wrapper(*args, **kwargs):
|
|
288
|
+
key = hashkey(*args, **kwargs)
|
|
289
|
+
|
|
290
|
+
if key in cache:
|
|
291
|
+
return cache[key]
|
|
292
|
+
|
|
293
|
+
result = await func(*args, **kwargs)
|
|
294
|
+
cache[key] = result
|
|
295
|
+
return result
|
|
296
|
+
else:
|
|
297
|
+
@functools.wraps(func)
|
|
298
|
+
def wrapper(*args, **kwargs):
|
|
299
|
+
key = hashkey(*args, **kwargs)
|
|
288
300
|
|
|
289
|
-
|
|
290
|
-
|
|
301
|
+
if key in cache:
|
|
302
|
+
return cache[key]
|
|
291
303
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
304
|
+
result = func(*args, **kwargs)
|
|
305
|
+
cache[key] = result
|
|
306
|
+
return result
|
|
295
307
|
|
|
296
308
|
return wrapper
|
|
297
309
|
|
|
@@ -903,18 +903,19 @@ def find_str(
|
|
|
903
903
|
return candidate
|
|
904
904
|
|
|
905
905
|
|
|
906
|
-
def to_version_tuple(ver: Union[float, str]):
|
|
906
|
+
def to_version_tuple(ver: Union[float, str], max_split: int = 1):
|
|
907
907
|
"""返回版本元组
|
|
908
908
|
|
|
909
909
|
Args:
|
|
910
910
|
ver: 表示版本的字符串或数字,例如'1.0','1_0',1.0
|
|
911
|
+
max_split: 以'.'和'_'分割的最大次数,如为-1,则无限制
|
|
911
912
|
|
|
912
913
|
Returns:
|
|
913
914
|
形如(1, 0)的版本元组
|
|
914
915
|
"""
|
|
915
916
|
if isinstance(ver, float):
|
|
916
917
|
ver = str(ver)
|
|
917
|
-
version_parts = ver.replace('.', '_').split('_',
|
|
918
|
+
version_parts = ver.replace('.', '_').split('_', max_split)
|
|
918
919
|
version_list = [int(part) for part in version_parts]
|
|
919
920
|
return tuple(version_list)
|
|
920
921
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: deepfos
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.38
|
|
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
|
|
@@ -12,3 +12,19 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.9
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
14
14
|
Requires-Python: >=3.8.3
|
|
15
|
+
Requires-Dist: pandas==1.2.0
|
|
16
|
+
Requires-Dist: requests==2.25.1
|
|
17
|
+
Requires-Dist: pymysql==0.9.3
|
|
18
|
+
Requires-Dist: aiohttp==3.8.4
|
|
19
|
+
Requires-Dist: pydantic==1.8.2
|
|
20
|
+
Requires-Dist: cachetools==4.2.2
|
|
21
|
+
Requires-Dist: loguru==0.5.3
|
|
22
|
+
Requires-Dist: PyPika==0.48.8
|
|
23
|
+
Requires-Dist: aiomysql==0.0.22
|
|
24
|
+
Requires-Dist: clickhouse-driver==0.2.2
|
|
25
|
+
Requires-Dist: aioredis==2.0.1
|
|
26
|
+
Requires-Dist: redis==4.5.3
|
|
27
|
+
Requires-Dist: deepfos-ipc~=1.2.3
|
|
28
|
+
Requires-Dist: typing-extensions==4.5.0
|
|
29
|
+
Requires-Dist: edgedb~=1.4.0
|
|
30
|
+
Requires-Dist: asyncpg~=0.29.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -171,10 +171,10 @@ class AsyncBusinessModel(ElementBase[BusinessModelAPI]):
|
|
|
171
171
|
path: str = None,
|
|
172
172
|
server_name: str = None,
|
|
173
173
|
):
|
|
174
|
-
super().__init__(element_name, folder_id, path, server_name)
|
|
175
174
|
self.__tables: Dict[str, TableNode] = {}
|
|
176
175
|
self.__logic_tables = LogicTable()
|
|
177
176
|
self.__dflt_ptn_id = UNSET
|
|
177
|
+
super().__init__(element_name, folder_id, path, server_name)
|
|
178
178
|
|
|
179
179
|
@cached_property
|
|
180
180
|
def default_partition_id(self) -> Optional[str]:
|
|
@@ -593,8 +593,8 @@ class AsyncDataTableMySQL(ElementBase):
|
|
|
593
593
|
table_name: str = None,
|
|
594
594
|
server_name: str = None,
|
|
595
595
|
):
|
|
596
|
-
super().__init__(element_name, folder_id, path, server_name)
|
|
597
596
|
self.__tbl_name = table_name
|
|
597
|
+
super().__init__(element_name, folder_id, path, server_name)
|
|
598
598
|
|
|
599
599
|
def _safe_get_txn_conf(self) -> _TxnConfig:
|
|
600
600
|
try:
|
|
File without changes
|
|
File without changes
|
|
@@ -174,10 +174,10 @@ class AsyncFinancialCube(ElementBase[FinancialModelAPI]):
|
|
|
174
174
|
entry_object='python',
|
|
175
175
|
server_name: Optional[str] = None,
|
|
176
176
|
):
|
|
177
|
-
super().__init__(element_name, folder_id, path, server_name)
|
|
178
177
|
full_name = OPTION.general.task_info.get('script_name', 'python')
|
|
179
178
|
self.entry_object = entry_object.format(script_name=full_name.split('.')[-1],
|
|
180
179
|
full_name=full_name)
|
|
180
|
+
super().__init__(element_name, folder_id, path, server_name)
|
|
181
181
|
|
|
182
182
|
@future_property(on_demand=True)
|
|
183
183
|
async def meta(self) -> CubeModel:
|
|
@@ -66,8 +66,8 @@ class AsyncJournalModel(ElementBase[JournalModelAPI]):
|
|
|
66
66
|
path: str = None,
|
|
67
67
|
server_name: str = None,
|
|
68
68
|
):
|
|
69
|
-
super().__init__(element_name, folder_id, path, server_name)
|
|
70
69
|
self.__tbl_name = None
|
|
70
|
+
super().__init__(element_name, folder_id, path, server_name)
|
|
71
71
|
|
|
72
72
|
@future_property
|
|
73
73
|
async def config(self) -> JournalModelConfig:
|
|
File without changes
|
|
@@ -275,11 +275,11 @@ class PythonScript(ElementBase[PythonAPI]):
|
|
|
275
275
|
task_name: str = None,
|
|
276
276
|
should_log: bool = False
|
|
277
277
|
):
|
|
278
|
+
self.should_log = should_log
|
|
279
|
+
self.task_name = task_name
|
|
278
280
|
super().__init__(
|
|
279
281
|
element_name=element_name, folder_id=folder_id, path=path
|
|
280
282
|
)
|
|
281
|
-
self.should_log = should_log
|
|
282
|
-
self.task_name = task_name
|
|
283
283
|
|
|
284
284
|
@future_property
|
|
285
285
|
async def env(self) -> Tuple[str, str, Dict]:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -182,11 +182,11 @@ class AsyncVariable(ElementBase[VariableAPI]):
|
|
|
182
182
|
path: str = None,
|
|
183
183
|
server_name: str = None,
|
|
184
184
|
):
|
|
185
|
-
super().__init__(element_name=element_name, folder_id=folder_id, path=path, server_name=server_name)
|
|
186
185
|
self.__group = Group()
|
|
187
186
|
self.__description = None
|
|
188
187
|
self.__gv_memo = None
|
|
189
188
|
self.__uv_memo = None
|
|
189
|
+
super().__init__(element_name=element_name, folder_id=folder_id, path=path, server_name=server_name)
|
|
190
190
|
|
|
191
191
|
@property
|
|
192
192
|
def _group(self) -> Group:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|