Package evaluation to test JupyterPlutoConverter on Julia 1.14.0-DEV.2373 (cf67ecc88f*) started at 2026-06-13T17:49:46.392 ################################################################################ # Set-up # Installing PkgEval dependencies (TestEnv)... Activating project at `~/.julia/environments/v1.14` Set-up completed after 15.37s ################################################################################ # Installation # Installing JupyterPlutoConverter... Resolving package versions... Installed RelocatableFolders ────────── v1.0.1 Installed ConcurrentUtilities ───────── v2.5.1 Installed URIs ──────────────────────── v1.6.1 Installed CodecZlib ─────────────────── v0.7.8 Installed PlutoDependencyExplorer ───── v1.2.2 Installed TranscodingStreams ────────── v0.11.3 Installed Configurations ────────────── v0.17.6 Installed Tricks ────────────────────── v0.1.13 Installed ExpressionExplorer ────────── v1.1.4 Installed JupyterPlutoConverter ─────── v0.1.2 Installed ExceptionUnwrapping ───────── v0.1.11 Installed GracefulPkg ───────────────── v2.4.3 Installed IteratorInterfaceExtensions ─ v1.0.0 Installed OrderedCollections ────────── v1.8.2 Installed DataAPI ───────────────────── v1.16.0 Installed PrecompileSignatures ──────── v3.0.3 Installed ExproniconLite ────────────── v0.10.14 Installed DataValueInterfaces ───────── v1.0.0 Installed MbedTLS ───────────────────── v1.1.10 Installed Compat ────────────────────── v4.18.1 Installed Malt ──────────────────────── v1.4.1 Installed OpenSSL ───────────────────── v1.6.1 Installed PrecompileTools ───────────── v1.3.4 Installed BitFlags ──────────────────── v0.1.10 Installed MIMEs ─────────────────────── v1.1.0 Installed LoggingExtras ─────────────── v1.2.0 Installed JSON ──────────────────────── v0.21.4 Installed Parsers ───────────────────── v2.8.5 Installed LazilyInitializedFields ───── v1.3.0 Installed HTTP ──────────────────────── v1.11.0 Installed MsgPack ───────────────────── v1.2.1 Installed Tables ────────────────────── v1.12.1 Installed Scratch ───────────────────── v1.3.0 Installed SimpleBufferStream ────────── v1.2.0 Installed RegistryInstances ─────────── v0.1.0 Installed HypertextLiteral ──────────── v1.0.0 Installed TableTraits ───────────────── v1.0.1 Installed MbedTLS_jll ───────────────── v2.28.1010+0 Installed Preferences ───────────────── v1.5.2 Installed JLLWrappers ───────────────── v1.8.0 Installed LRUCache ──────────────────── v1.6.2 Installed Pluto ─────────────────────── v0.20.28 Installing 1 artifacts Installed artifact MbedTLS 2.2 MiB Updating `~/.julia/environments/v1.14/Project.toml` [1eb89384] + JupyterPlutoConverter v0.1.2 Updating `~/.julia/environments/v1.14/Manifest.toml` [d1d4a3ce] + BitFlags v0.1.10 [944b1d66] + CodecZlib v0.7.8 [34da2185] + Compat v4.18.1 [f0e56b4a] + ConcurrentUtilities v2.5.1 [5218b696] + Configurations v0.17.6 [9a962f9c] + DataAPI v1.16.0 [e2d170a0] + DataValueInterfaces v1.0.0 [460bff9d] + ExceptionUnwrapping v0.1.11 [21656369] + ExpressionExplorer v1.1.4 [55351af7] + ExproniconLite v0.10.14 [828d9ff0] + GracefulPkg v2.4.3 ⌅ [cd3eb016] + HTTP v1.11.0 [ac1192a8] + HypertextLiteral v1.0.0 [82899510] + IteratorInterfaceExtensions v1.0.0 [692b3bcd] + JLLWrappers v1.8.0 ⌅ [682c06a0] + JSON v0.21.4 [1eb89384] + JupyterPlutoConverter v0.1.2 [8ac3fa9e] + LRUCache v1.6.2 [0e77f7df] + LazilyInitializedFields v1.3.0 [e6f89c97] + LoggingExtras v1.2.0 [6c6e2e6c] + MIMEs v1.1.0 [36869731] + Malt v1.4.1 [739be429] + MbedTLS v1.1.10 [99f44e22] + MsgPack v1.2.1 [4d8831e6] + OpenSSL v1.6.1 ⌅ [bac558e1] + OrderedCollections v1.8.2 [69de0a69] + Parsers v2.8.5 ⌅ [c3e4b0f8] + Pluto v0.20.28 [72656b73] + PlutoDependencyExplorer v1.2.2 [91cefc8d] + PrecompileSignatures v3.0.3 [aea7be01] + PrecompileTools v1.3.4 [21216c6a] + Preferences v1.5.2 [2792f1a3] + RegistryInstances v0.1.0 [05181044] + RelocatableFolders v1.0.1 [6c6a2e73] + Scratch v1.3.0 [777ac1f9] + SimpleBufferStream v1.2.0 [3783bdb8] + TableTraits v1.0.1 [bd369af6] + Tables v1.12.1 [3bb67fe8] + TranscodingStreams v0.11.3 [410a4b4d] + Tricks v0.1.13 [5c2747f8] + URIs v1.6.1 [c8ffd9c3] + MbedTLS_jll v2.28.1010+0 [0dad84c5] + ArgTools v1.2.0 [56f22d72] + Artifacts v1.11.0 [2a0f44e3] + Base64 v1.11.0 [ade2ca70] + Dates v1.11.0 [8ba89e20] + Distributed v1.11.0 [f43a241f] + Downloads v1.7.0 [7b1f6079] + FileWatching v1.11.0 [b77e0a4c] + InteractiveUtils v1.11.0 [ac6e5ff7] + JuliaSyntaxHighlighting v1.13.0 [b27032c2] + LibCURL v1.0.0 [76f85450] + LibGit2 v1.11.0 [8f399da3] + Libdl v1.11.0 [56ddb016] + Logging v1.11.0 [d6f4376e] + Markdown v1.11.0 [a63ad114] + Mmap v1.11.0 [ca575930] + NetworkOptions v1.3.0 [44cfe95a] + Pkg v1.14.0 [de0858da] + Printf v1.11.0 [3fa0cd96] + REPL v1.11.0 [9a3f8284] + Random v1.11.0 [ea8e919c] + SHA v1.13.0 [9e88b42a] + Serialization v1.11.0 [6462fe0b] + Sockets v1.11.0 [f489334b] + StyledStrings v1.13.0 [fa267f1f] + TOML v1.0.3 [a4e569a6] + Tar v1.10.0 [8dfed614] + Test v1.11.0 [cf7118a7] + UUIDs v1.11.0 [4ec0a83e] + Unicode v1.11.0 [e66e0078] + CompilerSupportLibraries_jll v1.5.2+0 [deac9b47] + LibCURL_jll v8.20.0+1 [e37daf67] + LibGit2_jll v1.9.4+0 [29816b5a] + LibSSH2_jll v1.11.101+0 [14a3606d] + MozillaCACerts_jll v2026.5.14 [458c3c95] + OpenSSL_jll v3.5.7+0 [efcefdf7] + PCRE2_jll v10.47.0+0 [83775a58] + Zlib_jll v1.3.2+0 [3161d3a3] + Zstd_jll v1.5.7+1 [8e850ede] + nghttp2_jll v1.69.0+0 [3f19e933] + p7zip_jll v17.8.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m` Installation completed after 9.46s ################################################################################ # Precompilation # Precompiling PkgEval dependencies... Precompiling project... 6.2 s ✓ TestEnv 1 dependency successfully precompiled in 6 seconds. 27 already precompiled. Precompiling package dependencies... Precompiling project... 1.1 s ✓ DataAPI 3.1 s ✓ ExproniconLite 1.2 s ✓ Tricks 0.5 s ✓ DataValueInterfaces 34.6 s ✓ URIs 0.9 s ✓ LazilyInitializedFields 131.3 s ✓ OrderedCollections 2.3 s ✓ PrecompileSignatures 34.0 s ✓ BitFlags 82.1 s ✓ LRUCache 1.6 s ✓ ExpressionExplorer 47.7 s ✓ TranscodingStreams 0.7 s ✓ SimpleBufferStream 3.4 s ✓ MIMEs 0.5 s ✓ IteratorInterfaceExtensions 1.5 s ✓ MsgPack 1.5 s ✓ ConcurrentUtilities 1.9 s ✓ Scratch 2.3 s ✓ LoggingExtras 1.4 s ✓ Compat 2.4 s ✓ Preferences 35.2 s ✓ ExceptionUnwrapping 1.4 s ✓ HypertextLiteral 6.9 s ✓ RegistryInstances 39.1 s ✓ Configurations 70.7 s ✓ OpenSSL 32.7 s ✓ LRUCache → SerializationExt ┌ Info: JuliaLowering threw given input: │ code = │ :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 =# Core.@doc "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" function (topological_order(topology::NotebookTopology{C}, roots::AbstractVector{C}; allow_multiple_defs::Bool = false, skip_at_partial_multiple_defs::Bool = false)::TopologicalOrder{C}) where C <: AbstractCell │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:26 =# │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:31 =# │ if skip_at_partial_multiple_defs │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =# │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =# @assert allow_multiple_defs │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:35 =# │ entries = C[] │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:36 =# │ exits = C[] │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:37 =# │ errable = Dict{C, ReactivityError}() │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40 =# │ function bfs(cell::C)::ChildExplorationResult │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40 =# │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:41 =# │ if cell in exits │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:42 =# │ return Ok() │ elseif #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:43 =# haskey(errable, cell) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:44 =# │ return Ok() │ elseif #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:45 =# length(entries) > 0 && entries[var"end"] === cell │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:46 =# │ return Ok() │ elseif #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:47 =# cell in entries │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:48 =# │ currently_in = setdiff(entries, exits) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:49 =# │ cycle = currently_in[findfirst(isequal(cell), currently_in):var"end"] │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:51 =# │ if !(cycle_is_among_functions(topology, cycle)) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:52 =# │ for cell = cycle │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:53 =# │ errable[cell] = CyclicReferenceError(topology, cycle) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:54 =# │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:55 =# │ return Cycle(cycle) │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:58 =# │ return Ok() │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:62 =# │ current_entries_num = length(entries) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:63 =# │ current_exits_num = length(exits) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:65 =# │ push!(entries, cell) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:67 =# │ assigners = where_assigned(topology, cell) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:68 =# │ referencers = where_referenced(topology, cell) |> Iterators.reverse │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:70 =# │ if !allow_multiple_defs && length(assigners) > 1 │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:71 =# │ for c = assigners │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:72 =# │ errable[c] = MultipleDefinitionsError(topology, c, assigners) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:73 =# │ end │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:76 =# │ should_continue_search_down = !skip_at_partial_multiple_defs || all((c->begin │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:76 =# │ c === cell || c ∈ exits │ end), assigners) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:77 =# │ should_search_fellow_assigners_if_any = !allow_multiple_defs │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:79 =# │ to_search_next = if should_continue_search_down │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:80 =# │ if should_search_fellow_assigners_if_any │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:81 =# │ union(assigners, referencers) │ else │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:83 =# │ referencers │ end │ else │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:86 =# │ C[] │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:89 =# │ for c = to_search_next │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:90 =# │ if c !== cell │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:91 =# │ child_result = bfs(c) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:94 =# │ if child_result isa Ok || cell ∉ child_result.cycled_cells │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:95 =# │ continue │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:102 =# │ if !(is_soft_edge(topology, cell, c)) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:104 =# │ deleteat!(entries, current_entries_num + 1:length(entries)) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:105 =# │ deleteat!(exits, current_exits_num + 1:length(exits)) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:106 =# │ return child_result │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:111 =# │ for cycled_cell = child_result.cycled_cells │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:112 =# │ delete!(errable, cycled_cell) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:113 =# │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:115 =# │ if entries[var"end"] === c │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:116 =# │ pop!(entries) │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:119 =# │ continue │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:121 =# │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:122 =# │ push!(exits, cell) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:123 =# │ Ok() │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:128 =# │ prelim_order_1 = sort(roots, alg = MergeSort, by = (c->begin │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:128 =# │ cell_precedence_heuristic(topology, c) │ end)) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:130 =# │ for i = length(prelim_order_1):-1:1 │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:131 =# │ bfs(prelim_order_1[i]) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:132 =# │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:133 =# │ ordered = reverse(exits) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:134 =# │ TopologicalOrder(topology, setdiff(ordered, keys(errable)), errable) │ end) │ st0 = │ SyntaxTree with attributes mod,kind,var_id,toplevel_pure,scope_type,macro_source,name_val,syntax_flags,meta,scope_layer,value,jl_source,is_toplevel_thunk,source,__macro_ctx__ │ [macrocall] │ │ @doc :: Identifier │ mod │ :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 =#) :: Value │ │ "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" :: Value │ │ [function] │ │ [where] │ │ [::] │ │ [call] │ │ topological_order :: Identifier │ │ [parameters] │ │ [kw] │ │ [::] │ │ allow_multiple_defs :: Identifier │ │ Bool :: Identifier │ │ false :: Value │ │ [kw] │ │ [::] │ │ skip_at_partial_multiple_defs :: Identifier │ │ Bool :: Identifier │ │ false :: Value │ │ [::] │ │ topology :: Identifier │ │ [curly] │ │ NotebookTopology :: Identifier │ │ C :: Identifier │ │ [::] │ │ roots :: Identifier │ │ [curly] │ │ AbstractVector :: Identifier │ │ C :: Identifier │ │ [curly] │ │ TopologicalOrder :: Identifier │ │ C :: Identifier │ │ [<:] │ │ C :: Identifier │ │ AbstractCell :: Identifier │ │ [block] │ │ [if] │ │ skip_at_partial_multiple_defs :: Identifier │ │ [block] │ │ [macrocall] │ │ @assert :: Identifier │ │ :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =#) :: Value │ │ allow_multiple_defs :: Identifier │ │ [=] │ │ entries :: Identifier │ │ [ref] │ │ C :: Identifier │ │ [=] │ │ exits :: Identifier │ │ [ref] │ │ C :: Identifier │ │ [=] │ │ errable :: Identifier │ │ [call] │ │ [curly] │ │ Dict :: Identifier │ │ C :: Identifier │ │ ReactivityError :: Identifier │ │ [function] │ │ [::] │ │ [call] │ │ bfs :: Identifier │ │ [::] │ │ cell :: Identifier │ │ C :: Identifier │ │ ChildExplorationResult :: Identifier │ │ [block] │ │ [if] │ │ [call] │ │ in :: Identifier │ │ cell :: Identifier │ │ exits :: Identifier │ │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ │ [elseif] │ │ [block] │ │ [call] │ │ haskey :: Identifier │ │ errable :: Identifier │ │ cell :: Identifier │ │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ │ [elseif] │ │ [block] │ │ [&&] │ │ [call] │ │ > :: Identifier │ │ [call] │ │ length :: Identifier │ │ entries :: Identifier │ │ 0 :: Value │ │ [call] │ │ === :: Identifier │ │ [ref] │ │ entries :: Identifier │ │ end :: Identifier │ │ cell :: Identifier │ │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ │ [elseif] │ │ [block] │ │ [call] │ │ in :: Identifier │ │ cell :: Identifier │ │ entries :: Identifier │ │ [block] │ │ [=] │ │ currently_in :: Identifier │ │ [call] │ │ setdiff :: Identifier │ │ entries :: Identifier │ │ exits :: Identifier │ │ [=] │ │ cycle :: Identifier │ │ [ref] │ │ currently_in :: Identifier │ │ [call] │ │ : :: Identifier │ │ [call] │ │ findfirst :: Identifier │ │ [call] │ │ isequal :: Identifier │ │ cell :: Identifier │ │ currently_in :: Identifier │ │ end :: Identifier │ │ [if] │ │ [call] │ │ ! :: Identifier │ │ [call] │ │ cycle_is_among_functions :: Identifier │ │ topology :: Identifier │ │ cycle :: Identifier │ │ [block] │ │ [for] │ │ [=] │ │ cell :: Identifier │ │ cycle :: Identifier │ │ [block] │ │ [=] │ │ [ref] │ │ errable :: Identifier │ │ cell :: Identifier │ │ [call] │ │ CyclicReferenceError :: Identifier │ │ topology :: Identifier │ │ cycle :: Identifier │ │ [return] │ │ [call] │ │ Cycle :: Identifier │ │ cycle :: Identifier │ │ [return] │ │ [call] │ │ Ok :: Identifier │ │ [=] │ │ current_entries_num :: Identifier │ │ [call] │ │ length :: Identifier │ │ entries :: Identifier │ │ [=] │ │ current_exits_num :: Identifier │ │ [call] │ │ length :: Identifier │ │ exits :: Identifier │ │ [call] │ │ push! :: Identifier │ │ entries :: Identifier │ │ cell :: Identifier │ │ [=] │ │ assigners :: Identifier │ │ [call] │ │ where_assigned :: Identifier │ │ topology :: Identifier │ │ cell :: Identifier │ │ [=] │ │ referencers :: Identifier │ │ [call] │ │ |> :: Identifier │ │ [call] │ │ where_referenced :: Identifier │ │ topology :: Identifier │ │ cell :: Identifier │ │ [.] │ │ Iterators :: Identifier │ │ [inert] │ │ reverse :: Identifier │ │ [if] │ │ [&&] │ │ [call] │ │ ! :: Identifier │ │ allow_multiple_defs :: Identifier │ │ [call] │ │ > :: Identifier │ │ [call] │ │ length :: Identifier │ │ assigners :: Identifier │ │ 1 :: Value │ │ [block] │ │ [for] │ │ [=] │ │ c :: Identifier │ │ assigners :: Identifier │ │ [block] │ │ [=] │ │ [ref] │ │ errable :: Identifier │ │ c :: Identifier │ │ [call] │ │ MultipleDefinitionsError :: Identifier │ │ topology :: Identifier │ │ c :: Identifier │ │ assigners :: Identifier │ │ [=] │ │ should_continue_search_down :: Identifier │ │ [||] │ │ [call] │ │ ! :: Identifier │ │ skip_at_partial_multiple_defs :: Identifier │ │ [call] │ │ all :: Identifier │ │ [->] │ │ c :: Identifier │ │ [block] │ │ [||] │ │ [call] │ │ === :: Identifier │ │ c :: Identifier │ │ cell :: Identifier │ │ [call] │ │ ∈ :: Identifier │ │ c :: Identifier │ │ exits :: Identifier │ │ assigners :: Identifier │ │ [=] │ │ should_search_fellow_assigners_if_any :: Identifier │ │ [call] │ │ ! :: Identifier │ │ allow_multiple_defs :: Identifier │ │ [=] │ │ to_search_next :: Identifier │ │ [if] │ │ should_continue_search_down :: Identifier │ │ [block] │ │ [if] │ │ should_search_fellow_assigners_if_any :: Identifier │ │ [block] │ │ [call] │ │ union :: Identifier │ │ assigners :: Identifier │ │ referencers :: Identifier │ │ [block] │ │ referencers :: Identifier │ │ [block] │ │ [ref] │ │ C :: Identifier │ │ [for] │ │ [=] │ │ c :: Identifier │ │ to_search_next :: Identifier │ │ [block] │ │ [if] │ │ [call] │ │ !== :: Identifier │ │ c :: Identifier │ │ cell :: Identifier │ │ [block] │ │ [=] │ │ child_result :: Identifier │ │ [call] │ │ bfs :: Identifier │ │ c :: Identifier │ │ [if] │ │ [||] │ │ [call] │ │ isa :: Identifier │ │ child_result :: Identifier │ │ Ok :: Identifier │ │ [call] │ │ ∉ :: Identifier │ │ cell :: Identifier │ │ [.] │ │ child_result :: Identifier │ │ [inert] │ │ cycled_cells :: Identifier │ │ [block] │ │ [continue] │ │ [if] │ │ [call] │ │ ! :: Identifier │ │ [call] │ │ is_soft_edge :: Identifier │ │ topology :: Identifier │ │ cell :: Identifier │ │ c :: Identifier │ │ [block] │ │ [call] │ │ deleteat! :: Identifier │ │ entries :: Identifier │ │ [call] │ │ : :: Identifier │ │ [call] │ │ + :: Identifier │ │ current_entries_num :: Identifier │ │ 1 :: Value │ │ [call] │ │ length :: Identifier │ │ entries :: Identifier │ │ [call] │ │ deleteat! :: Identifier │ │ exits :: Identifier │ │ [call] │ │ : :: Identifier │ │ [call] │ │ + :: Identifier │ │ current_exits_num :: Identifier │ │ 1 :: Value │ │ [call] │ │ length :: Identifier │ │ exits :: Identifier │ │ [return] │ │ child_result :: Identifier │ │ [for] │ │ [=] │ │ cycled_cell :: Identifier │ │ [.] │ │ child_result :: Identifier │ │ [inert] │ │ cycled_cells :: Identifier │ │ [block] │ │ [call] │ │ delete! :: Identifier │ │ errable :: Identifier │ │ cycled_cell :: Identifier │ │ [if] │ │ [call] │ │ === :: Identifier │ │ [ref] │ │ entries :: Identifier │ │ end :: Identifier │ │ c :: Identifier │ │ [block] │ │ [call] │ │ pop! :: Identifier │ │ entries :: Identifier │ │ [continue] │ │ [call] │ │ push! :: Identifier │ │ exits :: Identifier │ │ cell :: Identifier │ │ [call] │ │ Ok :: Identifier │ │ [=] │ │ prelim_order_1 :: Identifier │ │ [call] │ │ sort :: Identifier │ │ roots :: Identifier │ │ [kw] │ │ alg :: Identifier │ │ MergeSort :: Identifier │ │ [kw] │ │ by :: Identifier │ │ [->] │ │ c :: Identifier │ │ [block] │ │ [call] │ │ cell_precedence_heuristic :: Identifier │ │ topology :: Identifier │ │ c :: Identifier │ │ [for] │ │ [=] │ │ i :: Identifier │ │ [call] │ │ : :: Identifier │ │ [call] │ │ length :: Identifier │ │ prelim_order_1 :: Identifier │ │ -1 :: Value │ │ 1 :: Value │ │ [block] │ │ [call] │ │ bfs :: Identifier │ │ [ref] │ │ prelim_order_1 :: Identifier │ │ i :: Identifier │ │ [=] │ │ ordered :: Identifier │ │ [call] │ │ reverse :: Identifier │ │ exits :: Identifier │ │ [call] │ │ TopologicalOrder :: Identifier │ │ topology :: Identifier │ │ [call] │ │ setdiff :: Identifier │ │ ordered :: Identifier │ │ [call] │ │ keys :: Identifier │ │ errable :: Identifier │ │ errable :: Identifier │ │ │ st1 = │ SyntaxTree with attributes mod,kind,var_id,toplevel_pure,scope_type,macro_source,name_val,syntax_flags,meta,scope_layer,value,jl_source,is_toplevel_thunk,source │ [block] │ │ [=] │ │ val :: Identifier │ scope_layer=3 │ [function] │ │ [where] │ │ [::] │ │ [call] │ │ topological_order :: Identifier │ scope_layer=1 │ [parameters] │ │ [kw] │ │ [::] │ │ allow_multiple_defs :: Identifier │ scope_layer=1 │ Bool :: Identifier │ scope_layer=1 │ false :: Value │ macro_source=405 │ [kw] │ │ [::] │ │ skip_at_partial_multiple_defs :: Identifier │ scope_layer=1 │ Bool :: Identifier │ scope_layer=1 │ false :: Value │ macro_source=405 │ [::] │ │ topology :: Identifier │ scope_layer=1 │ [curly] │ │ NotebookTopology :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [::] │ │ roots :: Identifier │ scope_layer=1 │ [curly] │ │ AbstractVector :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [curly] │ │ TopologicalOrder :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [<:] │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ AbstractCell :: Identifier │ scope_layer=1 │ [block] │ │ [if] │ │ skip_at_partial_multiple_defs :: Identifier │ scope_layer=1 │ [block] │ │ [if] │ │ allow_multiple_defs :: Identifier │ scope_layer=1 │ nothing :: Value │ macro_source=405 │ [call] │ │ throw :: Identifier │ mod,scope_layer=1 │ [call] │ │ AssertionError :: Identifier │ mod,scope_layer=1 │ "allow_multiple_defs" :: Value │ macro_source=405 │ [=] │ │ entries :: Identifier │ scope_layer=1 │ [ref] │ │ C :: Identifier │ scope_layer=1 │ [=] │ │ exits :: Identifier │ scope_layer=1 │ [ref] │ │ C :: Identifier │ scope_layer=1 │ [=] │ │ errable :: Identifier │ scope_layer=1 │ [call] │ │ [curly] │ │ Dict :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ ReactivityError :: Identifier │ scope_layer=1 │ [function] │ │ [::] │ │ [call] │ │ bfs :: Identifier │ scope_layer=1 │ [::] │ │ cell :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ ChildExplorationResult :: Identifier │ scope_layer=1 │ [block] │ │ [if] │ │ [call] │ │ in :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ scope_layer=1 │ [elseif] │ │ [block] │ │ [call] │ │ haskey :: Identifier │ scope_layer=1 │ errable :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ scope_layer=1 │ [elseif] │ │ [block] │ │ [&&] │ │ [call] │ │ > :: Identifier │ scope_layer=1 │ [call] │ │ length :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ 0 :: Value │ macro_source=405 │ [call] │ │ === :: Identifier │ scope_layer=1 │ [ref] │ │ entries :: Identifier │ scope_layer=1 │ end :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ scope_layer=1 │ [elseif] │ │ [block] │ │ [call] │ │ in :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ [block] │ │ [=] │ │ currently_in :: Identifier │ scope_layer=1 │ [call] │ │ setdiff :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [=] │ │ cycle :: Identifier │ scope_layer=1 │ [ref] │ │ currently_in :: Identifier │ scope_layer=1 │ [call] │ │ : :: Identifier │ scope_layer=1 │ [call] │ │ findfirst :: Identifier │ scope_layer=1 │ [call] │ │ isequal :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ currently_in :: Identifier │ scope_layer=1 │ end :: Identifier │ scope_layer=1 │ [if] │ │ [call] │ │ ! :: Identifier │ scope_layer=1 │ [call] │ │ cycle_is_among_functions :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ cycle :: Identifier │ scope_layer=1 │ [block] │ │ [for] │ │ [=] │ │ cell :: Identifier │ scope_layer=1 │ cycle :: Identifier │ scope_layer=1 │ [block] │ │ [=] │ │ [ref] │ │ errable :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [call] │ │ CyclicReferenceError :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ cycle :: Identifier │ scope_layer=1 │ [return] │ │ [call] │ │ Cycle :: Identifier │ scope_layer=1 │ cycle :: Identifier │ scope_layer=1 │ [return] │ │ [call] │ │ Ok :: Identifier │ scope_layer=1 │ [=] │ │ current_entries_num :: Identifier │ scope_layer=1 │ [call] │ │ length :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ [=] │ │ current_exits_num :: Identifier │ scope_layer=1 │ [call] │ │ length :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [call] │ │ push! :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [=] │ │ assigners :: Identifier │ scope_layer=1 │ [call] │ │ where_assigned :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [=] │ │ referencers :: Identifier │ scope_layer=1 │ [call] │ │ |> :: Identifier │ scope_layer=1 │ [call] │ │ where_referenced :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [.] │ │ Iterators :: Identifier │ scope_layer=1 │ [inert] │ │ reverse :: Identifier │ │ [if] │ │ [&&] │ │ [call] │ │ ! :: Identifier │ scope_layer=1 │ allow_multiple_defs :: Identifier │ scope_layer=1 │ [call] │ │ > :: Identifier │ scope_layer=1 │ [call] │ │ length :: Identifier │ scope_layer=1 │ assigners :: Identifier │ scope_layer=1 │ 1 :: Value │ macro_source=405 │ [block] │ │ [for] │ │ [=] │ │ c :: Identifier │ scope_layer=1 │ assigners :: Identifier │ scope_layer=1 │ [block] │ │ [=] │ │ [ref] │ │ errable :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ [call] │ │ MultipleDefinitionsError :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ assigners :: Identifier │ scope_layer=1 │ [=] │ │ should_continue_search_down :: Identifier │ scope_layer=1 │ [||] │ │ [call] │ │ ! :: Identifier │ scope_layer=1 │ skip_at_partial_multiple_defs :: Identifier │ scope_layer=1 │ [call] │ │ all :: Identifier │ scope_layer=1 │ [->] │ │ c :: Identifier │ scope_layer=1 │ [block] │ │ [||] │ │ [call] │ │ === :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [call] │ │ ∈ :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ assigners :: Identifier │ scope_layer=1 │ [=] │ │ should_search_fellow_assigners_if_any :: Identifier │ scope_layer=1 │ [call] │ │ ! :: Identifier │ scope_layer=1 │ allow_multiple_defs :: Identifier │ scope_layer=1 │ [=] │ │ to_search_next :: Identifier │ scope_layer=1 │ [if] │ │ should_continue_search_down :: Identifier │ scope_layer=1 │ [block] │ │ [if] │ │ should_search_fellow_assigners_if_any :: Identifier │ scope_layer=1 │ [block] │ │ [call] │ │ union :: Identifier │ scope_layer=1 │ assigners :: Identifier │ scope_layer=1 │ referencers :: Identifier │ scope_layer=1 │ [block] │ │ referencers :: Identifier │ scope_layer=1 │ [block] │ │ [ref] │ │ C :: Identifier │ scope_layer=1 │ [for] │ │ [=] │ │ c :: Identifier │ scope_layer=1 │ to_search_next :: Identifier │ scope_layer=1 │ [block] │ │ [if] │ │ [call] │ │ !== :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [block] │ │ [=] │ │ child_result :: Identifier │ scope_layer=1 │ [call] │ │ bfs :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ [if] │ │ [||] │ │ [call] │ │ isa :: Identifier │ scope_layer=1 │ child_result :: Identifier │ scope_layer=1 │ Ok :: Identifier │ scope_layer=1 │ [call] │ │ ∉ :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [.] │ │ child_result :: Identifier │ scope_layer=1 │ [inert] │ │ cycled_cells :: Identifier │ │ [block] │ macro_source=405 │ [continue] │ macro_source=405 │ [if] │ │ [call] │ │ ! :: Identifier │ scope_layer=1 │ [call] │ │ is_soft_edge :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ [block] │ │ [call] │ │ deleteat! :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ [call] │ │ : :: Identifier │ scope_layer=1 │ [call] │ │ + :: Identifier │ scope_layer=1 │ current_entries_num :: Identifier │ scope_layer=1 │ 1 :: Value │ macro_source=405 │ [call] │ │ length :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ [call] │ │ deleteat! :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [call] │ │ : :: Identifier │ scope_layer=1 │ [call] │ │ + :: Identifier │ scope_layer=1 │ current_exits_num :: Identifier │ scope_layer=1 │ 1 :: Value │ macro_source=405 │ [call] │ │ length :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [return] │ │ child_result :: Identifier │ scope_layer=1 │ [for] │ │ [=] │ │ cycled_cell :: Identifier │ scope_layer=1 │ [.] │ │ child_result :: Identifier │ scope_layer=1 │ [inert] │ │ cycled_cells :: Identifier │ │ [block] │ │ [call] │ │ delete! :: Identifier │ scope_layer=1 │ errable :: Identifier │ scope_layer=1 │ cycled_cell :: Identifier │ scope_layer=1 │ [if] │ │ [call] │ │ === :: Identifier │ scope_layer=1 │ [ref] │ │ entries :: Identifier │ scope_layer=1 │ end :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ [block] │ │ [call] │ │ pop! :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ [continue] │ macro_source=405 │ [call] │ │ push! :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [call] │ │ Ok :: Identifier │ scope_layer=1 │ [=] │ │ prelim_order_1 :: Identifier │ scope_layer=1 │ [call] │ │ sort :: Identifier │ scope_layer=1 │ roots :: Identifier │ scope_layer=1 │ [kw] │ │ alg :: Identifier │ scope_layer=1 │ MergeSort :: Identifier │ scope_layer=1 │ [kw] │ │ by :: Identifier │ scope_layer=1 │ [->] │ │ c :: Identifier │ scope_layer=1 │ [block] │ │ [call] │ │ cell_precedence_heuristic :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ [for] │ │ [=] │ │ i :: Identifier │ scope_layer=1 │ [call] │ │ : :: Identifier │ scope_layer=1 │ [call] │ │ length :: Identifier │ scope_layer=1 │ prelim_order_1 :: Identifier │ scope_layer=1 │ -1 :: Value │ macro_source=405 │ 1 :: Value │ macro_source=405 │ [block] │ │ [call] │ │ bfs :: Identifier │ scope_layer=1 │ [ref] │ │ prelim_order_1 :: Identifier │ scope_layer=1 │ i :: Identifier │ scope_layer=1 │ [=] │ │ ordered :: Identifier │ scope_layer=1 │ [call] │ │ reverse :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [call] │ │ TopologicalOrder :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ [call] │ │ setdiff :: Identifier │ scope_layer=1 │ ordered :: Identifier │ scope_layer=1 │ [call] │ │ keys :: Identifier │ scope_layer=1 │ errable :: Identifier │ scope_layer=1 │ errable :: Identifier │ scope_layer=1 │ [call] │ │ Base.Docs.doc! :: Value │ macro_source=405 │ PlutoDependencyExplorer :: Value │ macro_source=405 │ [call] │ │ Base.Docs.Binding :: Value │ macro_source=405 │ PlutoDependencyExplorer :: Value │ │ [inert] │ jl_source=L65 │ topological_order :: Identifier │ │ [call] │ macro_source=405 │ Base.Docs.docstr :: Value │ macro_source=405 │ [call] │ macro_source=405 │ Core.svec :: Value │ macro_source=405 │ "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" :: Value │ macro_source=405 │ [call] │ macro_source=405 │ Dict{Symbol, Any} :: Value │ macro_source=405 │ :path => "/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl" :: Value │ macro_source=405 │ :linenumber => 8 :: Value │ macro_source=405 │ :module => PlutoDependencyExplorer :: Value │ macro_source=405 │ [where] │ │ [curly] │ │ Union :: Identifier │ scope_layer=1 │ [curly] │ │ Tuple :: Identifier │ scope_layer=1 │ [curly] │ │ NotebookTopology :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [curly] │ │ AbstractVector :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [curly] │ │ Tuple :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [<:] │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ AbstractCell :: Identifier │ scope_layer=1 │ val :: Identifier │ scope_layer=3 │ │ file = "/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl" │ line = 8 └ mod = PlutoDependencyExplorer ERROR: LoadError: LoweringError: #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40 =# - Found unexpected binding of kind static_parameter Expression:  #₅₄/C Containing expressions:  (= #₁₇₄/C #₅₄/C)  (= #₃ (call core.svec (call core.svec #₁₄₃/##kw_body#topological_order#0#bfs##0 #₅₄/C) (call core.svec) SourceLocation:/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40:0))  (= #₃ (call core.svec (call core.svec (function_type #₅₆/bfs) #₅₄/C) (call core.svec) SourceLocation:/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40:0))  Detailed provenance:  #₅₄/C  └─ C  └─ C  ├─ @ /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40  └─ (macrocall @doc :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 =#) "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" (function (where (:: (call topological_order (parameters (kw (:: allow_multiple_defs Bool) false) (kw (:: skip_at_partial_multiple_defs Bool) false)) (:: topology (curly NotebookTopology C)) (:: roots (curly AbstractVector C))) (curly TopologicalOrder C)) (<: C AbstractCell)) (block (if skip_at_partial_multiple_defs (block (macrocall @assert :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =#) allow_multiple_defs))) (= entries (ref C)) (= exits (ref C)) (= errable (call (curly Dict C ReactivityError))) (function (:: (call bfs (:: cell C)) ChildExplorationResult) (block (if (call in cell exits) (block (return (call Ok))) (elseif (block (call haskey errable cell)) (block (return (call Ok))) (elseif (block (&& (call > (call length entries) 0) (call === (ref entries end) cell))) (block (return (call Ok))) (elseif (block (call in cell entries)) (block (= currently_in (call setdiff entries exits)) (= cycle (ref currently_in (call : (call findfirst (call isequal cell) currently_in) end))) (if (call ! (call cycle_is_among_functions topology cycle)) (block (for (= cell cycle) (block (= (ref errable cell) (call CyclicReferenceError topology cycle)))) (return (call Cycle cycle)))) (return (call Ok))))))) (= current_entries_num (call length entries)) (= current_exits_num (call length exits)) (call push! entries cell) (= assigners (call where_assigned topology cell)) (= referencers (call |> (call where_referenced topology cell) (. Iterators (inert reverse)))) (if (&& (call ! allow_multiple_defs) (call > (call length assigners) 1)) (block (for (= c assigners) (block (= (ref errable c) (call MultipleDefinitionsError topology c assigners)))))) (= should_continue_search_down (|| (call ! skip_at_partial_multiple_defs) (call all (-> c (block (|| (call === c cell) (call ∈ c exits)))) assigners))) (= should_search_fellow_assigners_if_any (call ! allow_multiple_defs)) (= to_search_next (if should_continue_search_down (block (if should_search_fellow_assigners_if_any (block (call union assigners referencers)) (block referencers))) (block (ref C)))) (for (= c to_search_next) (block (if (call !== c cell) (block (= child_result (call bfs c)) (if (|| (call isa child_result Ok) (call ∉ cell (. child_result (inert cycled_cells)))) (block (continue))) (if (call ! (call is_soft_edge topology cell c)) (block (call deleteat! entries (call : (call + current_entries_num 1) (call length entries))) (call deleteat! exits (call : (call + current_exits_num 1) (call length exits))) (return child_result))) (for (= cycled_cell (. child_result (inert cycled_cells))) (block (call delete! errable cycled_cell))) (if (call === (ref entries end) c) (block (call pop! entries))) (continue))))) (call push! exits cell) (call Ok))) (= prelim_order_1 (call sort roots (kw alg MergeSort) (kw by (-> c (block (call cell_precedence_heuristic topology c)))))) (for (= i (call : (call length prelim_order_1) -1 1)) (block (call bfs (ref prelim_order_1 i)))) (= ordered (call reverse exits)) (call TopologicalOrder topology (call setdiff ordered (call keys errable)) errable))))  └─ @ /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8  Stacktrace:  [1] _renumber(ctx::Base.JuliaLowering.LinearIRContext{Dict{Symbol, Dict{Int64, Any}}}, ssa_rewrites::Dict{Int64, Int64}, slot_rewrites::Dict{Int64, Int64}, label_table::Dict{Int64, Int64}, ex::Base.JuliaSyntax.SyntaxTree{Dict{Symbol, Dict{Int64, Any}}})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1097  [2] renumber_body(ctx::Base.JuliaLowering.LinearIRContext{Dict{Symbol, Dict{Int64, Any}}}, input_code::Base.JuliaSyntax.SyntaxList{Dict{Symbol, Dict{Int64, Any}}, Vector{Int64}}, slot_rewrites::Dict{Int64, Int64})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1162  [3] compile_lambda(outer_ctx::Base.JuliaLowering.LinearIRContext{Dict{Symbol, Dict{Int64, Any}}}, ex::Base.JuliaSyntax.SyntaxTree{Dict{Symbol, Dict{Int64, Any}}})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1257  [4] linearize_ir(ctx::Base.JuliaLowering.ClosureConversionCtx{Dict{Symbol, Dict{Int64, Any}}}, ex::Base.JuliaSyntax.SyntaxTree{Dict{Symbol, Dict{Int64, Any}}})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1287  [5] core_lowering_hook(code::Any, mod::Module, file::String, line::UInt64, world::UInt64, _warn::Bool)  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/hooks.jl:33  [6] include(mapexpr::Function, mod::Module, _path::String)  @ Base Base.jl:326  [7] top-level scope  @ ~/.julia/packages/PlutoDependencyExplorer/BaZEm/src/PlutoDependencyExplorer.jl:24  [8] include(mod::Module, _path::String)  @ Base Base.jl:325  [9] include_package_for_output(pkg::Base.PkgId, input::String, syntax_version::VersionNumber, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)  @ Base loading.jl:3296  [10] top-level scope  @ stdin:5  [11] eval(m::Module, e::Any)  @ Core boot.jl:522  [12] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)  @ Base loading.jl:3132  [13] include_string(m::Module, txt::String, fname::String)  @ Base loading.jl:3142 [inlined]  [14] exec_options(opts::Base.JLOptions)  @ Base client.jl:353  [15] _start()  @ Base client.jl:596 in expression starting at /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 in expression starting at /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/PlutoDependencyExplorer.jl:2 in expression starting at stdin:5 ✗ PlutoDependencyExplorer 18.1 s ✓ CodecZlib 0.5 s ✓ TableTraits 2.1 s ✓ RelocatableFolders 0.6 s ✓ Compat → CompatLinearAlgebraExt 2.9 s ✓ JLLWrappers 2.7 s ✓ PrecompileTools 132.8 s ✓ Tables 20.9 s ✓ Malt 6.6 s ✓ GracefulPkg 2.9 s ✓ MbedTLS_jll 32.3 s ✓ Parsers 3.4 s ✓ MbedTLS 27.7 s ✓ JSON 123.7 s ✓ HTTP ERROR: LoadError: Precompiled image Base.PkgId(Base.UUID("72656b73-756c-7461-726b-72656b6b696b"), "PlutoDependencyExplorer") not available with flags CacheFlags(; use_pkgimages=false, debug_level=1, check_bounds=1, inline=true, opt_level=0) Stacktrace:  [1] error(s::String)  @ Base error.jl:56  [2] __require_prelocked(pkg::Base.PkgId, env::String)  @ Base loading.jl:2837  [3] _require_prelocked(uuidkey::Base.PkgId, env::String)  @ Base loading.jl:2685  [4] macro expansion  @ loading.jl:2599 [inlined]  [5] macro expansion  @ lock.jl:376 [inlined]  [6] __require(into::Module, mod::Symbol)  @ Base loading.jl:2563  [7] require(into::Module, mod::Symbol)  @ Base loading.jl:2539 [inlined]  [8] eval_import_path(at::Module, from::Nothing, path::Expr, keyword::String)  @ Base module.jl:36 [inlined]  [9] eval_import_path_all(at::Module, path::Expr, keyword::String)  @ Base module.jl:60  [10] _eval_import(::Bool, ::Module, ::Expr, ::Expr, ::Vararg{Expr})  @ Base module.jl:101  [11] eval_import(::Bool, ::Module, ::Expr, ::Expr, ::Vararg{Expr})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/runtime.jl:195  [12] top-level scope  @ ~/.julia/packages/Pluto/d9Dpv/src/Pluto.jl:43  [13] include(mod::Module, _path::String)  @ Base Base.jl:325  [14] include_package_for_output(pkg::Base.PkgId, input::String, syntax_version::VersionNumber, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)  @ Base loading.jl:3296  [15] top-level scope  @ stdin:5  [16] eval(m::Module, e::Any)  @ Core boot.jl:522  [17] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)  @ Base loading.jl:3132  [18] include_string(m::Module, txt::String, fname::String)  @ Base loading.jl:3142 [inlined]  [19] exec_options(opts::Base.JLOptions)  @ Base client.jl:353  [20] _start()  @ Base client.jl:596 in expression starting at /home/pkgeval/.julia/packages/Pluto/d9Dpv/src/Pluto.jl:1 in expression starting at stdin:5 ✗ Pluto ERROR: LoadError: Precompiled image Base.PkgId(Base.UUID("c3e4b0f8-55cb-11ea-2926-15256bba5781"), "Pluto") not available with flags CacheFlags(; use_pkgimages=false, debug_level=1, check_bounds=1, inline=true, opt_level=0) Stacktrace:  [1] error(s::String)  @ Base error.jl:56  [2] __require_prelocked(pkg::Base.PkgId, env::String)  @ Base loading.jl:2837  [3] _require_prelocked(uuidkey::Base.PkgId, env::String)  @ Base loading.jl:2685  [4] macro expansion  @ loading.jl:2599 [inlined]  [5] macro expansion  @ lock.jl:376 [inlined]  [6] __require(into::Module, mod::Symbol)  @ Base loading.jl:2563  [7] require(into::Module, mod::Symbol)  @ Base loading.jl:2539 [inlined]  [8] eval_import_path(at::Module, from::Nothing, path::Expr, keyword::String)  @ Base module.jl:36 [inlined]  [9] eval_import_path_all(at::Module, path::Expr, keyword::String)  @ Base module.jl:60  [10] _eval_import(::Bool, ::Module, ::Expr, ::Expr, ::Vararg{Expr})  @ Base module.jl:101  [11] eval_import(::Bool, ::Module, ::Expr, ::Expr, ::Vararg{Expr})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/runtime.jl:195  [12] top-level scope  @ ~/.julia/packages/JupyterPlutoConverter/NgUGW/src/JupyterPlutoConverter.jl:5  [13] include(mod::Module, _path::String)  @ Base Base.jl:325  [14] include_package_for_output(pkg::Base.PkgId, input::String, syntax_version::VersionNumber, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)  @ Base loading.jl:3296  [15] top-level scope  @ stdin:5  [16] eval(m::Module, e::Any)  @ Core boot.jl:522  [17] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)  @ Base loading.jl:3132  [18] include_string(m::Module, txt::String, fname::String)  @ Base loading.jl:3142 [inlined]  [19] exec_options(opts::Base.JLOptions)  @ Base client.jl:353  [20] _start()  @ Base client.jl:596 in expression starting at /home/pkgeval/.julia/packages/JupyterPlutoConverter/NgUGW/src/JupyterPlutoConverter.jl:1 in expression starting at stdin:5 ✗ JupyterPlutoConverter 41 dependencies successfully precompiled in 978 seconds. 34 already precompiled. Precompilation completed after 1013.74s ################################################################################ # Testing # Testing JupyterPlutoConverter Status `/tmp/jl_TFEDu4/Project.toml` [1eb89384] JupyterPlutoConverter v0.1.2 [8dfed614] Test v1.11.0 Status `/tmp/jl_TFEDu4/Manifest.toml` [d1d4a3ce] BitFlags v0.1.10 [944b1d66] CodecZlib v0.7.8 [34da2185] Compat v4.18.1 [f0e56b4a] ConcurrentUtilities v2.5.1 [5218b696] Configurations v0.17.6 [9a962f9c] DataAPI v1.16.0 [e2d170a0] DataValueInterfaces v1.0.0 [460bff9d] ExceptionUnwrapping v0.1.11 [21656369] ExpressionExplorer v1.1.4 [55351af7] ExproniconLite v0.10.14 [828d9ff0] GracefulPkg v2.4.3 ⌅ [cd3eb016] HTTP v1.11.0 [ac1192a8] HypertextLiteral v1.0.0 [82899510] IteratorInterfaceExtensions v1.0.0 [692b3bcd] JLLWrappers v1.8.0 ⌅ [682c06a0] JSON v0.21.4 [1eb89384] JupyterPlutoConverter v0.1.2 [8ac3fa9e] LRUCache v1.6.2 [0e77f7df] LazilyInitializedFields v1.3.0 [e6f89c97] LoggingExtras v1.2.0 [6c6e2e6c] MIMEs v1.1.0 [36869731] Malt v1.4.1 [739be429] MbedTLS v1.1.10 [99f44e22] MsgPack v1.2.1 [4d8831e6] OpenSSL v1.6.1 ⌅ [bac558e1] OrderedCollections v1.8.2 [69de0a69] Parsers v2.8.5 ⌅ [c3e4b0f8] Pluto v0.20.28 [72656b73] PlutoDependencyExplorer v1.2.2 [91cefc8d] PrecompileSignatures v3.0.3 [aea7be01] PrecompileTools v1.3.4 [21216c6a] Preferences v1.5.2 [2792f1a3] RegistryInstances v0.1.0 [05181044] RelocatableFolders v1.0.1 [6c6a2e73] Scratch v1.3.0 [777ac1f9] SimpleBufferStream v1.2.0 [3783bdb8] TableTraits v1.0.1 [bd369af6] Tables v1.12.1 [3bb67fe8] TranscodingStreams v0.11.3 [410a4b4d] Tricks v0.1.13 [5c2747f8] URIs v1.6.1 [c8ffd9c3] MbedTLS_jll v2.28.1010+0 [0dad84c5] ArgTools v1.2.0 [56f22d72] Artifacts v1.11.0 [2a0f44e3] Base64 v1.11.0 [ade2ca70] Dates v1.11.0 [8ba89e20] Distributed v1.11.0 [f43a241f] Downloads v1.7.0 [7b1f6079] FileWatching v1.11.0 [b77e0a4c] InteractiveUtils v1.11.0 [ac6e5ff7] JuliaSyntaxHighlighting v1.13.0 [b27032c2] LibCURL v1.0.0 [76f85450] LibGit2 v1.11.0 [8f399da3] Libdl v1.11.0 [56ddb016] Logging v1.11.0 [d6f4376e] Markdown v1.11.0 [a63ad114] Mmap v1.11.0 [ca575930] NetworkOptions v1.3.0 [44cfe95a] Pkg v1.14.0 [de0858da] Printf v1.11.0 [3fa0cd96] REPL v1.11.0 [9a3f8284] Random v1.11.0 [ea8e919c] SHA v1.13.0 [9e88b42a] Serialization v1.11.0 [6462fe0b] Sockets v1.11.0 [f489334b] StyledStrings v1.13.0 [fa267f1f] TOML v1.0.3 [a4e569a6] Tar v1.10.0 [8dfed614] Test v1.11.0 [cf7118a7] UUIDs v1.11.0 [4ec0a83e] Unicode v1.11.0 [e66e0078] CompilerSupportLibraries_jll v1.5.2+0 [deac9b47] LibCURL_jll v8.20.0+1 [e37daf67] LibGit2_jll v1.9.4+0 [29816b5a] LibSSH2_jll v1.11.101+0 [14a3606d] MozillaCACerts_jll v2026.5.14 [458c3c95] OpenSSL_jll v3.5.7+0 [efcefdf7] PCRE2_jll v10.47.0+0 [83775a58] Zlib_jll v1.3.2+0 [3161d3a3] Zstd_jll v1.5.7+1 [8e850ede] nghttp2_jll v1.69.0+0 [3f19e933] p7zip_jll v17.8.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. Testing Running tests... ┌ Info: JuliaLowering threw given input: │ code = │ :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 =# Core.@doc "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" function (topological_order(topology::NotebookTopology{C}, roots::AbstractVector{C}; allow_multiple_defs::Bool = false, skip_at_partial_multiple_defs::Bool = false)::TopologicalOrder{C}) where C <: AbstractCell │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:26 =# │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:31 =# │ if skip_at_partial_multiple_defs │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =# │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =# @assert allow_multiple_defs │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:35 =# │ entries = C[] │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:36 =# │ exits = C[] │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:37 =# │ errable = Dict{C, ReactivityError}() │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40 =# │ function bfs(cell::C)::ChildExplorationResult │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40 =# │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:41 =# │ if cell in exits │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:42 =# │ return Ok() │ elseif #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:43 =# haskey(errable, cell) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:44 =# │ return Ok() │ elseif #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:45 =# length(entries) > 0 && entries[var"end"] === cell │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:46 =# │ return Ok() │ elseif #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:47 =# cell in entries │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:48 =# │ currently_in = setdiff(entries, exits) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:49 =# │ cycle = currently_in[findfirst(isequal(cell), currently_in):var"end"] │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:51 =# │ if !(cycle_is_among_functions(topology, cycle)) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:52 =# │ for cell = cycle │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:53 =# │ errable[cell] = CyclicReferenceError(topology, cycle) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:54 =# │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:55 =# │ return Cycle(cycle) │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:58 =# │ return Ok() │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:62 =# │ current_entries_num = length(entries) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:63 =# │ current_exits_num = length(exits) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:65 =# │ push!(entries, cell) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:67 =# │ assigners = where_assigned(topology, cell) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:68 =# │ referencers = where_referenced(topology, cell) |> Iterators.reverse │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:70 =# │ if !allow_multiple_defs && length(assigners) > 1 │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:71 =# │ for c = assigners │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:72 =# │ errable[c] = MultipleDefinitionsError(topology, c, assigners) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:73 =# │ end │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:76 =# │ should_continue_search_down = !skip_at_partial_multiple_defs || all((c->begin │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:76 =# │ c === cell || c ∈ exits │ end), assigners) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:77 =# │ should_search_fellow_assigners_if_any = !allow_multiple_defs │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:79 =# │ to_search_next = if should_continue_search_down │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:80 =# │ if should_search_fellow_assigners_if_any │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:81 =# │ union(assigners, referencers) │ else │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:83 =# │ referencers │ end │ else │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:86 =# │ C[] │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:89 =# │ for c = to_search_next │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:90 =# │ if c !== cell │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:91 =# │ child_result = bfs(c) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:94 =# │ if child_result isa Ok || cell ∉ child_result.cycled_cells │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:95 =# │ continue │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:102 =# │ if !(is_soft_edge(topology, cell, c)) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:104 =# │ deleteat!(entries, current_entries_num + 1:length(entries)) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:105 =# │ deleteat!(exits, current_exits_num + 1:length(exits)) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:106 =# │ return child_result │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:111 =# │ for cycled_cell = child_result.cycled_cells │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:112 =# │ delete!(errable, cycled_cell) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:113 =# │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:115 =# │ if entries[var"end"] === c │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:116 =# │ pop!(entries) │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:119 =# │ continue │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:121 =# │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:122 =# │ push!(exits, cell) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:123 =# │ Ok() │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:128 =# │ prelim_order_1 = sort(roots, alg = MergeSort, by = (c->begin │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:128 =# │ cell_precedence_heuristic(topology, c) │ end)) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:130 =# │ for i = length(prelim_order_1):-1:1 │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:131 =# │ bfs(prelim_order_1[i]) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:132 =# │ end │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:133 =# │ ordered = reverse(exits) │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:134 =# │ TopologicalOrder(topology, setdiff(ordered, keys(errable)), errable) │ end) │ st0 = │ SyntaxTree with attributes mod,kind,var_id,toplevel_pure,scope_type,macro_source,name_val,syntax_flags,meta,scope_layer,value,jl_source,is_toplevel_thunk,source,__macro_ctx__ │ [macrocall] │ │ @doc :: Identifier │ mod │ :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 =#) :: Value │ │ "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" :: Value │ │ [function] │ │ [where] │ │ [::] │ │ [call] │ │ topological_order :: Identifier │ │ [parameters] │ │ [kw] │ │ [::] │ │ allow_multiple_defs :: Identifier │ │ Bool :: Identifier │ │ false :: Value │ │ [kw] │ │ [::] │ │ skip_at_partial_multiple_defs :: Identifier │ │ Bool :: Identifier │ │ false :: Value │ │ [::] │ │ topology :: Identifier │ │ [curly] │ │ NotebookTopology :: Identifier │ │ C :: Identifier │ │ [::] │ │ roots :: Identifier │ │ [curly] │ │ AbstractVector :: Identifier │ │ C :: Identifier │ │ [curly] │ │ TopologicalOrder :: Identifier │ │ C :: Identifier │ │ [<:] │ │ C :: Identifier │ │ AbstractCell :: Identifier │ │ [block] │ │ [if] │ │ skip_at_partial_multiple_defs :: Identifier │ │ [block] │ │ [macrocall] │ │ @assert :: Identifier │ │ :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =#) :: Value │ │ allow_multiple_defs :: Identifier │ │ [=] │ │ entries :: Identifier │ │ [ref] │ │ C :: Identifier │ │ [=] │ │ exits :: Identifier │ │ [ref] │ │ C :: Identifier │ │ [=] │ │ errable :: Identifier │ │ [call] │ │ [curly] │ │ Dict :: Identifier │ │ C :: Identifier │ │ ReactivityError :: Identifier │ │ [function] │ │ [::] │ │ [call] │ │ bfs :: Identifier │ │ [::] │ │ cell :: Identifier │ │ C :: Identifier │ │ ChildExplorationResult :: Identifier │ │ [block] │ │ [if] │ │ [call] │ │ in :: Identifier │ │ cell :: Identifier │ │ exits :: Identifier │ │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ │ [elseif] │ │ [block] │ │ [call] │ │ haskey :: Identifier │ │ errable :: Identifier │ │ cell :: Identifier │ │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ │ [elseif] │ │ [block] │ │ [&&] │ │ [call] │ │ > :: Identifier │ │ [call] │ │ length :: Identifier │ │ entries :: Identifier │ │ 0 :: Value │ │ [call] │ │ === :: Identifier │ │ [ref] │ │ entries :: Identifier │ │ end :: Identifier │ │ cell :: Identifier │ │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ │ [elseif] │ │ [block] │ │ [call] │ │ in :: Identifier │ │ cell :: Identifier │ │ entries :: Identifier │ │ [block] │ │ [=] │ │ currently_in :: Identifier │ │ [call] │ │ setdiff :: Identifier │ │ entries :: Identifier │ │ exits :: Identifier │ │ [=] │ │ cycle :: Identifier │ │ [ref] │ │ currently_in :: Identifier │ │ [call] │ │ : :: Identifier │ │ [call] │ │ findfirst :: Identifier │ │ [call] │ │ isequal :: Identifier │ │ cell :: Identifier │ │ currently_in :: Identifier │ │ end :: Identifier │ │ [if] │ │ [call] │ │ ! :: Identifier │ │ [call] │ │ cycle_is_among_functions :: Identifier │ │ topology :: Identifier │ │ cycle :: Identifier │ │ [block] │ │ [for] │ │ [=] │ │ cell :: Identifier │ │ cycle :: Identifier │ │ [block] │ │ [=] │ │ [ref] │ │ errable :: Identifier │ │ cell :: Identifier │ │ [call] │ │ CyclicReferenceError :: Identifier │ │ topology :: Identifier │ │ cycle :: Identifier │ │ [return] │ │ [call] │ │ Cycle :: Identifier │ │ cycle :: Identifier │ │ [return] │ │ [call] │ │ Ok :: Identifier │ │ [=] │ │ current_entries_num :: Identifier │ │ [call] │ │ length :: Identifier │ │ entries :: Identifier │ │ [=] │ │ current_exits_num :: Identifier │ │ [call] │ │ length :: Identifier │ │ exits :: Identifier │ │ [call] │ │ push! :: Identifier │ │ entries :: Identifier │ │ cell :: Identifier │ │ [=] │ │ assigners :: Identifier │ │ [call] │ │ where_assigned :: Identifier │ │ topology :: Identifier │ │ cell :: Identifier │ │ [=] │ │ referencers :: Identifier │ │ [call] │ │ |> :: Identifier │ │ [call] │ │ where_referenced :: Identifier │ │ topology :: Identifier │ │ cell :: Identifier │ │ [.] │ │ Iterators :: Identifier │ │ [inert] │ │ reverse :: Identifier │ │ [if] │ │ [&&] │ │ [call] │ │ ! :: Identifier │ │ allow_multiple_defs :: Identifier │ │ [call] │ │ > :: Identifier │ │ [call] │ │ length :: Identifier │ │ assigners :: Identifier │ │ 1 :: Value │ │ [block] │ │ [for] │ │ [=] │ │ c :: Identifier │ │ assigners :: Identifier │ │ [block] │ │ [=] │ │ [ref] │ │ errable :: Identifier │ │ c :: Identifier │ │ [call] │ │ MultipleDefinitionsError :: Identifier │ │ topology :: Identifier │ │ c :: Identifier │ │ assigners :: Identifier │ │ [=] │ │ should_continue_search_down :: Identifier │ │ [||] │ │ [call] │ │ ! :: Identifier │ │ skip_at_partial_multiple_defs :: Identifier │ │ [call] │ │ all :: Identifier │ │ [->] │ │ c :: Identifier │ │ [block] │ │ [||] │ │ [call] │ │ === :: Identifier │ │ c :: Identifier │ │ cell :: Identifier │ │ [call] │ │ ∈ :: Identifier │ │ c :: Identifier │ │ exits :: Identifier │ │ assigners :: Identifier │ │ [=] │ │ should_search_fellow_assigners_if_any :: Identifier │ │ [call] │ │ ! :: Identifier │ │ allow_multiple_defs :: Identifier │ │ [=] │ │ to_search_next :: Identifier │ │ [if] │ │ should_continue_search_down :: Identifier │ │ [block] │ │ [if] │ │ should_search_fellow_assigners_if_any :: Identifier │ │ [block] │ │ [call] │ │ union :: Identifier │ │ assigners :: Identifier │ │ referencers :: Identifier │ │ [block] │ │ referencers :: Identifier │ │ [block] │ │ [ref] │ │ C :: Identifier │ │ [for] │ │ [=] │ │ c :: Identifier │ │ to_search_next :: Identifier │ │ [block] │ │ [if] │ │ [call] │ │ !== :: Identifier │ │ c :: Identifier │ │ cell :: Identifier │ │ [block] │ │ [=] │ │ child_result :: Identifier │ │ [call] │ │ bfs :: Identifier │ │ c :: Identifier │ │ [if] │ │ [||] │ │ [call] │ │ isa :: Identifier │ │ child_result :: Identifier │ │ Ok :: Identifier │ │ [call] │ │ ∉ :: Identifier │ │ cell :: Identifier │ │ [.] │ │ child_result :: Identifier │ │ [inert] │ │ cycled_cells :: Identifier │ │ [block] │ │ [continue] │ │ [if] │ │ [call] │ │ ! :: Identifier │ │ [call] │ │ is_soft_edge :: Identifier │ │ topology :: Identifier │ │ cell :: Identifier │ │ c :: Identifier │ │ [block] │ │ [call] │ │ deleteat! :: Identifier │ │ entries :: Identifier │ │ [call] │ │ : :: Identifier │ │ [call] │ │ + :: Identifier │ │ current_entries_num :: Identifier │ │ 1 :: Value │ │ [call] │ │ length :: Identifier │ │ entries :: Identifier │ │ [call] │ │ deleteat! :: Identifier │ │ exits :: Identifier │ │ [call] │ │ : :: Identifier │ │ [call] │ │ + :: Identifier │ │ current_exits_num :: Identifier │ │ 1 :: Value │ │ [call] │ │ length :: Identifier │ │ exits :: Identifier │ │ [return] │ │ child_result :: Identifier │ │ [for] │ │ [=] │ │ cycled_cell :: Identifier │ │ [.] │ │ child_result :: Identifier │ │ [inert] │ │ cycled_cells :: Identifier │ │ [block] │ │ [call] │ │ delete! :: Identifier │ │ errable :: Identifier │ │ cycled_cell :: Identifier │ │ [if] │ │ [call] │ │ === :: Identifier │ │ [ref] │ │ entries :: Identifier │ │ end :: Identifier │ │ c :: Identifier │ │ [block] │ │ [call] │ │ pop! :: Identifier │ │ entries :: Identifier │ │ [continue] │ │ [call] │ │ push! :: Identifier │ │ exits :: Identifier │ │ cell :: Identifier │ │ [call] │ │ Ok :: Identifier │ │ [=] │ │ prelim_order_1 :: Identifier │ │ [call] │ │ sort :: Identifier │ │ roots :: Identifier │ │ [kw] │ │ alg :: Identifier │ │ MergeSort :: Identifier │ │ [kw] │ │ by :: Identifier │ │ [->] │ │ c :: Identifier │ │ [block] │ │ [call] │ │ cell_precedence_heuristic :: Identifier │ │ topology :: Identifier │ │ c :: Identifier │ │ [for] │ │ [=] │ │ i :: Identifier │ │ [call] │ │ : :: Identifier │ │ [call] │ │ length :: Identifier │ │ prelim_order_1 :: Identifier │ │ -1 :: Value │ │ 1 :: Value │ │ [block] │ │ [call] │ │ bfs :: Identifier │ │ [ref] │ │ prelim_order_1 :: Identifier │ │ i :: Identifier │ │ [=] │ │ ordered :: Identifier │ │ [call] │ │ reverse :: Identifier │ │ exits :: Identifier │ │ [call] │ │ TopologicalOrder :: Identifier │ │ topology :: Identifier │ │ [call] │ │ setdiff :: Identifier │ │ ordered :: Identifier │ │ [call] │ │ keys :: Identifier │ │ errable :: Identifier │ │ errable :: Identifier │ │ │ st1 = │ SyntaxTree with attributes mod,kind,var_id,toplevel_pure,scope_type,macro_source,name_val,syntax_flags,meta,scope_layer,value,jl_source,is_toplevel_thunk,source │ [block] │ │ [=] │ │ val :: Identifier │ scope_layer=3 │ [function] │ │ [where] │ │ [::] │ │ [call] │ │ topological_order :: Identifier │ scope_layer=1 │ [parameters] │ │ [kw] │ │ [::] │ │ allow_multiple_defs :: Identifier │ scope_layer=1 │ Bool :: Identifier │ scope_layer=1 │ false :: Value │ macro_source=405 │ [kw] │ │ [::] │ │ skip_at_partial_multiple_defs :: Identifier │ scope_layer=1 │ Bool :: Identifier │ scope_layer=1 │ false :: Value │ macro_source=405 │ [::] │ │ topology :: Identifier │ scope_layer=1 │ [curly] │ │ NotebookTopology :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [::] │ │ roots :: Identifier │ scope_layer=1 │ [curly] │ │ AbstractVector :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [curly] │ │ TopologicalOrder :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [<:] │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ AbstractCell :: Identifier │ scope_layer=1 │ [block] │ │ [if] │ │ skip_at_partial_multiple_defs :: Identifier │ scope_layer=1 │ [block] │ │ [if] │ │ allow_multiple_defs :: Identifier │ scope_layer=1 │ nothing :: Value │ macro_source=405 │ [call] │ │ throw :: Identifier │ mod,scope_layer=1 │ [call] │ │ AssertionError :: Identifier │ mod,scope_layer=1 │ "allow_multiple_defs" :: Value │ macro_source=405 │ [=] │ │ entries :: Identifier │ scope_layer=1 │ [ref] │ │ C :: Identifier │ scope_layer=1 │ [=] │ │ exits :: Identifier │ scope_layer=1 │ [ref] │ │ C :: Identifier │ scope_layer=1 │ [=] │ │ errable :: Identifier │ scope_layer=1 │ [call] │ │ [curly] │ │ Dict :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ ReactivityError :: Identifier │ scope_layer=1 │ [function] │ │ [::] │ │ [call] │ │ bfs :: Identifier │ scope_layer=1 │ [::] │ │ cell :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ ChildExplorationResult :: Identifier │ scope_layer=1 │ [block] │ │ [if] │ │ [call] │ │ in :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ scope_layer=1 │ [elseif] │ │ [block] │ │ [call] │ │ haskey :: Identifier │ scope_layer=1 │ errable :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ scope_layer=1 │ [elseif] │ │ [block] │ │ [&&] │ │ [call] │ │ > :: Identifier │ scope_layer=1 │ [call] │ │ length :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ 0 :: Value │ macro_source=405 │ [call] │ │ === :: Identifier │ scope_layer=1 │ [ref] │ │ entries :: Identifier │ scope_layer=1 │ end :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [block] │ │ [return] │ │ [call] │ │ Ok :: Identifier │ scope_layer=1 │ [elseif] │ │ [block] │ │ [call] │ │ in :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ [block] │ │ [=] │ │ currently_in :: Identifier │ scope_layer=1 │ [call] │ │ setdiff :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [=] │ │ cycle :: Identifier │ scope_layer=1 │ [ref] │ │ currently_in :: Identifier │ scope_layer=1 │ [call] │ │ : :: Identifier │ scope_layer=1 │ [call] │ │ findfirst :: Identifier │ scope_layer=1 │ [call] │ │ isequal :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ currently_in :: Identifier │ scope_layer=1 │ end :: Identifier │ scope_layer=1 │ [if] │ │ [call] │ │ ! :: Identifier │ scope_layer=1 │ [call] │ │ cycle_is_among_functions :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ cycle :: Identifier │ scope_layer=1 │ [block] │ │ [for] │ │ [=] │ │ cell :: Identifier │ scope_layer=1 │ cycle :: Identifier │ scope_layer=1 │ [block] │ │ [=] │ │ [ref] │ │ errable :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [call] │ │ CyclicReferenceError :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ cycle :: Identifier │ scope_layer=1 │ [return] │ │ [call] │ │ Cycle :: Identifier │ scope_layer=1 │ cycle :: Identifier │ scope_layer=1 │ [return] │ │ [call] │ │ Ok :: Identifier │ scope_layer=1 │ [=] │ │ current_entries_num :: Identifier │ scope_layer=1 │ [call] │ │ length :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ [=] │ │ current_exits_num :: Identifier │ scope_layer=1 │ [call] │ │ length :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [call] │ │ push! :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [=] │ │ assigners :: Identifier │ scope_layer=1 │ [call] │ │ where_assigned :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [=] │ │ referencers :: Identifier │ scope_layer=1 │ [call] │ │ |> :: Identifier │ scope_layer=1 │ [call] │ │ where_referenced :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [.] │ │ Iterators :: Identifier │ scope_layer=1 │ [inert] │ │ reverse :: Identifier │ │ [if] │ │ [&&] │ │ [call] │ │ ! :: Identifier │ scope_layer=1 │ allow_multiple_defs :: Identifier │ scope_layer=1 │ [call] │ │ > :: Identifier │ scope_layer=1 │ [call] │ │ length :: Identifier │ scope_layer=1 │ assigners :: Identifier │ scope_layer=1 │ 1 :: Value │ macro_source=405 │ [block] │ │ [for] │ │ [=] │ │ c :: Identifier │ scope_layer=1 │ assigners :: Identifier │ scope_layer=1 │ [block] │ │ [=] │ │ [ref] │ │ errable :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ [call] │ │ MultipleDefinitionsError :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ assigners :: Identifier │ scope_layer=1 │ [=] │ │ should_continue_search_down :: Identifier │ scope_layer=1 │ [||] │ │ [call] │ │ ! :: Identifier │ scope_layer=1 │ skip_at_partial_multiple_defs :: Identifier │ scope_layer=1 │ [call] │ │ all :: Identifier │ scope_layer=1 │ [->] │ │ c :: Identifier │ scope_layer=1 │ [block] │ │ [||] │ │ [call] │ │ === :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [call] │ │ ∈ :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ assigners :: Identifier │ scope_layer=1 │ [=] │ │ should_search_fellow_assigners_if_any :: Identifier │ scope_layer=1 │ [call] │ │ ! :: Identifier │ scope_layer=1 │ allow_multiple_defs :: Identifier │ scope_layer=1 │ [=] │ │ to_search_next :: Identifier │ scope_layer=1 │ [if] │ │ should_continue_search_down :: Identifier │ scope_layer=1 │ [block] │ │ [if] │ │ should_search_fellow_assigners_if_any :: Identifier │ scope_layer=1 │ [block] │ │ [call] │ │ union :: Identifier │ scope_layer=1 │ assigners :: Identifier │ scope_layer=1 │ referencers :: Identifier │ scope_layer=1 │ [block] │ │ referencers :: Identifier │ scope_layer=1 │ [block] │ │ [ref] │ │ C :: Identifier │ scope_layer=1 │ [for] │ │ [=] │ │ c :: Identifier │ scope_layer=1 │ to_search_next :: Identifier │ scope_layer=1 │ [block] │ │ [if] │ │ [call] │ │ !== :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [block] │ │ [=] │ │ child_result :: Identifier │ scope_layer=1 │ [call] │ │ bfs :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ [if] │ │ [||] │ │ [call] │ │ isa :: Identifier │ scope_layer=1 │ child_result :: Identifier │ scope_layer=1 │ Ok :: Identifier │ scope_layer=1 │ [call] │ │ ∉ :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [.] │ │ child_result :: Identifier │ scope_layer=1 │ [inert] │ │ cycled_cells :: Identifier │ │ [block] │ macro_source=405 │ [continue] │ macro_source=405 │ [if] │ │ [call] │ │ ! :: Identifier │ scope_layer=1 │ [call] │ │ is_soft_edge :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ [block] │ │ [call] │ │ deleteat! :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ [call] │ │ : :: Identifier │ scope_layer=1 │ [call] │ │ + :: Identifier │ scope_layer=1 │ current_entries_num :: Identifier │ scope_layer=1 │ 1 :: Value │ macro_source=405 │ [call] │ │ length :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ [call] │ │ deleteat! :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [call] │ │ : :: Identifier │ scope_layer=1 │ [call] │ │ + :: Identifier │ scope_layer=1 │ current_exits_num :: Identifier │ scope_layer=1 │ 1 :: Value │ macro_source=405 │ [call] │ │ length :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [return] │ │ child_result :: Identifier │ scope_layer=1 │ [for] │ │ [=] │ │ cycled_cell :: Identifier │ scope_layer=1 │ [.] │ │ child_result :: Identifier │ scope_layer=1 │ [inert] │ │ cycled_cells :: Identifier │ │ [block] │ │ [call] │ │ delete! :: Identifier │ scope_layer=1 │ errable :: Identifier │ scope_layer=1 │ cycled_cell :: Identifier │ scope_layer=1 │ [if] │ │ [call] │ │ === :: Identifier │ scope_layer=1 │ [ref] │ │ entries :: Identifier │ scope_layer=1 │ end :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ [block] │ │ [call] │ │ pop! :: Identifier │ scope_layer=1 │ entries :: Identifier │ scope_layer=1 │ [continue] │ macro_source=405 │ [call] │ │ push! :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ cell :: Identifier │ scope_layer=1 │ [call] │ │ Ok :: Identifier │ scope_layer=1 │ [=] │ │ prelim_order_1 :: Identifier │ scope_layer=1 │ [call] │ │ sort :: Identifier │ scope_layer=1 │ roots :: Identifier │ scope_layer=1 │ [kw] │ │ alg :: Identifier │ scope_layer=1 │ MergeSort :: Identifier │ scope_layer=1 │ [kw] │ │ by :: Identifier │ scope_layer=1 │ [->] │ │ c :: Identifier │ scope_layer=1 │ [block] │ │ [call] │ │ cell_precedence_heuristic :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ c :: Identifier │ scope_layer=1 │ [for] │ │ [=] │ │ i :: Identifier │ scope_layer=1 │ [call] │ │ : :: Identifier │ scope_layer=1 │ [call] │ │ length :: Identifier │ scope_layer=1 │ prelim_order_1 :: Identifier │ scope_layer=1 │ -1 :: Value │ macro_source=405 │ 1 :: Value │ macro_source=405 │ [block] │ │ [call] │ │ bfs :: Identifier │ scope_layer=1 │ [ref] │ │ prelim_order_1 :: Identifier │ scope_layer=1 │ i :: Identifier │ scope_layer=1 │ [=] │ │ ordered :: Identifier │ scope_layer=1 │ [call] │ │ reverse :: Identifier │ scope_layer=1 │ exits :: Identifier │ scope_layer=1 │ [call] │ │ TopologicalOrder :: Identifier │ scope_layer=1 │ topology :: Identifier │ scope_layer=1 │ [call] │ │ setdiff :: Identifier │ scope_layer=1 │ ordered :: Identifier │ scope_layer=1 │ [call] │ │ keys :: Identifier │ scope_layer=1 │ errable :: Identifier │ scope_layer=1 │ errable :: Identifier │ scope_layer=1 │ [call] │ │ Base.Docs.doc! :: Value │ macro_source=405 │ PlutoDependencyExplorer :: Value │ macro_source=405 │ [call] │ │ Base.Docs.Binding :: Value │ macro_source=405 │ PlutoDependencyExplorer :: Value │ │ [inert] │ jl_source=L65 │ topological_order :: Identifier │ │ [call] │ macro_source=405 │ Base.Docs.docstr :: Value │ macro_source=405 │ [call] │ macro_source=405 │ Core.svec :: Value │ macro_source=405 │ "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" :: Value │ macro_source=405 │ [call] │ macro_source=405 │ Dict{Symbol, Any} :: Value │ macro_source=405 │ :path => "/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl" :: Value │ macro_source=405 │ :linenumber => 8 :: Value │ macro_source=405 │ :module => PlutoDependencyExplorer :: Value │ macro_source=405 │ [where] │ │ [curly] │ │ Union :: Identifier │ scope_layer=1 │ [curly] │ │ Tuple :: Identifier │ scope_layer=1 │ [curly] │ │ NotebookTopology :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [curly] │ │ AbstractVector :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [curly] │ │ Tuple :: Identifier │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ [<:] │ scope_layer=1 │ C :: Identifier │ scope_layer=1 │ AbstractCell :: Identifier │ scope_layer=1 │ val :: Identifier │ scope_layer=3 │ │ file = "/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl" │ line = 8 └ mod = PlutoDependencyExplorer ERROR: LoadError: LoweringError: #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40 =# - Found unexpected binding of kind static_parameter Expression:  #₅₄/C Containing expressions:  (= #₁₇₄/C #₅₄/C)  (= #₃ (call core.svec (call core.svec #₁₄₃/##kw_body#topological_order#0#bfs##0 #₅₄/C) (call core.svec) SourceLocation:/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40:0))  (= #₃ (call core.svec (call core.svec (function_type #₅₆/bfs) #₅₄/C) (call core.svec) SourceLocation:/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40:0))  Detailed provenance:  #₅₄/C  └─ C  └─ C  ├─ @ /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40  └─ (macrocall @doc :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 =#) "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" (function (where (:: (call topological_order (parameters (kw (:: allow_multiple_defs Bool) false) (kw (:: skip_at_partial_multiple_defs Bool) false)) (:: topology (curly NotebookTopology C)) (:: roots (curly AbstractVector C))) (curly TopologicalOrder C)) (<: C AbstractCell)) (block (if skip_at_partial_multiple_defs (block (macrocall @assert :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =#) allow_multiple_defs))) (= entries (ref C)) (= exits (ref C)) (= errable (call (curly Dict C ReactivityError))) (function (:: (call bfs (:: cell C)) ChildExplorationResult) (block (if (call in cell exits) (block (return (call Ok))) (elseif (block (call haskey errable cell)) (block (return (call Ok))) (elseif (block (&& (call > (call length entries) 0) (call === (ref entries end) cell))) (block (return (call Ok))) (elseif (block (call in cell entries)) (block (= currently_in (call setdiff entries exits)) (= cycle (ref currently_in (call : (call findfirst (call isequal cell) currently_in) end))) (if (call ! (call cycle_is_among_functions topology cycle)) (block (for (= cell cycle) (block (= (ref errable cell) (call CyclicReferenceError topology cycle)))) (return (call Cycle cycle)))) (return (call Ok))))))) (= current_entries_num (call length entries)) (= current_exits_num (call length exits)) (call push! entries cell) (= assigners (call where_assigned topology cell)) (= referencers (call |> (call where_referenced topology cell) (. Iterators (inert reverse)))) (if (&& (call ! allow_multiple_defs) (call > (call length assigners) 1)) (block (for (= c assigners) (block (= (ref errable c) (call MultipleDefinitionsError topology c assigners)))))) (= should_continue_search_down (|| (call ! skip_at_partial_multiple_defs) (call all (-> c (block (|| (call === c cell) (call ∈ c exits)))) assigners))) (= should_search_fellow_assigners_if_any (call ! allow_multiple_defs)) (= to_search_next (if should_continue_search_down (block (if should_search_fellow_assigners_if_any (block (call union assigners referencers)) (block referencers))) (block (ref C)))) (for (= c to_search_next) (block (if (call !== c cell) (block (= child_result (call bfs c)) (if (|| (call isa child_result Ok) (call ∉ cell (. child_result (inert cycled_cells)))) (block (continue))) (if (call ! (call is_soft_edge topology cell c)) (block (call deleteat! entries (call : (call + current_entries_num 1) (call length entries))) (call deleteat! exits (call : (call + current_exits_num 1) (call length exits))) (return child_result))) (for (= cycled_cell (. child_result (inert cycled_cells))) (block (call delete! errable cycled_cell))) (if (call === (ref entries end) c) (block (call pop! entries))) (continue))))) (call push! exits cell) (call Ok))) (= prelim_order_1 (call sort roots (kw alg MergeSort) (kw by (-> c (block (call cell_precedence_heuristic topology c)))))) (for (= i (call : (call length prelim_order_1) -1 1)) (block (call bfs (ref prelim_order_1 i)))) (= ordered (call reverse exits)) (call TopologicalOrder topology (call setdiff ordered (call keys errable)) errable))))  └─ @ /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8  Stacktrace:  [1] _renumber(ctx::Base.JuliaLowering.LinearIRContext{Dict{Symbol, Dict{Int64, Any}}}, ssa_rewrites::Dict{Int64, Int64}, slot_rewrites::Dict{Int64, Int64}, label_table::Dict{Int64, Int64}, ex::Base.JuliaSyntax.SyntaxTree{Dict{Symbol, Dict{Int64, Any}}})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1097  [2] renumber_body(ctx::Base.JuliaLowering.LinearIRContext{Dict{Symbol, Dict{Int64, Any}}}, input_code::Base.JuliaSyntax.SyntaxList{Dict{Symbol, Dict{Int64, Any}}, Vector{Int64}}, slot_rewrites::Dict{Int64, Int64})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1162  [3] compile_lambda(outer_ctx::Base.JuliaLowering.LinearIRContext{Dict{Symbol, Dict{Int64, Any}}}, ex::Base.JuliaSyntax.SyntaxTree{Dict{Symbol, Dict{Int64, Any}}})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1257  [4] linearize_ir(ctx::Base.JuliaLowering.ClosureConversionCtx{Dict{Symbol, Dict{Int64, Any}}}, ex::Base.JuliaSyntax.SyntaxTree{Dict{Symbol, Dict{Int64, Any}}})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1287  [5] core_lowering_hook(code::Any, mod::Module, file::String, line::UInt64, world::UInt64, _warn::Bool)  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/hooks.jl:33  [6] include(mapexpr::Function, mod::Module, _path::String)  @ Base Base.jl:326  [7] top-level scope  @ ~/.julia/packages/PlutoDependencyExplorer/BaZEm/src/PlutoDependencyExplorer.jl:24  [8] include(mod::Module, _path::String)  @ Base Base.jl:325  [9] include_package_for_output(pkg::Base.PkgId, input::String, syntax_version::VersionNumber, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)  @ Base loading.jl:3296  [10] top-level scope  @ stdin:5  [11] eval(m::Module, e::Any)  @ Core boot.jl:522  [12] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)  @ Base loading.jl:3132  [13] include_string(m::Module, txt::String, fname::String)  @ Base loading.jl:3142 [inlined]  [14] exec_options(opts::Base.JLOptions)  @ Base client.jl:353  [15] _start()  @ Base client.jl:596 in expression starting at /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 in expression starting at /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/PlutoDependencyExplorer.jl:2 in expression starting at stdin:5 ERROR: LoadError: Precompiled image Base.PkgId(Base.UUID("72656b73-756c-7461-726b-72656b6b696b"), "PlutoDependencyExplorer") not available with flags CacheFlags(; use_pkgimages=false, debug_level=1, check_bounds=1, inline=true, opt_level=0) Stacktrace:  [1] error(s::String)  @ Base error.jl:56  [2] __require_prelocked(pkg::Base.PkgId, env::String)  @ Base loading.jl:2837  [3] _require_prelocked(uuidkey::Base.PkgId, env::String)  @ Base loading.jl:2685  [4] macro expansion  @ loading.jl:2599 [inlined]  [5] macro expansion  @ lock.jl:376 [inlined]  [6] __require(into::Module, mod::Symbol)  @ Base loading.jl:2563  [7] require(into::Module, mod::Symbol)  @ Base loading.jl:2539 [inlined]  [8] eval_import_path(at::Module, from::Nothing, path::Expr, keyword::String)  @ Base module.jl:36 [inlined]  [9] eval_import_path_all(at::Module, path::Expr, keyword::String)  @ Base module.jl:60  [10] _eval_import(::Bool, ::Module, ::Expr, ::Expr, ::Vararg{Expr})  @ Base module.jl:101  [11] eval_import(::Bool, ::Module, ::Expr, ::Expr, ::Vararg{Expr})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/runtime.jl:195  [12] top-level scope  @ ~/.julia/packages/Pluto/d9Dpv/src/Pluto.jl:43  [13] include(mod::Module, _path::String)  @ Base Base.jl:325  [14] include_package_for_output(pkg::Base.PkgId, input::String, syntax_version::VersionNumber, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)  @ Base loading.jl:3296  [15] top-level scope  @ stdin:5  [16] eval(m::Module, e::Any)  @ Core boot.jl:522  [17] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)  @ Base loading.jl:3132  [18] include_string(m::Module, txt::String, fname::String)  @ Base loading.jl:3142 [inlined]  [19] exec_options(opts::Base.JLOptions)  @ Base client.jl:353  [20] _start()  @ Base client.jl:596 in expression starting at /home/pkgeval/.julia/packages/Pluto/d9Dpv/src/Pluto.jl:1 in expression starting at stdin:5 ERROR: LoadError: Precompiled image Base.PkgId(Base.UUID("c3e4b0f8-55cb-11ea-2926-15256bba5781"), "Pluto") not available with flags CacheFlags(; use_pkgimages=false, debug_level=1, check_bounds=1, inline=true, opt_level=0) Stacktrace:  [1] error(s::String)  @ Base error.jl:56  [2] __require_prelocked(pkg::Base.PkgId, env::String)  @ Base loading.jl:2837  [3] _require_prelocked(uuidkey::Base.PkgId, env::String)  @ Base loading.jl:2685  [4] macro expansion  @ loading.jl:2599 [inlined]  [5] macro expansion  @ lock.jl:376 [inlined]  [6] __require(into::Module, mod::Symbol)  @ Base loading.jl:2563  [7] require(into::Module, mod::Symbol)  @ Base loading.jl:2539 [inlined]  [8] eval_import_path(at::Module, from::Nothing, path::Expr, keyword::String)  @ Base module.jl:36 [inlined]  [9] eval_import_path_all(at::Module, path::Expr, keyword::String)  @ Base module.jl:60  [10] _eval_import(::Bool, ::Module, ::Expr, ::Expr, ::Vararg{Expr})  @ Base module.jl:101  [11] eval_import(::Bool, ::Module, ::Expr, ::Expr, ::Vararg{Expr})  @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/runtime.jl:195  [12] top-level scope  @ ~/.julia/packages/JupyterPlutoConverter/NgUGW/src/JupyterPlutoConverter.jl:5  [13] include(mod::Module, _path::String)  @ Base Base.jl:325  [14] include_package_for_output(pkg::Base.PkgId, input::String, syntax_version::VersionNumber, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)  @ Base loading.jl:3296  [15] top-level scope  @ stdin:5  [16] eval(m::Module, e::Any)  @ Core boot.jl:522  [17] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)  @ Base loading.jl:3132  [18] include_string(m::Module, txt::String, fname::String)  @ Base loading.jl:3142 [inlined]  [19] exec_options(opts::Base.JLOptions)  @ Base client.jl:353  [20] _start()  @ Base client.jl:596 in expression starting at /home/pkgeval/.julia/packages/JupyterPlutoConverter/NgUGW/src/JupyterPlutoConverter.jl:1 in expression starting at stdin:5 3 dependencies had output during precompilation: ┌ Pluto │ ERROR: LoadError: Precompiled image Base.PkgId(Base.UUID("72656b73-756c-7461-726b-72656b6b696b"), "PlutoDependencyExplorer") not available with flags CacheFlags(; use_pkgimages=false, debug_level=1, check_bounds=1, inline=true, opt_level=0) │ Stacktrace: │ [1] error(s::String) │ @ Base error.jl:56 │ [2] __require_prelocked(pkg::Base.PkgId, env::String) │ @ Base loading.jl:2837 │ [3] _require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base loading.jl:2685 │ [4] macro expansion │ @ loading.jl:2599 [inlined] │ [5] macro expansion │ @ lock.jl:376 [inlined] │ [6] __require(into::Module, mod::Symbol) │ @ Base loading.jl:2563 │ [7] require(into::Module, mod::Symbol) │ @ Base loading.jl:2539 [inlined] │ [8] eval_import_path(at::Module, from::Nothing, path::Expr, keyword::String) │ @ Base module.jl:36 [inlined] │ [9] eval_import_path_all(at::Module, path::Expr, keyword::String) │ @ Base module.jl:60 │ [10] _eval_import(::Bool, ::Module, ::Expr, ::Expr, ::Vararg{Expr}) │ @ Base module.jl:101 │ [11] eval_import(::Bool, ::Module, ::Expr, ::Expr, ::Vararg{Expr}) │ @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/runtime.jl:195 │ [12] top-level scope │ @ ~/.julia/packages/Pluto/d9Dpv/src/Pluto.jl:43 │ [13] include(mod::Module, _path::String) │ @ Base Base.jl:325 │ [14] include_package_for_output(pkg::Base.PkgId, input::String, syntax_version::VersionNumber, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing) │ @ Base loading.jl:3296 │ [15] top-level scope │ @ stdin:5 │ [16] eval(m::Module, e::Any) │ @ Core boot.jl:522 │ [17] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String) │ @ Base loading.jl:3132 │ [18] include_string(m::Module, txt::String, fname::String) │ @ Base loading.jl:3142 [inlined] │ [19] exec_options(opts::Base.JLOptions) │ @ Base client.jl:353 │ [20] _start() │ @ Base client.jl:596 │ in expression starting at /home/pkgeval/.julia/packages/Pluto/d9Dpv/src/Pluto.jl:1 │ in expression starting at stdin:5 └ ┌ JupyterPlutoConverter │ [Output was shown above] └ ┌ PlutoDependencyExplorer │ ┌ Info: JuliaLowering threw given input: │ │ code = │ │ :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 =# Core.@doc "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" function (topological_order(topology::NotebookTopology{C}, roots::AbstractVector{C}; allow_multiple_defs::Bool = false, skip_at_partial_multiple_defs::Bool = false)::TopologicalOrder{C}) where C <: AbstractCell │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:26 =# │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:31 =# │ │ if skip_at_partial_multiple_defs │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =# │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =# @assert allow_multiple_defs │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:35 =# │ │ entries = C[] │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:36 =# │ │ exits = C[] │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:37 =# │ │ errable = Dict{C, ReactivityError}() │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40 =# │ │ function bfs(cell::C)::ChildExplorationResult │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40 =# │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:41 =# │ │ if cell in exits │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:42 =# │ │ return Ok() │ │ elseif #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:43 =# haskey(errable, cell) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:44 =# │ │ return Ok() │ │ elseif #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:45 =# length(entries) > 0 && entries[var"end"] === cell │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:46 =# │ │ return Ok() │ │ elseif #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:47 =# cell in entries │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:48 =# │ │ currently_in = setdiff(entries, exits) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:49 =# │ │ cycle = currently_in[findfirst(isequal(cell), currently_in):var"end"] │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:51 =# │ │ if !(cycle_is_among_functions(topology, cycle)) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:52 =# │ │ for cell = cycle │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:53 =# │ │ errable[cell] = CyclicReferenceError(topology, cycle) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:54 =# │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:55 =# │ │ return Cycle(cycle) │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:58 =# │ │ return Ok() │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:62 =# │ │ current_entries_num = length(entries) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:63 =# │ │ current_exits_num = length(exits) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:65 =# │ │ push!(entries, cell) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:67 =# │ │ assigners = where_assigned(topology, cell) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:68 =# │ │ referencers = where_referenced(topology, cell) |> Iterators.reverse │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:70 =# │ │ if !allow_multiple_defs && length(assigners) > 1 │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:71 =# │ │ for c = assigners │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:72 =# │ │ errable[c] = MultipleDefinitionsError(topology, c, assigners) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:73 =# │ │ end │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:76 =# │ │ should_continue_search_down = !skip_at_partial_multiple_defs || all((c->begin │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:76 =# │ │ c === cell || c ∈ exits │ │ end), assigners) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:77 =# │ │ should_search_fellow_assigners_if_any = !allow_multiple_defs │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:79 =# │ │ to_search_next = if should_continue_search_down │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:80 =# │ │ if should_search_fellow_assigners_if_any │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:81 =# │ │ union(assigners, referencers) │ │ else │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:83 =# │ │ referencers │ │ end │ │ else │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:86 =# │ │ C[] │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:89 =# │ │ for c = to_search_next │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:90 =# │ │ if c !== cell │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:91 =# │ │ child_result = bfs(c) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:94 =# │ │ if child_result isa Ok || cell ∉ child_result.cycled_cells │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:95 =# │ │ continue │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:102 =# │ │ if !(is_soft_edge(topology, cell, c)) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:104 =# │ │ deleteat!(entries, current_entries_num + 1:length(entries)) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:105 =# │ │ deleteat!(exits, current_exits_num + 1:length(exits)) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:106 =# │ │ return child_result │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:111 =# │ │ for cycled_cell = child_result.cycled_cells │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:112 =# │ │ delete!(errable, cycled_cell) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:113 =# │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:115 =# │ │ if entries[var"end"] === c │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:116 =# │ │ pop!(entries) │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:119 =# │ │ continue │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:121 =# │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:122 =# │ │ push!(exits, cell) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:123 =# │ │ Ok() │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:128 =# │ │ prelim_order_1 = sort(roots, alg = MergeSort, by = (c->begin │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:128 =# │ │ cell_precedence_heuristic(topology, c) │ │ end)) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:130 =# │ │ for i = length(prelim_order_1):-1:1 │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:131 =# │ │ bfs(prelim_order_1[i]) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:132 =# │ │ end │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:133 =# │ │ ordered = reverse(exits) │ │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:134 =# │ │ TopologicalOrder(topology, setdiff(ordered, keys(errable)), errable) │ │ end) │ │ st0 = │ │ SyntaxTree with attributes mod,kind,var_id,toplevel_pure,scope_type,macro_source,name_val,syntax_flags,meta,scope_layer,value,jl_source,is_toplevel_thunk,source,__macro_ctx__ │ │ [macrocall] │ │ │ @doc :: Identifier │ mod │ │ :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 =#) :: Value │ │ │ "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" :: Value │ │ │ [function] │ │ │ [where] │ │ │ [::] │ │ │ [call] │ │ │ topological_order :: Identifier │ │ │ [parameters] │ │ │ [kw] │ │ │ [::] │ │ │ allow_multiple_defs :: Identifier │ │ │ Bool :: Identifier │ │ │ false :: Value │ │ │ [kw] │ │ │ [::] │ │ │ skip_at_partial_multiple_defs :: Identifier │ │ │ Bool :: Identifier │ │ │ false :: Value │ │ │ [::] │ │ │ topology :: Identifier │ │ │ [curly] │ │ │ NotebookTopology :: Identifier │ │ │ C :: Identifier │ │ │ [::] │ │ │ roots :: Identifier │ │ │ [curly] │ │ │ AbstractVector :: Identifier │ │ │ C :: Identifier │ │ │ [curly] │ │ │ TopologicalOrder :: Identifier │ │ │ C :: Identifier │ │ │ [<:] │ │ │ C :: Identifier │ │ │ AbstractCell :: Identifier │ │ │ [block] │ │ │ [if] │ │ │ skip_at_partial_multiple_defs :: Identifier │ │ │ [block] │ │ │ [macrocall] │ │ │ @assert :: Identifier │ │ │ :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =#) :: Value │ │ │ allow_multiple_defs :: Identifier │ │ │ [=] │ │ │ entries :: Identifier │ │ │ [ref] │ │ │ C :: Identifier │ │ │ [=] │ │ │ exits :: Identifier │ │ │ [ref] │ │ │ C :: Identifier │ │ │ [=] │ │ │ errable :: Identifier │ │ │ [call] │ │ │ [curly] │ │ │ Dict :: Identifier │ │ │ C :: Identifier │ │ │ ReactivityError :: Identifier │ │ │ [function] │ │ │ [::] │ │ │ [call] │ │ │ bfs :: Identifier │ │ │ [::] │ │ │ cell :: Identifier │ │ │ C :: Identifier │ │ │ ChildExplorationResult :: Identifier │ │ │ [block] │ │ │ [if] │ │ │ [call] │ │ │ in :: Identifier │ │ │ cell :: Identifier │ │ │ exits :: Identifier │ │ │ [block] │ │ │ [return] │ │ │ [call] │ │ │ Ok :: Identifier │ │ │ [elseif] │ │ │ [block] │ │ │ [call] │ │ │ haskey :: Identifier │ │ │ errable :: Identifier │ │ │ cell :: Identifier │ │ │ [block] │ │ │ [return] │ │ │ [call] │ │ │ Ok :: Identifier │ │ │ [elseif] │ │ │ [block] │ │ │ [&&] │ │ │ [call] │ │ │ > :: Identifier │ │ │ [call] │ │ │ length :: Identifier │ │ │ entries :: Identifier │ │ │ 0 :: Value │ │ │ [call] │ │ │ === :: Identifier │ │ │ [ref] │ │ │ entries :: Identifier │ │ │ end :: Identifier │ │ │ cell :: Identifier │ │ │ [block] │ │ │ [return] │ │ │ [call] │ │ │ Ok :: Identifier │ │ │ [elseif] │ │ │ [block] │ │ │ [call] │ │ │ in :: Identifier │ │ │ cell :: Identifier │ │ │ entries :: Identifier │ │ │ [block] │ │ │ [=] │ │ │ currently_in :: Identifier │ │ │ [call] │ │ │ setdiff :: Identifier │ │ │ entries :: Identifier │ │ │ exits :: Identifier │ │ │ [=] │ │ │ cycle :: Identifier │ │ │ [ref] │ │ │ currently_in :: Identifier │ │ │ [call] │ │ │ : :: Identifier │ │ │ [call] │ │ │ findfirst :: Identifier │ │ │ [call] │ │ │ isequal :: Identifier │ │ │ cell :: Identifier │ │ │ currently_in :: Identifier │ │ │ end :: Identifier │ │ │ [if] │ │ │ [call] │ │ │ ! :: Identifier │ │ │ [call] │ │ │ cycle_is_among_functions :: Identifier │ │ │ topology :: Identifier │ │ │ cycle :: Identifier │ │ │ [block] │ │ │ [for] │ │ │ [=] │ │ │ cell :: Identifier │ │ │ cycle :: Identifier │ │ │ [block] │ │ │ [=] │ │ │ [ref] │ │ │ errable :: Identifier │ │ │ cell :: Identifier │ │ │ [call] │ │ │ CyclicReferenceError :: Identifier │ │ │ topology :: Identifier │ │ │ cycle :: Identifier │ │ │ [return] │ │ │ [call] │ │ │ Cycle :: Identifier │ │ │ cycle :: Identifier │ │ │ [return] │ │ │ [call] │ │ │ Ok :: Identifier │ │ │ [=] │ │ │ current_entries_num :: Identifier │ │ │ [call] │ │ │ length :: Identifier │ │ │ entries :: Identifier │ │ │ [=] │ │ │ current_exits_num :: Identifier │ │ │ [call] │ │ │ length :: Identifier │ │ │ exits :: Identifier │ │ │ [call] │ │ │ push! :: Identifier │ │ │ entries :: Identifier │ │ │ cell :: Identifier │ │ │ [=] │ │ │ assigners :: Identifier │ │ │ [call] │ │ │ where_assigned :: Identifier │ │ │ topology :: Identifier │ │ │ cell :: Identifier │ │ │ [=] │ │ │ referencers :: Identifier │ │ │ [call] │ │ │ |> :: Identifier │ │ │ [call] │ │ │ where_referenced :: Identifier │ │ │ topology :: Identifier │ │ │ cell :: Identifier │ │ │ [.] │ │ │ Iterators :: Identifier │ │ │ [inert] │ │ │ reverse :: Identifier │ │ │ [if] │ │ │ [&&] │ │ │ [call] │ │ │ ! :: Identifier │ │ │ allow_multiple_defs :: Identifier │ │ │ [call] │ │ │ > :: Identifier │ │ │ [call] │ │ │ length :: Identifier │ │ │ assigners :: Identifier │ │ │ 1 :: Value │ │ │ [block] │ │ │ [for] │ │ │ [=] │ │ │ c :: Identifier │ │ │ assigners :: Identifier │ │ │ [block] │ │ │ [=] │ │ │ [ref] │ │ │ errable :: Identifier │ │ │ c :: Identifier │ │ │ [call] │ │ │ MultipleDefinitionsError :: Identifier │ │ │ topology :: Identifier │ │ │ c :: Identifier │ │ │ assigners :: Identifier │ │ │ [=] │ │ │ should_continue_search_down :: Identifier │ │ │ [||] │ │ │ [call] │ │ │ ! :: Identifier │ │ │ skip_at_partial_multiple_defs :: Identifier │ │ │ [call] │ │ │ all :: Identifier │ │ │ [->] │ │ │ c :: Identifier │ │ │ [block] │ │ │ [||] │ │ │ [call] │ │ │ === :: Identifier │ │ │ c :: Identifier │ │ │ cell :: Identifier │ │ │ [call] │ │ │ ∈ :: Identifier │ │ │ c :: Identifier │ │ │ exits :: Identifier │ │ │ assigners :: Identifier │ │ │ [=] │ │ │ should_search_fellow_assigners_if_any :: Identifier │ │ │ [call] │ │ │ ! :: Identifier │ │ │ allow_multiple_defs :: Identifier │ │ │ [=] │ │ │ to_search_next :: Identifier │ │ │ [if] │ │ │ should_continue_search_down :: Identifier │ │ │ [block] │ │ │ [if] │ │ │ should_search_fellow_assigners_if_any :: Identifier │ │ │ [block] │ │ │ [call] │ │ │ union :: Identifier │ │ │ assigners :: Identifier │ │ │ referencers :: Identifier │ │ │ [block] │ │ │ referencers :: Identifier │ │ │ [block] │ │ │ [ref] │ │ │ C :: Identifier │ │ │ [for] │ │ │ [=] │ │ │ c :: Identifier │ │ │ to_search_next :: Identifier │ │ │ [block] │ │ │ [if] │ │ │ [call] │ │ │ !== :: Identifier │ │ │ c :: Identifier │ │ │ cell :: Identifier │ │ │ [block] │ │ │ [=] │ │ │ child_result :: Identifier │ │ │ [call] │ │ │ bfs :: Identifier │ │ │ c :: Identifier │ │ │ [if] │ │ │ [||] │ │ │ [call] │ │ │ isa :: Identifier │ │ │ child_result :: Identifier │ │ │ Ok :: Identifier │ │ │ [call] │ │ │ ∉ :: Identifier │ │ │ cell :: Identifier │ │ │ [.] │ │ │ child_result :: Identifier │ │ │ [inert] │ │ │ cycled_cells :: Identifier │ │ │ [block] │ │ │ [continue] │ │ │ [if] │ │ │ [call] │ │ │ ! :: Identifier │ │ │ [call] │ │ │ is_soft_edge :: Identifier │ │ │ topology :: Identifier │ │ │ cell :: Identifier │ │ │ c :: Identifier │ │ │ [block] │ │ │ [call] │ │ │ deleteat! :: Identifier │ │ │ entries :: Identifier │ │ │ [call] │ │ │ : :: Identifier │ │ │ [call] │ │ │ + :: Identifier │ │ │ current_entries_num :: Identifier │ │ │ 1 :: Value │ │ │ [call] │ │ │ length :: Identifier │ │ │ entries :: Identifier │ │ │ [call] │ │ │ deleteat! :: Identifier │ │ │ exits :: Identifier │ │ │ [call] │ │ │ : :: Identifier │ │ │ [call] │ │ │ + :: Identifier │ │ │ current_exits_num :: Identifier │ │ │ 1 :: Value │ │ │ [call] │ │ │ length :: Identifier │ │ │ exits :: Identifier │ │ │ [return] │ │ │ child_result :: Identifier │ │ │ [for] │ │ │ [=] │ │ │ cycled_cell :: Identifier │ │ │ [.] │ │ │ child_result :: Identifier │ │ │ [inert] │ │ │ cycled_cells :: Identifier │ │ │ [block] │ │ │ [call] │ │ │ delete! :: Identifier │ │ │ errable :: Identifier │ │ │ cycled_cell :: Identifier │ │ │ [if] │ │ │ [call] │ │ │ === :: Identifier │ │ │ [ref] │ │ │ entries :: Identifier │ │ │ end :: Identifier │ │ │ c :: Identifier │ │ │ [block] │ │ │ [call] │ │ │ pop! :: Identifier │ │ │ entries :: Identifier │ │ │ [continue] │ │ │ [call] │ │ │ push! :: Identifier │ │ │ exits :: Identifier │ │ │ cell :: Identifier │ │ │ [call] │ │ │ Ok :: Identifier │ │ │ [=] │ │ │ prelim_order_1 :: Identifier │ │ │ [call] │ │ │ sort :: Identifier │ │ │ roots :: Identifier │ │ │ [kw] │ │ │ alg :: Identifier │ │ │ MergeSort :: Identifier │ │ │ [kw] │ │ │ by :: Identifier │ │ │ [->] │ │ │ c :: Identifier │ │ │ [block] │ │ │ [call] │ │ │ cell_precedence_heuristic :: Identifier │ │ │ topology :: Identifier │ │ │ c :: Identifier │ │ │ [for] │ │ │ [=] │ │ │ i :: Identifier │ │ │ [call] │ │ │ : :: Identifier │ │ │ [call] │ │ │ length :: Identifier │ │ │ prelim_order_1 :: Identifier │ │ │ -1 :: Value │ │ │ 1 :: Value │ │ │ [block] │ │ │ [call] │ │ │ bfs :: Identifier │ │ │ [ref] │ │ │ prelim_order_1 :: Identifier │ │ │ i :: Identifier │ │ │ [=] │ │ │ ordered :: Identifier │ │ │ [call] │ │ │ reverse :: Identifier │ │ │ exits :: Identifier │ │ │ [call] │ │ │ TopologicalOrder :: Identifier │ │ │ topology :: Identifier │ │ │ [call] │ │ │ setdiff :: Identifier │ │ │ ordered :: Identifier │ │ │ [call] │ │ │ keys :: Identifier │ │ │ errable :: Identifier │ │ │ errable :: Identifier │ │ │ │ │ st1 = │ │ SyntaxTree with attributes mod,kind,var_id,toplevel_pure,scope_type,macro_source,name_val,syntax_flags,meta,scope_layer,value,jl_source,is_toplevel_thunk,source │ │ [block] │ │ │ [=] │ │ │ val :: Identifier │ scope_layer=3 │ │ [function] │ │ │ [where] │ │ │ [::] │ │ │ [call] │ │ │ topological_order :: Identifier │ scope_layer=1 │ │ [parameters] │ │ │ [kw] │ │ │ [::] │ │ │ allow_multiple_defs :: Identifier │ scope_layer=1 │ │ Bool :: Identifier │ scope_layer=1 │ │ false :: Value │ macro_source=405 │ │ [kw] │ │ │ [::] │ │ │ skip_at_partial_multiple_defs :: Identifier │ scope_layer=1 │ │ Bool :: Identifier │ scope_layer=1 │ │ false :: Value │ macro_source=405 │ │ [::] │ │ │ topology :: Identifier │ scope_layer=1 │ │ [curly] │ │ │ NotebookTopology :: Identifier │ scope_layer=1 │ │ C :: Identifier │ scope_layer=1 │ │ [::] │ │ │ roots :: Identifier │ scope_layer=1 │ │ [curly] │ │ │ AbstractVector :: Identifier │ scope_layer=1 │ │ C :: Identifier │ scope_layer=1 │ │ [curly] │ │ │ TopologicalOrder :: Identifier │ scope_layer=1 │ │ C :: Identifier │ scope_layer=1 │ │ [<:] │ scope_layer=1 │ │ C :: Identifier │ scope_layer=1 │ │ AbstractCell :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [if] │ │ │ skip_at_partial_multiple_defs :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [if] │ │ │ allow_multiple_defs :: Identifier │ scope_layer=1 │ │ nothing :: Value │ macro_source=405 │ │ [call] │ │ │ throw :: Identifier │ mod,scope_layer=1 │ │ [call] │ │ │ AssertionError :: Identifier │ mod,scope_layer=1 │ │ "allow_multiple_defs" :: Value │ macro_source=405 │ │ [=] │ │ │ entries :: Identifier │ scope_layer=1 │ │ [ref] │ │ │ C :: Identifier │ scope_layer=1 │ │ [=] │ │ │ exits :: Identifier │ scope_layer=1 │ │ [ref] │ │ │ C :: Identifier │ scope_layer=1 │ │ [=] │ │ │ errable :: Identifier │ scope_layer=1 │ │ [call] │ │ │ [curly] │ │ │ Dict :: Identifier │ scope_layer=1 │ │ C :: Identifier │ scope_layer=1 │ │ ReactivityError :: Identifier │ scope_layer=1 │ │ [function] │ │ │ [::] │ │ │ [call] │ │ │ bfs :: Identifier │ scope_layer=1 │ │ [::] │ │ │ cell :: Identifier │ scope_layer=1 │ │ C :: Identifier │ scope_layer=1 │ │ ChildExplorationResult :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [if] │ │ │ [call] │ │ │ in :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ exits :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [return] │ │ │ [call] │ │ │ Ok :: Identifier │ scope_layer=1 │ │ [elseif] │ │ │ [block] │ │ │ [call] │ │ │ haskey :: Identifier │ scope_layer=1 │ │ errable :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [return] │ │ │ [call] │ │ │ Ok :: Identifier │ scope_layer=1 │ │ [elseif] │ │ │ [block] │ │ │ [&&] │ │ │ [call] │ │ │ > :: Identifier │ scope_layer=1 │ │ [call] │ │ │ length :: Identifier │ scope_layer=1 │ │ entries :: Identifier │ scope_layer=1 │ │ 0 :: Value │ macro_source=405 │ │ [call] │ │ │ === :: Identifier │ scope_layer=1 │ │ [ref] │ │ │ entries :: Identifier │ scope_layer=1 │ │ end :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [return] │ │ │ [call] │ │ │ Ok :: Identifier │ scope_layer=1 │ │ [elseif] │ │ │ [block] │ │ │ [call] │ │ │ in :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ entries :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [=] │ │ │ currently_in :: Identifier │ scope_layer=1 │ │ [call] │ │ │ setdiff :: Identifier │ scope_layer=1 │ │ entries :: Identifier │ scope_layer=1 │ │ exits :: Identifier │ scope_layer=1 │ │ [=] │ │ │ cycle :: Identifier │ scope_layer=1 │ │ [ref] │ │ │ currently_in :: Identifier │ scope_layer=1 │ │ [call] │ │ │ : :: Identifier │ scope_layer=1 │ │ [call] │ │ │ findfirst :: Identifier │ scope_layer=1 │ │ [call] │ │ │ isequal :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ currently_in :: Identifier │ scope_layer=1 │ │ end :: Identifier │ scope_layer=1 │ │ [if] │ │ │ [call] │ │ │ ! :: Identifier │ scope_layer=1 │ │ [call] │ │ │ cycle_is_among_functions :: Identifier │ scope_layer=1 │ │ topology :: Identifier │ scope_layer=1 │ │ cycle :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [for] │ │ │ [=] │ │ │ cell :: Identifier │ scope_layer=1 │ │ cycle :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [=] │ │ │ [ref] │ │ │ errable :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ [call] │ │ │ CyclicReferenceError :: Identifier │ scope_layer=1 │ │ topology :: Identifier │ scope_layer=1 │ │ cycle :: Identifier │ scope_layer=1 │ │ [return] │ │ │ [call] │ │ │ Cycle :: Identifier │ scope_layer=1 │ │ cycle :: Identifier │ scope_layer=1 │ │ [return] │ │ │ [call] │ │ │ Ok :: Identifier │ scope_layer=1 │ │ [=] │ │ │ current_entries_num :: Identifier │ scope_layer=1 │ │ [call] │ │ │ length :: Identifier │ scope_layer=1 │ │ entries :: Identifier │ scope_layer=1 │ │ [=] │ │ │ current_exits_num :: Identifier │ scope_layer=1 │ │ [call] │ │ │ length :: Identifier │ scope_layer=1 │ │ exits :: Identifier │ scope_layer=1 │ │ [call] │ │ │ push! :: Identifier │ scope_layer=1 │ │ entries :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ [=] │ │ │ assigners :: Identifier │ scope_layer=1 │ │ [call] │ │ │ where_assigned :: Identifier │ scope_layer=1 │ │ topology :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ [=] │ │ │ referencers :: Identifier │ scope_layer=1 │ │ [call] │ │ │ |> :: Identifier │ scope_layer=1 │ │ [call] │ │ │ where_referenced :: Identifier │ scope_layer=1 │ │ topology :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ [.] │ │ │ Iterators :: Identifier │ scope_layer=1 │ │ [inert] │ │ │ reverse :: Identifier │ │ │ [if] │ │ │ [&&] │ │ │ [call] │ │ │ ! :: Identifier │ scope_layer=1 │ │ allow_multiple_defs :: Identifier │ scope_layer=1 │ │ [call] │ │ │ > :: Identifier │ scope_layer=1 │ │ [call] │ │ │ length :: Identifier │ scope_layer=1 │ │ assigners :: Identifier │ scope_layer=1 │ │ 1 :: Value │ macro_source=405 │ │ [block] │ │ │ [for] │ │ │ [=] │ │ │ c :: Identifier │ scope_layer=1 │ │ assigners :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [=] │ │ │ [ref] │ │ │ errable :: Identifier │ scope_layer=1 │ │ c :: Identifier │ scope_layer=1 │ │ [call] │ │ │ MultipleDefinitionsError :: Identifier │ scope_layer=1 │ │ topology :: Identifier │ scope_layer=1 │ │ c :: Identifier │ scope_layer=1 │ │ assigners :: Identifier │ scope_layer=1 │ │ [=] │ │ │ should_continue_search_down :: Identifier │ scope_layer=1 │ │ [||] │ │ │ [call] │ │ │ ! :: Identifier │ scope_layer=1 │ │ skip_at_partial_multiple_defs :: Identifier │ scope_layer=1 │ │ [call] │ │ │ all :: Identifier │ scope_layer=1 │ │ [->] │ │ │ c :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [||] │ │ │ [call] │ │ │ === :: Identifier │ scope_layer=1 │ │ c :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ [call] │ │ │ ∈ :: Identifier │ scope_layer=1 │ │ c :: Identifier │ scope_layer=1 │ │ exits :: Identifier │ scope_layer=1 │ │ assigners :: Identifier │ scope_layer=1 │ │ [=] │ │ │ should_search_fellow_assigners_if_any :: Identifier │ scope_layer=1 │ │ [call] │ │ │ ! :: Identifier │ scope_layer=1 │ │ allow_multiple_defs :: Identifier │ scope_layer=1 │ │ [=] │ │ │ to_search_next :: Identifier │ scope_layer=1 │ │ [if] │ │ │ should_continue_search_down :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [if] │ │ │ should_search_fellow_assigners_if_any :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [call] │ │ │ union :: Identifier │ scope_layer=1 │ │ assigners :: Identifier │ scope_layer=1 │ │ referencers :: Identifier │ scope_layer=1 │ │ [block] │ │ │ referencers :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [ref] │ │ │ C :: Identifier │ scope_layer=1 │ │ [for] │ │ │ [=] │ │ │ c :: Identifier │ scope_layer=1 │ │ to_search_next :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [if] │ │ │ [call] │ │ │ !== :: Identifier │ scope_layer=1 │ │ c :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [=] │ │ │ child_result :: Identifier │ scope_layer=1 │ │ [call] │ │ │ bfs :: Identifier │ scope_layer=1 │ │ c :: Identifier │ scope_layer=1 │ │ [if] │ │ │ [||] │ │ │ [call] │ │ │ isa :: Identifier │ scope_layer=1 │ │ child_result :: Identifier │ scope_layer=1 │ │ Ok :: Identifier │ scope_layer=1 │ │ [call] │ │ │ ∉ :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ [.] │ │ │ child_result :: Identifier │ scope_layer=1 │ │ [inert] │ │ │ cycled_cells :: Identifier │ │ │ [block] │ macro_source=405 │ │ [continue] │ macro_source=405 │ │ [if] │ │ │ [call] │ │ │ ! :: Identifier │ scope_layer=1 │ │ [call] │ │ │ is_soft_edge :: Identifier │ scope_layer=1 │ │ topology :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ c :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [call] │ │ │ deleteat! :: Identifier │ scope_layer=1 │ │ entries :: Identifier │ scope_layer=1 │ │ [call] │ │ │ : :: Identifier │ scope_layer=1 │ │ [call] │ │ │ + :: Identifier │ scope_layer=1 │ │ current_entries_num :: Identifier │ scope_layer=1 │ │ 1 :: Value │ macro_source=405 │ │ [call] │ │ │ length :: Identifier │ scope_layer=1 │ │ entries :: Identifier │ scope_layer=1 │ │ [call] │ │ │ deleteat! :: Identifier │ scope_layer=1 │ │ exits :: Identifier │ scope_layer=1 │ │ [call] │ │ │ : :: Identifier │ scope_layer=1 │ │ [call] │ │ │ + :: Identifier │ scope_layer=1 │ │ current_exits_num :: Identifier │ scope_layer=1 │ │ 1 :: Value │ macro_source=405 │ │ [call] │ │ │ length :: Identifier │ scope_layer=1 │ │ exits :: Identifier │ scope_layer=1 │ │ [return] │ │ │ child_result :: Identifier │ scope_layer=1 │ │ [for] │ │ │ [=] │ │ │ cycled_cell :: Identifier │ scope_layer=1 │ │ [.] │ │ │ child_result :: Identifier │ scope_layer=1 │ │ [inert] │ │ │ cycled_cells :: Identifier │ │ │ [block] │ │ │ [call] │ │ │ delete! :: Identifier │ scope_layer=1 │ │ errable :: Identifier │ scope_layer=1 │ │ cycled_cell :: Identifier │ scope_layer=1 │ │ [if] │ │ │ [call] │ │ │ === :: Identifier │ scope_layer=1 │ │ [ref] │ │ │ entries :: Identifier │ scope_layer=1 │ │ end :: Identifier │ scope_layer=1 │ │ c :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [call] │ │ │ pop! :: Identifier │ scope_layer=1 │ │ entries :: Identifier │ scope_layer=1 │ │ [continue] │ macro_source=405 │ │ [call] │ │ │ push! :: Identifier │ scope_layer=1 │ │ exits :: Identifier │ scope_layer=1 │ │ cell :: Identifier │ scope_layer=1 │ │ [call] │ │ │ Ok :: Identifier │ scope_layer=1 │ │ [=] │ │ │ prelim_order_1 :: Identifier │ scope_layer=1 │ │ [call] │ │ │ sort :: Identifier │ scope_layer=1 │ │ roots :: Identifier │ scope_layer=1 │ │ [kw] │ │ │ alg :: Identifier │ scope_layer=1 │ │ MergeSort :: Identifier │ scope_layer=1 │ │ [kw] │ │ │ by :: Identifier │ scope_layer=1 │ │ [->] │ │ │ c :: Identifier │ scope_layer=1 │ │ [block] │ │ │ [call] │ │ │ cell_precedence_heuristic :: Identifier │ scope_layer=1 │ │ topology :: Identifier │ scope_layer=1 │ │ c :: Identifier │ scope_layer=1 │ │ [for] │ │ │ [=] │ │ │ i :: Identifier │ scope_layer=1 │ │ [call] │ │ │ : :: Identifier │ scope_layer=1 │ │ [call] │ │ │ length :: Identifier │ scope_layer=1 │ │ prelim_order_1 :: Identifier │ scope_layer=1 │ │ -1 :: Value │ macro_source=405 │ │ 1 :: Value │ macro_source=405 │ │ [block] │ │ │ [call] │ │ │ bfs :: Identifier │ scope_layer=1 │ │ [ref] │ │ │ prelim_order_1 :: Identifier │ scope_layer=1 │ │ i :: Identifier │ scope_layer=1 │ │ [=] │ │ │ ordered :: Identifier │ scope_layer=1 │ │ [call] │ │ │ reverse :: Identifier │ scope_layer=1 │ │ exits :: Identifier │ scope_layer=1 │ │ [call] │ │ │ TopologicalOrder :: Identifier │ scope_layer=1 │ │ topology :: Identifier │ scope_layer=1 │ │ [call] │ │ │ setdiff :: Identifier │ scope_layer=1 │ │ ordered :: Identifier │ scope_layer=1 │ │ [call] │ │ │ keys :: Identifier │ scope_layer=1 │ │ errable :: Identifier │ scope_layer=1 │ │ errable :: Identifier │ scope_layer=1 │ │ [call] │ │ │ Base.Docs.doc! :: Value │ macro_source=405 │ │ PlutoDependencyExplorer :: Value │ macro_source=405 │ │ [call] │ │ │ Base.Docs.Binding :: Value │ macro_source=405 │ │ PlutoDependencyExplorer :: Value │ │ │ [inert] │ jl_source=L65 │ │ topological_order :: Identifier │ │ │ [call] │ macro_source=405 │ │ Base.Docs.docstr :: Value │ macro_source=405 │ │ [call] │ macro_source=405 │ │ Core.svec :: Value │ macro_source=405 │ │ "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" :: Value │ macro_source=405 │ │ [call] │ macro_source=405 │ │ Dict{Symbol, Any} :: Value │ macro_source=405 │ │ :path => "/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl" :: Value │ macro_source=405 │ │ :linenumber => 8 :: Value │ macro_source=405 │ │ :module => PlutoDependencyExplorer :: Value │ macro_source=405 │ │ [where] │ │ │ [curly] │ │ │ Union :: Identifier │ scope_layer=1 │ │ [curly] │ │ │ Tuple :: Identifier │ scope_layer=1 │ │ [curly] │ │ │ NotebookTopology :: Identifier │ scope_layer=1 │ │ C :: Identifier │ scope_layer=1 │ │ [curly] │ │ │ AbstractVector :: Identifier │ scope_layer=1 │ │ C :: Identifier │ scope_layer=1 │ │ [curly] │ │ │ Tuple :: Identifier │ scope_layer=1 │ │ C :: Identifier │ scope_layer=1 │ │ [<:] │ scope_layer=1 │ │ C :: Identifier │ scope_layer=1 │ │ AbstractCell :: Identifier │ scope_layer=1 │ │ val :: Identifier │ scope_layer=3 │ │ │ │ file = "/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl" │ │ line = 8 │ └ mod = PlutoDependencyExplorer │ ERROR: LoadError: LoweringError: │ #= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40 =# - Found unexpected binding of kind static_parameter │ Expression: │ #₅₄/C │ Containing expressions: │ (= #₁₇₄/C #₅₄/C) │ (= #₃ (call core.svec (call core.svec #₁₄₃/##kw_body#topological_order#0#bfs##0 #₅₄/C) (call core.svec) SourceLocation:/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40:0)) │ (= #₃ (call core.svec (call core.svec (function_type #₅₆/bfs) #₅₄/C) (call core.svec) SourceLocation:/home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40:0)) │ │ Detailed provenance: │ #₅₄/C │ └─ C │ └─ C │ ├─ @ /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:40 │ └─ (macrocall @doc :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 =#) "Return a `TopologicalOrder` that lists the cells to be evaluated in a single reactive run, in topological order. Includes the given roots.\n\n# Keyword arguments\n\n- `allow_multiple_defs::Bool = false`\n \n If `false` (default), multiple definitions are not allowed. When a cell is found that defines a variable that is also defined by another cell (this other cell is called a *fellow assigner*), then both cells are marked as `errable` and not `runnable`.\n \n If `true`, then multiple definitions are allowed, in the sense that we ignore the existance of other cells that define the same variable.\n\n\n- `skip_at_partial_multiple_defs::Bool = false`\n \n If `true` (not default), and `allow_multiple_defs = true` (not default), then the search stops going downward when finding a cell that has fellow assigners, *unless all fellow assigners can be reached by the `roots`*, in which case we continue searching downward.\n\n In other words, if there is a set of fellow assigners that can only be reached **partially** by the roots, then this set blocks the search, and cells that depend on the set are not found.\n" (function (where (:: (call topological_order (parameters (kw (:: allow_multiple_defs Bool) false) (kw (:: skip_at_partial_multiple_defs Bool) false)) (:: topology (curly NotebookTopology C)) (:: roots (curly AbstractVector C))) (curly TopologicalOrder C)) (<: C AbstractCell)) (block (if skip_at_partial_multiple_defs (block (macrocall @assert :(#= /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:32 =#) allow_multiple_defs))) (= entries (ref C)) (= exits (ref C)) (= errable (call (curly Dict C ReactivityError))) (function (:: (call bfs (:: cell C)) ChildExplorationResult) (block (if (call in cell exits) (block (return (call Ok))) (elseif (block (call haskey errable cell)) (block (return (call Ok))) (elseif (block (&& (call > (call length entries) 0) (call === (ref entries end) cell))) (block (return (call Ok))) (elseif (block (call in cell entries)) (block (= currently_in (call setdiff entries exits)) (= cycle (ref currently_in (call : (call findfirst (call isequal cell) currently_in) end))) (if (call ! (call cycle_is_among_functions topology cycle)) (block (for (= cell cycle) (block (= (ref errable cell) (call CyclicReferenceError topology cycle)))) (return (call Cycle cycle)))) (return (call Ok))))))) (= current_entries_num (call length entries)) (= current_exits_num (call length exits)) (call push! entries cell) (= assigners (call where_assigned topology cell)) (= referencers (call |> (call where_referenced topology cell) (. Iterators (inert reverse)))) (if (&& (call ! allow_multiple_defs) (call > (call length assigners) 1)) (block (for (= c assigners) (block (= (ref errable c) (call MultipleDefinitionsError topology c assigners)))))) (= should_continue_search_down (|| (call ! skip_at_partial_multiple_defs) (call all (-> c (block (|| (call === c cell) (call ∈ c exits)))) assigners))) (= should_search_fellow_assigners_if_any (call ! allow_multiple_defs)) (= to_search_next (if should_continue_search_down (block (if should_search_fellow_assigners_if_any (block (call union assigners referencers)) (block referencers))) (block (ref C)))) (for (= c to_search_next) (block (if (call !== c cell) (block (= child_result (call bfs c)) (if (|| (call isa child_result Ok) (call ∉ cell (. child_result (inert cycled_cells)))) (block (continue))) (if (call ! (call is_soft_edge topology cell c)) (block (call deleteat! entries (call : (call + current_entries_num 1) (call length entries))) (call deleteat! exits (call : (call + current_exits_num 1) (call length exits))) (return child_result))) (for (= cycled_cell (. child_result (inert cycled_cells))) (block (call delete! errable cycled_cell))) (if (call === (ref entries end) c) (block (call pop! entries))) (continue))))) (call push! exits cell) (call Ok))) (= prelim_order_1 (call sort roots (kw alg MergeSort) (kw by (-> c (block (call cell_precedence_heuristic topology c)))))) (for (= i (call : (call length prelim_order_1) -1 1)) (block (call bfs (ref prelim_order_1 i)))) (= ordered (call reverse exits)) (call TopologicalOrder topology (call setdiff ordered (call keys errable)) errable)))) │ └─ @ /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 │ │ Stacktrace: │ [1] _renumber(ctx::Base.JuliaLowering.LinearIRContext{Dict{Symbol, Dict{Int64, Any}}}, ssa_rewrites::Dict{Int64, Int64}, slot_rewrites::Dict{Int64, Int64}, label_table::Dict{Int64, Int64}, ex::Base.JuliaSyntax.SyntaxTree{Dict{Symbol, Dict{Int64, Any}}}) │ @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1097 │ [2] renumber_body(ctx::Base.JuliaLowering.LinearIRContext{Dict{Symbol, Dict{Int64, Any}}}, input_code::Base.JuliaSyntax.SyntaxList{Dict{Symbol, Dict{Int64, Any}}, Vector{Int64}}, slot_rewrites::Dict{Int64, Int64}) │ @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1162 │ [3] compile_lambda(outer_ctx::Base.JuliaLowering.LinearIRContext{Dict{Symbol, Dict{Int64, Any}}}, ex::Base.JuliaSyntax.SyntaxTree{Dict{Symbol, Dict{Int64, Any}}}) │ @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1257 │ [4] linearize_ir(ctx::Base.JuliaLowering.ClosureConversionCtx{Dict{Symbol, Dict{Int64, Any}}}, ex::Base.JuliaSyntax.SyntaxTree{Dict{Symbol, Dict{Int64, Any}}}) │ @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/linear_ir.jl:1287 │ [5] core_lowering_hook(code::Any, mod::Module, file::String, line::UInt64, world::UInt64, _warn::Bool) │ @ Base.JuliaLowering /source/usr/share/julia/JuliaLowering/src/hooks.jl:33 │ [6] include(mapexpr::Function, mod::Module, _path::String) │ @ Base Base.jl:326 │ [7] top-level scope │ @ ~/.julia/packages/PlutoDependencyExplorer/BaZEm/src/PlutoDependencyExplorer.jl:24 │ [8] include(mod::Module, _path::String) │ @ Base Base.jl:325 │ [9] include_package_for_output(pkg::Base.PkgId, input::String, syntax_version::VersionNumber, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing) │ @ Base loading.jl:3296 │ [10] top-level scope │ @ stdin:5 │ [11] eval(m::Module, e::Any) │ @ Core boot.jl:522 │ [12] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String) │ @ Base loading.jl:3132 │ [13] include_string(m::Module, txt::String, fname::String) │ @ Base loading.jl:3142 [inlined] │ [14] exec_options(opts::Base.JLOptions) │ @ Base client.jl:353 │ [15] _start() │ @ Base client.jl:596 │ in expression starting at /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/topological_order.jl:8 │ in expression starting at /home/pkgeval/.julia/packages/PlutoDependencyExplorer/BaZEm/src/PlutoDependencyExplorer.jl:2 │ in expression starting at stdin:5 └ ERROR: LoadError: The following 3 packages failed to precompile: Pluto Failed to precompile Pluto [c3e4b0f8-55cb-11ea-2926-15256bba5781] to "/home/pkgeval/.julia/compiled/v1.14/Pluto/jl_uxVCY0" (ProcessExited(1)). JupyterPlutoConverter Failed to precompile JupyterPlutoConverter [1eb89384-759d-4e70-b7ef-f01bc3213651] to "/home/pkgeval/.julia/compiled/v1.14/JupyterPlutoConverter/jl_ihejmS" (ProcessExited(1)). PlutoDependencyExplorer Failed to precompile PlutoDependencyExplorer [72656b73-756c-7461-726b-72656b6b696b] to "/home/pkgeval/.julia/compiled/v1.14/PlutoDependencyExplorer/jl_4DM3B3" (ProcessExited(1)). in expression starting at /home/pkgeval/.julia/packages/JupyterPlutoConverter/NgUGW/test/runtests.jl:1 Testing failed after 75.44s ERROR: LoadError: Package JupyterPlutoConverter errored during testing Stacktrace: [1] pkgerror(msg::String) @ Pkg.Types /opt/julia/share/julia/stdlib/v1.14/Pkg/src/Types.jl:68 [2] test(ctx::Pkg.Types.Context, pkgs::Vector{PackageSpec}; coverage::Bool, julia_args::Cmd, test_args::Cmd, test_fn::Nothing, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool) @ Pkg.Operations /opt/julia/share/julia/stdlib/v1.14/Pkg/src/Operations.jl:3247 [3] test(ctx::Pkg.Types.Context, pkgs::Vector{PackageSpec}; coverage::Bool, test_fn::Nothing, julia_args::Cmd, test_args::Cmd, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool, kwargs::@Kwargs{io::IOContext{IO}}) @ Pkg.API /opt/julia/share/julia/stdlib/v1.14/Pkg/src/API.jl:587 [4] test(pkgs::Vector{PackageSpec}; io::IOContext{IO}, kwargs::@Kwargs{julia_args::Cmd}) @ Pkg.API /opt/julia/share/julia/stdlib/v1.14/Pkg/src/API.jl:172 [5] test(pkgs::Vector{String}; kwargs::@Kwargs{julia_args::Cmd}) @ Pkg.API /opt/julia/share/julia/stdlib/v1.14/Pkg/src/API.jl:160 [6] test(pkg::String; kwargs::@Kwargs{julia_args::Cmd}) @ Pkg.API /opt/julia/share/julia/stdlib/v1.14/Pkg/src/API.jl:159 [inlined] [7] top-level scope @ /PkgEval.jl/scripts/evaluate.jl:223 [8] include(mod::Module, _path::String) @ Base Base.jl:325 [9] exec_options(opts::Base.JLOptions) @ Base client.jl:355 [10] _start() @ Base client.jl:596 in expression starting at /PkgEval.jl/scripts/evaluate.jl:214 PkgEval failed after 1133.38s: package fails to precompile