recce-nightly 1.8.0.20250613.post1__py3-none-any.whl → 1.8.0.20250616__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 recce-nightly might be problematic. Click here for more details.
- recce/VERSION +1 -1
- recce/adapter/dbt_adapter/__init__.py +15 -5
- recce/data/404.html +2 -2
- recce/data/_next/static/chunks/{1bff33f1-39d26ad38ba4fe06.js → 1bff33f1-1ef85cf5e658a751.js} +1 -1
- recce/data/_next/static/chunks/217-879a84d70f7a907c.js +2 -0
- recce/data/_next/static/chunks/29e3cc0d-60045b2e47aa3916.js +1 -0
- recce/data/_next/static/chunks/36e1c10d-35e36448f4f83961.js +1 -0
- recce/data/_next/static/chunks/{3998a672-0426e04aa28a4198.js → 3998a672-03adacad07b346ac.js} +1 -1
- recce/data/_next/static/chunks/{3a92ee20-146003bc9f4294f5.js → 3a92ee20-1081c360214f9602.js} +1 -1
- recce/data/_next/static/chunks/450c323b-fd94e7ffaa4a5efa.js +1 -0
- recce/data/_next/static/chunks/47d8844f-929aed9b1c73a905.js +1 -0
- recce/data/_next/static/chunks/608-3b079b544e5d5f5e.js +15 -0
- recce/data/_next/static/chunks/{6dc81886-e6963cc22929fc61.js → 6dc81886-adbfa45836061d79.js} +1 -1
- recce/data/_next/static/chunks/7a8a3e83-edf6dc64b5d5f0a5.js +1 -0
- recce/data/_next/static/chunks/7f27ae6c-d5f0438edd5c2a5b.js +1 -0
- recce/data/_next/static/chunks/826-1fdc111c49b34b0f.js +43 -0
- recce/data/_next/static/chunks/{0d0b8943-1c8ef4728d0e645b.js → 86730205-cfb14e3f051bab35.js} +1 -1
- recce/data/_next/static/chunks/{8d700b6a.ebb3dd15a8cd3f2b.js → 8d700b6a.8bb140898499c512.js} +1 -1
- recce/data/_next/static/chunks/92-8753f5687183e400.js +1 -0
- recce/data/_next/static/chunks/960-49d66f0cbac6af8a.js +9 -0
- recce/data/_next/static/chunks/9746af58-a42b7d169cacadf0.js +1 -0
- recce/data/_next/static/chunks/a30376cd-de84559016d7e133.js +1 -0
- recce/data/_next/static/chunks/app/_not-found/{page-2ab757d7e27193ec.js → page-01ed58b7f971d311.js} +1 -1
- recce/data/_next/static/chunks/app/layout-af033601bf81ed53.js +1 -0
- recce/data/_next/static/chunks/app/page-848f2149d3c62dd1.js +1 -0
- recce/data/_next/static/chunks/b63b1b3f-4282bdcf459e075c.js +1 -0
- recce/data/_next/static/chunks/bbda5537-9ec25eb1dd62348a.js +1 -0
- recce/data/_next/static/chunks/c132bf7d-08cb668a789d6afd.js +1 -0
- recce/data/_next/static/chunks/ce84277d-2e5d1d46910cf052.js +1 -0
- recce/data/_next/static/chunks/{febdd86e-d96ff090bf0a928d.js → febdd86e-c6b525341634b860.js} +3 -3
- recce/data/_next/static/chunks/fee69bc6-2dbccaf9b90474e6.js +1 -0
- recce/data/_next/static/chunks/main-app-39061b0166c47f55.js +1 -0
- recce/data/_next/static/chunks/main-b5b3ae20a1405261.js +1 -0
- recce/data/_next/static/chunks/pages/_app-437c455677d62394.js +1 -0
- recce/data/_next/static/chunks/pages/_error-e7650df18ca04bde.js +1 -0
- recce/data/_next/static/chunks/{webpack-c84693803e08b48b.js → webpack-7b49d5ba7e3a434d.js} +1 -1
- recce/data/_next/static/w18Z-hT6EIuYJQK1WQHit/_buildManifest.js +1 -0
- recce/data/index.html +2 -2
- recce/data/index.txt +6 -6
- recce/models/types.py +8 -2
- recce/util/lineage.py +55 -18
- {recce_nightly-1.8.0.20250613.post1.dist-info → recce_nightly-1.8.0.20250616.dist-info}/METADATA +1 -1
- {recce_nightly-1.8.0.20250613.post1.dist-info → recce_nightly-1.8.0.20250616.dist-info}/RECORD +49 -49
- tests/adapter/dbt_adapter/test_dbt_cll.py +21 -18
- recce/data/_next/static/chunks/184-dc0879f75e9506c3.js +0 -15
- recce/data/_next/static/chunks/249-aeaf2fd44b7d8946.js +0 -1
- recce/data/_next/static/chunks/29e3cc0d-e95ebef603672925.js +0 -1
- recce/data/_next/static/chunks/33-27f5a26fea26baf4.js +0 -43
- recce/data/_next/static/chunks/36e1c10d-6d59e8aae9eec8b4.js +0 -1
- recce/data/_next/static/chunks/42-3dc869b8f2a75e9c.js +0 -2
- recce/data/_next/static/chunks/450c323b-3dd665b028d8e184.js +0 -1
- recce/data/_next/static/chunks/47d8844f-57ea99282765dce5.js +0 -1
- recce/data/_next/static/chunks/627-1b5619ef0c492f2b.js +0 -9
- recce/data/_next/static/chunks/7a8a3e83-933490bb996ac49b.js +0 -1
- recce/data/_next/static/chunks/7f27ae6c-f6aa983aa05b83cd.js +0 -1
- recce/data/_next/static/chunks/9746af58-ac9a4d1b8160c197.js +0 -1
- recce/data/_next/static/chunks/a30376cd-2d324b6b8687d57b.js +0 -1
- recce/data/_next/static/chunks/app/layout-83da1e1a59dea607.js +0 -1
- recce/data/_next/static/chunks/app/page-3404ed4ba8cffb0b.js +0 -1
- recce/data/_next/static/chunks/b63b1b3f-a380b9fe5be938d3.js +0 -1
- recce/data/_next/static/chunks/bbda5537-10da060bd56d475e.js +0 -1
- recce/data/_next/static/chunks/c132bf7d-d6e713672e7030a1.js +0 -1
- recce/data/_next/static/chunks/ce84277d-7f0a33888bf731d9.js +0 -1
- recce/data/_next/static/chunks/fee69bc6-288939bd73e3e49c.js +0 -1
- recce/data/_next/static/chunks/main-0276cd0c41be4ef4.js +0 -1
- recce/data/_next/static/chunks/main-app-2e08b38d48f6a731.js +0 -1
- recce/data/_next/static/chunks/pages/_app-ddb94f741a61a490.js +0 -1
- recce/data/_next/static/chunks/pages/_error-9e738ac1fd923095.js +0 -1
- recce/data/_next/static/neOLMn23ZycuVI9Knbz0x/_buildManifest.js +0 -1
- /recce/data/_next/static/{neOLMn23ZycuVI9Knbz0x → w18Z-hT6EIuYJQK1WQHit}/_ssgManifest.js +0 -0
- {recce_nightly-1.8.0.20250613.post1.dist-info → recce_nightly-1.8.0.20250616.dist-info}/WHEEL +0 -0
- {recce_nightly-1.8.0.20250613.post1.dist-info → recce_nightly-1.8.0.20250616.dist-info}/entry_points.txt +0 -0
- {recce_nightly-1.8.0.20250613.post1.dist-info → recce_nightly-1.8.0.20250616.dist-info}/licenses/LICENSE +0 -0
- {recce_nightly-1.8.0.20250613.post1.dist-info → recce_nightly-1.8.0.20250616.dist-info}/top_level.txt +0 -0
recce/util/lineage.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import Dict, Set, Tuple
|
|
2
2
|
|
|
3
|
-
from recce.models.types import CllData
|
|
3
|
+
from recce.models.types import CllColumn, CllData, CllNode
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
def find_upstream(node, parent_map):
|
|
@@ -44,6 +44,15 @@ def build_dependency_maps(cll_data: CllData) -> Tuple[Dict[str, Set], Dict[str,
|
|
|
44
44
|
child_map = {}
|
|
45
45
|
|
|
46
46
|
for node_id, node_data in cll_data.nodes.items():
|
|
47
|
+
for dep_node in node_data.depends_on.nodes:
|
|
48
|
+
if node_id not in parent_map:
|
|
49
|
+
parent_map[node_id] = set()
|
|
50
|
+
parent_map[node_id].add(dep_node)
|
|
51
|
+
|
|
52
|
+
if dep_node not in child_map:
|
|
53
|
+
child_map[dep_node] = set()
|
|
54
|
+
child_map[dep_node].add(node_id)
|
|
55
|
+
|
|
47
56
|
for col_name, col_data in node_data.columns.items():
|
|
48
57
|
current_col_id = f"{node_id}_{col_name}"
|
|
49
58
|
|
|
@@ -72,28 +81,56 @@ def build_dependency_maps(cll_data: CllData) -> Tuple[Dict[str, Set], Dict[str,
|
|
|
72
81
|
return parent_map, child_map
|
|
73
82
|
|
|
74
83
|
|
|
75
|
-
def
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
def build_lineage_vertices(cll_data: CllData) -> Tuple[Dict[str, CllNode], Dict[str, CllColumn]]:
|
|
85
|
+
lineage_nodes = {}
|
|
86
|
+
lineage_columns = {}
|
|
87
|
+
|
|
88
|
+
for cll_node_id, node in cll_data.nodes.items():
|
|
89
|
+
lineage_nodes[cll_node_id] = node.copy()
|
|
90
|
+
|
|
91
|
+
for name, cll_column in node.columns.items():
|
|
92
|
+
column_key = f"{cll_node_id}_{name}"
|
|
93
|
+
lineage_columns[column_key] = cll_column.copy()
|
|
94
|
+
lineage_columns[column_key].id = column_key
|
|
95
|
+
lineage_columns[column_key].table_id = cll_node_id
|
|
80
96
|
|
|
97
|
+
return lineage_nodes, lineage_columns
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def find_column_dependencies(node_column_id: str, parent_map: Dict, child_map: Dict) -> Tuple[Set, Set]:
|
|
101
|
+
upstream_cols = find_upstream(node_column_id, parent_map)
|
|
102
|
+
downstream_cols = find_downstream(node_column_id, child_map)
|
|
81
103
|
return upstream_cols, downstream_cols
|
|
82
104
|
|
|
83
105
|
|
|
84
|
-
def
|
|
106
|
+
def filter_lineage_vertices(
|
|
107
|
+
lineage_nodes: Dict[str, CllNode], lineage_columns: Dict[str, CllColumn], relevant_columns: Set[str]
|
|
108
|
+
) -> Tuple[Dict[str, CllNode], Dict[str, CllColumn]]:
|
|
109
|
+
nodes = {}
|
|
110
|
+
columns = {}
|
|
111
|
+
|
|
112
|
+
for node_id, node in lineage_nodes.items():
|
|
113
|
+
if node_id in relevant_columns:
|
|
114
|
+
nodes[node_id] = node
|
|
115
|
+
|
|
116
|
+
for col_id, column in lineage_columns.items():
|
|
117
|
+
if col_id in relevant_columns:
|
|
118
|
+
columns[col_id] = column
|
|
119
|
+
|
|
120
|
+
return nodes, columns
|
|
85
121
|
|
|
86
|
-
for node_id, node_obj in cll_data.nodes.items():
|
|
87
|
-
filtered_node_columns = {}
|
|
88
122
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
123
|
+
def filter_dependency_maps(
|
|
124
|
+
parent_map: Dict, child_map: Dict, relevant_columns: Set
|
|
125
|
+
) -> Tuple[Dict[str, Set], Dict[str, Set]]:
|
|
126
|
+
p_map = {}
|
|
127
|
+
c_map = {}
|
|
128
|
+
for node_id, parents in parent_map.items():
|
|
129
|
+
if node_id in relevant_columns:
|
|
130
|
+
p_map[node_id] = {p for p in parents if p in relevant_columns}
|
|
93
131
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
]
|
|
132
|
+
for node_id, children in child_map.items():
|
|
133
|
+
if node_id in relevant_columns:
|
|
134
|
+
c_map[node_id] = {c for c in children if c in relevant_columns}
|
|
98
135
|
|
|
99
|
-
return
|
|
136
|
+
return p_map, c_map
|
{recce_nightly-1.8.0.20250613.post1.dist-info → recce_nightly-1.8.0.20250616.dist-info}/RECORD
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
recce/VERSION,sha256=
|
|
1
|
+
recce/VERSION,sha256=9dkXX-FVuaaLb-l7gsGR7BpZqa36AcBvoiWsBobLgzQ,15
|
|
2
2
|
recce/__init__.py,sha256=yNb0QT-yoStex0VZALNJvUwtPLommoVCStcow31guqo,2392
|
|
3
3
|
recce/artifact.py,sha256=tKQAHSrLRjiR3ppOI4sym8SxYiiLTuD3DPMYh4DWQdA,6506
|
|
4
4
|
recce/cli.py,sha256=hNUy20Yk5e_iDv_gpCJ6LI5q3SzKZPAd3LQ-UNw1CcU,39725
|
|
@@ -16,52 +16,52 @@ recce/summary.py,sha256=Mbxvxr9KazR5o9icqhhjiGHsoAiWxQU4PdN7HytBJ1c,19154
|
|
|
16
16
|
recce/adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
17
|
recce/adapter/base.py,sha256=T_JNeLHgiHSaegw-DbrvHOaYjMyZcjj2Qtg5cWh_fco,3548
|
|
18
18
|
recce/adapter/sqlmesh_adapter.py,sha256=IU3N-F6ToDoO7_bV5vsG8pmTuDcbFtewTIuCxedTaRM,5046
|
|
19
|
-
recce/adapter/dbt_adapter/__init__.py,sha256=
|
|
19
|
+
recce/adapter/dbt_adapter/__init__.py,sha256=vFNcoGBAw8_HSIVSePvtuLeNZKXOnRPnHny2iBllDWI,55819
|
|
20
20
|
recce/adapter/dbt_adapter/dbt_version.py,sha256=M7aedZIWslXnJsryK8Ki4OL_t2oAKxy4uE2pRwfWIkk,1228
|
|
21
21
|
recce/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
recce/apis/check_api.py,sha256=KMCXSMl1qqzx2jQgRqCrD4j_cY3EHBbM3H2-t-6saAU,6227
|
|
23
23
|
recce/apis/check_func.py,sha256=gktbCcyk3WGvWRJJ-wDnwv7NrIny2nTHWLl1-kdiVRo,4183
|
|
24
24
|
recce/apis/run_api.py,sha256=eOaxOxXDkH59uqGCd4blld7edavUx7JU_DCd2WAYrL8,3416
|
|
25
25
|
recce/apis/run_func.py,sha256=6wC8TDU-h7TLr2VZH7HNsWaUVlQ9HBN5N_dwqfi4lMY,7440
|
|
26
|
-
recce/data/404.html,sha256=
|
|
26
|
+
recce/data/404.html,sha256=iiz808LIOKVqjkk4O8y2lJXUqKspjHuCkG7p7Ml16Rg,26577
|
|
27
27
|
recce/data/favicon.ico,sha256=B2mBumUOnzvUrXrqNkrc5QfdDXjzEXRcWkWur0fJ6sM,2565
|
|
28
|
-
recce/data/index.html,sha256=
|
|
29
|
-
recce/data/index.txt,sha256=
|
|
30
|
-
recce/data/_next/static/chunks/
|
|
31
|
-
recce/data/_next/static/chunks/
|
|
32
|
-
recce/data/_next/static/chunks/
|
|
33
|
-
recce/data/_next/static/chunks/
|
|
34
|
-
recce/data/_next/static/chunks/
|
|
35
|
-
recce/data/_next/static/chunks/
|
|
36
|
-
recce/data/_next/static/chunks/
|
|
37
|
-
recce/data/_next/static/chunks/
|
|
38
|
-
recce/data/_next/static/chunks/
|
|
39
|
-
recce/data/_next/static/chunks/
|
|
40
|
-
recce/data/_next/static/chunks/
|
|
41
|
-
recce/data/_next/static/chunks/
|
|
42
|
-
recce/data/_next/static/chunks/
|
|
43
|
-
recce/data/_next/static/chunks/
|
|
44
|
-
recce/data/_next/static/chunks/
|
|
45
|
-
recce/data/_next/static/chunks/
|
|
46
|
-
recce/data/_next/static/chunks/
|
|
47
|
-
recce/data/_next/static/chunks/9746af58-
|
|
48
|
-
recce/data/_next/static/chunks/a30376cd-
|
|
49
|
-
recce/data/_next/static/chunks/b63b1b3f-
|
|
50
|
-
recce/data/_next/static/chunks/bbda5537-
|
|
51
|
-
recce/data/_next/static/chunks/c132bf7d-
|
|
52
|
-
recce/data/_next/static/chunks/ce84277d-
|
|
53
|
-
recce/data/_next/static/chunks/febdd86e-
|
|
54
|
-
recce/data/_next/static/chunks/fee69bc6-
|
|
28
|
+
recce/data/index.html,sha256=Y_PDpRYIj2rF9xz-XePcJ7RVcI1X1H3ETPXuG7t2AJA,42160
|
|
29
|
+
recce/data/index.txt,sha256=AXvCWDcPPBAjnlFF7w-6OgJjg3Zq-Mij3rNV01rrSeo,4466
|
|
30
|
+
recce/data/_next/static/chunks/1bff33f1-1ef85cf5e658a751.js,sha256=wTH-_PbE1XdP-wmGaQStF5y2yH6XcZXeYX_hDaGMfh4,153777
|
|
31
|
+
recce/data/_next/static/chunks/217-879a84d70f7a907c.js,sha256=kNJkLcwaIlWnQY7akbrFimbcHHdK6lMVTbTYCNKXIjc,124102
|
|
32
|
+
recce/data/_next/static/chunks/29e3cc0d-60045b2e47aa3916.js,sha256=2MNGdoQ0DUmEJz-JdcgJVIPDdaVHp2963E0luqJ-TTE,700
|
|
33
|
+
recce/data/_next/static/chunks/36e1c10d-35e36448f4f83961.js,sha256=c1opscOEnObn5EMLvhl4Z__wL2-4ALEuKIhZSJK4YT0,7797
|
|
34
|
+
recce/data/_next/static/chunks/3998a672-03adacad07b346ac.js,sha256=yIo9J3TT-1rQQISuIbB_ZYdI952YiOazkpiXxkza6tI,9023
|
|
35
|
+
recce/data/_next/static/chunks/3a92ee20-1081c360214f9602.js,sha256=-XiclPOo-Au8pcnledxOGxajRoYoJ-4rtBdJ7kHZNN8,177688
|
|
36
|
+
recce/data/_next/static/chunks/450c323b-fd94e7ffaa4a5efa.js,sha256=9msncqWrh8MQrmXLZEA9W2_5WZP4Fmvlaw9Vrv737XI,2205
|
|
37
|
+
recce/data/_next/static/chunks/47d8844f-929aed9b1c73a905.js,sha256=VIKCVeheQGrNsNkyF6agc_38Yess4KJsFJz8Vbe598U,697
|
|
38
|
+
recce/data/_next/static/chunks/608-3b079b544e5d5f5e.js,sha256=uvQzpIdvupXx_k2aIX4C-KfP4QEXqlbHuP6XNQVK-0s,97872
|
|
39
|
+
recce/data/_next/static/chunks/6dc81886-adbfa45836061d79.js,sha256=9X1H0RjERGExNdWSzbslObd050Iwd8bqTJQuuGW6wq4,69733
|
|
40
|
+
recce/data/_next/static/chunks/7a8a3e83-edf6dc64b5d5f0a5.js,sha256=NfgBK9op5SzWm4Ehg1xI-_HChQuqosdklsifGTNH-rE,1649
|
|
41
|
+
recce/data/_next/static/chunks/7f27ae6c-d5f0438edd5c2a5b.js,sha256=ewMLioJbTUUDeqV0J9NDKE0Bj-XCFg8QqMLOmLPgpcc,777
|
|
42
|
+
recce/data/_next/static/chunks/826-1fdc111c49b34b0f.js,sha256=tCBVOyBAFUDLd9iv1xyTk3hDGMSvkbtHAnaHizxp27s,318338
|
|
43
|
+
recce/data/_next/static/chunks/86730205-cfb14e3f051bab35.js,sha256=qKkzgWsNqSrn-PUGBloZopIlacGCy8hH0BZA9tpqQoQ,172837
|
|
44
|
+
recce/data/_next/static/chunks/8d700b6a.8bb140898499c512.js,sha256=NPGWvqv8Y_rbNaKxYnoq16mi6FDoQHxOOjpH4tJnUkE,119972
|
|
45
|
+
recce/data/_next/static/chunks/92-8753f5687183e400.js,sha256=5JAmaRE0mZicKWm-oR2AaR51AL4L4-MctSqZrdFbY-s,72758
|
|
46
|
+
recce/data/_next/static/chunks/960-49d66f0cbac6af8a.js,sha256=oFMSQdXW5b9pXz_QcTAZ8JWgSYcI9Ac3VjeDlSSEYD0,1032469
|
|
47
|
+
recce/data/_next/static/chunks/9746af58-a42b7d169cacadf0.js,sha256=lV-V6BYpd4HEt-pFtT03G6qQD2Wa-2L_jp6aH9VgoeM,4177
|
|
48
|
+
recce/data/_next/static/chunks/a30376cd-de84559016d7e133.js,sha256=qzgyjrX5PdPKGeSwb-Gh0RfM_NEF2zjMvMK14ixq228,864
|
|
49
|
+
recce/data/_next/static/chunks/b63b1b3f-4282bdcf459e075c.js,sha256=s2EZ59zDBJDmy2kh0cHkQ_pAWxiQr_yCPlnttCj0x_k,572
|
|
50
|
+
recce/data/_next/static/chunks/bbda5537-9ec25eb1dd62348a.js,sha256=jB7gyvrur-GMqD3Yi2X6jiFfFGCb0_zYyxJJXrh3mpw,81301
|
|
51
|
+
recce/data/_next/static/chunks/c132bf7d-08cb668a789d6afd.js,sha256=bvbKe0denpFS_bPYD58ip9TE5OSooIZNrog39AWjf_I,198536
|
|
52
|
+
recce/data/_next/static/chunks/ce84277d-2e5d1d46910cf052.js,sha256=uv79hdbY7j79k4hQQDiz9OAML-RqZRj8N3-SBFV17-k,2562
|
|
53
|
+
recce/data/_next/static/chunks/febdd86e-c6b525341634b860.js,sha256=DYG6gZ6Ia5VLZRGYgJHZz28_Eie9eyIctRcmGBQuVTY,82988
|
|
54
|
+
recce/data/_next/static/chunks/fee69bc6-2dbccaf9b90474e6.js,sha256=kN9jpjqnvfPqP_00RVf0CdWLTGnU1HEAYxjPuXca_Pk,484
|
|
55
55
|
recce/data/_next/static/chunks/framework-ded83d71b51ce901.js,sha256=0Xsxxnmw5fjRHz8ni6vlaF9tQjfjNGZcZv2oMy7A_T4,140000
|
|
56
|
-
recce/data/_next/static/chunks/main-
|
|
57
|
-
recce/data/_next/static/chunks/main-
|
|
56
|
+
recce/data/_next/static/chunks/main-app-39061b0166c47f55.js,sha256=NE6gZMaxmkLWS-unRTaSJm_1GGGb5ld-TP7UQMot2TY,471
|
|
57
|
+
recce/data/_next/static/chunks/main-b5b3ae20a1405261.js,sha256=28hJH2VsiTdxZGZrQsyRO-YBwfgJArUHYGGuy7ZAD7s,116715
|
|
58
58
|
recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
|
|
59
|
-
recce/data/_next/static/chunks/webpack-
|
|
60
|
-
recce/data/_next/static/chunks/app/layout-
|
|
61
|
-
recce/data/_next/static/chunks/app/page-
|
|
62
|
-
recce/data/_next/static/chunks/app/_not-found/page-
|
|
63
|
-
recce/data/_next/static/chunks/pages/_app-
|
|
64
|
-
recce/data/_next/static/chunks/pages/_error-
|
|
59
|
+
recce/data/_next/static/chunks/webpack-7b49d5ba7e3a434d.js,sha256=lcK59Juk4EZqi3jIsY35lQqAlB5TLTPy-neri0BIZL0,3929
|
|
60
|
+
recce/data/_next/static/chunks/app/layout-af033601bf81ed53.js,sha256=oPbgXJeb1DX635Agej8yYBLrKfxBMUJ5eFfAW25mO2k,1732
|
|
61
|
+
recce/data/_next/static/chunks/app/page-848f2149d3c62dd1.js,sha256=j2CnUS6zw8JOPHbnk1xbYwbCtS6LPoznNNr43IXLJvs,162615
|
|
62
|
+
recce/data/_next/static/chunks/app/_not-found/page-01ed58b7f971d311.js,sha256=_l3JSAaIJxInWqyqdDsobkhJ3JP6DZuwXkw-MsRakQA,1751
|
|
63
|
+
recce/data/_next/static/chunks/pages/_app-437c455677d62394.js,sha256=FaxURD1wuAmnMU1zJlsQKT9rRdfuspR7yx7BckcoCLY,284
|
|
64
|
+
recce/data/_next/static/chunks/pages/_error-e7650df18ca04bde.js,sha256=0Vzx_hCqw4RcptsFzHfUigpI13sToBnFw38owTP7ruo,250
|
|
65
65
|
recce/data/_next/static/css/17a96168e3a9db13.css,sha256=aojwuNbF38RSCVYal2iL4Qkz6jsO0FNEs6qfeYwXY5k,1205
|
|
66
66
|
recce/data/_next/static/css/1b121dc4d36aeb4d.css,sha256=fJcUlx0zOECmST2uFkAB-VzBrp53E-5KEShUcnO16aE,7949
|
|
67
67
|
recce/data/_next/static/css/35c6679a098e1e34.css,sha256=VaNEUFJj9NKOihehwlAgzdPRbmww7bi0xKh8hRfxhn0,12706
|
|
@@ -77,8 +77,8 @@ recce/data/_next/static/media/montserrat-latin-ext-800-normal.2e5381b2.woff,sha2
|
|
|
77
77
|
recce/data/_next/static/media/montserrat-vietnamese-800-normal.20c545e6.woff,sha256=U5YlWNp5ytuS5tfT8Tt07U5xG3Qs0b2ze6vPx2KKG4s,7328
|
|
78
78
|
recce/data/_next/static/media/montserrat-vietnamese-800-normal.c0035377.woff2,sha256=bnmP7vEVe-4gLSDBsmKqD-SATv6-Pg-pxnTpSj7BCeI,7948
|
|
79
79
|
recce/data/_next/static/media/reload-image.79aabb7d.svg,sha256=l-jdOsD0OBCpFrVYh1ubO8oajafPuPNs6MYnbanO7K0,840
|
|
80
|
-
recce/data/_next/static/
|
|
81
|
-
recce/data/_next/static/
|
|
80
|
+
recce/data/_next/static/w18Z-hT6EIuYJQK1WQHit/_buildManifest.js,sha256=sjy6FmOqWlkXWmod2oXwqKv7L582_MTycs9THCE6G-c,224
|
|
81
|
+
recce/data/_next/static/w18Z-hT6EIuYJQK1WQHit/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
82
82
|
recce/data/imgs/reload-image.svg,sha256=l-jdOsD0OBCpFrVYh1ubO8oajafPuPNs6MYnbanO7K0,840
|
|
83
83
|
recce/data/imgs/feedback/thumbs-down.png,sha256=q9KVIbaZku1TWkYHuleYlO-b6HsTApYh3St5xNHMGMg,10695
|
|
84
84
|
recce/data/imgs/feedback/thumbs-up.png,sha256=VF3BH8bmYEqcSsMDJO57xMqW4t6crCXUXaMlOPgI_OE,10556
|
|
@@ -91,7 +91,7 @@ recce/event/track.py,sha256=xDyDWblhR6mp0tezEYhkA0aOyZLqXBpJyHZwhI2xhU8,4803
|
|
|
91
91
|
recce/models/__init__.py,sha256=F7cgALtdWnwv37R0eEgKZ_yBsMwxWnUfo3jAZ3u6qyU,209
|
|
92
92
|
recce/models/check.py,sha256=jjR1SGyczjrqyK-0Zas6ikLIGSgVp54lvfcQA19AniI,1588
|
|
93
93
|
recce/models/run.py,sha256=QK2gvOWvko9YYhd2NLs3BPt5l4MSCZGwpzTAiqx9zJw,1161
|
|
94
|
-
recce/models/types.py,sha256=
|
|
94
|
+
recce/models/types.py,sha256=LVIHjVjxz7O6KijrcBBqgTUnZeVaz-zb0zWKYH2Sw2U,4599
|
|
95
95
|
recce/tasks/__init__.py,sha256=b553AtDHjYROgmMePv_Hv_X3fjh4iEn11gzzpUJz6_o,610
|
|
96
96
|
recce/tasks/core.py,sha256=JFYa1CfgOiRPQ7KVTwMuxJjhMB-pvCwB-xezVt-h3RU,4080
|
|
97
97
|
recce/tasks/dataframe.py,sha256=03UBWwt0DFTXlaEOtnV5i_mxdRKD7UbRayewEL2Ub48,3650
|
|
@@ -109,13 +109,13 @@ recce/util/breaking.py,sha256=evT-xlDWMgIbuPQH6w5yNoDjOqopKzBXnCF9_xTn1S0,12591
|
|
|
109
109
|
recce/util/cache.py,sha256=QB6wzxe0M3jNTwP0M27Ys8F2hF-oda4-LyXXG9THuZQ,646
|
|
110
110
|
recce/util/cll.py,sha256=VXhtyoPIcPEW3_SmNUTbZWwOmmv8_JRfAB9CLJ4S2Wg,13315
|
|
111
111
|
recce/util/io.py,sha256=fNiIafNxPlTF6NNXlugzeJjfVGGrP3RXb39ERzRWD3Q,3459
|
|
112
|
-
recce/util/lineage.py,sha256=
|
|
112
|
+
recce/util/lineage.py,sha256=5vrYjg1POl9RfPbQKx8qj5E8nmYLR7pE_MvN0m1HGG8,4125
|
|
113
113
|
recce/util/logger.py,sha256=6UgLFkRiur9jJfu2ZRdo4LUvMw4f75V-l-1HT1-sgKo,747
|
|
114
114
|
recce/util/pydantic_model.py,sha256=KumKuyCjbTzEMsKLE4-b-eZfp0gLhYDdmVtw1-hxiJw,587
|
|
115
115
|
recce/util/recce_cloud.py,sha256=g7uhWkknR9ulTuGxaz14erOGiUwIv3q3C0mfCEG3gl8,7925
|
|
116
116
|
recce/util/singleton.py,sha256=1cU99I0f9tjuMQLMJyLsK1oK3fZJMsO5-TbRHAMXqds,627
|
|
117
117
|
recce/yaml/__init__.py,sha256=EgXYlFeJZchatUClRDXbIC5Oqb2_nBvB2NqItYVihio,1292
|
|
118
|
-
recce_nightly-1.8.0.
|
|
118
|
+
recce_nightly-1.8.0.20250616.dist-info/licenses/LICENSE,sha256=CQjjMy9aYPhfe8xG_bcpIfKtNkdxLZ5IOb8oPygtUhY,11343
|
|
119
119
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
120
120
|
tests/test_cli.py,sha256=_ikuZW4bYEGyj5A_V7nDSyBa1tVZqc0TVm-TJ0rEYVo,5467
|
|
121
121
|
tests/test_config.py,sha256=ODDFe_XF6gphmSmmc422dGLBaCCmG-IjDzTkD5SJsJE,1557
|
|
@@ -130,7 +130,7 @@ tests/adapter/dbt_adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
|
130
130
|
tests/adapter/dbt_adapter/conftest.py,sha256=WlMVytJcyfLJlMBeYhpk8Q-nyCDR9x_7qgsy6Uh9ECw,386
|
|
131
131
|
tests/adapter/dbt_adapter/dbt_test_helper.py,sha256=o_7m0cnVeGwPwEFXBCx3Me5QqLzQMOBR3dXD-MS2eaM,10406
|
|
132
132
|
tests/adapter/dbt_adapter/test_dbt_adapter.py,sha256=Y5TSlqkXGjJC6hC7YYs45bnRht5aou_KLjPMjpAGxNM,830
|
|
133
|
-
tests/adapter/dbt_adapter/test_dbt_cll.py,sha256=
|
|
133
|
+
tests/adapter/dbt_adapter/test_dbt_cll.py,sha256=7MZN4GYVsFrI2UxIBtFL67nXCzBnl7q1v3E12dvyPLY,9311
|
|
134
134
|
tests/adapter/dbt_adapter/test_selector.py,sha256=uKFm0QxrxG-xyUEXGobCMueCRUssgnZMyo-S1Nlk3_s,6856
|
|
135
135
|
tests/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
136
136
|
tests/tasks/conftest.py,sha256=lyZFx4jEY3To3xVhfMQ-G45egYOCttKN2lxeyExACkY,157
|
|
@@ -143,8 +143,8 @@ tests/tasks/test_row_count.py,sha256=21PaP2aq-x8-pqwzWHRT1sixhQ8g3CQNRWOZTTmbK0s
|
|
|
143
143
|
tests/tasks/test_schema.py,sha256=7ds4Vx8ixaiIWDR49Lvjem4xlPkRP1cXazDRY3roUak,3121
|
|
144
144
|
tests/tasks/test_top_k.py,sha256=YR_GS__DJsbDlQVaEEdJvNQ3fh1VmV5Nb3G7lb0r6YM,1779
|
|
145
145
|
tests/tasks/test_valuediff.py,sha256=_xQJGgxsXoy2NYk_Z6Hsw2FlVh6zk2nN_iUueyRN1e8,2046
|
|
146
|
-
recce_nightly-1.8.0.
|
|
147
|
-
recce_nightly-1.8.0.
|
|
148
|
-
recce_nightly-1.8.0.
|
|
149
|
-
recce_nightly-1.8.0.
|
|
150
|
-
recce_nightly-1.8.0.
|
|
146
|
+
recce_nightly-1.8.0.20250616.dist-info/METADATA,sha256=-eUc6I4ecnXjCJCVtfNe6iv66Ex57U8Nzl59PpN2p6U,9397
|
|
147
|
+
recce_nightly-1.8.0.20250616.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
148
|
+
recce_nightly-1.8.0.20250616.dist-info/entry_points.txt,sha256=oqoY_IiwIqXbgrIsPnlqUqao2eiIeP2dprowkOlmeyg,40
|
|
149
|
+
recce_nightly-1.8.0.20250616.dist-info/top_level.txt,sha256=6PKGVpf75idP0C6KEaldDzzZUauIxNu1ZDstau1pI4I,12
|
|
150
|
+
recce_nightly-1.8.0.20250616.dist-info/RECORD,,
|
|
@@ -186,6 +186,21 @@ def test_model_without_catalog(dbt_test_helper):
|
|
|
186
186
|
assert not result.nodes["model1"].columns
|
|
187
187
|
|
|
188
188
|
|
|
189
|
+
def assert_lineage_model(cll_data: CllData, nodes):
|
|
190
|
+
assert len(nodes) == len(cll_data.lineage_nodes), "Model count mismatch"
|
|
191
|
+
for node in nodes:
|
|
192
|
+
assert node in cll_data.lineage_nodes, f"Model {node} not found in lineage"
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def assert_lineage_column(cll_data: CllData, columns):
|
|
196
|
+
assert len(columns) == len(cll_data.lineage_columns), "Column count mismatch"
|
|
197
|
+
for column in columns:
|
|
198
|
+
column_key = f"{column[0]}_{column[1]}"
|
|
199
|
+
assert column_key in cll_data.lineage_columns, f"Column {column} not found in lineage"
|
|
200
|
+
assert column[0] == cll_data.lineage_columns[column_key].table_id, f"Column {column[0]} node mismatch"
|
|
201
|
+
assert column[1] == cll_data.lineage_columns[column_key].name, f"Column {column[1]} name mismatch"
|
|
202
|
+
|
|
203
|
+
|
|
189
204
|
def test_cll_column_filter(dbt_test_helper):
|
|
190
205
|
dbt_test_helper.create_model(
|
|
191
206
|
"model1", unique_id="model.model1", curr_sql="select 1 as c", curr_columns={"c": "int"}
|
|
@@ -215,25 +230,13 @@ def test_cll_column_filter(dbt_test_helper):
|
|
|
215
230
|
adapter: DbtAdapter = dbt_test_helper.context.adapter
|
|
216
231
|
|
|
217
232
|
result = adapter.get_cll("model.model2", "c")
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
assert_model(result, "model.model4", [])
|
|
221
|
-
assert result.nodes.get("model.model4").columns == {}
|
|
222
|
-
|
|
223
|
-
result = adapter.get_cll("model.model3", "y")
|
|
224
|
-
assert_model(result, "model.model3", [("model.model2", "y")])
|
|
225
|
-
assert result.nodes.get("model.model1").columns == {}
|
|
226
|
-
assert len(result.nodes.get("model.model2").columns) == 1
|
|
233
|
+
assert_lineage_model(result, [])
|
|
234
|
+
assert_lineage_column(result, [("model.model1", "c"), ("model.model2", "c"), ("model.model3", "c")])
|
|
227
235
|
|
|
228
236
|
result = adapter.get_cll("model.model2", "y")
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
assert result.nodes.get("model.model1").columns == {}
|
|
232
|
-
assert len(result.nodes.get("model.model2").columns) == 1
|
|
237
|
+
assert_lineage_model(result, ["model.model3"])
|
|
238
|
+
assert_lineage_column(result, [("model.model2", "y"), ("model.model4", "y")])
|
|
233
239
|
|
|
234
240
|
result = adapter.get_cll("model.model3", "c")
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
assert_model(result, "model.model2", [])
|
|
238
|
-
assert_column(result, "model.model2", "c", "passthrough", [("model.model1", "c")])
|
|
239
|
-
assert_column(result, "model.model1", "c", "source", [])
|
|
241
|
+
assert_lineage_model(result, [])
|
|
242
|
+
assert_lineage_column(result, [("model.model1", "c"), ("model.model2", "c"), ("model.model3", "c")])
|