FieldList.equals(*args, **kwargs)[source]

Whether two lists are the same.

Equality requires the two lists to have the same length and for the construct elements to be equal pair-wise, using their equals methods.

Any type of object may be tested but, in general, equality is only possible with another ConstructList, or a subclass of one. See the ignore_type parameter.

Equality is between the constructs is strict by default. This means that for two constructs to be considered equal they must have corresponding metadata constructs and for each pair of constructs:

  • the same descriptive properties must be present, with the same values and data types, and vector-valued properties must also have same the size and be element-wise equal (see the ignore_properties and ignore_data_type parameters), and

  • if there are data arrays then they must have same shape and data type, the same missing data mask, and be element-wise equal (see the ignore_data_type parameter).

Two real numbers x and y are considered equal if |x-y|<=atol+rtol|y|, where atol (the tolerance on absolute differences) and rtol (the tolerance on relative differences) are positive, typically very small numbers. See the atol and rtol parameters.

If data arrays are compressed then the compression type and the underlying compressed arrays must be the same, as well as the arrays in their uncompressed forms. See the ignore_compression parameter.

NetCDF elements, such as netCDF variable and dimension names, do not constitute part of the CF data model and so are not checked on any construct.


The object to compare for equality.

atol: number, optional

The tolerance on absolute differences between real numbers. The default value is set by the cf.atol function.

rtol: number, optional

The tolerance on relative differences between real numbers. The default value is set by the cf.rtol function.

ignore_fill_value: bool, optional

If True then all _FillValue and missing_value properties are omitted from the comparison.

verbose: int or str or None, optional

If an integer from -1 to 3, or an equivalent string equal ignoring case to one of:

  • 'DISABLE' (0)

  • 'WARNING' (1)

  • 'INFO' (2)

  • 'DETAIL' (3)

  • 'DEBUG' (-1)

set for the duration of the method call only as the minimum cut-off for the verboseness level of displayed output (log) messages, regardless of the globally-configured cf.log_level. Note that increasing numerical value corresponds to increasing verbosity, with the exception of -1 as a special case of maximal and extreme verbosity.

Otherwise, if None (the default value), output messages will be shown according to the value of the cf.log_level setting.

Overall, the higher a non-negative integer or equivalent string that is set (up to a maximum of 3/'DETAIL') for increasing verbosity, the more description that is printed to convey information about the operation.

ignore_properties: sequence of str, optional

The names of properties of the field construct (not the TODO metadata constructs) to omit from the comparison. Note that the “Conventions” property is always omitted by default.

ignore_data_type: bool, optional

If True then ignore the data types in all numerical comparisons. By default different numerical data types imply inequality, regardless of whether the elements are within the tolerance for equality.

ignore_compression: bool, optional

If False then the compression type and, if applicable, the underlying compressed arrays must be the same, as well as the arrays in their uncompressed forms. By default only the the arrays in their uncompressed forms are compared.

unordered: bool, optional

If True then test that the lists contain equal constructs in any relative order. By default, construct order matters for the list comparison, such that each construct is tested for equality with the construct at the corresponding position in the list, pair-wise.


Whether the two lists are equal.


>>> fl.equals(fl)
>>> fl.equals(fl.copy())
>>> fl.equals(fl[:])
>>> fl.equals('a string')