The documentation does not provide explicit lists of attributes that warrant a change in version for a flow or a deployment, but based on standard software versioning practices and Prefect's conventions, here's an inferred list:
### Flow Version Change Attributes:
-
Changes to the flow's logic: Including new tasks, altering the order of tasks, or removing tasks.
-
Modifications to task behavior: If the behavior or side effects of a task change.
-
Changes to dependencies: Adding, removing, or updating Python package dependencies.
-
Error handling revisions: Changes to the way errors are handled or retried within the flow.
-
Performance improvements: Optimizations that significantly improve the flow's performance.
### Deployment Version Change Attributes:
-
Scheduling changes: Any alterations to the deployment's schedule or triggers.
-
Parameter updates: Changes to default parameters or adding/removing parameters.
-
Infrastructure adjustments: Modifications to infrastructure configurations, like compute resources or execution environment.
-
Labels update: Adding or changing labels that are used for organizing or filtering runs.
-
Block updates: Changes to associated blocks such as storage or secrets.
-
Enhancements: Minor non-breaking updates that improve the deployment without fundamental changes.
In general, following the semantic versioning scheme as documented (
source):
-
Major version: is increased for significant and widespread changes that might be breaking.
-
Minor version: is increased for introducing or altering concepts in a way that changes how Prefect can be used or removing deprecated features.
-
Patch version: is increased for non-breaking enhancements to existing features, bug fixes, or minor functionality additions.
It is also important to note that breaking changes should be avoided whenever possible, and when necessary, proper deprecation warnings and transition periods should be provided.