refact: replace edge_kwrds with metadata in models
This commit is contained in:
parent
2f170d91b6
commit
0ae6439217
@ -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)
|
||||
|
@ -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 = {}
|
||||
|
22
plesna/models/libs/flux_graph.py
Normal file
22
plesna/models/libs/flux_graph.py
Normal 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],
|
||||
)
|
@ -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={},
|
||||
),
|
||||
]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user