Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix some method ambiguities #589

Merged
merged 3 commits into from
Sep 23, 2022
Merged

Fix some method ambiguities #589

merged 3 commits into from
Sep 23, 2022

Conversation

devmotion
Copy link
Member

Does not fix #588 but reduces method ambiguities from

julia> Test.detect_ambiguities(ChainRulesCore)
14-element Vector{Tuple{Method, Method}}:
 (/(z::AbstractZero, ::Any) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/abstract_zero.jl:29, /(a, b::AbstractThunk) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/thunks.jl:37)
 (/(a::AbstractThunk, b) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/thunks.jl:36, /(a, b::AbstractThunk) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/thunks.jl:37)
 ((::ChainRulesCore.var"#frule##kw")(kws, ::typeof(frule), ::RuleConfig, args...) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/rules.jl:77, (::ChainRulesCore.var"#frule##kw")(kwargs, frule::typeof(frule), ::Any, ::typeof(ignore_derivatives), f) in ChainRulesCore)
 (frule(::Any, ::typeof(ignore_derivatives), f) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/ignore_derivatives.jl:40, frule(::RuleConfig, args...) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/rules.jl:64)
 ((::ProjectTo{NoTangent})(dx) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/projection.jl:129, (::ProjectTo{T})(dx::Tangent{<:T}) where T in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/projection.jl:143)
 (ger!(alpha, x::AbstractThunk, y, A) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/thunks.jl:110, ger!(alpha, x, y::AbstractThunk, A) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/thunks.jl:113)
 (LinearAlgebra.UniformScaling{T}(λ) where T<:Number in LinearAlgebra at /home/david/.julia/juliaup/julia-1.8.1+0.x64/share/julia/stdlib/v1.8/LinearAlgebra/src/uniformscaling.jl:40, (::Type{<:LinearAlgebra.UniformScaling})(z::AbstractZero) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/abstract_zero.jl:44)
 ((project::ProjectTo)(dx::InplaceableThunk) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/projection.jl:125, (::ProjectTo{NoTangent})(dx) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/projection.jl:129)
 ((project::ProjectTo)(dx::Thunk) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/projection.jl:124, (::ProjectTo{NoTangent})(dx) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/projection.jl:129)
 (/(z::AbstractZero, ::Any) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/abstract_zero.jl:29, /(::Any, x::ChainRulesCore.NotImplemented) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/notimplemented.jl:43)
 ((::ProjectTo{T})(dx::ChainRulesCore.NotImplemented) where T in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/projection.jl:121, (::ProjectTo{NoTangent})(dx) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/projection.jl:129)
 (/(::Any, x::ChainRulesCore.NotImplemented) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/notimplemented.jl:43, /(a::AbstractThunk, b) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/thunks.jl:36)
 (-(a::AbstractThunk, b) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/thunks.jl:34, -(a, b::AbstractThunk) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/thunks.jl:35)
 (/(x::ChainRulesCore.NotImplemented, ::Any) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/notimplemented.jl:42, /(a, b::AbstractThunk) in ChainRulesCore at /home/david/.julia/packages/ChainRulesCore/Z4Jry/src/tangent_types/thunks.jl:37)

to

julia> Test.detect_ambiguities(ChainRulesCore)
8-element Vector{Tuple{Method, Method}}:
 (LinearAlgebra.UniformScaling{T}(λ) where T<:Number in LinearAlgebra at /home/david/.julia/juliaup/julia-1.8.1+0.x64/share/julia/stdlib/v1.8/LinearAlgebra/src/uniformscaling.jl:40, (::Type{<:LinearAlgebra.UniformScaling})(z::AbstractZero) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/tangent_types/abstract_zero.jl:44)
 ((::ProjectTo{T})(dx::ChainRulesCore.NotImplemented) where T in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/projection.jl:121, (::ProjectTo{NoTangent})(dx) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/projection.jl:129)
 ((project::ProjectTo)(dx::InplaceableThunk) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/projection.jl:125, (::ProjectTo{NoTangent})(dx) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/projection.jl:129)
 ((project::ProjectTo)(dx::Thunk) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/projection.jl:124, (::ProjectTo{NoTangent})(dx) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/projection.jl:129)
 ((::ChainRulesCore.var"#frule##kw")(kws, ::typeof(frule), ::RuleConfig, args...) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/rules.jl:77, (::ChainRulesCore.var"#frule##kw")(kwargs, frule::typeof(frule), ::Any, ::typeof(ignore_derivatives), f) in ChainRulesCore)
 ((::ProjectTo{NoTangent})(dx) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/projection.jl:129, (::ProjectTo{T})(dx::Tangent{<:T}) where T in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/projection.jl:143)
 (frule(::Any, ::typeof(ignore_derivatives), f) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/ignore_derivatives.jl:40, frule(::RuleConfig, args...) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/rules.jl:64)
 (ger!(alpha, x::AbstractThunk, y, A) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/tangent_types/thunks.jl:115, ger!(alpha, x, y::AbstractThunk, A) in ChainRulesCore at /home/david/.julia/dev/ChainRulesCore/src/tangent_types/thunks.jl:118)

@codecov-commenter
Copy link

codecov-commenter commented Sep 21, 2022

Codecov Report

Base: 93.11% // Head: 93.16% // Increases project coverage by +0.04% 🎉

Coverage data is based on head (4bc71ac) compared to base (f6123ee).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #589      +/-   ##
==========================================
+ Coverage   93.11%   93.16%   +0.04%     
==========================================
  Files          15       15              
  Lines         901      907       +6     
==========================================
+ Hits          839      845       +6     
  Misses         62       62              
Impacted Files Coverage Δ
src/tangent_types/notimplemented.jl 75.00% <100.00%> (+3.00%) ⬆️
src/tangent_types/thunks.jl 95.90% <100.00%> (+0.10%) ⬆️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Copy link
Member

@mzgubic mzgubic left a comment

Choose a reason for hiding this comment

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

Thanks for fixing these! Could we add tests and bump the version?

@devmotion
Copy link
Member Author

Yep, I'll do that. Was a bit short on time yesterday but try to fix it later today.

@devmotion devmotion merged commit 9c8fcd2 into main Sep 23, 2022
@devmotion devmotion deleted the dw/method_ambiguities branch September 23, 2022 11:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Loading ChainRulesCore.jl breaks complex number arithmetic on Julia 1.8.1
3 participants