Skip to content

Commit a55f966

Browse files
authored
Merge pull request #73 from SymbolicML/expression-type
feat: create `Expression` type to store operators with expression and `parse_expression` to have robust parsing
2 parents fda4a4a + 703058e commit a55f966

24 files changed

+2052
-113
lines changed

Project.toml

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "DynamicExpressions"
22
uuid = "a40a106e-89c9-4ca8-8020-a735e8728b6b"
33
authors = ["MilesCranmer <miles.cranmer@gmail.com>"]
4-
version = "0.17.0"
4+
version = "0.18.0-alpha"
55

66
[deps]
77
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
@@ -28,11 +28,9 @@ DynamicExpressionsSymbolicUtilsExt = "SymbolicUtils"
2828
DynamicExpressionsZygoteExt = "Zygote"
2929

3030
[compat]
31-
Aqua = "0.7"
3231
Bumper = "0.6"
3332
ChainRulesCore = "1"
3433
Compat = "3.37, 4"
35-
Enzyme = "^0.11.12"
3634
LoopVectorization = "0.12"
3735
MacroTools = "0.4, 0.5"
3836
Optim = "0.19, 1"
@@ -44,20 +42,8 @@ Zygote = "0.6"
4442
julia = "1.6"
4543

4644
[extras]
47-
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
4845
Bumper = "8ce10254-0962-460f-a3d8-1f77fea1446e"
49-
Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9"
50-
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
51-
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
5246
LoopVectorization = "bdcacae8-1622-11e9-2a5c-532679323890"
5347
Optim = "429524aa-4258-5aef-a3af-852621145aeb"
54-
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
55-
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
56-
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
57-
Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb"
5848
SymbolicUtils = "d1185830-fcd6-423d-90d6-eec64667417b"
59-
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
6049
Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
61-
62-
[targets]
63-
test = ["Test", "SafeTestsets", "Aqua", "Bumper", "Enzyme", "ForwardDiff", "LinearAlgebra", "LoopVectorization", "Optim", "SpecialFunctions", "StaticArrays", "Suppressor", "SymbolicUtils", "Zygote"]

src/DynamicExpressions.jl

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ include("EvaluationHelpers.jl")
1313
include("Simplify.jl")
1414
include("OperatorEnumConstruction.jl")
1515
include("Random.jl")
16+
include("Expression.jl")
17+
include("Parse.jl")
1618

1719
import PackageExtensionCompat: @require_extensions
1820
import Reexport: @reexport
@@ -26,7 +28,16 @@ import Reexport: @reexport
2628
tree_mapreduce,
2729
filter_map,
2830
filter_map!
29-
import .NodeModule: constructorof, preserve_sharing
31+
import .NodeModule:
32+
constructorof,
33+
with_type_parameters,
34+
preserve_sharing,
35+
leaf_copy,
36+
branch_copy,
37+
leaf_hash,
38+
branch_hash,
39+
leaf_equal,
40+
branch_equal
3041
@reexport import .NodeUtilsModule:
3142
count_nodes,
3243
count_constants,
@@ -48,6 +59,11 @@ import .NodeModule: constructorof, preserve_sharing
4859
@reexport import .EvaluationHelpersModule
4960
@reexport import .ExtensionInterfaceModule: node_to_symbolic, symbolic_to_node
5061
@reexport import .RandomModule: NodeSampler
62+
@reexport import .ExpressionModule: AbstractExpression, Expression
63+
# Not for export; just for overloading
64+
import .ExpressionModule: get_tree, get_operators, get_variable_names, Metadata
65+
@reexport import .ParseModule: @parse_expression, parse_expression
66+
import .ParseModule: parse_leaf
5167

5268
function __init__()
5369
@require_extensions
@@ -57,9 +73,17 @@ include("deprecated.jl")
5773

5874
import TOML: parsefile
5975

60-
const PACKAGE_VERSION = let
61-
project = parsefile(joinpath(pkgdir(@__MODULE__), "Project.toml"))
62-
VersionNumber(project["version"])
76+
const PACKAGE_VERSION = let d = pkgdir(@__MODULE__)
77+
try
78+
if d isa String
79+
project = parsefile(joinpath(d, "Project.toml"))
80+
VersionNumber(project["version"])
81+
else
82+
v"0.0.0"
83+
end
84+
catch
85+
v"0.0.0"
86+
end
6387
end
6488

6589
macro ignore(args...) end

src/EvaluateDerivative.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ end
8080
end
8181
end
8282
deg2_branch = if nbin > OPERATOR_LIMIT_BEFORE_SLOWDOWN
83-
diff_deg2_eval(tree, cX, operators.binops[op_idx], operators, direction)
83+
quote
84+
diff_deg2_eval(tree, cX, operators.binops[op_idx], operators, direction)
85+
end
8486
else
8587
quote
8688
Base.Cartesian.@nif(

0 commit comments

Comments
 (0)