Skip to content

Commit

Permalink
Merge pull request #67 from JuliaDiff/ox/reorg
Browse files Browse the repository at this point in the history
Big re-organization
  • Loading branch information
oxinabox committed Aug 7, 2019
2 parents 91c5d92 + b6cf13f commit e24c190
Show file tree
Hide file tree
Showing 33 changed files with 174 additions and 1,027 deletions.
14 changes: 8 additions & 6 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
name = "ChainRules"
uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2"
version = "0.0.1"
version = "0.1.0"

[deps]
Cassette = "7057c7e9-c182-5462-911a-8362d720325c"
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
NaNMath = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
Requires = "ae029012-a4dd-5104-9daa-d747884805df"
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"

[compat]
Cassette = "^0.2"
ChainRulesCore = "^0.1"
FDM = "^0.6"
julia = "^1.0"

[extras]
FDM = "e25cca7e-83ef-51fa-be6c-dfe2a3123128"
NaNMath = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["FDM", "Random", "Test"]
test = ["FDM", "Random", "Test", "SpecialFunctions", "NaNMath"]
4 changes: 0 additions & 4 deletions REQUIRE

This file was deleted.

56 changes: 38 additions & 18 deletions src/ChainRules.jl
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
module ChainRules
using Reexport
@reexport using ChainRulesCore
# Basically everything this package does is overloading these, so we make an exception
# to the normal rule of only overload via `AbstractChainRules.rrule`.
import ChainRulesCore: rrule, frule

# Deal with name clashes, by defining in this module which one we mean.
const accumulate = ChainRulesCore.accumulate
const accumulate! = ChainRulesCore.accumulate!


using Cassette
using LinearAlgebra
using LinearAlgebra.BLAS
using Requires
using Statistics
using Base.Broadcast: materialize, materialize!, broadcasted, Broadcasted, broadcastable

Expand All @@ -13,22 +23,32 @@ if VERSION < v"1.3.0-DEV.142"
import LinearAlgebra: dot
end

import NaNMath, SpecialFunctions

export AbstractRule, Rule, frule, rrule

include("differentials.jl")
include("rules.jl")
include("rules/base.jl")
include("rules/array.jl")
include("rules/broadcast.jl")
include("rules/mapreduce.jl")
include("rules/linalg/utils.jl")
include("rules/linalg/blas.jl")
include("rules/linalg/dense.jl")
include("rules/linalg/structured.jl")
include("rules/linalg/factorization.jl")
include("rules/nanmath.jl")
include("rules/specialfunctions.jl")
include("helper_functions.jl")

include("rulesets/Base/base.jl")
include("rulesets/Base/array.jl")
include("rulesets/Base/broadcast.jl")
include("rulesets/Base/mapreduce.jl")

include("rulesets/LinearAlgebra/utils.jl")
include("rulesets/LinearAlgebra/blas.jl")
include("rulesets/LinearAlgebra/dense.jl")
include("rulesets/LinearAlgebra/structured.jl")
include("rulesets/LinearAlgebra/factorization.jl")

# Note: The following is only required because package authors sometimes do not
# declare their own rules using `ChainRulesCore.jl`. For arguably good reasons.
# So we define them here for them.
function __init__()
@require NaNMath="77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" begin
include("rulesets/packages/NaNMath.jl")
using .NaNMathGlue
end

@require SpecialFunctions="276daf66-3868-5448-9aa4-cd146d93841b" begin
include("rulesets/packages/SpecialFunctions.jl")
using .SpecialFunctionsGlue
end
end

end # module

2 comments on commit e24c190

@oxinabox
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register()

@oxinabox
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.