chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import networkx as nx
|
||||
|
||||
from graphify.multigraph_compat import (
|
||||
CapabilityCheck,
|
||||
MultigraphCapabilityResult,
|
||||
probe_multigraph_capabilities,
|
||||
require_multigraph_capabilities,
|
||||
)
|
||||
|
||||
|
||||
def test_probe_multigraph_capabilities_passes_current_runtime() -> None:
|
||||
result = probe_multigraph_capabilities()
|
||||
|
||||
assert result.ok, result.error_message()
|
||||
assert result.python_version
|
||||
assert result.networkx_version
|
||||
assert {check.name for check in result.checks} == {
|
||||
"keyed_parallel_edges",
|
||||
"node_link_edges_links_round_trip",
|
||||
"duplicate_key_overwrite_semantics",
|
||||
"reserved_key_attr_rejected",
|
||||
"remove_edges_from_two_tuple_semantics",
|
||||
"to_undirected_preserves_multigraph_type",
|
||||
}
|
||||
|
||||
|
||||
def test_require_multigraph_capabilities_returns_result() -> None:
|
||||
result = require_multigraph_capabilities()
|
||||
|
||||
assert result.ok
|
||||
|
||||
|
||||
def test_failure_message_is_actionable() -> None:
|
||||
result = MultigraphCapabilityResult(
|
||||
python_version="3.10.0",
|
||||
networkx_version="0.0",
|
||||
checks=(CapabilityCheck("node_link_edges_links_round_trip", False, "boom"),),
|
||||
)
|
||||
|
||||
message = result.error_message()
|
||||
|
||||
assert "--multigraph requires NetworkX keyed MultiDiGraph node-link" in message
|
||||
assert "Default simple graph mode remains available" in message
|
||||
assert "node_link_edges_links_round_trip: boom" in message
|
||||
|
||||
|
||||
def test_networkx_duplicate_key_overwrite_trap_is_real() -> None:
|
||||
graph = nx.MultiDiGraph()
|
||||
|
||||
graph.add_edge("a", "b", key="same", relation="first")
|
||||
graph.add_edge("a", "b", key="same", relation="second")
|
||||
|
||||
assert graph.number_of_edges("a", "b") == 1
|
||||
assert graph["a"]["b"]["same"]["relation"] == "second"
|
||||
Reference in New Issue
Block a user