pytrilogy 0.0.2.46__py3-none-any.whl → 0.0.2.48__py3-none-any.whl
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.
Potentially problematic release.
This version of pytrilogy might be problematic. Click here for more details.
- {pytrilogy-0.0.2.46.dist-info → pytrilogy-0.0.2.48.dist-info}/METADATA +1 -1
- pytrilogy-0.0.2.48.dist-info/RECORD +85 -0
- trilogy/__init__.py +2 -2
- trilogy/constants.py +4 -2
- trilogy/core/enums.py +7 -1
- trilogy/core/env_processor.py +1 -2
- trilogy/core/environment_helpers.py +5 -5
- trilogy/core/functions.py +11 -10
- trilogy/core/internal.py +2 -3
- trilogy/core/models.py +448 -394
- trilogy/core/optimization.py +37 -21
- trilogy/core/optimizations/__init__.py +1 -1
- trilogy/core/optimizations/base_optimization.py +6 -6
- trilogy/core/optimizations/inline_constant.py +7 -4
- trilogy/core/optimizations/inline_datasource.py +14 -5
- trilogy/core/optimizations/predicate_pushdown.py +20 -10
- trilogy/core/processing/concept_strategies_v3.py +40 -24
- trilogy/core/processing/graph_utils.py +2 -3
- trilogy/core/processing/node_generators/__init__.py +7 -5
- trilogy/core/processing/node_generators/basic_node.py +4 -4
- trilogy/core/processing/node_generators/common.py +10 -11
- trilogy/core/processing/node_generators/filter_node.py +7 -9
- trilogy/core/processing/node_generators/group_node.py +10 -11
- trilogy/core/processing/node_generators/group_to_node.py +5 -5
- trilogy/core/processing/node_generators/multiselect_node.py +10 -12
- trilogy/core/processing/node_generators/node_merge_node.py +7 -9
- trilogy/core/processing/node_generators/rowset_node.py +9 -8
- trilogy/core/processing/node_generators/select_merge_node.py +11 -10
- trilogy/core/processing/node_generators/select_node.py +5 -5
- trilogy/core/processing/node_generators/union_node.py +75 -0
- trilogy/core/processing/node_generators/unnest_node.py +2 -3
- trilogy/core/processing/node_generators/window_node.py +3 -4
- trilogy/core/processing/nodes/__init__.py +9 -5
- trilogy/core/processing/nodes/base_node.py +17 -13
- trilogy/core/processing/nodes/filter_node.py +3 -4
- trilogy/core/processing/nodes/group_node.py +8 -10
- trilogy/core/processing/nodes/merge_node.py +11 -11
- trilogy/core/processing/nodes/select_node_v2.py +8 -9
- trilogy/core/processing/nodes/union_node.py +50 -0
- trilogy/core/processing/nodes/unnest_node.py +2 -3
- trilogy/core/processing/nodes/window_node.py +2 -3
- trilogy/core/processing/utility.py +37 -40
- trilogy/core/query_processor.py +68 -44
- trilogy/dialect/base.py +95 -53
- trilogy/dialect/bigquery.py +2 -3
- trilogy/dialect/common.py +5 -4
- trilogy/dialect/config.py +0 -2
- trilogy/dialect/duckdb.py +2 -2
- trilogy/dialect/enums.py +5 -5
- trilogy/dialect/postgres.py +2 -2
- trilogy/dialect/presto.py +3 -4
- trilogy/dialect/snowflake.py +2 -2
- trilogy/dialect/sql_server.py +3 -4
- trilogy/engine.py +2 -1
- trilogy/executor.py +43 -30
- trilogy/hooks/base_hook.py +5 -4
- trilogy/hooks/graph_hook.py +2 -1
- trilogy/hooks/query_debugger.py +18 -8
- trilogy/parsing/common.py +15 -20
- trilogy/parsing/parse_engine.py +124 -88
- trilogy/parsing/render.py +32 -35
- trilogy/parsing/trilogy.lark +8 -1
- trilogy/scripts/trilogy.py +6 -4
- trilogy/utility.py +1 -1
- pytrilogy-0.0.2.46.dist-info/RECORD +0 -83
- {pytrilogy-0.0.2.46.dist-info → pytrilogy-0.0.2.48.dist-info}/LICENSE.md +0 -0
- {pytrilogy-0.0.2.46.dist-info → pytrilogy-0.0.2.48.dist-info}/WHEEL +0 -0
- {pytrilogy-0.0.2.46.dist-info → pytrilogy-0.0.2.48.dist-info}/entry_points.txt +0 -0
- {pytrilogy-0.0.2.46.dist-info → pytrilogy-0.0.2.48.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
trilogy/__init__.py,sha256=rBXQoKLExpvOodgSnjarZ5SG_tlNVQvyadW0PFK1aFs,291
|
|
2
|
+
trilogy/compiler.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
trilogy/constants.py,sha256=qZ1d0hoKPPV2HHCoFwPYTVB7b6bXjpWvXd3lE-zEhy8,1494
|
|
4
|
+
trilogy/engine.py,sha256=yOPnR7XCjWG82Gym_LLZBkYKKJdLCvqdCyt8zguNcnM,1103
|
|
5
|
+
trilogy/executor.py,sha256=SbReI_xWd081WZeRt_YAyVTdMOGg2XPrsaOKgMS7YUY,15969
|
|
6
|
+
trilogy/parser.py,sha256=UtuqSiGiCjpMAYgo1bvNq-b7NSzCA5hzbUW31RXaMII,281
|
|
7
|
+
trilogy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
+
trilogy/utility.py,sha256=eguES83XhmSOAQSBu5xq4aAXimiZFrxcUu81zDL22ug,707
|
|
9
|
+
trilogy/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
+
trilogy/core/constants.py,sha256=7XaCpZn5mQmjTobbeBn56SzPWq9eMNDfzfsRU-fP0VE,171
|
|
11
|
+
trilogy/core/enums.py,sha256=iBrgUSGhGX865mV784KIU4qKmg6d7bZV71CgdZh20VI,6944
|
|
12
|
+
trilogy/core/env_processor.py,sha256=Pt4lmJfbShBbeSe5M7_FrTk5krrOziiAA__Slnettvc,2585
|
|
13
|
+
trilogy/core/environment_helpers.py,sha256=CSmQyEXE6EZ4XFYuQQITUHuWXxXGo9AL4UsTnu0404A,7159
|
|
14
|
+
trilogy/core/ergonomics.py,sha256=ASLDd0RqKWrZiG3XcKHo8nyTjaB_8xfE9t4NZ1UvGpc,1639
|
|
15
|
+
trilogy/core/exceptions.py,sha256=1c1lQCwSw4_5CQS3q7scOkXU8GQvullJXfPHubprl90,617
|
|
16
|
+
trilogy/core/functions.py,sha256=qpVLwTNU_qHQyIvNish5O2AlbpRMQQOqZWEUiSMnpqE,10721
|
|
17
|
+
trilogy/core/graph_models.py,sha256=mameUTiuCajtihDw_2-W218xyJlvTusOWrEKP1yAWgk,2003
|
|
18
|
+
trilogy/core/internal.py,sha256=-CykZknaWieFh5begaQJ4EgGP9qJccGg4XXdmBirxEc,1074
|
|
19
|
+
trilogy/core/models.py,sha256=UjuDuda6TWk_y5Pq3mx_BVfmLP3U6WH4EHhd88ddp4E,166378
|
|
20
|
+
trilogy/core/optimization.py,sha256=Jy3tVJNeqhpK6VSyTvgIWKCao6y-VCZ7mYA69MIF6L0,7989
|
|
21
|
+
trilogy/core/query_processor.py,sha256=eIRV7WEeEI-3OICEdXjJoQe2DhCimJfyFVW9CI6tU-Q,18845
|
|
22
|
+
trilogy/core/optimizations/__init__.py,sha256=EBanqTXEzf1ZEYjAneIWoIcxtMDite5-n2dQ5xcfUtg,356
|
|
23
|
+
trilogy/core/optimizations/base_optimization.py,sha256=P4kF-eCXkBxO-5c6tLHhMZ4ODRH1A04hb_6ovkaVyLw,505
|
|
24
|
+
trilogy/core/optimizations/inline_constant.py,sha256=c-YHOg6eAufL4EaCf4-0PbY_D4skBHW0ldR55_phsMA,1277
|
|
25
|
+
trilogy/core/optimizations/inline_datasource.py,sha256=LsngRKBy-LYcx1sfo1-rnDym_ly73YV9WkEngSjpFx8,3943
|
|
26
|
+
trilogy/core/optimizations/predicate_pushdown.py,sha256=XPWEBv8jXnc0OL2JDPNwFvJ5AtOE7dLzJK0LzdmdZMo,9252
|
|
27
|
+
trilogy/core/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
+
trilogy/core/processing/concept_strategies_v3.py,sha256=tODAJjYyIwR1RII_4GjZ8f0TP18GvOe49aF1x8MxXto,36985
|
|
29
|
+
trilogy/core/processing/graph_utils.py,sha256=stbYnDxnK-1kbo9L4XNU85FQhWCP-oZYO7LCXhAdC5M,1198
|
|
30
|
+
trilogy/core/processing/utility.py,sha256=kwv-eEnFxZTLbZvJxhVxK-IUPBa83VII3gqXmXMBzBM,18709
|
|
31
|
+
trilogy/core/processing/node_generators/__init__.py,sha256=s_YV1OYc336DuS9591259qjI_K_CtOCuhkf4t2aOgYs,733
|
|
32
|
+
trilogy/core/processing/node_generators/basic_node.py,sha256=VqVyb4wXI_B2OmfwtpsypimzcevoPe_pnstlKLU3S5s,2878
|
|
33
|
+
trilogy/core/processing/node_generators/common.py,sha256=kETikLR2fWbrKywPL0TXXj6YY4rpOA8PjsUSyx_mNyE,8907
|
|
34
|
+
trilogy/core/processing/node_generators/filter_node.py,sha256=Br10q3yHtQbA337dR8JwzQMCGqo_H0kjF1vprK7PPns,7610
|
|
35
|
+
trilogy/core/processing/node_generators/group_node.py,sha256=wlj8N4Nd1_8cpmccoe0BocM9jUEYsc-1WEMDCoh1WSw,4876
|
|
36
|
+
trilogy/core/processing/node_generators/group_to_node.py,sha256=RNvDo0x1TNFCDi97IAZ4taLMEe9Wv0XzNtuCCM9vjvw,2537
|
|
37
|
+
trilogy/core/processing/node_generators/multiselect_node.py,sha256=abS8mWWoTxRXYdjKTgRgdfeLiWcJjZ7qgESYwDv5e_o,6510
|
|
38
|
+
trilogy/core/processing/node_generators/node_merge_node.py,sha256=IYDS5DNF-5_dpgwre_n1Kh7RBnt4srzgYkaUahe_K_o,14001
|
|
39
|
+
trilogy/core/processing/node_generators/rowset_node.py,sha256=C5aPc-KIcedTepv9HyG5kth2fUkMwLs_uQy5YEgZsVo,4584
|
|
40
|
+
trilogy/core/processing/node_generators/select_merge_node.py,sha256=JFoBKETwhmd2KdmoNq4wT2SOrd3Jh-GGcO5qMiUh8JE,12691
|
|
41
|
+
trilogy/core/processing/node_generators/select_node.py,sha256=bjTylBa-vYbmzpuSpphmIo_Oi78YZpI8ppHnN9KDYDk,1795
|
|
42
|
+
trilogy/core/processing/node_generators/union_node.py,sha256=MVmLqOZbCEVqZYVZxxWxtDMvyEdSnAg7pU9NzoOXy1I,2517
|
|
43
|
+
trilogy/core/processing/node_generators/unnest_node.py,sha256=MNNjWW7Dp3A_Xv_XGjzdHU1PHQBauZHMBVKRJhqRZJY,2255
|
|
44
|
+
trilogy/core/processing/node_generators/window_node.py,sha256=x4n5NWEouMsOS0V9myyJNmEg2e3kUDPLWXQhq3PyUdY,3510
|
|
45
|
+
trilogy/core/processing/nodes/__init__.py,sha256=WNUmYmZF3uqF2qiJ1L7y0u9qiVD9YnluKds0wA5opJE,4813
|
|
46
|
+
trilogy/core/processing/nodes/base_node.py,sha256=A7Kx_2KlEjE3jcsvvFcwMmvCJiIRFS7jDjePTCpNU9E,15573
|
|
47
|
+
trilogy/core/processing/nodes/filter_node.py,sha256=metDcI7b2QsONOy5l0Mx7by1OhXac0N8yKUDoL_2WWo,2342
|
|
48
|
+
trilogy/core/processing/nodes/group_node.py,sha256=j6uiHmAA01ByhZmeJQrAm4ophdvo517b-OibEZSQFLg,7249
|
|
49
|
+
trilogy/core/processing/nodes/merge_node.py,sha256=Nc0nV56C-1DzanTg54llvlkuHyK05A17XMa2ut0OeK0,14921
|
|
50
|
+
trilogy/core/processing/nodes/select_node_v2.py,sha256=Hk_fQnI8NzpDSaPDNu_C-2QWktf3ZORhzbx0TeOK5Q8,8144
|
|
51
|
+
trilogy/core/processing/nodes/union_node.py,sha256=WHycDepNr16flkgQdwyZRo1g-kzYKWVUb6CZ7N_U4OA,1402
|
|
52
|
+
trilogy/core/processing/nodes/unnest_node.py,sha256=aR1XKa-bT7f45QYKUOS0EUuc0t4GbvYAEG8ZYFJ67sI,2151
|
|
53
|
+
trilogy/core/processing/nodes/window_node.py,sha256=kXHhOZ9CZ8AQvUbJXCIxUPQ-NF3ooZT7VBgNUyM3VM8,1213
|
|
54
|
+
trilogy/dialect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
+
trilogy/dialect/base.py,sha256=KZwtnni34pfghrBH2nBfa8ZDf-BH_cEuQKxBB3JvZWo,38003
|
|
56
|
+
trilogy/dialect/bigquery.py,sha256=mKC3zoEU232h9RtIXJjqiZ72lWH8a6S28p6wAZKrAfg,2952
|
|
57
|
+
trilogy/dialect/common.py,sha256=b0E6JqdKaaSzThLiFa9jwUg4YnXahf-3bqmzOn5z-6E,3827
|
|
58
|
+
trilogy/dialect/config.py,sha256=UiBY2tBbNk9owx-zxP_3lN9lErEUXhXIU_bcXA18AvU,2992
|
|
59
|
+
trilogy/dialect/duckdb.py,sha256=qh5XMgtl9LBUZ8DJ65GLui_nk0Iq9n11bbA6Ek9sum0,3419
|
|
60
|
+
trilogy/dialect/enums.py,sha256=iaghGgOl6zRr4RxRn4TxRnxZU9iSYJG6hN5wqYiBRNQ,3948
|
|
61
|
+
trilogy/dialect/postgres.py,sha256=VH4EB4myjIeZTHeFU6vK00GxY9c53rCBjg2mLbdaCEE,3254
|
|
62
|
+
trilogy/dialect/presto.py,sha256=y2BMOXvpKh1_cXnpGhG0sjhGP-pNVLkf760Hz_pNw_s,3386
|
|
63
|
+
trilogy/dialect/snowflake.py,sha256=wmao9p26jX5yIX5SC8sRAZTXkPGTvq6ixO693QTfhz8,2989
|
|
64
|
+
trilogy/dialect/sql_server.py,sha256=7iFpo2xztQ4ZJVwJ5n8kntWreymRzz035iClGZp3Nyc,3117
|
|
65
|
+
trilogy/hooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
|
+
trilogy/hooks/base_hook.py,sha256=gD6_sjzTzchpLIn3CvJzkM9IvaWNfQUra3yDh9-s8qQ,1125
|
|
67
|
+
trilogy/hooks/graph_hook.py,sha256=wljLY-Ac22vgn7PlsVlRy9HswrapRvVzHrFMlD8qhOY,2468
|
|
68
|
+
trilogy/hooks/query_debugger.py,sha256=FoDh2bu2NiwLusVhKa5El_l8EKaqfET7zn55GP0TkOE,4644
|
|
69
|
+
trilogy/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
+
trilogy/parsing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
71
|
+
trilogy/parsing/common.py,sha256=haPZbJrola5Fvwp940A-MJ1o-EhGXKsRFa-Y2e7OsjU,10370
|
|
72
|
+
trilogy/parsing/config.py,sha256=Z-DaefdKhPDmSXLgg5V4pebhSB0h590vI0_VtHnlukI,111
|
|
73
|
+
trilogy/parsing/exceptions.py,sha256=92E5i2frv5hj9wxObJZsZqj5T6bglvPzvdvco_vW1Zk,38
|
|
74
|
+
trilogy/parsing/helpers.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
75
|
+
trilogy/parsing/parse_engine.py,sha256=M2CAqqA-JlR6TK17jkPlcOmy4YhPVlH8YByVTDP3cCI,67122
|
|
76
|
+
trilogy/parsing/render.py,sha256=Dr0QKIaAUi9uxfZZJVNV-todKoTA-tsWXNXPJ4Ohjn0,15650
|
|
77
|
+
trilogy/parsing/trilogy.lark,sha256=d_d3H8ExBcrVffPLq1TgTcEyWDppPJO2zB6cC6mdq9I,12489
|
|
78
|
+
trilogy/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
|
+
trilogy/scripts/trilogy.py,sha256=DQDW81E5mDMWFP8oPw8q-IyrR2JGxQSDWgUWe2VTSRQ,3731
|
|
80
|
+
pytrilogy-0.0.2.48.dist-info/LICENSE.md,sha256=5ZRvtTyCCFwz1THxDTjAu3Lidds9WjPvvzgVwPSYNDo,1042
|
|
81
|
+
pytrilogy-0.0.2.48.dist-info/METADATA,sha256=Rcj4LfUCQoMs2K3dtgpBeFRpNOonJ9A0Q7kstGsMKnk,8426
|
|
82
|
+
pytrilogy-0.0.2.48.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
83
|
+
pytrilogy-0.0.2.48.dist-info/entry_points.txt,sha256=0petKryjvvtEfTlbZC1AuMFumH_WQ9v8A19LvoS6G6c,54
|
|
84
|
+
pytrilogy-0.0.2.48.dist-info/top_level.txt,sha256=cAy__NW_eMAa_yT9UnUNlZLFfxcg6eimUAZ184cdNiE,8
|
|
85
|
+
pytrilogy-0.0.2.48.dist-info/RECORD,,
|
trilogy/__init__.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
from trilogy.constants import CONFIG
|
|
1
2
|
from trilogy.core.models import Environment
|
|
2
3
|
from trilogy.dialect.enums import Dialects
|
|
3
4
|
from trilogy.executor import Executor
|
|
4
5
|
from trilogy.parser import parse
|
|
5
|
-
from trilogy.constants import CONFIG
|
|
6
6
|
|
|
7
|
-
__version__ = "0.0.2.
|
|
7
|
+
__version__ = "0.0.2.48"
|
|
8
8
|
|
|
9
9
|
__all__ = ["parse", "Executor", "Dialects", "Environment", "CONFIG"]
|
trilogy/constants.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import random
|
|
2
2
|
from dataclasses import dataclass, field
|
|
3
3
|
from enum import Enum
|
|
4
|
-
import
|
|
4
|
+
from logging import getLogger
|
|
5
5
|
|
|
6
6
|
logger = getLogger("trilogy")
|
|
7
7
|
|
|
@@ -44,6 +44,7 @@ class Rendering:
|
|
|
44
44
|
"""Control how the SQL is rendered"""
|
|
45
45
|
|
|
46
46
|
parameters: bool = True
|
|
47
|
+
concise: bool = False
|
|
47
48
|
|
|
48
49
|
|
|
49
50
|
# TODO: support loading from environments
|
|
@@ -56,6 +57,7 @@ class Config:
|
|
|
56
57
|
comments: Comments = field(default_factory=Comments)
|
|
57
58
|
optimizations: Optimizations = field(default_factory=Optimizations)
|
|
58
59
|
rendering: Rendering = field(default_factory=Rendering)
|
|
60
|
+
select_as_definition: bool = True
|
|
59
61
|
|
|
60
62
|
@property
|
|
61
63
|
def show_comments(self) -> bool:
|
trilogy/core/enums.py
CHANGED
|
@@ -29,6 +29,7 @@ class Purpose(Enum):
|
|
|
29
29
|
METRIC = "metric"
|
|
30
30
|
ROWSET = "rowset"
|
|
31
31
|
AUTO = "auto"
|
|
32
|
+
UNKNOWN = "unknown"
|
|
32
33
|
|
|
33
34
|
@classmethod
|
|
34
35
|
def _missing_(cls, value):
|
|
@@ -44,6 +45,7 @@ class PurposeLineage(Enum):
|
|
|
44
45
|
FILTER = "filter"
|
|
45
46
|
CONSTANT = "constant"
|
|
46
47
|
UNNEST = "unnest"
|
|
48
|
+
UNION = "union"
|
|
47
49
|
ROOT = "root"
|
|
48
50
|
ROWSET = "rowset"
|
|
49
51
|
MULTISELECT = "multiselect"
|
|
@@ -113,6 +115,9 @@ class FunctionType(Enum):
|
|
|
113
115
|
|
|
114
116
|
# structural
|
|
115
117
|
UNNEST = "unnest"
|
|
118
|
+
|
|
119
|
+
UNION = "union"
|
|
120
|
+
|
|
116
121
|
ALIAS = "alias"
|
|
117
122
|
|
|
118
123
|
# Generic
|
|
@@ -133,6 +138,7 @@ class FunctionType(Enum):
|
|
|
133
138
|
|
|
134
139
|
# TEXT AND MAYBE MORE
|
|
135
140
|
SPLIT = "split"
|
|
141
|
+
LENGTH = "len"
|
|
136
142
|
|
|
137
143
|
# Math
|
|
138
144
|
DIVIDE = "divide"
|
|
@@ -154,7 +160,6 @@ class FunctionType(Enum):
|
|
|
154
160
|
MAX = "max"
|
|
155
161
|
MIN = "min"
|
|
156
162
|
AVG = "avg"
|
|
157
|
-
LENGTH = "len"
|
|
158
163
|
|
|
159
164
|
# String
|
|
160
165
|
LIKE = "like"
|
|
@@ -299,6 +304,7 @@ class SourceType(Enum):
|
|
|
299
304
|
ROWSET = "rowset"
|
|
300
305
|
MERGE = "merge"
|
|
301
306
|
BASIC = "basic"
|
|
307
|
+
UNION = "union"
|
|
302
308
|
|
|
303
309
|
|
|
304
310
|
class ShowCategory(Enum):
|
trilogy/core/env_processor.py
CHANGED
|
@@ -3,7 +3,7 @@ from trilogy.core.graph_models import (
|
|
|
3
3
|
concept_to_node,
|
|
4
4
|
datasource_to_node,
|
|
5
5
|
)
|
|
6
|
-
from trilogy.core.models import
|
|
6
|
+
from trilogy.core.models import Concept, Datasource, Environment
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def add_concept(
|
|
@@ -68,7 +68,6 @@ def generate_adhoc_graph(
|
|
|
68
68
|
def generate_graph(
|
|
69
69
|
environment: Environment,
|
|
70
70
|
) -> ReferenceGraph:
|
|
71
|
-
|
|
72
71
|
return generate_adhoc_graph(
|
|
73
72
|
list(environment.concepts.values())
|
|
74
73
|
+ list(environment.alias_origin_lookup.values()),
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
+
from trilogy.constants import DEFAULT_NAMESPACE
|
|
2
|
+
from trilogy.core.enums import ConceptSource, FunctionType, Purpose
|
|
3
|
+
from trilogy.core.functions import AttrAccess
|
|
1
4
|
from trilogy.core.models import (
|
|
2
|
-
DataType,
|
|
3
5
|
Concept,
|
|
6
|
+
DataType,
|
|
4
7
|
Environment,
|
|
5
8
|
Function,
|
|
6
9
|
Metadata,
|
|
7
10
|
StructType,
|
|
8
11
|
)
|
|
9
|
-
from trilogy.
|
|
10
|
-
from trilogy.core.enums import Purpose, FunctionType, ConceptSource
|
|
11
|
-
from trilogy.constants import DEFAULT_NAMESPACE
|
|
12
|
-
from trilogy.parsing.common import process_function_args, arg_to_datatype, Meta
|
|
12
|
+
from trilogy.parsing.common import Meta, arg_to_datatype, process_function_args
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def generate_date_concepts(concept: Concept, environment: Environment):
|
trilogy/core/functions.py
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from trilogy.constants import MagicConstants
|
|
4
|
+
from trilogy.core.enums import DatePart, FunctionType, Granularity, Purpose
|
|
5
|
+
from trilogy.core.exceptions import InvalidSyntaxException
|
|
1
6
|
from trilogy.core.models import (
|
|
2
|
-
Function,
|
|
3
|
-
Concept,
|
|
4
7
|
AggregateWrapper,
|
|
5
|
-
|
|
6
|
-
arg_to_datatype,
|
|
7
|
-
WindowItem,
|
|
8
|
+
Concept,
|
|
8
9
|
DataType,
|
|
10
|
+
Function,
|
|
9
11
|
ListType,
|
|
10
|
-
StructType,
|
|
11
12
|
MapType,
|
|
12
13
|
NumericType,
|
|
14
|
+
Parenthetical,
|
|
15
|
+
StructType,
|
|
16
|
+
WindowItem,
|
|
17
|
+
arg_to_datatype,
|
|
13
18
|
)
|
|
14
|
-
from trilogy.core.enums import FunctionType, Purpose, Granularity, DatePart
|
|
15
|
-
from trilogy.core.exceptions import InvalidSyntaxException
|
|
16
|
-
from trilogy.constants import MagicConstants
|
|
17
|
-
from typing import Optional
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
def create_function_derived_concept(
|
trilogy/core/internal.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
from trilogy.core.models import Concept, DataType, Function
|
|
2
|
-
from trilogy.core.enums import Purpose, FunctionType
|
|
3
1
|
from trilogy.core.constants import ALL_ROWS_CONCEPT, INTERNAL_NAMESPACE
|
|
4
|
-
|
|
2
|
+
from trilogy.core.enums import FunctionType, Purpose
|
|
3
|
+
from trilogy.core.models import Concept, DataType, Function
|
|
5
4
|
|
|
6
5
|
DEFAULT_CONCEPTS = {
|
|
7
6
|
ALL_ROWS_CONCEPT: Concept(
|