Skip to content

Bug: Failure when writing a dataset that contains a scalar domain ancillary construct #98

@davidhassell

Description

@davidhassell
>>> import cfdm
>>> cfdm.environment(paths=False)
Platform: Linux-5.4.0-53-generic-x86_64-with-debian-bullseye-sid
HDF5 library: 1.10.5
netcdf library: 4.6.3
python: 3.7.0
netCDF4: 1.5.4
cftime: 1.3.0
numpy: 1.18.4
netcdf_flattener: 1.2.0
cfdm: 1.8.7.0
>>> import cfdm; f = cfdm.read('~/thetao_Omon_MIROC6_abrupt-4xCO2_r1i1p1f1_gn_344001-344912.cdl')[0]
>>> cfdm.write(f, 'delme.nc')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-e145e8c98469> in <module>()
----> 1 cfdm.write(f, 'delme.nc')

~/cfdm/cfdm/read_write/write.py in write(fields, filename, fmt, overwrite, global_attributes, variable_attributes, file_descriptors, external, Conventions, datatype, least_significant_digit, endian, compress, fletcher32, shuffle, string, verbose, warn_valid, group, coordinates, _implementation)
    460                      string=string, verbose=verbose,
    461                      warn_valid=warn_valid, group=group,
--> 462                      coordinates=coordinates, extra_write_vars=None)

~/cfdm/cfdm/decorators.py in verbose_override_wrapper(self, *args, **kwargs)
    184         # enabling
    185         try:
--> 186             return method_with_verbose_kwarg(self, *args, **kwargs)
    187         except Exception:
    188             raise

~/cfdm/cfdm/read_write/netcdf/netcdfwrite.py in write(self, fields, filename, fmt, overwrite, global_attributes, variable_attributes, file_descriptors, external, Conventions, datatype, least_significant_digit, endian, compress, fletcher32, shuffle, scalar, string, extra_write_vars, verbose, warn_valid, group, coordinates)
   4466         # ------------------------------------------------------------
   4467         for f in fields:
-> 4468             self._write_field(f)
   4469 
   4470         # ------------------------------------------------------------

~/cfdm/cfdm/read_write/netcdf/netcdfwrite.py in _write_field(self, f, add_to_seen, allow_data_insert_dimension)
   3390         for key, anc in sorted(
   3391                 self.implementation.get_domain_ancillaries(f).items()):
-> 3392             self._write_domain_ancillary(f, key, anc)
   3393 
   3394         # ------------------------------------------------------------

~/cfdm/cfdm/read_write/netcdf/netcdfwrite.py in _write_domain_ancillary(self, f, key, anc)
   2192 
   2193             # Create a new domain ancillary variable
-> 2194             self._write_netcdf_variable(ncvar, ncdimensions, anc)
   2195 
   2196         g['key_to_ncvar'][key] = ncvar

~/cfdm/cfdm/read_write/netcdf/netcdfwrite.py in _write_netcdf_variable(self, ncvar, ncdimensions, cfvar, omit, extra, fill, data_variable)
   2533         if g['group']:
   2534             groups = self._groups(ncvar)
-> 2535             for ncdim in ncdimensions:
   2536                 ncdim_groups = self._groups(ncdim)
   2537                 if not groups.startswith(ncdim_groups):

TypeError: 'NoneType' object is not iterable

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdataset writeRelating to writing datasets

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions