pybmd.decorators.requires_resolve_version#

pybmd.decorators.requires_resolve_version(added_in: str | None = None, removed_in: str | None = None, deprecated_in: str | None = None, moved_to: str | None = None, notes: str | None = None) Callable[source]#

Decorator to specify DaVinci Resolve version requirements for an API method.

This decorator automatically: - Registers the API in the VersionRegistry - Checks version compatibility at runtime before execution - Raises APIVersionError if the current Resolve version is incompatible - Issues a warning if the API is deprecated but still functional

Parameters:
  • added_in (str | None) – Version string when API was added (e.g., “20.0.0” or “20.2”)

  • removed_in (str | None) – Version string when API was removed (e.g., “21.0.0”)

  • deprecated_in (str | None) – Version string when API was deprecated (e.g., “20.2.0”)

  • moved_to (str | None) – New location if API was moved (e.g., “Graph.apply_arri_cdl_lut”)

  • notes (str | None) – Additional notes about version compatibility

Returns:

Decorator function that wraps the original method

Raises:

APIVersionError – If current Resolve version is incompatible with the API

Warns:

APIDeprecationWarning – If API is deprecated in current version

Return type:

Callable

Example

Basic usage with minimum version: >>> @requires_resolve_version(added_in=”20.2.0”) … def set_name(self, name: str) -> bool: … return self._timeline_item.SetName(name)

API that was moved: >>> @requires_resolve_version( … added_in=”18.0.0”, … removed_in=”19.0.0”, … moved_to=”Graph.set_lut”, … notes=”Use get_node_graph().set_lut() instead” … ) … def set_lut(self, node_index: int, lut_path: str) -> bool: … return self._timeline_item.SetLUT(node_index, lut_path)

Deprecated API: >>> @requires_resolve_version( … added_in=”18.0.0”, … deprecated_in=”20.0.0”, … moved_to=”new_method” … ) … def old_method(self): … pass