Deprecation Policy
This document defines how docling-pipelines handles the deprecation and eventual removal of public APIs, operators, configuration parameters, and behaviours.
Scope
This policy applies to:
- Operator classes and their parameters
DocpipeFlowManagerpublic Python API- Flow JSON configuration schema (node types, parameter names)
- REST API endpoints and response schemas
- CLI flags and environment variables
- Configuration file keys
Internal implementation details (private methods, internal modules prefixed with _) are not covered and may change without notice.
Deprecation Lifecycle
Introduced → Deprecated → Removal warning → Removed
(same or (1 release before (next MAJOR
next MINOR) removal) version)
| Phase | Description |
|---|---|
| Introduced | Feature is added and fully supported. |
| Deprecated | Feature is marked as deprecated. A replacement is available (if applicable). Deprecation warning is emitted at runtime. |
| Removal warning | One release before removal, the CHANGELOG and documentation clearly state the final removal date. |
| Removed | Feature is deleted. Migration guide documents the upgrade path. |
Deprecation Window
| Change type | Minimum deprecation window |
|---|---|
| Operator parameter renamed or removed | 2 MINOR releases |
| Operator removed | 2 MINOR releases |
| Python API method signature changed incompatibly | 2 MINOR releases |
| Flow JSON schema field renamed or removed | 2 MINOR releases |
| REST API endpoint removed or response schema changed | 1 MAJOR version cycle |
| CLI flag removed or renamed | 2 MINOR releases |
| Environment variable removed or renamed | 2 MINOR releases |
For MAJOR version bumps, deprecated items that have passed their window are removed.
No feature may be removed without first completing a full deprecation window, with the sole exception of Emergency Removals.
How Deprecations Are Communicated
Runtime warnings
Deprecated Python APIs and operator parameters emit a DeprecationWarning at the point of use:
import warnings
warnings.warn(
"The 'old_param' parameter is deprecated as of v1.2.0 and will be removed in v2.0.0. "
"Use 'new_param' instead.",
DeprecationWarning,
stacklevel=2,
)
CHANGELOG
Each deprecated item has an entry under ### Deprecated in the release's CHANGELOG section, specifying:
- What is deprecated
- The replacement (if any)
- The planned removal version
Documentation
Documentation pages for deprecated items include a prominent notice:
> **Deprecated since v1.2.0.**
> This feature will be removed in v2.0.0.
> Use [replacement] instead.
GitHub Issues
A tracking issue labelled deprecation is opened for each deprecated item. The issue is closed when the item is removed.
Emergency Removals
A feature may be removed before the standard deprecation window expires only when:
- A security vulnerability (CVE) in the feature cannot be mitigated without removal, or
- A critical licensing issue requires immediate removal.
In such cases:
- A GitHub Security Advisory is published.
- The CHANGELOG entry under
### Securitydocuments the removal. - A migration guide is published on the same day as the release.
- Maintainers announce the emergency removal through all communication channels listed in the Release Process.
Operator Deprecation
When an operator is deprecated:
- The operator's docstring gains a deprecation notice:
python
class OldOperator(BaseOperator):
"""
.. deprecated:: 1.2.0
Use :class:`NewOperator` instead. Will be removed in v2.0.0.
"""
- The operator emits a
DeprecationWarningin its__init__orexecutemethod. - The operator remains functional for the full deprecation window.
- The operator reference documentation is updated.
Configuration Parameter Deprecation
When a flow JSON parameter is deprecated:
- The operator validates the old parameter name and emits a deprecation log message (
logging.warning). - If the old parameter is present, the operator maps it to the new parameter for the duration of the deprecation window.
- After removal, the operator raises a
ValueErrorwith a clear message pointing to the migration guide.
Example:
if "old_param" in config:
import warnings
warnings.warn(
"'old_param' is deprecated as of v1.2.0. Use 'new_param' instead. "
"See docs/guides/MIGRATION_GUIDE_v1_2.md",
DeprecationWarning,
stacklevel=2,
)
config["new_param"] = config.pop("old_param")
Python API Deprecation
When a public method signature changes incompatibly:
- The old signature is kept and marked deprecated via
warnings.warn. - The old method delegates to the new one internally.
- After the deprecation window, the old signature is removed.
Flow JSON Schema Deprecation
When a flow JSON schema field is renamed:
- Both old and new field names are accepted during the deprecation window.
- The operator logs a warning when the old name is detected.
- Documentation and examples are updated to use the new name immediately.
- The migration guide includes a
sed/jqone-liner to update existing flow files.
Experimental Features
Features marked experimental in documentation are excluded from this deprecation policy. They may change or be removed in any MINOR or PATCH release without a deprecation period. Users of experimental features must monitor the CHANGELOG closely.
Experimental features are identified by:
- A
[EXPERIMENTAL]tag in the documentation - A
DeprecationWarningorUserWarningemitted at runtime noting the experimental status