VersionRegistry#
- class pybmd.version_registry.VersionRegistry[source]
Bases:
objectCentral 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 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:
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