# Releases¶

Documentation for all versions of cf.

## Versioning¶

### Finding versions¶

The version of the CF conventions and the CF data model being used may be found with the cf.CF function:

Retrieve the version of the CF conventions.
>>> import cf
>>> cf.CF()
'1.8'


This indicates which version of the CF conventions are represented by this release of the cf package, and therefore the version can not be changed.

The version identifier of the cf package is independent of the CF version , and is found in the usual manner:

Retrieve the version of the cf package.
>>> cf.__version__
'3.7.0'


The next section outlines the scheme used to set version identifiers.

### Versioning strategy¶

An epoch.major.minor numeric version scheme is used, e.g. 3.7.1.

Epoch changes comprise

• support for epoch-version changes to the CF conventions (e.g. upgrading from CF-1.x to CF-2.y);

• support for epoch-version changes to the Python language (e.g. upgrading from Python 2 to Python 3)

• comprehensive backwards-incompatible changes to the API.

Major changes comprise

• support for new releases to the CF conventions (e.g. upgrading from CF-1.8 to CF-1.9);

• limited backwards-incompatible changes to the API, such as
• changing the name of an existing function or method;

• changing the behaviour of an existing function or method;

• changing the name of an existing keyword parameter;

• changing the default value of an existing keyword parameter;

• changing the meaning of a value of an existing keyword parameter.

Minor changes comprise

• backwards-compatible changes to the API, such as
• introducing a new function or method;

• introducing a new keyword parameter;

• introducing a new permitted value of a keyword parameter;

• changes to required versions of the dependencies;

• bug fixes;

• changes to the documentation;

• code tidying.