Incompatible differences between versions 2.x and 3.x

For those familiar with the cf-python API at version 2.x, some important, backwards incompatible changes were introduced at version 3.0.0.

Scripts written for version 2.x but running under version 3.x should either work as expected, or provide informative error mesages on the new API usage. However, it is advised that the outputs of older scripts be checked when running with Python 3 versions of the cf library.


Version 3.x only works for Python 3.5 or later. Version 2.x only works for python version 2.7.

In-place operations

At version 3.x, in-place operations return None, rather than the modified construct. The keyword that defines the operation to be in-place is now inplace (rather than i).

>>> g = f.tranpose()
>>> print(type(g))
<class 'cf.field.Field'>
>>> x = f.tranpose(inplace=True)
>>> print(x)

New methods and attributes

Version 3.x methods and the deprecated version 2.x methods and attributes that they replace:

Version 3.x Version 2.x
cf.Field.cell_methods.ordered cf.Field.CellMethods
cf.Field.convert cf.Field.field
cf.Field.domain_axis_identity cf.Field.axis_name
cf.Field.del_construct cf.Field.remove_item
cf.Field.get_data_axes cf.Field.data_axes, cf.Field.item_axes
cf.Field.insert_dimension cf.Field.expand_dims
cf.Field.set_construct cf.Field.insert_aux, cf.Field.insert_axis, cf.Field.insert_dim, cf.Field.insert_domain_anc, cf.Field.insert_field_anc, cf.Field.insert_item, cf.Field.insert_measure, cf.Field.insert_ref
cf.Field.set_data cf.Field.insert_data
cf.Constructs.data_axes cf.Field.items_axes
cf.Data.nc_hdf5_chunksizes cf.Field.HDF_chunks
cf.Data.nc_set_hdf5_chunksizes cf.Field.HDF_chunks
cf.Data.nc_clear_hdf5_chunksizes cf.Field.HDF_chunks

Changes to method APIs

Methods that have a different API in version 3.x

Version 3.x Changes compared to version 2.x
cf.Field.anchor inplace replaces i parameter. No **kwargs parameters.
cf.Field.aux No **kwargs parameters.
cf.Field.auxs No **kwargs parameters.
cf.Field.axes No **kwargs parameters.
cf.Field.axes_names No **kwargs parameters.
cf.Field.axis No **kwargs parameters.
cf.Field.axis_size identity replaces axes parameter. No **kwargs parameters.
cf.Field.cell_area No insert parameter.
cf.Field.collapse New verbose parameter. inplace replaces i parameter. No **kwargs parameters.
cf.Field.convolution_filter inplace replaces i parameter. weights parameter can not be a string.
cf.Field.coord No **kwargs parameters.
cf.Field.coords No **kwargs parameters.
cf.Field.cyclic No **kwargs parameters.
cf.Field.derivative inplace replaces i parameter. wrap replaces cyclic parameter.
cf.Field.dim No **kwargs parameters.
cf.Field.dims No **kwargs parameters.
cf.Field.direction No axes parameter. No **kwargs parameters.
cf.Field.domain_anc No **kwargs parameters.
cf.Field.domain_ancs No **kwargs parameters.
cf.Field.field_anc No **kwargs parameters.
cf.Field.field_ancs No **kwargs parameters.
cf.Field.flip inplace replaces i parameter. No **kwargs parameters.
cf.Field.indices No 'exact' mode.
cf.Field.iscyclic No **kwargs parameters.
cf.Field.item No **kwargs parameters.
cf.Field.items No **kwargs parameters.
cf.Field.key No **kwargs parameters.
cf.Field.measure No **kwargs parameters.
cf.Field.measures No **kwargs parameters.
cf.Field.period No **kwargs parameters.
cf.Field.ref No **kwargs parameters.
cf.Field.refs No **kwargs parameters.
cf.Field.regridc inplace replaces i parameter.
cf.Field.regrids inplace replaces i parameter.
cf.Field.roll inplace replaces i parameter.
cf.Field.squeeze inplace replaces i parameter. No **kwargs parameters.
cf.Field.tranpose inplace replaces i parameter. constructs replaces items parameter. No **kwargs parameters.
cf.Field.unsqueeze inplace replaces i parameter. No axes parameter. No **kwargs parameters.
cf.Field.where inplace replaces i parameter. construct replaces item parameter. No axes parameter. No **item_options parameters.