Skip to content

Computing a Delayed object from a collaped cube with converted units failsΒ #6965

@schlunma

Description

@schlunma

πŸ› Bug Report

Computing a Delayed object from a collaped cube with converted units fails.

How To Reproduce

import iris.analysis
from iris.coords import DimCoord
from iris.cube import Cube
import dask.array as da
import numpy as np
import dask

x_coord = DimCoord(np.arange(10), var_name="x")
cube = Cube(da.arange(10), units="m", dim_coords_and_dims=[(x_coord, 0)])
cube = cube.collapsed("x", iris.analysis.MIN)
cube.convert_units("km")

delayed = iris.save(cube, "test.nc", compute=False)
dask.compute(delayed)

results in

Traceback (most recent call last):
  File "/home/b/b309141/scripts/iris/convert_units_bug.py", line 15, in <module>
    dask.compute(delayed)
    ~~~~~~~~~~~~^^^^^^^^^
  File "/home/b/b309141/micromamba/envs/esm/lib/python3.13/site-packages/dask/base.py", line 685, in compute
    results = schedule(expr, keys, **kwargs)
  File "/home/b/b309141/micromamba/envs/esm/lib/python3.13/site-packages/dask/array/core.py", line 4815, in load_store_chunk
    if x is not None and x.size != 0:
                         ^^^^^^
AttributeError: 'float' object has no attribute 'size'

Omitting convert_units does not give the error. It also does not appear when simply calling cube.data instead of dask.compute(iris.save(...)).

Expected behaviour

No error.

Environment

  • OS & Version: Linux
  • Iris Version: 3.14.1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions