Files

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