refact: replace edge_kwrds with metadata in models

This commit is contained in:
Bertrand Benjamin 2025-01-05 18:40:19 +01:00
parent 2f170d91b6
commit 0ae6439217
4 changed files with 31 additions and 8 deletions

View File

@ -28,7 +28,7 @@ class GraphSet:
graph.add_nodes(node_set)
for edge in self._edges:
flatten_edge = [
Edge(arrow=edge.arrow, source=s, target=t, edge_kwrds=edge.edge_kwrds)
Edge(arrow=edge.arrow, source=s, target=t, metadata=edge.metadata)
for (s, t) in product(edge.sources, edge.targets)
]
graph.add_edges(flatten_edge)

View File

@ -3,6 +3,7 @@ from pydantic import BaseModel
class Node(BaseModel):
name: str
metadata: dict = {}
def __hash__(self):
return hash(self.name)
@ -12,11 +13,11 @@ class Edge(BaseModel):
arrow: str
source: Node
target: Node
edge_kwrds: dict = {}
metadata: dict = {}
class EdgeOnSet(BaseModel):
arrow: str
sources: list[Node]
targets: list[Node]
edge_kwrds: dict = {}
metadata: dict = {}

View File

@ -0,0 +1,22 @@
from collections.abc import Callable
from plesna.models.flux import Flux
from plesna.models.graphs import EdgeOnSet, Node
def flux_to_edgeonset(
flux: Flux,
meta_arrow: Callable = lambda flux: flux.id,
meta_table: Callable = lambda table: Node(name=table.id),
) -> EdgeOnSet:
"""Convert a flux to an EdgeOnSet
:param flux: the flux
:meta_arrow: function on flux which returns things to store in arrow field
:meta_table: function on table which returns a Node
"""
return EdgeOnSet(
arrow=meta_arrow(flux),
sources=[meta_table(s) for s in flux.sources],
targets=[meta_table(t) for t in flux.targets],
)

View File

@ -156,13 +156,13 @@ def test_content_from_graphset(dataplatform: DataPlateform):
arrow="foo_flux",
sources=[Node(name="test-raw-username"), Node(name="test-raw-recovery")],
targets=[Node(name="test-bronze-foo")],
edge_kwrds={},
metadata={},
),
EdgeOnSet(
arrow="copy_flux",
sources=[Node(name="test-raw-username")],
targets=[Node(name="test-bronze-username")],
edge_kwrds={},
metadata={},
),
]
@ -181,19 +181,19 @@ def test_content_from_graph(dataplatform: DataPlateform):
arrow="foo_flux",
source=Node(name="test-raw-username"),
target=Node(name="test-bronze-foo"),
edge_kwrds={},
metadata={},
),
Edge(
arrow="foo_flux",
source=Node(name="test-raw-recovery"),
target=Node(name="test-bronze-foo"),
edge_kwrds={},
metadata={},
),
Edge(
arrow="copy_flux",
source=Node(name="test-raw-username"),
target=Node(name="test-bronze-username"),
edge_kwrds={},
metadata={},
),
]