Skip to content

blendertk v0.5.36

Choose a tag to compare

@m3trik m3trik released this 29 Jul 12:10
  • 2026-07-29 — The Unity Bridge offers to install the optional unitytk instead of failing to import, and CoreUtils.ensure_packages generalises the Pillow provisioning. _unity_bridge.py imported unitytk at module scope, so a user without the optional package hit an ImportError when the module was merely loaded — before the panel existed to explain it. The import is now deferred behind UnityBridge._deliverer_cls(), and the panel's make_bridge calls ensure_optional_package("unitytk", feature="Unity Bridge") (see uitk's changelog) — prompt, install, proceed; decline and the panel simply reports no engine. list_delivery_modes became a classmethod so it resolves the deliverer the same lazy way. CoreUtils.ensure_packages(packages, add_to_path=True) is the general form of ensure_image_deps: same Blender provisioning policy (install into the per-version user-modules dir, already on sys.path, driven against Blender's bundled interpreter — sys.executable is blender.exe and cannot be pip'd) with no assumption about what is being installed. ensure_image_deps keeps its Pillow default and PIL-rebind and now delegates to it, so the shared body lives once; both are backed by _CoreUtilsInternal._ensure_packages. BlenderBridgeSlotsBase overrides _install_optional_package to route through it — necessary because uitk's default is pip install --user, which would succeed and still be unimportable, Blender's user-site not being on sys.path. Verified: test_unity_bridge.py 15/15, test_core_utils.py 13/13, and the package still imports with unitytk blocked (only the Unity panel is affected).