Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "DataGraphs"
uuid = "b5a273c3-7e6c-41f6-98bd-8d7f1525a36a"
authors = ["Matthew Fishman <mfishman@flatironinstitute.org> and contributors"]
version = "0.2.7"
version = "0.2.8"

[deps]
Dictionaries = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4"
Expand All @@ -19,7 +19,7 @@ DataGraphsGraphsFlowsExt = "GraphsFlows"
Dictionaries = "0.4"
Graphs = "1"
GraphsFlows = "0.1.1"
NamedGraphs = "0.6.0"
NamedGraphs = "0.6.9"
SimpleTraits = "0.9"
julia = "1.7"

Expand Down
1 change: 0 additions & 1 deletion src/DataGraphs.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ module DataGraphs
include("utils.jl")
include("traits/isunderlyinggraph.jl")
include("abstractdatagraph.jl")
include("arrange.jl")
include("datagraph.jl")
# TODO: Turn into a weak dependency once `GraphsExtensions`
# is split off from `NamedGraphs`.
Expand Down
36 changes: 19 additions & 17 deletions src/abstractdatagraph.jl
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ using Graphs:
nv,
steiner_tree,
vertices
using NamedGraphs.GraphsExtensions: GraphsExtensions, incident_edges, vertextype
using NamedGraphs.GraphsExtensions:
GraphsExtensions, arrange_edge, incident_edges, is_edge_arranged, vertextype
using NamedGraphs.SimilarType: similar_type
using SimpleTraits: SimpleTraits, Not, @traitfn

Expand Down Expand Up @@ -157,6 +158,11 @@ end

@traitfn GraphsExtensions.directed_graph(graph::AbstractDataGraph::IsDirected) = graph

reverse_data_direction(graph::AbstractDataGraph, data) = data
function reverse_data_direction(graph::AbstractDataGraph, edge::AbstractEdge, data)
return is_edge_arranged(graph, edge) ? data : reverse_data_direction(graph, data)
end

@traitfn function GraphsExtensions.directed_graph(graph::AbstractDataGraph::(!IsDirected))
digraph = directed_graph(typeof(graph))(directed_graph(underlying_graph(graph)))
for v in vertices(graph)
Expand Down Expand Up @@ -335,9 +341,8 @@ function Base.get!(graph::AbstractDataGraph, vertex, default)
end

function Base.getindex(graph::AbstractDataGraph, edge::AbstractEdge)
is_edge_arranged_ = is_edge_arranged(graph, edge)
data = edge_data(graph)[arrange(is_edge_arranged_, edge)]
return reverse_data_direction(is_edge_arranged_, graph, data)
data = edge_data(graph)[arrange_edge(graph, edge)]
return reverse_data_direction(graph, edge, data)
end

# Support syntax `g[v1 => v2]`
Expand All @@ -346,19 +351,17 @@ function Base.getindex(graph::AbstractDataGraph, edge::Pair)
end

function Base.get(graph::AbstractDataGraph, edge::AbstractEdge, default)
is_edge_arranged_ = is_edge_arranged(graph, edge)
data = get(edge_data(graph), arrange(is_edge_arranged_, edge), default)
return reverse_data_direction(is_edge_arranged_, graph, data)
data = get(edge_data(graph), arrange_edge(graph, edge), default)
return reverse_data_direction(graph, edge, data)
end

function Base.get(graph::AbstractDataGraph, edge::Pair, default)
return get(graph, edgetype(graph)(edge), default)
end

function Base.get!(graph::AbstractDataGraph, edge::AbstractEdge, default)
is_edge_arranged_ = is_edge_arranged(graph, edge)
data = get!(edge_data(graph), arrange(is_edge_arranged_, edge), default)
return reverse_data_direction(is_edge_arranged_, graph, data)
data = get!(edge_data(graph), arrange_edge(graph, edge), default)
return reverse_data_direction(graph, edge, data)
end

function Base.get!(graph::AbstractDataGraph, edge::Pair, default)
Expand All @@ -374,12 +377,12 @@ function Base.isassigned(graph::AbstractDataGraph, vertex)
return isassigned(vertex_data(graph), vertex)
end

function Base.isassigned(graph::AbstractDataGraph, vertex::AbstractEdge)
return isassigned(edge_data(graph), arrange(graph, vertex))
function Base.isassigned(graph::AbstractDataGraph, edge::AbstractEdge)
return isassigned(edge_data(graph), arrange_edge(graph, edge))
end

function Base.isassigned(graph::AbstractDataGraph, vertex::Pair)
return isassigned(graph, edgetype(graph)(vertex))
function Base.isassigned(graph::AbstractDataGraph, edge::Pair)
return isassigned(graph, edgetype(graph)(edge))
end

function Base.setindex!(graph::AbstractDataGraph, data, vertex)
Expand All @@ -388,9 +391,8 @@ function Base.setindex!(graph::AbstractDataGraph, data, vertex)
end

function Base.setindex!(graph::AbstractDataGraph, data, edge::AbstractEdge)
is_edge_arranged_ = is_edge_arranged(graph, edge)
arranged_edge = arrange(is_edge_arranged_, edge)
arranged_data = reverse_data_direction(is_edge_arranged_, graph, data)
arranged_edge = arrange_edge(graph, edge)
arranged_data = reverse_data_direction(graph, edge, data)
set!(edge_data(graph), arranged_edge, arranged_data)
return graph
end
Expand Down
63 changes: 0 additions & 63 deletions src/arrange.jl

This file was deleted.

29 changes: 1 addition & 28 deletions test/test_basics.jl
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
using DataGraphs:
DataGraphs,
DataGraph,
edge_data,
edge_data_eltype,
is_arranged,
vertex_data,
vertex_data_eltype
DataGraphs, DataGraph, edge_data, edge_data_eltype, vertex_data, vertex_data_eltype
using Dictionaries: AbstractIndices, Dictionary, Indices, dictionary
using Graphs:
add_edge!,
Expand Down Expand Up @@ -37,8 +31,6 @@ using NamedGraphs.NamedGraphGenerators: named_grid, named_path_graph
using NamedGraphs.OrdinalIndexing: nd, st, rd, th
using Test: @test, @test_broken, @testset

using DataGraphs: is_arranged

@testset "DataGraphs.jl" begin
@eval module $(gensym())
using DataGraphs: DataGraphs
Expand All @@ -54,25 +46,6 @@ using DataGraphs: is_arranged
end
end

@testset "is_arranged" begin
for (a, b) in [
(1, 2),
([1], [2]),
([1, 2], [2, 1]),
([1, 2], [2]),
([2], [2, 1]),
((1,), (2,)),
((1, 2), (2, 1)),
((1, 2), (2,)),
((2,), (2, 1)),
("X", 1),
(("X",), (1, 2)),
]
@test is_arranged(a, b)
@test !is_arranged(b, a)
end
end

@testset "Basics" begin
g = grid((4,))
dg = DataGraph(g; vertex_data_eltype=String, edge_data_eltype=Symbol)
Expand Down
Loading