Compatibility#

enum visionflow::compatible::Level#

The compatibility level.

Values:

enumerator kFullyCompatible = 1#

Fully compatible.

  • User perspective: No manual action is required after upgrade. Legacy project data and trained models can still be used directly with essentially unchanged results.

  • Technical perspective: Only version number update is needed; no explicit upgrade workflow is required.

enumerator kRequiresManualIntervention = 2#

Requires manual intervention.

  • User perspective: Manual actions are needed after upgrade. Runtime behavior may have minor differences, and users may need light adjustments to restore expected usage.

  • Technical perspective: Explicit upgrade workflow is required, such as executing conversion functions.

enumerator kIncompatible = 3#

Incompatible.

  • User perspective: Data/model behavior changed significantly, so preserving old data or models has no practical value.

  • Technical perspective: Compatibility upgrade cannot be performed.

enum visionflow::compatible::Aspect#

The aspect of compatibility from the user’s perspective or technical perspective.

Values:

enumerator kUserProject = 1#

User-project compatibility.

Describes how a change affects users when they operate project data, for example whether a tool model in an existing project needs relabeling, retraining, or view adjustments after upgrade.

enumerator kUserModel = 2#

User-model compatibility.

Describes how a change affects users when they reuse trained models, for example whether legacy models still run inference correctly and whether results remain fully consistent.

enumerator kTechnical = 3#

Technical compatibility.

Describes whether legacy data can be handled transparently by runtime mechanisms, or requires explicit upgrade logic to transform old project data into the new format.

std::vector<std::string> visionflow::compatible::query_upgrade_path(const std::string &old_version, const std::string &new_version, const std::vector<std::string> &modules = {}, Aspect aspect = kUserProject)#

Query the update path from the old version to the new version.

Parameters:
  • old_version – The old library version which the project created by.

  • new_version – The new library version which the project will be upgraded to.

  • modules – The modules list in the project. All modules will be included if this list is empty.

  • aspect – The aspect of compatibility from the user’s perspective or technical perspective.

Returns:

std::vector<std::string> The upgrade path.

Level visionflow::compatible::compatibility_level(const std::string &old_version, const std::string &new_version, const std::vector<std::string> &modules = {}, Aspect aspect = kUserProject)#

Get compatibility level between two versions.

Parameters:
  • old_version – The old version (The project data version).

  • new_version – The new library version.

  • modules – The modules list in the project. All modules will be included if this list is empty.

  • aspect – The aspect of compatibility from the user’s perspective or technical perspective.

Returns:

Level The compatibility level.

std::string visionflow::compatible::compatibility_info(const std::string &old_version, const std::string &new_version, const std::vector<std::string> &modules = {})#

Get the compatibility information between two versions.

Parameters:
  • old_version – The old version (The project data version).

  • new_version – The new library version.

  • modules – The modules list in the project. All modules will be included if this list is empty.

Returns:

std::string The compatibility information encoded in JSON format.

std::string visionflow::compatible::compatibility_history(const std::string &version = {})#

Get the whole compatibility records(with json format) about all history versions.

Parameters:

version – The version of the compatibility records. If this parameter is not set, all versions will be returned.

Returns:

std::string The compatibility records encoded in JSON format.

std::vector<std::string> visionflow::compatible::matched_compatibility_description(const std::string &old_version, const std::string &new_version, Level compat_level, const std::vector<std::string> &modules = {}, Aspect aspect = kUserProject)#

Get the descriptions of compatibility issues that match the specified level.

This interface does not handle full compatibility compressed-path cases.

Parameters:
  • old_version – The old version (The project data version).

  • new_version – The new library version.

  • compat_level – The compatibility level to match.

  • modules – The modules list in the project. All modules will be included if this list is empty.

  • aspect – The aspect of compatibility from the user’s perspective or technical perspective.

Returns:

std::vector<std::string> The descriptions of matching compatibility issues.