Skip to content

TypeError is raised when using the equal or exist keyword to cf.aggregate #499

@davidhassell

Description

@davidhassell

TypeError is raised when using the equal or exist keyword to cf.aggregate:

>>> import cf
>>> f = cf.example_field(0)
>>> g = cf.aggregate([f[:2], f[2:]], equal=["standard_name"])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
----> 1 g = cf.aggregate([a, b, c, d], equal=["foo"])

File ~/miniconda3/lib/python3.9/site-packages/cfdm/decorators.py:171, in _manage_log_level_via_verbosity.<locals>.verbose_override_wrapper(*args, **kwargs)
    168 # After method completes, re-set any changes to log level or
    169 # enabling
    170 try:
--> 171     return method_with_verbose_kwarg(*args, **kwargs)
    172 except Exception:
    173     raise

File ~/miniconda3/lib/python3.9/site-packages/cf/aggregate.py:1717, in aggregate(fields, verbose, relaxed_units, overlap, contiguous, relaxed_identities, ncvar_identities, respect_valid, equal_all, exist_all, equal, exist, ignore, exclude, dimension, concatenate, copy, axes, donotchecknonaggregatingaxes, allow_no_identity, atol, rtol, no_overlap, shared_nc_domain, field_identity, info)
   1711 signatures = {}
   1712 for f in flat(fields):
   1713     # ------------------------------------------------------------
   1714     # Create the metadata summary, including the structural
   1715     # signature
   1716     # ------------------------------------------------------------
-> 1717     meta = _Meta(
   1718         f,
   1719         verbose=verbose,
   1720         rtol=rtol,
   1721         atol=atol,
   1722         relaxed_units=relaxed_units,
   1723         allow_no_identity=allow_no_identity,
   1724         equal_all=equal_all,
   1725         exist_all=exist_all,
   1726         equal=equal,
   1727         exist=exist,
   1728         ignore=ignore,
   1729         dimension=dimension,
   1730         relaxed_identities=relaxed_identities,
   1731         ncvar_identities=ncvar_identities,
   1732         field_identity=field_identity,
   1733         respect_valid=respect_valid,
   1734         copy=copy,
   1735     )
   1737     if not meta:
   1738         unaggregatable = True

File ~/miniconda3/lib/python3.9/site-packages/cf/aggregate.py:687, in _Meta.__init__(self, f, rtol, atol, verbose, relaxed_units, allow_no_identity, respect_valid, equal_all, exist_all, equal, exist, ignore, dimension, relaxed_identities, ncvar_identities, field_identity, copy)
    685 else:
    686     properties = f.properties()
--> 687     for p in ignore:
    688         properties.pop(p, None)
    690     if equal:

TypeError: 'NoneType' object is not iterable

This incorrect behaviour is the same for exist keyword.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions