diff --git a/src/blenderbim/blenderbim/__init__.py b/src/blenderbim/blenderbim/__init__.py index b168a681c6..5bfbbc2ec0 100644 --- a/src/blenderbim/blenderbim/__init__.py +++ b/src/blenderbim/blenderbim/__init__.py @@ -27,7 +27,6 @@ import sys IN_BLENDER = sys.modules.get("bpy", None) if IN_BLENDER: import bpy - import addon_utils import re import platform diff --git a/src/blenderbim/blenderbim/bim/export_ifc.py b/src/blenderbim/blenderbim/bim/export_ifc.py index b99bdfa65e..991f152cab 100644 --- a/src/blenderbim/blenderbim/bim/export_ifc.py +++ b/src/blenderbim/blenderbim/bim/export_ifc.py @@ -167,21 +167,6 @@ class IfcExporter: def get_application_name(self) -> str: return "BlenderBIM" - def get_application_version(self) -> str: - version = ".".join( - [ - str(x) - for x in [ - addon.bl_info.get("version", (-1, -1, -1)) - for addon in addon_utils.modules() - if addon.bl_info["name"] == "BlenderBIM" - ][0] - ] - ) - if commit_hash := tool.Blender.get_last_commit_hash(): - version += f"-{commit_hash}" - return version - class IfcExportSettings: def __init__(self): diff --git a/src/blenderbim/blenderbim/bim/handler.py b/src/blenderbim/blenderbim/bim/handler.py index dbbf59ed3a..53cb68639e 100644 --- a/src/blenderbim/blenderbim/bim/handler.py +++ b/src/blenderbim/blenderbim/bim/handler.py @@ -222,7 +222,7 @@ def redo_post(scene): def get_application(ifc: ifcopenshell.file) -> ifcopenshell.entity_instance: # TODO: cache this for even faster application retrieval. It honestly makes a difference on long scripts. - version = get_application_version() + version = tool.Blender.get_blenderbim_version() for element in ifc.by_type("IfcApplication"): if element.ApplicationIdentifier == "BlenderBIM" and element.Version == version: return element @@ -248,19 +248,6 @@ def get_user(ifc: ifcopenshell.file) -> Union[ifcopenshell.entity_instance, None return pao -def get_application_version() -> str: - return ".".join( - [ - str(x) - for x in [ - addon.bl_info.get("version", (-1, -1, -1)) - for addon in addon_utils.modules() - if addon.bl_info["name"] == "BlenderBIM" - ][0] - ] - ) - - def viewport_shading_changed_callback(area): shading = area.spaces.active.shading.type if shading == "RENDERED": diff --git a/src/blenderbim/blenderbim/bim/module/augin/operator.py b/src/blenderbim/blenderbim/bim/module/augin/operator.py index 62f5c3b09d..c3ca3a7bd1 100644 --- a/src/blenderbim/blenderbim/bim/module/augin/operator.py +++ b/src/blenderbim/blenderbim/bim/module/augin/operator.py @@ -26,6 +26,7 @@ import requests import tempfile import datetime import addon_utils +import blenderbim.tool as tool class AuginLogin(bpy.types.Operator): @@ -77,16 +78,7 @@ class AuginCreateNewModel(bpy.types.Operator): props.project_filename = "BBM{}{}".format( datetime.datetime.now().strftime("%Y%m%d%H%M%S"), "".join(random.choice(chars) for _ in range(6)) ) - addon_version = ".".join( - [ - str(x) - for x in [ - addon.bl_info.get("version", (-1, -1, -1)) - for addon in addon_utils.modules() - if addon.bl_info["name"] == "BlenderBIM" - ][0] - ] - ) + addon_version = tool.Blender.get_blenderbim_version() payload = { "user_token": props.token, diff --git a/src/blenderbim/blenderbim/bim/ui.py b/src/blenderbim/blenderbim/bim/ui.py index b9ad27592f..3a4b93f9c4 100644 --- a/src/blenderbim/blenderbim/bim/ui.py +++ b/src/blenderbim/blenderbim/bim/ui.py @@ -18,7 +18,6 @@ import os import bpy -import addon_utils import platform from pathlib import Path from bpy.types import Panel diff --git a/src/blenderbim/blenderbim/tool/blender.py b/src/blenderbim/blenderbim/tool/blender.py index 978aab0f9c..75db8b2fe3 100644 --- a/src/blenderbim/blenderbim/tool/blender.py +++ b/src/blenderbim/blenderbim/tool/blender.py @@ -26,8 +26,8 @@ import ifcopenshell.util.element import blenderbim.core.tool import blenderbim.tool as tool import blenderbim.bim -import addon_utils import types +import importlib from mathutils import Vector from pathlib import Path from blenderbim.bim.ifc import IFC_CONNECTED_TYPE @@ -930,17 +930,9 @@ class Blender(blenderbim.core.tool.Blender): return commit_hash[:7] @classmethod - def get_blenderbim_version(cls): - version = ".".join( - [ - str(x) - for x in [ - addon.bl_info.get("version", (-1, -1, -1)) - for addon in addon_utils.modules() - if addon.bl_info["name"] == "BlenderBIM" - ][0] - ] - ) + def get_blenderbim_version(cls) -> str: + bbim = cls.get_bbim_extension_package() + version = bbim.bbim_semver["version"] if commit_hash := cls.get_last_commit_hash(): version += f"-{commit_hash}" return version @@ -1114,6 +1106,11 @@ class Blender(blenderbim.core.tool.Blender): return package_name return "blenderbim" + @classmethod + def get_bbim_extension_package(cls) -> types.ModuleType: + name = cls.get_blender_addon_package_name() + return importlib.import_module(name) + @classmethod def get_addon_preferences(cls) -> blenderbim.bim.ui.BIM_ADDON_preferences: blender_package_name = cls.get_blender_addon_package_name()