Skip to content

Commit 34adc5c

Browse files
committed
Use @public macro
1 parent a10926f commit 34adc5c

File tree

2 files changed

+23
-24
lines changed

2 files changed

+23
-24
lines changed

src/ADTypes.jl

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Base.broadcastable(ad::AbstractADType) = Ref(ad)
1919
@inline _unwrap_val(::Val{T}) where {T} = T
2020
@inline _unwrap_val(x) = x
2121

22+
include("compat.jl") # @public macro
2223
include("mode.jl")
2324
include("dense.jl")
2425
include("sparse.jl")
@@ -46,42 +47,29 @@ export AutoChainRules,
4647
AutoTapir,
4748
AutoTracker,
4849
AutoZygote
50+
@public AbstractMode
51+
@public ForwardMode, ReverseMode, ForwardOrReverseMode, SymbolicMode
52+
@public mode
53+
@public Auto
4954

5055
# Sparse Automatic Differentiation
5156
export AutoSparse
57+
@public dense_ad
5258

5359
# Sparsity detection
5460
export AbstractSparsityDetector
5561
export jacobian_sparsity, hessian_sparsity
62+
@public sparsity_detector
63+
@public NoSparsityDetector
64+
@public KnownJacobianSparsityDetector
65+
@public KnownHessianSparsityDetector
5666

5767
# Matrix coloring
5868
export AbstractColoringAlgorithm
5969
export column_coloring, row_coloring, symmetric_coloring
70+
@public coloring_algorithm
71+
@public NoColoringAlgorithm
6072

6173
# legacy exports are taken care of by @deprecated
6274

63-
# Define public interface
64-
# To avoid a dependency on Compat.jl, this uses a trick suggested by Lilith Hafner:
65-
# https://discourse.julialang.org/t/is-compat-jl-worth-it-for-the-public-keyword/119041/2
66-
if VERSION >= v"1.11.0-DEV.469"
67-
# Automatic Differentiation
68-
eval(Meta.parse("public AbstractMode"))
69-
eval(Meta.parse("public ForwardMode, ReverseMode, ForwardOrReverseMode, SymbolicMode"))
70-
eval(Meta.parse("public mode"))
71-
eval(Meta.parse("public Auto"))
72-
73-
# Sparse Automatic Differentiation
74-
eval(Meta.parse("public dense_ad"))
75-
76-
# Sparsity detection
77-
eval(Meta.parse("public sparsity_detector"))
78-
eval(Meta.parse("public NoSparsityDetector"))
79-
eval(Meta.parse("public KnownJacobianSparsityDetector"))
80-
eval(Meta.parse("public KnownHessianSparsityDetector"))
81-
82-
# Matrix coloring
83-
eval(Meta.parse("public NoColoringAlgorithm"))
84-
eval(Meta.parse("public coloring_algorithm"))
85-
end
86-
8775
end

src/compat.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Backward compatibility with `public` keyword, as suggested in
2+
# https://discourse.julialang.org/t/is-compat-jl-worth-it-for-the-public-keyword/119041/22
3+
macro public(ex)
4+
if VERSION >= v"1.11.0-DEV.469"
5+
args = ex isa Symbol ? (ex,) :
6+
Base.isexpr(ex, :tuple) ? ex.args : error("Failed to mark $ex as public")
7+
esc(Expr(:public, args...))
8+
else
9+
nothing
10+
end
11+
end

0 commit comments

Comments
 (0)