Deprecation policy

Invenio deprecation policy.

A minor release version (A.B) may deprecate certain features from previous releases. If a feature is deprecated in version A.B it will continue to work in version A.B and A.(B+1) but raise warnings. It will be completely removed in version A.(B+2).

Example:

  • Feature X is mark in version 2.0 as deprecated. The feature will still work, but it will issue the silent warning RemovedInInvenio22Warning (PendingDeprecationWarning).
  • Version 2.1 still contains the feature, but the warning RemovedInInvenio22Warning is now loud by default (DeprecationWarning).
  • Version 2.2 will completely remove the feature.

Fast track deprecation

Poorly tested, non-core and little used features for which alternatives already exists in Invenio may opt to use fast track deprecation. If a feature is fast track deprecated in version A.B it will continue to work in version A.B but raise loud warnings. It will be completely removed in version A.(B+1).

Fast track deprecation is only to be used in exceptional cases for features that essentially nobody uses. In addition, if a fast track deprecation after being accepted is found to have significant impact on a minority of the community, it may be postponed to follow the standard deprecation policy.

How to deprecate a feature

1. Open a RFC issue on GitHub to allow discussion of the proposed feature deprecation.

2. Issue a deprecation warning for the feature in the latest maint branch.

import warnings
from invenio.utils.deprecation import RemovedInInvenio22Warning

def old_method(a, b):
    warnings.warn(
        "Use of old_method is deprecated. Please use new_method instead.",
        RemovedInInvenio22Warning
    )
    # ...

If desired, you may already rewrite the body of old_method(), but it must be API backward compatible so that existing code does not break. Please start fixing all places old_method is used, so that it can be easily removed once Invenio v2.1 has been released.

exception invenio.utils.deprecation.RemovedInInvenio22Warning

Mark feature that will be removed in Invenio version 2.2.

exception invenio.utils.deprecation.RemovedInInvenio23Warning

Mark feature that will be removed in Invenio version 2.3.