2025-12-09
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
"""
|
||||
Blender version helpers for BasedPlayblast.
|
||||
|
||||
Keeps the add-on logic clean by centralizing all version comparisons and
|
||||
common constants for the supported tracks (4.2 LTS, 4.5 LTS, 5.0+).
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
try: # Blender runtime
|
||||
import bpy # type: ignore
|
||||
except ImportError: # During static analysis or packaging
|
||||
bpy = None # type: ignore
|
||||
|
||||
# Targeted anchors
|
||||
VERSION_4_2_LTS = (4, 2, 0)
|
||||
VERSION_4_5_LTS = (4, 5, 0)
|
||||
VERSION_5_0 = (5, 0, 0)
|
||||
|
||||
|
||||
def _current_version() -> tuple[int, int, int]:
|
||||
"""Return Blender's version tuple or a fallback."""
|
||||
if bpy and getattr(bpy.app, "version", None):
|
||||
return bpy.app.version # type: ignore[return-value]
|
||||
return (0, 0, 0)
|
||||
|
||||
|
||||
def get_blender_version() -> tuple[int, int, int]:
|
||||
return _current_version()
|
||||
|
||||
|
||||
def get_version_string() -> str:
|
||||
v = _current_version()
|
||||
return f"{v[0]}.{v[1]}.{v[2]}"
|
||||
|
||||
|
||||
def is_version_at_least(major: int, minor: int = 0, patch: int = 0) -> bool:
|
||||
current = _current_version()
|
||||
return current >= (major, minor, patch)
|
||||
|
||||
|
||||
def is_version_less_than(major: int, minor: int = 0, patch: int = 0) -> bool:
|
||||
current = _current_version()
|
||||
return current < (major, minor, patch)
|
||||
|
||||
|
||||
def get_version_category() -> str:
|
||||
"""
|
||||
Collapse Blender versions into the compatibility buckets we actively test.
|
||||
"""
|
||||
major, minor, _ = _current_version()
|
||||
if major < 4:
|
||||
return f"{major}.{minor}"
|
||||
if major == 4 and minor < 5:
|
||||
return "4.2"
|
||||
if major == 4:
|
||||
return "4.5"
|
||||
return "5.0+"
|
||||
|
||||
|
||||
def is_supported() -> bool:
|
||||
"""Check if the detected version is at least our minimum target."""
|
||||
return not is_version_less_than(*VERSION_4_2_LTS)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user