YAXArrays.jl icon indicating copy to clipboard operation
YAXArrays.jl copied to clipboard

precompiletools fails on savecube

Open bjarthur opened this issue 2 years ago • 1 comments

contents of MyPkg/src/MyPkg.jl:

using PrecompileTools, YAXArrays, Zarr
@setup_workload begin         
    @compile_workload begin   
        A = YAXArray(rand(2,3,4))
        savecube(A, tempname(), driver=:zarr)
    end
end

strangely, :zarr is not found when using that package:

julia> using MyPkg
[ Info: Precompiling MyPkg [a54793ad-6546-4bc9-b456-c4a67c0445e2]
ERROR: LoadError: KeyError: key :zarr not found
Stacktrace:
  [1] getindex(h::OrderedCollections.OrderedDict{Symbol, Any}, key::Symbol)
    @ OrderedCollections ~/.julia/packages/OrderedCollections/SInLM/src/ordered_dict.jl:385
  [2] backendfrompath(g::String; driver::Symbol)
    @ YAXArrayBase ~/.julia/packages/YAXArrayBase/R6Frw/src/datasets/datasetinterface.jl:89
  [3] backendfrompath
    @ ~/.julia/packages/YAXArrayBase/R6Frw/src/datasets/datasetinterface.jl:79 [inlined]
  [4] savedataset(ds::YAXArrays.Datasets.Dataset; path::String, persist::Nothing, overwrite::Bool, append::Bool, skeleton::Bool, backend::Symbol, driver::Symbol, max_cache::Float64, writefac::Float64, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ YAXArrays.Datasets ~/.julia/packages/YAXArrays/no0he/src/DatasetAPI/Datasets.jl:544
  [5] savecube(c::YAXArrays.Cubes.YAXArray{Float64, 3, Array{Float64, 3}, Tuple{DimensionalData.Dimensions.Dim{:Dim_1, DimensionalData.Dimensions.LookupArrays.Sampled{Int64, Base.OneTo{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, DimensionalData.Dimensions.Dim{:Dim_2, DimensionalData.Dimensions.LookupArrays.Sampled{Int64, Base.OneTo{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, DimensionalData.Dimensions.Dim{:Dim_3, DimensionalData.Dimensions.LookupArrays.Sampled{Int64, Base.OneTo{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}}, path::String; layername::String, datasetaxis::String, max_cache::Float64, backend::Symbol, driver::Symbol, chunks::Nothing, overwrite::Bool, append::Bool, skeleton::Bool, writefac::Float64, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
<SNIP>

yet if i run the contents of the @compile_workload block manually, it runs fine:

julia> using PrecompileTools, YAXArrays, Zarr

julia> A = YAXArray(rand(2,3,4))
2×3×4 YAXArray{Float64,3} with dimensions: 
  Dim{:Dim_1} Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points,
  Dim{:Dim_2} Sampled{Int64} Base.OneTo(3) ForwardOrdered Regular Points,
  Dim{:Dim_3} Sampled{Int64} Base.OneTo(4) ForwardOrdered Regular Points
Total size: 192.0 bytes


julia> savecube(A, tempname(), driver=:zarr)
2×3×4 YAXArray{Float64,3} with dimensions: 
  Dim{:Dim_1} Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points,
  Dim{:Dim_2} Sampled{Int64} Base.OneTo(3) ForwardOrdered Regular Points,
  Dim{:Dim_3} Sampled{Int64} Base.OneTo(4) ForwardOrdered Regular Points
Total size: 192.0 bytes

bjarthur avatar Oct 31 '23 19:10 bjarthur

let me know if i should file this issue with precompiletools instead

bjarthur avatar Oct 31 '23 19:10 bjarthur