Skip to content

Commit bee5b67

Browse files
committed
chore(deps): replace libgraph with multigraph
1 parent d336ed9 commit bee5b67

15 files changed

Lines changed: 45 additions & 45 deletions

File tree

lib/reactor.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ defmodule Reactor do
138138
inputs: [Reactor.Input.t()],
139139
intermediate_results: %{any => any},
140140
middleware: [Reactor.Middleware.t()],
141-
plan: nil | Graph.t(),
141+
plan: nil | Multigraph.t(),
142142
undo: [{Step.t(), any}],
143143
return: any,
144144
state: state,

lib/reactor/executor.ex

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ defmodule Reactor.Executor do
277277
end
278278

279279
defp all_done(reactor) do
280-
with 0 <- Graph.num_vertices(reactor.plan),
280+
with 0 <- Multigraph.num_vertices(reactor.plan),
281281
{:ok, value} <- Map.fetch(reactor.intermediate_results, reactor.return) do
282282
{:ok, value, %{reactor | state: :successful}}
283283
else
@@ -292,9 +292,9 @@ defmodule Reactor.Executor do
292292
defp find_ready_steps(reactor, state) when state.max_concurrency > 0 do
293293
steps =
294294
reactor.plan
295-
|> Graph.vertices()
295+
|> Multigraph.vertices()
296296
|> Stream.filter(fn
297-
step when is_struct(step, Step) -> Graph.in_degree(reactor.plan, step) == 0
297+
step when is_struct(step, Step) -> Multigraph.in_degree(reactor.plan, step) == 0
298298
_ -> false
299299
end)
300300
|> Enum.take(state.max_concurrency)
@@ -304,9 +304,9 @@ defmodule Reactor.Executor do
304304

305305
defp find_ready_steps(reactor, _state) do
306306
reactor.plan
307-
|> Graph.vertices()
307+
|> Multigraph.vertices()
308308
|> Enum.find(fn
309-
step when is_struct(step, Step) -> Graph.in_degree(reactor.plan, step) == 0
309+
step when is_struct(step, Step) -> Multigraph.in_degree(reactor.plan, step) == 0
310310
_ -> false
311311
end)
312312
|> case do
@@ -319,14 +319,14 @@ defmodule Reactor.Executor do
319319
now = System.monotonic_time(:millisecond)
320320

321321
reactor.plan
322-
|> Graph.vertices()
322+
|> Multigraph.vertices()
323323
|> Enum.filter(&(is_struct(&1, Backoff) && &1.expires_at <= now))
324324
|> case do
325325
[] ->
326326
{:continue, reactor, state}
327327

328328
to_remove ->
329-
{:recurse, %{reactor | plan: Graph.delete_vertices(reactor.plan, to_remove)}, state}
329+
{:recurse, %{reactor | plan: Multigraph.delete_vertices(reactor.plan, to_remove)}, state}
330330
end
331331
end
332332

lib/reactor/executor/async.ex

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ defmodule Reactor.Executor.Async do
117117

118118
plan =
119119
reactor.plan
120-
|> Graph.add_vertex(backoff)
121-
|> Graph.add_edge(backoff, step, label: :backoff)
120+
|> Multigraph.add_vertex(backoff)
121+
|> Multigraph.add_edge(backoff, step, label: :backoff)
122122

123123
reactor = %{reactor | plan: plan}
124124
handle_completed_step(reactor, state, {task, step, result})
@@ -245,7 +245,7 @@ defmodule Reactor.Executor.Async do
245245
end
246246

247247
defp drop_from_plan(reactor, step) do
248-
%{reactor | plan: Graph.delete_vertex(reactor.plan, step)}
248+
%{reactor | plan: Multigraph.delete_vertex(reactor.plan, step)}
249249
end
250250

251251
defp add_error(state, error) do
@@ -269,7 +269,7 @@ defmodule Reactor.Executor.Async do
269269
end
270270

