sql-glider 0.1.5__py3-none-any.whl → 0.1.7__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.
- {sql_glider-0.1.5.dist-info → sql_glider-0.1.7.dist-info}/METADATA +1 -1
- {sql_glider-0.1.5.dist-info → sql_glider-0.1.7.dist-info}/RECORD +8 -8
- sqlglider/_version.py +2 -2
- sqlglider/graph/builder.py +5 -4
- sqlglider/lineage/analyzer.py +6 -0
- {sql_glider-0.1.5.dist-info → sql_glider-0.1.7.dist-info}/WHEEL +0 -0
- {sql_glider-0.1.5.dist-info → sql_glider-0.1.7.dist-info}/entry_points.txt +0 -0
- {sql_glider-0.1.5.dist-info → sql_glider-0.1.7.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sql-glider
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: SQL Utility Toolkit for better understanding, use, and governance of your queries in a native environment.
|
|
5
5
|
Project-URL: Homepage, https://github.com/rycowhi/sql-glider/
|
|
6
6
|
Project-URL: Repository, https://github.com/rycowhi/sql-glider/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
sqlglider/__init__.py,sha256=gDf7s52dMcX7JuCZ1SLawcB1vb3U0yJCohu9RQAATBY,125
|
|
2
|
-
sqlglider/_version.py,sha256=
|
|
2
|
+
sqlglider/_version.py,sha256=szvPIs2C82UunpzuvVg3MbF4QhzbBYTsVJ8DmPfq6_E,704
|
|
3
3
|
sqlglider/cli.py,sha256=9sweHRVLk2iBSzCzT2Gcj8y1g1XKzq26iApQsMaFbx4,51786
|
|
4
4
|
sqlglider/global_models.py,sha256=2vyJXAuXOsXQpE-D3F0ejj7eR9z0nDWFjTkielhzM8k,356
|
|
5
5
|
sqlglider/catalog/__init__.py,sha256=2PqFPyzFXJ14FpSUcBmVK2L-a_ypWQHAbHFHxLDk_LE,814
|
|
@@ -11,13 +11,13 @@ sqlglider/dissection/analyzer.py,sha256=-GD3-lTbfBthq1BW6HiDjvJx2y4LDmnUVHIVIb0H
|
|
|
11
11
|
sqlglider/dissection/formatters.py,sha256=M7gsmTNljRIeLIRv4D0vHvqJVrTqWSpsg7vem83zSzY,7302
|
|
12
12
|
sqlglider/dissection/models.py,sha256=RRD3RIteqbUBY6e-74skKDvMH3qeAUaqA2sFcrjP5GQ,3618
|
|
13
13
|
sqlglider/graph/__init__.py,sha256=4DDdrPM75CmeQWt7wHdBsjCm1s70BHGLYdijIbaUEKY,871
|
|
14
|
-
sqlglider/graph/builder.py,sha256=
|
|
14
|
+
sqlglider/graph/builder.py,sha256=nIddZjGerklkB8NbhVPx2nsMqFI5gZCrFVKVnxuCgms,11944
|
|
15
15
|
sqlglider/graph/merge.py,sha256=uUZlm4BN3S9gRL66Cc2mzhbtuh4SVAv2n4cN4eUEQBU,4077
|
|
16
16
|
sqlglider/graph/models.py,sha256=EYmjv_WzDSNp_WfhJ6H-qBIOkAcoNKS7GRUryfKrHuY,9330
|
|
17
17
|
sqlglider/graph/query.py,sha256=LHU8Cvn7ZPPSEnqdDn2pF8f1_LQjIvNIrZqs8cFlb6U,9433
|
|
18
18
|
sqlglider/graph/serialization.py,sha256=7JJo31rwSlxnDhdqdTJdK4Dr_ZcSYetXfx3_CmndSac,2662
|
|
19
19
|
sqlglider/lineage/__init__.py,sha256=llXMeI5_PIZaiBo8tKk3-wOubF4m_6QBHbn1FtWxT7k,256
|
|
20
|
-
sqlglider/lineage/analyzer.py,sha256=
|
|
20
|
+
sqlglider/lineage/analyzer.py,sha256=Vfh0g9xVEEUkQ87KZlCcZVPltDJ6Uos67PBtDyQ_i8U,64679
|
|
21
21
|
sqlglider/lineage/formatters.py,sha256=_Y9wcTX4JXn1vVnZ1xI656g1FF2rMjcAVc-GHjbd9QA,10389
|
|
22
22
|
sqlglider/templating/__init__.py,sha256=g3_wb6rSDI0usq2UUMDpn-J5kVwlAw3NtLdwbxL6UHs,1435
|
|
23
23
|
sqlglider/templating/base.py,sha256=y5bWAW7qXl_4pPyo5KycfHwNVvt1-7slZ63DAsvTE1s,2902
|
|
@@ -27,8 +27,8 @@ sqlglider/templating/variables.py,sha256=5593PtLBcOxsnMCSRm2pGAD5I0Y9f__VV3_J_Hf
|
|
|
27
27
|
sqlglider/utils/__init__.py,sha256=KGp9-UzKz_OFBOTFoSy-g-NXDZsvyWXG_9-1zcC6ePE,276
|
|
28
28
|
sqlglider/utils/config.py,sha256=iNJgSXFw3pmL2MCdvW3SJp4X2T3AQP2QyQuXIXT-6H0,4761
|
|
29
29
|
sqlglider/utils/file_utils.py,sha256=5_ff28E0r1R7emZzsOnRuHd-7zIX6873eyr1SuPEr4E,1093
|
|
30
|
-
sql_glider-0.1.
|
|
31
|
-
sql_glider-0.1.
|
|
32
|
-
sql_glider-0.1.
|
|
33
|
-
sql_glider-0.1.
|
|
34
|
-
sql_glider-0.1.
|
|
30
|
+
sql_glider-0.1.7.dist-info/METADATA,sha256=Ng-ht-OuykiQWWUjD364MekChFKLNFW8qYkEIxcYZuc,28445
|
|
31
|
+
sql_glider-0.1.7.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
32
|
+
sql_glider-0.1.7.dist-info/entry_points.txt,sha256=HDuakHqHS5C0HFKsMIxMYmDU7-BLBGrnIJcYaVRu-s0,251
|
|
33
|
+
sql_glider-0.1.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
34
|
+
sql_glider-0.1.7.dist-info/RECORD,,
|
sqlglider/_version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.1.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 1,
|
|
31
|
+
__version__ = version = '0.1.7'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 1, 7)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
sqlglider/graph/builder.py
CHANGED
|
@@ -114,7 +114,7 @@ class GraphBuilder:
|
|
|
114
114
|
)
|
|
115
115
|
|
|
116
116
|
# Add edge (source contributes_to target) - deduplicate
|
|
117
|
-
edge_key = (item.source_name, item.output_name)
|
|
117
|
+
edge_key = (item.source_name.lower(), item.output_name.lower())
|
|
118
118
|
if edge_key not in self._edge_set:
|
|
119
119
|
edge = GraphEdge(
|
|
120
120
|
source_node=item.source_name,
|
|
@@ -280,8 +280,9 @@ class GraphBuilder:
|
|
|
280
280
|
Returns:
|
|
281
281
|
rustworkx node index
|
|
282
282
|
"""
|
|
283
|
-
|
|
284
|
-
|
|
283
|
+
key = identifier.lower()
|
|
284
|
+
if key in self._node_index_map:
|
|
285
|
+
return self._node_index_map[key]
|
|
285
286
|
|
|
286
287
|
node = GraphNode.from_identifier(
|
|
287
288
|
identifier=identifier,
|
|
@@ -290,7 +291,7 @@ class GraphBuilder:
|
|
|
290
291
|
)
|
|
291
292
|
|
|
292
293
|
node_idx = self.graph.add_node(node.model_dump())
|
|
293
|
-
self._node_index_map[
|
|
294
|
+
self._node_index_map[key] = node_idx
|
|
294
295
|
return node_idx
|
|
295
296
|
|
|
296
297
|
def build(self) -> LineageGraph:
|
sqlglider/lineage/analyzer.py
CHANGED
|
@@ -1412,10 +1412,16 @@ class LineageAnalyzer:
|
|
|
1412
1412
|
columns.extend(self._resolve_source_columns(source, select_node))
|
|
1413
1413
|
|
|
1414
1414
|
# Handle JOIN clauses - collect columns from all joined tables
|
|
1415
|
+
# EXCEPT for SEMI and ANTI joins which only return left table columns
|
|
1415
1416
|
joins = select_node.args.get("joins")
|
|
1416
1417
|
if joins:
|
|
1417
1418
|
for join in joins:
|
|
1418
1419
|
if isinstance(join, exp.Join):
|
|
1420
|
+
# SEMI and ANTI joins don't include right table columns in SELECT *
|
|
1421
|
+
join_kind = join.kind
|
|
1422
|
+
if join_kind in ("SEMI", "ANTI"):
|
|
1423
|
+
# Skip right table columns for SEMI/ANTI joins
|
|
1424
|
+
continue
|
|
1419
1425
|
join_source = join.this
|
|
1420
1426
|
columns.extend(
|
|
1421
1427
|
self._resolve_source_columns(join_source, select_node)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|