`TypeError` is raised when using the `equal` or `exist` keyword to `cf.aggregate`
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.