271271
defp maybe_store_intermediate_result(reactor, step, value) do
272-
if Graph.out_degree(reactor.plan, step) > 0 do
272+
if Multigraph.out_degree(reactor.plan, step) > 0 do
273273
store_intermediate_result(reactor, step, value)
274274
else
275275
reactor
@@ -305,7 +305,7 @@ defmodule Reactor.Executor.Async do
305305
completed_step_results
306306
|> Enum.filter(fn
307307
{step, {:ok, _, []}} ->
308-
Graph.out_degree(reactor.plan, step) > 0 || reactor.return == step.name
308+
Multigraph.out_degree(reactor.plan, step) > 0 || reactor.return == step.name
309309

310310
{_step, {:ok, _, _}} ->
311311
true
@@ -386,7 +386,7 @@ defmodule Reactor.Executor.Async do
386386
defp add_task_edges(reactor, started_tasks) do
387387
plan =
388388
Enum.reduce(started_tasks, reactor.plan, fn {task, step}, plan ->
389-
Graph.add_edge(plan, task, step, label: :executing)
389+
Multigraph.add_edge(plan, task, step, label: :executing)
390390
end)
391391

392392
%{reactor | plan: plan}
@@ -395,12 +395,12 @@ defmodule Reactor.Executor.Async do
395395
defp delete_vertices(reactor, []), do: reactor
396396

397397
defp delete_vertices(reactor, completed_tasks),
398-
do: %{reactor | plan: Graph.delete_vertices(reactor.plan, completed_tasks)}
398+
do: %{reactor | plan: Multigraph.delete_vertices(reactor.plan, completed_tasks)}
399399

400400
defp delete_all_task_vertices(reactor) do
401401
task_vertices =
402402
reactor.plan
403-
|> Graph.vertices()
403+
|> Multigraph.vertices()
404404
|> Enum.filter(&is_struct(&1, Task))
405405

406406
delete_vertices(reactor, task_vertices)

lib/reactor/executor/hooks.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ defmodule Reactor.Executor.Hooks do
116116
defp step_count(reactor) when is_nil(reactor.plan), do: length(reactor.steps)
117117

118118
defp step_count(reactor) do
119-
vertices = Graph.num_vertices(reactor.plan)
119+
vertices = Multigraph.num_vertices(reactor.plan)
120120
length(reactor.steps) + vertices
121121
end
122122
end

lib/reactor/executor/step_runner.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ defmodule Reactor.Executor.StepRunner do
500500

501501
graph ->
502502
graph
503-
|> Graph.in_edges(step)
503+
|> Multigraph.in_edges(step)
504504
|> Enum.filter(fn
505505
{_, _, {:nested_dependency, _, _, :for, _}} -> true
506506
_ -> false

lib/reactor/executor/sync.ex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ defmodule Reactor.Executor.Sync do
3535

3636
plan =
3737
reactor.plan
38-
|> Graph.add_vertex(backoff)
39-
|> Graph.add_edge(backoff, step, label: :backoff)
38+
|> Multigraph.add_vertex(backoff)
39+
|> Multigraph.add_edge(backoff, step, label: :backoff)
4040

4141
reactor = %{reactor | plan: plan}
4242
handle_completed_step(reactor, state, step, result)
@@ -110,7 +110,7 @@ defmodule Reactor.Executor.Sync do
110110
end
111111

112112
defp drop_from_plan(reactor, step) do
113-
%{reactor | plan: Graph.delete_vertex(reactor.plan, step)}
113+
%{reactor | plan: Multigraph.delete_vertex(reactor.plan, step)}
114114
end
115115

116116
defp maybe_store_undo(reactor, step, value, state) do
@@ -126,7 +126,7 @@ defmodule Reactor.Executor.Sync do
126126
end
127127

128128
defp maybe_store_intermediate_result(reactor, step, value) do
129-
if Graph.out_degree(reactor.plan, step) > 0 do
129+
if Multigraph.out_degree(reactor.plan, step) > 0 do
130130
store_intermediate_result(reactor, step, value)
131131
else
132132
reactor

lib/reactor/mermaid/reactor.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ defmodule Reactor.Mermaid.Reactor do
8484
options = Keyword.put(options, :reactor_id, reactor.id)
8585

8686
reactor.plan
87-
|> Graph.vertices()
87+
|> Multigraph.vertices()
8888
|> map_while_ok(&Step.to_mermaid(&1, options))
8989
end
9090
end

lib/reactor/planner.ex

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,26 +50,26 @@ defmodule Reactor.Planner do
5050
@doc false
5151
def get_ref(%{ref: ref}), do: ref
5252

53-
defp empty_graph, do: Graph.new(type: :directed, vertex_identifier: &__MODULE__.get_ref/1)
53+
defp empty_graph, do: Multigraph.new(type: :directed, vertex_identifier: &__MODULE__.get_ref/1)
5454

5555
defp reduce_steps_into_graph(graph, steps, intermediate_results) do
5656
steps_by_name =
5757
graph
58-
|> Graph.vertices()
58+
|> Multigraph.vertices()
5959
|> Stream.filter(&is_struct(&1, Step))
6060
|> Stream.concat(steps)
6161
|> Map.new(&{&1.name, &1})
6262

6363
steps
6464
|> reduce_while_ok(graph, fn
6565
step, graph when is_struct(step, Step) ->
66-
if Graph.has_vertex?(graph, step) do
66+
if Multigraph.has_vertex?(graph, step) do
6767
graph
68-
|> Graph.replace_vertex(step, step)
68+
|> Multigraph.replace_vertex(step, step)
6969
|> reduce_arguments_into_graph(step, steps_by_name, intermediate_results)
7070
else
7171
graph
72-
|> Graph.add_vertex(step, step.name)
72+
|> Multigraph.add_vertex(step, step.name)
7373
|> reduce_arguments_into_graph(step, steps_by_name, intermediate_results)
7474
end
7575

@@ -107,7 +107,7 @@ defmodule Reactor.Planner do
107107

108108
{:ok, dependency} ->
109109
{:ok,
110-
Graph.add_edge(graph, dependency, current_step,
110+
Multigraph.add_edge(graph, dependency, current_step,
111111
label: {:argument, argument.name, :for, current_step.name}
112112
)}
113113

@@ -157,7 +157,7 @@ defmodule Reactor.Planner do
157157
{:ok, dependency} when dependency.name != containing_step.name ->
158158
# This is a cross-scope dependency - add it as a nested dependency edge
159159
{:ok,
160-
Graph.add_edge(graph, dependency, containing_step,
160+
Multigraph.add_edge(graph, dependency, containing_step,
161161
label:
162162
{:nested_dependency, nested_step.name, argument.name, :for, containing_step.name}
163163
)}
@@ -178,7 +178,7 @@ defmodule Reactor.Planner do
178178
# This is a cross-scope element reference - track it as a nested dependency
179179
# We'll need to pass the element value through the context
180180
{:ok,
181-
Graph.add_edge(graph, map_step, containing_step,
181+
Multigraph.add_edge(graph, map_step, containing_step,
182182
label:
183183
{:nested_element_dependency, nested_step.name, argument.name, element_name, :for,
184184
containing_step.name}
@@ -195,7 +195,7 @@ defmodule Reactor.Planner do
195195
end
196196

197197
defp assert_graph_not_cyclic(reactor, graph) do
198-
if Graph.is_acyclic?(graph) do
198+
if Multigraph.is_acyclic?(graph) do
199199
:ok
200200
else
201201
{:error,

mix.exs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,12 @@ defmodule Reactor.MixProject do
129129
# Run "mix help deps" to learn about dependencies.
130130
defp deps do
131131
[
132-
{:spark, "~> 2.3 and >= 2.3.3"},
133-
{:splode, "~> 0.2"},
134-
{:libgraph, "~> 0.16"},
135132
{:igniter, "~> 0.4", optional: true},
136133
{:iterex, "~> 0.1"},
137134
{:jason, "~> 1.0"},
135+
{:multigraph, "~> 0.16.1-mg.2"},
136+
{:spark, "~> 2.3 and >= 2.3.3"},
137+
{:splode, "~> 0.2"},
138138
{:telemetry, "~> 1.2"},
139139
{:yaml_elixir, "~> 2.11"},
140140
{:ymlr, "~> 5.0"},

mix.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
"igniter": {:hex, :igniter, "0.7.7", "08bae07b7b610100bc7c676e6b18130fe12bb90617982023cc798346879c2c5f", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "caeb1227887362b22038ff8419a7e6ddd3888f3d7e6cffacb14c73abbce17600"},
1919
"iterex": {:hex, :iterex, "0.1.2", "58f9b9b9a22a55cbfc7b5234a9c9c63eaac26d276b3db80936c0e1c60355a5a6", [:mix], [], "hexpm", "2e103b8bcc81757a9af121f6dc0df312c9a17220f302b1193ef720460d03029d"},
2020
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
21-
"libgraph": {:hex, :libgraph, "0.16.0", "3936f3eca6ef826e08880230f806bfea13193e49bf153f93edcf0239d4fd1d07", [:mix], [], "hexpm", "41ca92240e8a4138c30a7e06466acc709b0cbb795c643e9e17174a178982d6bf"},
2221
"makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"},
2322
"makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"},
2423
"makeup_erlang": {:hex, :makeup_erlang, "1.0.3", "4252d5d4098da7415c390e847c814bad3764c94a814a0b4245176215615e1035", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "953297c02582a33411ac6208f2c6e55f0e870df7f80da724ed613f10e6706afd"},
2524
"mime": {:hex, :mime, "2.0.7", "b8d739037be7cd402aee1ba0306edfdef982687ee7e9859bee6198c1e7e2f128", [:mix], [], "hexpm", "6171188e399ee16023ffc5b76ce445eb6d9672e2e241d2df6050f3c771e80ccd"},
2625
"mimic": {:hex, :mimic, "2.3.0", "88b1d13c285e57df6ea57204317bb56e49e7329668006cdcb80a9aafc73a9616", [:mix], [{:ham, "~> 0.3", [hex: :ham, repo: "hexpm", optional: false]}], "hexpm", "52771f23689398c5d41c7d05e91c2c28e10df273b784f40ca8b02e35e46850d3"},
2726
"mint": {:hex, :mint, "1.7.1", "113fdb2b2f3b59e47c7955971854641c61f378549d73e829e1768de90fc1abf1", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1 or ~> 0.2.0 or ~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "fceba0a4d0f24301ddee3024ae116df1c3f4bb7a563a731f45fdfeb9d39a231b"},
2827
"mix_audit": {:hex, :mix_audit, "2.1.5", "c0f77cee6b4ef9d97e37772359a187a166c7a1e0e08b50edf5bf6959dfe5a016", [:make, :mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:yaml_elixir, "~> 2.11", [hex: :yaml_elixir, repo: "hexpm", optional: false]}], "hexpm", "87f9298e21da32f697af535475860dc1d3617a010e0b418d2ec6142bc8b42d69"},
28+
"multigraph": {:hex, :multigraph, "0.16.1-mg.3", "08051b7108ad870f24393e6f0c15ac8beb5c527942ed63800ece7fbb771f8c79", [:mix], [], "hexpm", "72897c5c175aa605cf7355b8f73972e8eadc40ebc6ffd43c3e790424a753d468"},
2929
"nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"},
3030
"nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"},
3131
"nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"},

0 commit comments

Comments
 (0)