81 lines
2.5 KiB
Python
81 lines
2.5 KiB
Python
# Copyright (C) 2018-2025 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import re
|
|
|
|
from openvino import get_version as get_ie_version # pylint: disable=no-name-in-module,import-error
|
|
|
|
|
|
def extract_release_version(version: str):
|
|
patterns = [
|
|
# captures release version set by CI for example: '2021.1.0-1028-55e4d5673a8'
|
|
r"^([0-9]+).([0-9]+)*",
|
|
# captures release version generated by MO from release branch, for example: 'custom_releases/2021/1_55e4d567'
|
|
r"_releases/([0-9]+)/([0-9]+)_*"
|
|
]
|
|
|
|
for pattern in patterns:
|
|
m = re.search(pattern, version)
|
|
if m and len(m.groups()) == 2:
|
|
return m.group(1), m.group(2)
|
|
return None, None
|
|
|
|
|
|
def simplify_version(version: str):
|
|
release_version = extract_release_version(version)
|
|
if release_version == (None, None):
|
|
return "custom"
|
|
return "{}.{}".format(*release_version)
|
|
|
|
|
|
def get_simplified_ie_version(version=None):
|
|
from openvino import get_version # pylint: disable=no-name-in-module,import-error
|
|
if version is None:
|
|
version = get_version()
|
|
|
|
# To support legacy OV versions
|
|
m = re.match(r"^([0-9]+).([0-9]+).(.*)", version)
|
|
if m and len(m.groups()) == 3:
|
|
return simplify_version(m.group(3))
|
|
return simplify_version(version)
|
|
|
|
|
|
def extract_hash_from_version(full_version: str):
|
|
res = re.findall(r'[-_]([a-f0-9]{7,40})', full_version)
|
|
if len(res) > 0:
|
|
return res[0]
|
|
else:
|
|
return None
|
|
|
|
|
|
class SingletonMetaClass(type):
|
|
def __init__(self, cls_name, super_classes, dic):
|
|
self.__single_instance = None
|
|
super().__init__(cls_name, super_classes, dic)
|
|
|
|
def __call__(cls, *args, **kwargs):
|
|
if cls.__single_instance is None:
|
|
cls.__single_instance = super(SingletonMetaClass, cls).__call__(*args, **kwargs)
|
|
return cls.__single_instance
|
|
|
|
|
|
class VersionChecker(metaclass=SingletonMetaClass):
|
|
def __init__(self):
|
|
self.runtime_checked = False
|
|
self.mo_version = None
|
|
self.ie_version = None
|
|
self.mo_simplified_version = None
|
|
self.ie_simplified_version = None
|
|
|
|
def get_ie_version(self):
|
|
if self.ie_version:
|
|
return self.ie_version
|
|
self.ie_version = get_ie_version()
|
|
return self.ie_version
|
|
|
|
def get_ie_simplified_version(self):
|
|
if self.ie_simplified_version:
|
|
return self.ie_simplified_version
|
|
self.ie_simplified_version = get_simplified_ie_version()
|
|
return self.ie_simplified_version
|