Skip to content

Commit a44fd2d

Browse files
authored
Make sparsity detection and coloring interfaces public (#83)
* Make sparsity and coloring interfaces public * Add more public symbols * Remove Compat.jl dependency * Use `@public` macro * Test public interface with `names`
1 parent 5aece94 commit a44fd2d

File tree

5 files changed

+62
-4
lines changed

5 files changed

+62
-4
lines changed

Project.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
name = "ADTypes"
22
uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
3-
authors = [
4-
"Vaibhav Dixit <[email protected]>, Guillaume Dalle and contributors",
5-
]
3+
authors = ["Vaibhav Dixit <[email protected]>, Guillaume Dalle and contributors"]
64
version = "1.7.1"
75

86
[deps]

src/ADTypes.jl

Lines changed: 22 additions & 1 deletion
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")
@@ -30,8 +31,8 @@ if !isdefined(Base, :get_extension)
3031
include("../ext/ADTypesEnzymeCoreExt.jl")
3132
end
3233

34+
# Automatic Differentiation
3335
export AbstractADType
34-
3536
export AutoChainRules,
3637
AutoDiffractor,
3738
AutoEnzyme,
@@ -46,8 +47,28 @@ export AutoChainRules,
4647
AutoTapir,
4748
AutoTracker,
4849
AutoZygote
50+
@public AbstractMode
51+
@public ForwardMode, ReverseMode, ForwardOrReverseMode, SymbolicMode
52+
@public mode
53+
@public Auto
4954

55+
# Sparse Automatic Differentiation
5056
export AutoSparse
57+
@public dense_ad
58+
59+
# Sparsity detection
60+
export AbstractSparsityDetector
61+
export jacobian_sparsity, hessian_sparsity
62+
@public sparsity_detector
63+
@public NoSparsityDetector
64+
@public KnownJacobianSparsityDetector
65+
@public KnownHessianSparsityDetector
66+
67+
# Matrix coloring
68+
export AbstractColoringAlgorithm
69+
export column_coloring, row_coloring, symmetric_coloring
70+
@public coloring_algorithm
71+
@public NoColoringAlgorithm
5172

5273
# legacy exports are taken care of by @deprecated
5374

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

test/public.jl

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using ADTypes
2+
using Test
3+
4+
public_symbols = (
5+
:AbstractMode,
6+
:ForwardMode,
7+
:ReverseMode,
8+
:ForwardOrReverseMode,
9+
:SymbolicMode,
10+
:mode,
11+
:Auto,
12+
# Sparse Automatic Differentiation
13+
:dense_ad,
14+
# Sparsity detection
15+
:sparsity_detector,
16+
:NoSparsityDetector,
17+
:KnownJacobianSparsityDetector,
18+
:KnownHessianSparsityDetector,
19+
# Matrix coloring
20+
:coloring_algorithm,
21+
:NoColoringAlgorithm
22+
)
23+
@test public_symbols names(ADTypes)

test/runtests.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,9 @@ end
104104
@testset "Miscellaneous" begin
105105
include("misc.jl")
106106
end
107+
if VERSION >= v"1.11.0-DEV.469"
108+
@testset "Public" begin
109+
include("public.jl")
110+
end
111+
end
107112
end

0 commit comments

Comments
 (0)