cfdm.configuration(atol=None, rtol=None, log_level=None)[source]

View or set any number of constants in the project-wide configuration.

The full list of global constants that are provided in a dictionary to view, and can be set in any combination, are:

These are all constants that apply throughout cfdm, except for in specific functions only if overriden by the corresponding keyword argument to that function.

The value of None, either taken by default or supplied as a value, will result in the constant in question not being changed from the current value. That is, it will have no effect.

Note that setting a constant using this function is equivalent to setting it by means of a specific function of the same name, e.g. via cfdm.atol, but in this case multiple constants can be set at once.

New in version (cfdm): 1.8.6

See also

atol, rtol, log_level

atol: number, optional

The new value of absolute tolerance. The default is to not change the current value.

rtol: number, optional

The new value of relative tolerance. The default is to not change the current value.

log_level: str or int, optional

The new value of the minimal log severity level. This can be specified either as a string equal (ignoring case) to the named set of log levels or identifier ‘DISABLE’, or an integer code corresponding to each of these, namely:

  • 'DISABLE' (0);

  • 'WARNING' (1);

  • 'INFO' (2);

  • 'DETAIL' (3);

  • 'DEBUG' (-1).


The names and values of the project-wide constants prior to the change, or the current names and values if no new values are specified.


>>> cfdm.configuration()  # view full global configuration of constants
{'atol': 2.220446049250313e-16,
 'rtol': 2.220446049250313e-16,
 'log_level': 'WARNING'}
>>> cfdm.log_level('DEBUG')  # make a change to one constant...
>>> cfdm.configuration()  # ...and it is reflected in the configuration
{'atol': 2.220446049250313e-16,
 'rtol': 2.220446049250313e-16,
 'log_level': 'DEBUG'}
>>> cfdm.configuration()['atol']  # access specific values by key querying
>>> cfdm.configuration()['atol'] == cfdm.atol()  # note the equivalency
>>> cfdm.configuration(atol=5e-14, log_level='INFO')  # set multiple items
{'atol': 2.220446049250313e-16,
 'rtol': 2.220446049250313e-16,
 'log_level': 'DEBUG'}
>>> cfdm.configuration()
{'atol': 5e-14, 'rtol': 2.220446049250313e-16, 'log_level': 'INFO'}
>>> cfdm.configuration(rtol=1e-17)  # equivalent to setting cfdm.rtol(1e-17)
{'atol': 5e-14, 'rtol': 2.220446049250313e-16, 'log_level': 'INFO'}
>>> cfdm.configuration()
{'atol': 5e-14, 'rtol': 1e-17, 'log_level': 'INFO'}