Add functions with dims keyword argument#518
Conversation
Add (unexported) `Compat.accumulate`, `Compat.accumulate!`, `Compat.all`, `Compat.any`, `Compat.cor`, `Compat.cov`, `Compat.cumprod`, `Compat.cumprod!`, `Compat.cumsum`, `Compat.cumsum!`, `Compat.findmax`, `Compat.findmin`, `Compat.mapreduce`, `Compat.maximum`, `Compat.mean`, `Compat.median`, `Compat.minimum`, `Compat.prod`, `Compat.reduce`, `Compat.sort`, `Compat.std`, `Compat.sum`, `Compat.var`, and `Compat.varm` with `dims` keyword argument.
|
If we wait for JuliaLang/julia#26521, I can put the commented tests behind |
|
I added the version check. I didn't verify this, but you implied in the julia issue that it was broken by JuliaLang/julia#25989? |
src/Compat.jl
Outdated
| dims===nothing ? Base.reduce(op, a) : Base.reducedim(op, a, dims) | ||
| @eval reduce(op, v0, a::AbstractArray; dims=nothing) = | ||
| dims===nothing ? Base.reduce(op, v0, a) : Base.reducedim(op, a, dims, v0) | ||
| @eval accumulate!(op, out, a; dims=nothing) = |
There was a problem hiding this comment.
I guess these @eval could be removed? Only the ones in the loops over function symbols is needed AFAICT.
There was a problem hiding this comment.
Good catch. I'll update.
There was a problem hiding this comment.
Um, no, that gives
ERROR: LoadError: error compiling anonymous: error in method definition: function Base.accumulate! must be explicitly imported to be extended
There is no other use accumulate! though, so why doesn't it just create a new binding to a new function? BUT if I move the definition to its own if block, it does work without the @eval. Strange...
There was a problem hiding this comment.
Yea I tried the same, lets just leave it as is I guess.
There was a problem hiding this comment.
Heh, seems to be some Julia issue on 0.6, but is fixed on master:
julia> module M1
if true
identity(x) = Base.identity(x)
end
end
M1
julia> module M2
if true
for f in (:a, :b); end
identity(x) = Base.identity(x)
end
end
ERROR: error compiling anonymous: error in method definition: function Base.identity must be explicitly imported to be extended
Thanks, but I've actually bisected the origin to an earlier change; the correct lower bound would have to be v"0.7.0-DEV.3262". I'll update accordingly. |
...at the cost of splitting definitions between two if-blocks.
|
Go to go from my side (if CI agrees), but I'm not sure the last commit is a net gain. Keep it or drop it? |
* Bump required Julia version to 1.0 * Remove compatibility support code for: * `at-__MODULE__` (from #363) * `devnull`, `stdin`, `stdout`, and `stderr` from #499 * `at-nospecialize` (from #385 and #409) * `isabstracttype` and `isconcretetype` (from #477) * `invokelatest` from #424 * array-like access to `Cmd` from #379 * `Val(n)` and `ntuple`/`reshape` with `Val` from #381 and #399 * `logdet(::Any)` fallback from #382 * `chol(::UniformScaling)` from #382 * `pushfirst!`, `popfirst!` from #444 * `fieldcount` from #386 * `read(obj, ::Type{String})` from #385 and #580 * `InexactError`, `DomainError`, and `OverflowError` constructors from #393 * `corrected` kw arg to `cov` from #401 * `adjoint` from #401 * `partialsort` from #401 * `pairs` from #428 * `AbstractRange` from #400 * `rtoldefault` from #401 * `Dates.Period` rounding from #462 * `IterativeEigensolvers` from #435 * `occursin` from #520 * `Char` concatenation from #406 * `BitSet` from #407 * `diagm` and `spdiagm` with pairs from #408 * `Array` c'tors from `UniformScaling` from #412 and #438 * `IOContext` ctor taking pairs from #427 * `undef` from #417 and #514 * `get` on `ENV` from #430 * `ComplexF...` from #431 * `tr` from #614 * `textwidth` from #644 * `isnumeric` from #543 * `AbstractDict` from #435 * `axes` #435 and #442 * `Nothing` and `Cvoid` from #435 * `Compat.SuiteSparse` from #435 * `invpermute!` from #445 * `replace` with a pair from #445 * `copyto!` from #448 * `contains` from #452 * `CartesianIndices` and `LinearIndices` from #446, #455, and #524 * `findall` from #466 (and #467). * `argmin` and `argmax` from #470, #472, and #622 * `parentmodule` from #461 * `codeunits` from #474 * `nameof` from #471 * `GC` from #477 * `AbstractDisplay` from #482 * `bytesavailable` from #483 * `firstindex` and `lastindex` from #480 and #494 * `printstyled` from #481 * `hasmethod` from #486 * `objectid` from #486 * `Compat.find*` from #484 and #513 * `repr` and `showable` from #497 * `Compat.names` from #493 and #505 * `Compat.round` and friends #500, #530, and #537 * `IOBuffer` from #501 and #504 * `range` with kw args and `LinRange` from #511 * `cp` and `mv` from #512 * `indexin` from #515 * `isuppercase` and friends from #516 * `dims` and `init` kwargs from #518, #528, #590, #592, and #613 * `selectdim` from #522 and #531 * `repeat` from #625 * `fetch(::Task)` from #549 * `isletter` from #542 * `isbitstype` from #560 * `at-cfunction` from #553 and #566 * `codeunit` and `thisind` and friends from #573 * `something` from #562 * `permutedims` from #582 * `atan` from #574 * `split` and `rsplit` from #572 * `mapslices` from #588 * `floatmin` and `floatmax` from #607 * `dropdims` from #618 * required keyword arguments from #586 * `CartesianRange` in `at-compat` from #377 * `finalizer` from #416 * `readline`, `eachline`, and `readuntil` from #477, #541, and #575 * curried `isequal`, `==`, and `in` from #517 * `Some` from #435 and #563 * `at-warn` and friends from #458 * Remove old deprecations * Deprecate: * `Compat.Sockets` from #545 and #594 * `TypeUtils` from #304 * `macros_have_sourceloc` from #355 * `Compat.Sys` from #380, #433, and #552 * `Compat.MathConstants` from #401 * `Compat.Test`, `Compat.SharedArrays`, `Compat.Mmap`, and `Compat.DelimitedFiles` from #404 * `Compat.Dates` from #413 * `Compat.Libdl` from #465 (and #467) * `AbstractDateTime` from #443 * `Compat.Printf` from #435 * `Compat.LinearAlgebra` from #463 * `Compat.SparseArrays` from #459 * `Compat.Random` from #460, #601, and #647 * `Compat.Markdown` from #492 * `Compat.REPL` from #469 * `Compat.Serialization` from #473 * `Compat.Statistics` from #583 * `Fix2` from #517 * `Compat.Base64` from #418 * `Compat.Unicode` from #432 and #507 * `notnothing` from #435 and #563 * `Compat.IteratorSize` and `Compat.IteratorEltype` from #451 * `enable_debug(::Bool)` from #458 * `Compat.Distributed` from #477 * `Compat.Pkg` from #485 * `Compat.InteractiveUtils` from #485 * `Compat.LibGit2` from #487 * `Compat.UUIDs` from #490 * `Compat.qr` from #534 * `Compat.rmul!` from #546 * `Compat.norm` abd friends from #577 * Remove obsolete README entry, missed in #385 * Remove obsolete tests (e.g. missed in #372) * Remove obsolete `VERSION` conditionals and some minor clean-up
Add (unexported)
Compat.accumulate,Compat.accumulate!,Compat.all,Compat.any,Compat.cor,Compat.cov,Compat.cumprod,Compat.cumprod!,Compat.cumsum,Compat.cumsum!,Compat.findmax,Compat.findmin,Compat.mapreduce,Compat.maximum,Compat.mean,Compat.median,Compat.minimum,Compat.prod,Compat.reduce,Compat.sort,Compat.std,Compat.sum,Compat.var, andCompat.varmwithdimskeywordargument.