def import_core_modules(silent: bool, path_to_module: str): """ This function checks that OpenVINO Python API is available and necessary python modules exists. So the next list of imports must contain all IE/NG Python API imports that are used inside MO. :param silent: enables or disables logs printing to stdout :param path_to_module: path where python API modules were found :return: True if all imports were successful and False otherwise """ try: from openvino.offline_transformations import apply_moc_transformations, apply_moc_legacy_transformations,\ apply_low_latency_transformation # pylint: disable=import-error,no-name-in-module from openvino.offline_transformations import apply_make_stateful_transformation, generate_mapping_file # pylint: disable=import-error,no-name-in-module from openvino.offline_transformations import generate_mapping_file, apply_make_stateful_transformation, serialize # pylint: disable=import-error,no-name-in-module from openvino.runtime import Model, get_version # pylint: disable=import-error,no-name-in-module from openvino.runtime.op import Parameter # pylint: disable=import-error,no-name-in-module from openvino.runtime import PartialShape, Dimension # pylint: disable=import-error,no-name-in-module from openvino.frontend import FrontEndManager, FrontEnd # pylint: disable=no-name-in-module,import-error import openvino.frontend # pylint: disable=import-error,no-name-in-module if silent: return True ie_version = str(get_version()) mo_version = str(v.get_version()) # pylint: disable=no-member,no-name-in-module print("{}: \t{}".format("OpenVINO runtime found in", os.path.dirname(openvino.__file__))) print("{}: \t{}".format("OpenVINO runtime version", ie_version)) print("{}: \t{}".format("Model Optimizer version", mo_version)) versions_mismatch = False mo_hash = v.extract_hash_from_version(mo_version) ie_hash = v.extract_hash_from_version(ie_version) if mo_hash is not None and ie_hash is not None: min_length = min(len(mo_hash), len(ie_hash)) mo_hash = mo_hash[:min_length] ie_hash = ie_hash[:min_length] if mo_hash != ie_hash or mo_hash is None or ie_hash is None: versions_mismatch = True extracted_mo_release_version = v.extract_release_version( mo_version) mo_is_custom = extracted_mo_release_version == (None, None) print( "[ WARNING ] Model Optimizer and OpenVINO runtime versions do no match." ) print( "[ WARNING ] Consider building the OpenVINO Python API from sources or reinstall OpenVINO " "(TM) toolkit using", end=" ") if mo_is_custom: print( "\"pip install openvino\" (may be incompatible with the current Model Optimizer version)" ) else: print("\"pip install openvino=={}.{}\"".format( *extracted_mo_release_version)) simplified_mo_version = v.get_simplified_mo_version() message = str( dict({ "platform": platform.system(), "mo_version": simplified_mo_version, "ie_version": v.get_simplified_ie_version(version=ie_version), "versions_mismatch": versions_mismatch, })) send_telemetry(simplified_mo_version, message, 'ie_version_check') return True except Exception as e: # Do not print a warning if module wasn't found or silent mode is on if "No module named 'openvino" not in str(e): print("[ WARNING ] Failed to import OpenVINO Python API in: {}". format(path_to_module)) print("[ WARNING ] {}".format(e)) # Send telemetry message about warning simplified_mo_version = v.get_simplified_mo_version() message = str( dict({ "platform": platform.system(), "mo_version": simplified_mo_version, "ie_version": v.get_simplified_ie_version(env=os.environ), "python_version": sys.version, "error_type": classify_error_type(e), })) send_telemetry(simplified_mo_version, message, 'ie_import_failed') return False
def test_extracting_version_hash_from_old_format(self): self.assertEqual(extract_hash_from_version(full_version="2022.1.0-6311-a90bb1f"), "a90bb1f")
def test_extracting_version_hash_mo_format(self): self.assertEqual(extract_hash_from_version(full_version="2022.1.custom_master_55e4d5673a833abab638ee9837bc87a0b7c3a043"), "55e4d5673a833abab638ee9837bc87a0b7c3a043")
def test_negative_extracting_version_hash(self): self.assertEqual(extract_hash_from_version(full_version="2022.1.custom_master"), None)
def test_extracting_version_hash_full_with_build_number_private(self): self.assertEqual(extract_hash_from_version(full_version="2021.1.0-1028-55e4d5673a8-private"), "55e4d5673a8")