Skip to content

Commit feb17b0

Browse files
authored
Remove custom printing (#332)
1 parent bb0d874 commit feb17b0

12 files changed

Lines changed: 72 additions & 72 deletions

File tree

DifferentiationInterface/docs/src/backends.md

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ We support all dense backend choices from [ADTypes.jl](https://github.com/SciML/
99

1010
```@setup backends
1111
using DifferentiationInterface
12-
using DifferentiationInterface: backend_str
1312
import Markdown
1413
1514
import Diffractor
@@ -25,21 +24,21 @@ import Tapir
2524
import Tracker
2625
import Zygote
2726
28-
const backend_examples = (
29-
"AutoDiffractor()",
30-
"AutoEnzyme(; mode=Enzyme.Forward)",
31-
"AutoEnzyme(; mode=Enzyme.Reverse)",
32-
"AutoFastDifferentiation()",
33-
"AutoFiniteDiff()",
34-
"AutoFiniteDifferences(; fdm=FiniteDifferences.central_fdm(3, 1))",
35-
"AutoForwardDiff()",
36-
"AutoPolyesterForwardDiff(; chunksize=1)",
37-
"AutoReverseDiff()",
38-
"AutoSymbolics()",
39-
"AutoTapir(; safe_mode=false)",
40-
"AutoTracker()",
41-
"AutoZygote()",
42-
)
27+
backend_examples = [
28+
AutoDiffractor(),
29+
AutoEnzyme(; mode=Enzyme.Forward),
30+
AutoEnzyme(; mode=Enzyme.Reverse),
31+
AutoFastDifferentiation(),
32+
AutoFiniteDiff(),
33+
AutoFiniteDifferences(; fdm=FiniteDifferences.central_fdm(3, 1)),
34+
AutoForwardDiff(),
35+
AutoPolyesterForwardDiff(; chunksize=1),
36+
AutoReverseDiff(),
37+
AutoSymbolics(),
38+
AutoTapir(; safe_mode=false),
39+
AutoTracker(),
40+
AutoZygote(),
41+
]
4342
4443
checkmark(x::Bool) = x ? '✅' : '❌'
4544
unicode_check_available(backend) = checkmark(check_available(backend))
@@ -49,12 +48,11 @@ unicode_check_twoarg(backend) = checkmark(check_twoarg(backend))
4948
io = IOBuffer()
5049
5150
# Table header
52-
println(io, "| Backend | Availability | Two-argument functions | Hessian support | Example |")
53-
println(io, "|:--------|:------------:|:----------------------:|:---------------:|:--------|")
51+
println(io, "| Backend | Availability | Two-argument functions | Hessian support |")
52+
println(io, "|:--------|:------------:|:----------------------:|:---------------:|")
5453
55-
for example in backend_examples
56-
b = eval(Meta.parse(example)) # backend
57-
join(io, [backend_str(b), unicode_check_available(b), unicode_check_twoarg(b), unicode_check_hessian(b), "`$example`"], '|')
54+
for b in backend_examples
55+
join(io, [string(b), unicode_check_available(b), unicode_check_twoarg(b), unicode_check_hessian(b)], '|')
5856
println(io, '|' )
5957
end
6058
backend_table = Markdown.parse(String(take!(io)))

DifferentiationInterface/docs/src/overloads.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ The cells can have three values:
2222
```@setup overloads
2323
using ADTypes: AbstractADType
2424
using DifferentiationInterface
25-
using DifferentiationInterface: backend_str, twoarg_support, TwoArgSupported
25+
using DifferentiationInterface: twoarg_support, TwoArgSupported
2626
using Markdown: Markdown
2727
2828
using Diffractor: Diffractor

DifferentiationInterface/ext/DifferentiationInterfaceEnzymeExt/DifferentiationInterfaceEnzymeExt.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ end
4343

4444
ADTypes.mode(backend::AutoDeferredEnzyme) = ADTypes.mode(AutoEnzyme(backend.mode))
4545

46-
DI.backend_package_name(::AutoDeferredEnzyme) = "DeferredEnzyme"
47-
4846
DI.nested(backend::AutoEnzyme) = AutoDeferredEnzyme(backend.mode)
4947

5048
const AnyAutoEnzyme{M} = Union{AutoEnzyme{M},AutoDeferredEnzyme{M}}

DifferentiationInterface/src/misc/differentiate_with.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,7 @@ Call the underlying function `dw.f` of a [`DifferentiateWith`](@ref) wrapper.
5454

5555
function Base.show(io::IO, dw::DifferentiateWith)
5656
@compat (; f, backend) = dw
57-
return print(io, "$f differentiated with $(backend_str(backend))")
57+
return print(
58+
io, DifferentiateWith, "(", repr(f; context=io), ",", repr(backend; context=io), ")"
59+
)
5860
end

DifferentiationInterface/src/misc/sparsity_detector.jl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,15 @@ end
7373

7474
function Base.show(io::IO, detector::DenseSparsityDetector{method}) where {method}
7575
@compat (; backend, atol) = detector
76-
return print(io, "DenseSparsityDetector{:$method}($backend; atol=$atol)")
76+
return print(
77+
io,
78+
DenseSparsityDetector,
79+
"(",
80+
repr(backend; context=io),
81+
"; atol=$atol, method=",
82+
repr(method; context=io),
83+
")",
84+
)
7785
end
7886

7987
function DenseSparsityDetector(

DifferentiationInterface/src/second_order/second_order.jl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,15 @@ struct SecondOrder{ADO<:AbstractADType,ADI<:AbstractADType} <: AbstractADType
2222
end
2323

2424
function Base.show(io::IO, backend::SecondOrder)
25-
return print(io, "SecondOrder($(outer(backend)) / $(inner(backend)))")
25+
return print(
26+
io,
27+
SecondOrder,
28+
"(",
29+
repr(outer(backend); context=io),
30+
", ",
31+
repr(inner(backend); context=io),
32+
")",
33+
)
2634
end
2735

2836
"""

DifferentiationInterface/src/utils/exceptions.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ struct MissingBackendError <: Exception
33
end
44

55
function Base.showerror(io::IO, e::MissingBackendError)
6-
println(io, "failed to use $(backend_str(e.backend)) backend.")
6+
println(io, "MissingBackendError: Failed to use $(e.backend).")
77
if !check_available(e.backend)
88
print(
99
io,
10-
"""Backend package is not loaded. To fix, run
10+
"""Backend package is probably not loaded. To fix this, try to run
1111
12-
import $(backend_package_name(e.backend))
12+
import $(package_name(e.backend))
1313
""",
1414
)
1515
else
Lines changed: 7 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,11 @@
1-
backend_package_name(b::AbstractADType) = strip(string(b), ['(', ')'])
2-
backend_package_name(b::AutoSparse) = backend_package_name(dense_ad(b))
3-
4-
backend_package_name(::AutoChainRules) = "ChainRules"
5-
backend_package_name(::AutoDiffractor) = "Diffractor"
6-
backend_package_name(::AutoEnzyme) = "Enzyme"
7-
backend_package_name(::AutoFastDifferentiation) = "FastDifferentiation"
8-
backend_package_name(::AutoFiniteDiff) = "FiniteDiff"
9-
backend_package_name(::AutoFiniteDifferences) = "FiniteDifferences"
10-
backend_package_name(::AutoForwardDiff) = "ForwardDiff"
11-
backend_package_name(::AutoPolyesterForwardDiff) = "PolyesterForwardDiff"
12-
backend_package_name(::AutoSymbolics) = "Symbolics"
13-
backend_package_name(::AutoTapir) = "Tapir"
14-
backend_package_name(::AutoTracker) = "Tracker"
15-
backend_package_name(::AutoZygote) = "Zygote"
16-
backend_package_name(::AutoReverseDiff) = "ReverseDiff"
17-
18-
backend_package_name(::AF) where {AF<:AutoForwardFromPrimitive} = string(AF)
19-
backend_package_name(::AR) where {AR<:AutoReverseFromPrimitive} = string(AR)
20-
21-
function backend_str(backend::AbstractADType)
22-
bs = backend_package_name(backend)
23-
if mode(backend) isa ForwardMode
24-
return "$bs (forward)"
25-
elseif mode(backend) isa ReverseMode
26-
return "$bs (reverse)"
27-
elseif mode(backend) isa SymbolicMode
28-
return "$bs (symbolic)"
29-
elseif mode(backend) isa ForwardOrReverseMode
30-
return "$bs (forward or reverse)"
1+
function package_name(b::AbstractADType)
2+
s = string(b)
3+
k = findfirst('(', s)
4+
if isnothing(k)
5+
throw(ArgumentError("Cannot parse backend into package"))
316
else
32-
error("Unknown mode")
7+
return s[5:(k - 1)]
338
end
349
end
3510

36-
backend_str(backend::AutoSparse) = "Sparse $(backend_str(dense_ad(backend)))"
37-
38-
function backend_str(backend::SecondOrder)
39-
return "$(backend_str(outer(backend))) / $(backend_str(inner(backend)))"
40-
end
11+
package_name(b::AutoSparse) = package_name(dense_ad(b))
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using ADTypes
2+
using DifferentiationInterface
3+
using Test
4+
5+
backend = SecondOrder(AutoForwardDiff(), AutoZygote())
6+
@test startswith(string(backend), "SecondOrder(")
7+
@test endswith(string(backend), ")")
8+
9+
detector = DenseSparsityDetector(AutoForwardDiff(); atol=1e-23)
10+
@test startswith(string(detector), "DenseSparsityDetector(")
11+
@test endswith(string(detector), ")")
12+
13+
diffwith = DifferentiateWith(exp, AutoForwardDiff())
14+
@test startswith(string(diffwith), "DifferentiateWith(")
15+
@test endswith(string(diffwith), ")")
16+
17+
@test DifferentiationInterface.package_name(AutoForwardDiff()) == "ForwardDiff"
18+
@test DifferentiationInterface.package_name(AutoZygote()) == "Zygote"

DifferentiationInterface/test/Internals/second_order.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,5 @@ using Test
55
backend = SecondOrder(AutoForwardDiff(), AutoZygote())
66

77
@test ADTypes.mode(backend) isa ADTypes.ForwardMode
8-
@test startswith(string(backend), "SecondOrder")
98
@test DifferentiationInterface.outer(backend) isa AutoForwardDiff
109
@test DifferentiationInterface.inner(backend) isa AutoZygote

0 commit comments

Comments
 (0)