deepfos 1.1.40__tar.gz → 1.1.42__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.40 → deepfos-1.1.42}/CHANGELOG.md +13 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/PKG-INFO +1 -1
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/_version.py +3 -3
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/V1_2/dimension.py +27 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/V1_2/models/dimension.py +81 -1
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/edb.py +27 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/deepmodel.py +57 -22
- deepfos-1.1.42/deepfos/lib/edb_lexer.py +789 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos.egg-info/PKG-INFO +1 -1
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos.egg-info/SOURCES.txt +2 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/.gitattributes +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/.gitee/ISSUE_GUIDELINES.md +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/.gitee/ISSUE_TEMPLATE.md +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/.gitignore +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/MANIFEST.in +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/README.md +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/algo/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/algo/graph.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/V1_1/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/V1_1/business_model.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/V1_1/dimension.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/V1_1/models/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/V1_1/models/business_model.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/V1_1/models/dimension.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/V1_2/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/V1_2/models/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/account.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/accounting_engines.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/app.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/approval_process.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/base.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/business_model.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/consolidation.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/consolidation_process.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/datatable.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/deepconnector.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/deepfos_task.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/deepmodel.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/dimension.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/financial_model.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/journal_model.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/journal_template.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/memory_financial_model.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/account.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/accounting_engines.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/app.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/approval_process.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/base.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/business_model.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/consolidation.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/consolidation_process.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/datatable_mysql.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/deepconnector.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/deepfos_task.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/deepmodel.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/dimension.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/financial_model.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/journal_model.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/journal_template.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/memory_financial_model.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/platform.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/python.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/reconciliation_engine.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/reconciliation_report.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/role_strategy.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/smartlist.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/space.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/system.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/variable.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/models/workflow.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/platform.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/python.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/reconciliation_engine.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/reconciliation_report.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/role_strategy.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/smartlist.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/space.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/system.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/variable.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/api/workflow.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/boost/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/boost/jstream.c +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/boost/jstream.pyx +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/boost/pandas.c +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/boost/pandas.pyx +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/boost/py_jstream.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/boost/py_pandas.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/cache.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/config.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/cube/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/cube/_base.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/cube/constants.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/cube/cube.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/cube/formula.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/cube/syscube.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/cube/typing.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/cube/utils.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/dimension/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/dimension/_base.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/dimension/dimcreator.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/dimension/dimension.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/dimension/dimexpr.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/dimension/dimmember.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/dimension/eledimension.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/dimension/filters.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/dimension/sysdimension.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/logictable/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/logictable/_cache.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/logictable/_operator.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/logictable/nodemixin.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/logictable/sqlcondition.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/core/logictable/tablemodel.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/cipher.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/clickhouse.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/connector.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/daclickhouse.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/dameng.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/damysql.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/dbkits.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/deepengine.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/deepmodel.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/deepmodel_kingbase.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/gauss.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/kingbase.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/mysql.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/oracle.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/postgresql.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/sqlserver.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/db/utils.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/accounting.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/apvlprocess.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/base.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/bizmodel.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/datatable.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/deepconnector.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/dimension.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/fact_table.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/finmodel.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/journal.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/journal_template.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/pyscript.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/reconciliation.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/rolestrategy.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/smartlist.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/variable.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/element/workflow.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/exceptions/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/exceptions/hook.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lazy.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/__init__.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/_javaobj.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/asynchronous.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/concurrency.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/constant.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/decorator.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/deepchart.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/deepux.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/discovery.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/eureka.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/filterparser.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/httpcli.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/jsonstreamer.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/msg.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/nacos.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/patch.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/redis.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/serutils.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/stopwatch.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/subtask.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/sysutils.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/lib/utils.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/local.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/options.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos/translation.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos.egg-info/dependency_links.txt +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos.egg-info/not-zip-safe +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos.egg-info/requires.txt +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/deepfos.egg-info/top_level.txt +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/requirements.txt +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/setup.cfg +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/setup.py +0 -0
- {deepfos-1.1.40 → deepfos-1.1.42}/versioneer.py +0 -0
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2024-
|
|
11
|
+
"date": "2024-09-24T05:39:42+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.1.
|
|
14
|
+
"full-revisionid": "14152a2be32b02192ca40c87779a76367645c6a4",
|
|
15
|
+
"version": "1.1.42"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -213,6 +213,26 @@ class DimObjectAPI(ChildAPI):
|
|
|
213
213
|
return {'param': {'folderId': folderId, 'name': name, 'path': path}}
|
|
214
214
|
|
|
215
215
|
|
|
216
|
+
class DimensionConfig(ChildAPI):
|
|
217
|
+
endpoint = '/dimension/config'
|
|
218
|
+
|
|
219
|
+
@get('entity')
|
|
220
|
+
def entity(self, dimensionName: str = None, folderId: str = None, path: str = None) -> Union[List[MultidimensionalEntityConfigMemberVO], Awaitable[List[MultidimensionalEntityConfigMemberVO]]]:
|
|
221
|
+
"""
|
|
222
|
+
多维实体维度配置表查询全部数据
|
|
223
|
+
|
|
224
|
+
"""
|
|
225
|
+
return {'param': {'dimensionName': dimensionName, 'folderId': folderId, 'path': path}}
|
|
226
|
+
|
|
227
|
+
@post('entity/increment')
|
|
228
|
+
def entity_increment(self, multidimensionalEntityConfigIncrementDTO: MultidimensionalEntityConfigIncrementDTO) -> Union[None, Awaitable[None]]:
|
|
229
|
+
"""
|
|
230
|
+
多维实体维度配置表增量保存数据
|
|
231
|
+
|
|
232
|
+
"""
|
|
233
|
+
return {'body': multidimensionalEntityConfigIncrementDTO}
|
|
234
|
+
|
|
235
|
+
|
|
216
236
|
class DimensionAPI(DynamicRootAPI, builtin=True):
|
|
217
237
|
"""维度组件接口"""
|
|
218
238
|
module_type = 'DIM'
|
|
@@ -256,3 +276,10 @@ class DimensionAPI(DynamicRootAPI, builtin=True):
|
|
|
256
276
|
维度与模型对象相关接口
|
|
257
277
|
"""
|
|
258
278
|
return DimObjectAPI(self)
|
|
279
|
+
|
|
280
|
+
@cached_property
|
|
281
|
+
def config(self) -> DimensionConfig:
|
|
282
|
+
"""
|
|
283
|
+
维度配置相关接口
|
|
284
|
+
"""
|
|
285
|
+
return DimensionConfig(self)
|
|
@@ -98,7 +98,11 @@ __all__ = [
|
|
|
98
98
|
'MultiEntityRelationDimension',
|
|
99
99
|
'RelationCub',
|
|
100
100
|
'ModelSyncInfo',
|
|
101
|
-
'MultiEntityConfigResult'
|
|
101
|
+
'MultiEntityConfigResult',
|
|
102
|
+
'MultidimensionalEntityConfigMemberDTO',
|
|
103
|
+
'DimensionElementInfo',
|
|
104
|
+
'MultidimensionalEntityConfigIncrementDTO',
|
|
105
|
+
'MultidimensionalEntityConfigMemberVO',
|
|
102
106
|
]
|
|
103
107
|
|
|
104
108
|
|
|
@@ -2832,3 +2836,79 @@ class DimensionInfoAndMemberObj(BaseModel):
|
|
|
2832
2836
|
dimensionInfo: Optional[DimensionInfoObj]
|
|
2833
2837
|
#: dimensionMemberList
|
|
2834
2838
|
dimensionMemberList: Optional[List[DimensionMemberChangeObj]]
|
|
2839
|
+
|
|
2840
|
+
|
|
2841
|
+
class MultidimensionalEntityConfigMemberVO(BaseModel):
|
|
2842
|
+
#: isActive
|
|
2843
|
+
isActive: Optional[int]
|
|
2844
|
+
#: name
|
|
2845
|
+
name: Optional[str]
|
|
2846
|
+
#: parentName
|
|
2847
|
+
parentName: Optional[str]
|
|
2848
|
+
#: period
|
|
2849
|
+
period: Optional[str]
|
|
2850
|
+
#: scenario
|
|
2851
|
+
scenario: Optional[str]
|
|
2852
|
+
#: version
|
|
2853
|
+
version: Optional[str]
|
|
2854
|
+
#: year
|
|
2855
|
+
year: Optional[str]
|
|
2856
|
+
|
|
2857
|
+
|
|
2858
|
+
class ConfigDeleteFilter(BaseModel):
|
|
2859
|
+
#: period
|
|
2860
|
+
period: Optional[str]
|
|
2861
|
+
#: scenario
|
|
2862
|
+
scenario: Optional[str]
|
|
2863
|
+
#: version
|
|
2864
|
+
version: Optional[str]
|
|
2865
|
+
#: year
|
|
2866
|
+
year: Optional[str]
|
|
2867
|
+
|
|
2868
|
+
|
|
2869
|
+
class MultidimensionalEntityConfigMemberDTO(BaseModel):
|
|
2870
|
+
#: 是否active 默认1 0 否 1是
|
|
2871
|
+
isActive: Optional[int]
|
|
2872
|
+
#: 维度成员编码
|
|
2873
|
+
name: Optional[str]
|
|
2874
|
+
#: 维度成员父级编码
|
|
2875
|
+
parentName: Optional[str]
|
|
2876
|
+
#: 期间
|
|
2877
|
+
period: Optional[str]
|
|
2878
|
+
#: 场景
|
|
2879
|
+
scenario: Optional[str]
|
|
2880
|
+
#: 版本
|
|
2881
|
+
version: Optional[str]
|
|
2882
|
+
#: 年份
|
|
2883
|
+
year: Optional[str]
|
|
2884
|
+
|
|
2885
|
+
|
|
2886
|
+
class DimensionElementInfo(BaseModel):
|
|
2887
|
+
"""Dimension Element Info
|
|
2888
|
+
|
|
2889
|
+
.. admonition:: 引用接口
|
|
2890
|
+
|
|
2891
|
+
- **POST** ``/dimension/config/entity/export``
|
|
2892
|
+
"""
|
|
2893
|
+
#: 维度名称
|
|
2894
|
+
dimensionName: str
|
|
2895
|
+
#: 维度folderId
|
|
2896
|
+
folderId: Optional[str]
|
|
2897
|
+
#: path 和 folderId 取一个,优先path
|
|
2898
|
+
path: Optional[str]
|
|
2899
|
+
|
|
2900
|
+
|
|
2901
|
+
class MultidimensionalEntityConfigIncrementDTO(BaseModel):
|
|
2902
|
+
"""Multidimensional Entity Config Increment DTO
|
|
2903
|
+
|
|
2904
|
+
.. admonition:: 引用接口
|
|
2905
|
+
|
|
2906
|
+
- **POST** ``/dimension/config/entity``
|
|
2907
|
+
- **POST** ``/dimension/config/entity/increment``
|
|
2908
|
+
"""
|
|
2909
|
+
#: 实体维度配置表需要删除的数据,参数为空则不删除任何数据
|
|
2910
|
+
delete: List[ConfigDeleteFilter]
|
|
2911
|
+
#: 维度元素信息
|
|
2912
|
+
dimensionElementInfo: DimensionElementInfo
|
|
2913
|
+
#: 实体维度配置表数据
|
|
2914
|
+
multidimensionalEntityConfigMemberList: List[MultidimensionalEntityConfigMemberDTO]
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
+
from typing import Dict
|
|
2
3
|
|
|
3
4
|
from edgedb import AsyncIOClient, errors, enums, describe, abstract
|
|
4
5
|
from edgedb.abstract import (
|
|
@@ -34,6 +35,25 @@ def collect_output_frame(ele_desc: describe.AnyType):
|
|
|
34
35
|
return ele_desc.name
|
|
35
36
|
|
|
36
37
|
|
|
38
|
+
def normalize_kw(query: str, kw: Dict):
|
|
39
|
+
from deepfos.lib.edb_lexer import EdgeQLLexer
|
|
40
|
+
lexer = EdgeQLLexer()
|
|
41
|
+
lexer.setinputstr(query)
|
|
42
|
+
expected_args = list(
|
|
43
|
+
map(
|
|
44
|
+
lambda t: t.text[1::],
|
|
45
|
+
filter(lambda x: x.type == 'ARGUMENT', lexer.lex())
|
|
46
|
+
)
|
|
47
|
+
)
|
|
48
|
+
result = {}
|
|
49
|
+
for arg_name in expected_args:
|
|
50
|
+
if arg_name in kw:
|
|
51
|
+
result[arg_name] = kw[arg_name]
|
|
52
|
+
else:
|
|
53
|
+
result.setdefault(arg_name)
|
|
54
|
+
return result
|
|
55
|
+
|
|
56
|
+
|
|
37
57
|
class _AsyncEdgeDBConnection(AsyncIOConnection):
|
|
38
58
|
async def raw_query(self, query_context, capabilities=enums.Capability.NONE):
|
|
39
59
|
if self.is_closed():
|
|
@@ -41,6 +61,13 @@ class _AsyncEdgeDBConnection(AsyncIOConnection):
|
|
|
41
61
|
|
|
42
62
|
reconnect = False
|
|
43
63
|
i = 0
|
|
64
|
+
query = query_context.query.query
|
|
65
|
+
kwargs = query_context.query.kwargs
|
|
66
|
+
query_context = query_context._replace(
|
|
67
|
+
query=query_context.query._replace(
|
|
68
|
+
kwargs=normalize_kw(query, kwargs)
|
|
69
|
+
)
|
|
70
|
+
)
|
|
44
71
|
args = dict(
|
|
45
72
|
query=query_context.query.query,
|
|
46
73
|
args=query_context.query.args,
|
|
@@ -858,12 +858,15 @@ class AsyncDeepModel(ElementBase[DeepModelAPI]):
|
|
|
858
858
|
|
|
859
859
|
@cached_property
|
|
860
860
|
def objects(self) -> Dict[str, ObjectTypeFrame]:
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
861
|
+
result = {name: format_obj(obj) for name, obj in self.user_objects.items()}
|
|
862
|
+
for name, obj in self.system_objects.items():
|
|
863
|
+
# In case of duplicate name both in app obj& space obj
|
|
864
|
+
if name in result:
|
|
865
|
+
result[f'{self.spacemodule}::{name}'] = format_obj(obj)
|
|
866
|
+
else:
|
|
867
|
+
result[name] = format_obj(obj)
|
|
868
|
+
|
|
869
|
+
return result
|
|
867
870
|
|
|
868
871
|
@staticmethod
|
|
869
872
|
def _prepare_variables(kwargs):
|
|
@@ -1267,7 +1270,15 @@ class AsyncDeepModel(ElementBase[DeepModelAPI]):
|
|
|
1267
1270
|
logger.info("data为空,无DML执行")
|
|
1268
1271
|
return
|
|
1269
1272
|
|
|
1270
|
-
|
|
1273
|
+
if object_name in self.objects:
|
|
1274
|
+
obj = self.objects[object_name]
|
|
1275
|
+
else:
|
|
1276
|
+
raise ObjectNotExist(
|
|
1277
|
+
f'DeepModel对象[{object_name}]在当前应用不存在,无法插入数据'
|
|
1278
|
+
)
|
|
1279
|
+
if obj.external:
|
|
1280
|
+
raise ExternalObjectReadOnly('外部对象只可读')
|
|
1281
|
+
|
|
1271
1282
|
structure = ObjectStructure(name=obj.name, structure=obj.fields.values())
|
|
1272
1283
|
|
|
1273
1284
|
self._valid_data(data, object_name, relation, structure)
|
|
@@ -1348,24 +1359,33 @@ class AsyncDeepModel(ElementBase[DeepModelAPI]):
|
|
|
1348
1359
|
kwargs={kw_name: part.to_json(orient='records', double_precision=15)}
|
|
1349
1360
|
))
|
|
1350
1361
|
|
|
1351
|
-
def get_object(
|
|
1362
|
+
async def get_object(
|
|
1363
|
+
self,
|
|
1364
|
+
object_name: str,
|
|
1365
|
+
raw: bool = True
|
|
1366
|
+
) -> Optional[Union[ObjectTypeFrame, edgedb.Object]]:
|
|
1352
1367
|
"""获取指定对象名的对象
|
|
1353
1368
|
|
|
1354
1369
|
Args:
|
|
1355
|
-
object_name:
|
|
1370
|
+
object_name: 对象名,如对象名未提供module name部分,则默认module name为当前app module
|
|
1371
|
+
如需查询其他module的对象,应以 module_name::object_name 的形式提供
|
|
1372
|
+
raw: 是否获取edgedb.Object数据,为False时将转换为ObjectTypeFrame数据
|
|
1373
|
+
默认为True
|
|
1356
1374
|
|
|
1357
1375
|
"""
|
|
1358
|
-
if
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1376
|
+
if '::' not in object_name:
|
|
1377
|
+
object_name = f'{self.appmodule}::{object_name}'
|
|
1378
|
+
objs = await AsyncDeepModel.query_object(
|
|
1379
|
+
self,
|
|
1380
|
+
f"{OBJECT_QUERY} filter .name = '{object_name}'",
|
|
1381
|
+
)
|
|
1382
|
+
if len(objs) == 0:
|
|
1383
|
+
return
|
|
1384
|
+
|
|
1385
|
+
if raw:
|
|
1386
|
+
return objs[0]
|
|
1387
|
+
|
|
1388
|
+
return format_obj(objs[0])
|
|
1369
1389
|
|
|
1370
1390
|
async def _get_bkey(
|
|
1371
1391
|
self,
|
|
@@ -1467,7 +1487,15 @@ class AsyncDeepModel(ElementBase[DeepModelAPI]):
|
|
|
1467
1487
|
if data.empty:
|
|
1468
1488
|
return
|
|
1469
1489
|
|
|
1470
|
-
|
|
1490
|
+
if object_name in self.objects:
|
|
1491
|
+
obj = self.objects[object_name]
|
|
1492
|
+
else:
|
|
1493
|
+
raise ObjectNotExist(
|
|
1494
|
+
f'DeepModel对象[{object_name}]在当前应用不存在,无法插入数据'
|
|
1495
|
+
)
|
|
1496
|
+
if obj.external:
|
|
1497
|
+
raise ExternalObjectReadOnly('外部对象只可读')
|
|
1498
|
+
|
|
1471
1499
|
structure = ObjectStructure(
|
|
1472
1500
|
name=obj.name,
|
|
1473
1501
|
structure=obj.fields.values(),
|
|
@@ -1632,7 +1660,7 @@ class AsyncDeepModel(ElementBase[DeepModelAPI]):
|
|
|
1632
1660
|
class DeepModel(AsyncDeepModel, metaclass=SyncMeta):
|
|
1633
1661
|
synchronize = (
|
|
1634
1662
|
'query_object', 'query', 'query_df',
|
|
1635
|
-
'execute',
|
|
1663
|
+
'execute', 'get_object',
|
|
1636
1664
|
'insert_df', 'insert_df_pg'
|
|
1637
1665
|
)
|
|
1638
1666
|
|
|
@@ -1653,6 +1681,13 @@ class DeepModel(AsyncDeepModel, metaclass=SyncMeta):
|
|
|
1653
1681
|
) -> Optional[List]:
|
|
1654
1682
|
...
|
|
1655
1683
|
|
|
1684
|
+
def get_object(
|
|
1685
|
+
self,
|
|
1686
|
+
object_name: str,
|
|
1687
|
+
raw: bool = True
|
|
1688
|
+
) -> Optional[Union[ObjectTypeFrame, edgedb.Object]]:
|
|
1689
|
+
...
|
|
1690
|
+
|
|
1656
1691
|
def insert_df(
|
|
1657
1692
|
self,
|
|
1658
1693
|
object_name: str,
|