VersionRegistry#

class pybmd.version_registry.VersionRegistry[source]

Bases: object

Central registry for API version constraints.

This class maintains a registry of all APIs and their version requirements. APIs are automatically registered when decorated with @requires_resolve_version.

Example

>>> from pybmd.version_info import Version, VersionConstraint
>>> constraint = VersionConstraint(added_in=Version(20, 0, 0))
>>> VersionRegistry.register("TimelineItem.set_name", constraint)
>>> VersionRegistry.get_constraint("TimelineItem.set_name")
VersionConstraint(added_in=Version(major=20, minor=0, patch=0), ...)

Methods

__init__()

clear()

Clear all registered APIs.

get_all_registered()

Get all registered APIs and their constraints.

get_constraint(api_identifier)

Get version constraint for an API.

list_apis(current_version)

List all APIs and their compatibility with current version.

register(api_identifier, constraint)

Register an API with its version constraints.

classmethod register(api_identifier: str, constraint: VersionConstraint) None[source]

Register an API with its version constraints.

Parameters:
  • api_identifier (str) – Full API identifier (e.g., “TimelineItem.set_name”)

  • constraint (VersionConstraint) – Version constraint object defining compatibility rules

Return type:

None

Example

>>> from pybmd.version_info import Version, VersionConstraint
>>> constraint = VersionConstraint(
...     added_in=Version(20, 2, 0),
...     notes="Added subtitle export support"
... )
>>> VersionRegistry.register("Timeline.export_subtitle", constraint)
classmethod get_constraint(api_identifier: str) VersionConstraint | None[source]

Get version constraint for an API.

Parameters:

api_identifier (str) – Full API identifier (e.g., “TimelineItem.set_name”)

Returns:

VersionConstraint if API is registered, None otherwise

Return type:

VersionConstraint | None

Example

>>> constraint = VersionRegistry.get_constraint("TimelineItem.set_name")
>>> if constraint:
...     print(f"Added in: {constraint.added_in}")
Added in: 20.2.0
classmethod list_apis(current_version: Version) Dict[str, Tuple[bool, str]][source]

List all APIs and their compatibility with current version.

Parameters:

current_version (Version) – The current DaVinci Resolve version

Returns:

Dictionary mapping API identifiers to (is_compatible, status_message) tuples

Return type:

Dict[str, Tuple[bool, str]]

Example

>>> from pybmd.version_info import Version
>>> current = Version(20, 1, 0)
>>> apis = VersionRegistry.list_apis(current)
>>> for api_id, (is_ok, msg) in apis.items():
...     if not is_ok:
...         print(f"{api_id}: {msg}")
TimelineItem.set_name: API not available. Added in version 20.2.0
classmethod clear() None[source]

Clear all registered APIs.

This method is primarily useful for testing purposes.

Example

>>> VersionRegistry.clear()
>>> len(VersionRegistry._registry)
0
Return type:

None

classmethod get_all_registered() Dict[str, VersionConstraint][source]

Get all registered APIs and their constraints.

Returns:

Dictionary mapping API identifiers to their version constraints

Return type:

Dict[str, VersionConstraint]

Example

>>> all_apis = VersionRegistry.get_all_registered()
>>> len(all_apis)
42