I often organize code into modules inside a single package.
Let’s say I have a pacakge named AB.jl, and inside I have modules A.jl, B.jl, all in the src folder.
A nice way to organize them is demonstrated by Jacob Quinn in the JuliaCon Workshop “Building microservices and applications in Julia”:
module AB
export A, B
include("A.jl")
using .A
include("B.jl")
using .B
end
Now assume module B exports the names “foo” and “bar”:
module B
export foo, bar
# module code ...
end
If I use the package by “using AB”, I will be able to call “B.foo”, “B.bar”.
However, if I want to directly use “foo”, “bar” without the namespace B, the only way I can do that now is explicitly exporting these names at module AB again:
module AB
export A, B, foo, bar
include("A.jl")
using .A
include("B.jl")
using .B
end
If B exports many names, this is both tedious and error prone.
Is there a simpler way to export all names B exports at the level of module AB?
Thanks!