Added cross-version compatibility for is_action_for_armature function

This commit is contained in:
Colin Basnett
2025-01-13 12:02:13 -08:00
parent 35ac0bf86c
commit f8234b3892
2 changed files with 77 additions and 11 deletions

View File

@@ -1,4 +1,4 @@
from typing import List, Iterable, cast
from typing import List, Iterable, cast, Tuple
import bpy
from bpy.props import CollectionProperty
@@ -154,3 +154,57 @@ def get_export_bone_names(armature_object: Object, bone_filter_mode: str, bone_c
def is_bdk_addon_loaded() -> bool:
return 'bdk' in dir(bpy.ops)
class SemanticVersion(object):
def __init__(self, version: Tuple[int, int, int]):
self.major, self.minor, self.patch = version
def __iter__(self):
yield self.major
yield self.minor
yield self.patch
@staticmethod
def compare(lhs: 'SemanticVersion', rhs: 'SemanticVersion') -> int:
"""
Compares two semantic versions.
Returns:
-1 if lhs < rhs
0 if lhs == rhs
1 if lhs > rhs
"""
for l, r in zip(lhs, rhs):
if l < r:
return -1
if l > r:
return 1
return 0
def __str__(self):
return f'{self.major}.{self.minor}.{self.patch}'
def __repr__(self):
return str(self)
def __eq__(self, other):
return self.compare(self, other) == 0
def __ne__(self, other):
return not self == other
def __lt__(self, other):
return self.compare(self, other) == -1
def __le__(self, other):
return self.compare(self, other) <= 0
def __gt__(self, other):
return self.compare(self, other) == 1
def __ge__(self, other):
return self.compare(self, other) >= 0
def __hash__(self):
return hash((self.major, self.minor, self.patch))