def parse_modified_docker_files_info()

in src/utils.py [0:0]


def parse_modified_docker_files_info(files, framework, pattern=""):
    """
    Parse all the files in PR to find docker file related changes for any framework
    triggers an image build matching the image_type(training/testing), device_type(cpu_gpu)
    and python version(py2 and py3) of the changed docker files
    :param files: str
    :param framework: str
    :param pattern: str
    :return: None
    """
    rule = re.findall(rf"{pattern}", files)
    for dockerfile in rule:
        dockerfile = dockerfile.split("/")
        if dockerfile[0] == "huggingface":
            # HuggingFace related files stored in huggingface/<framework> directories
            # Joining 1 and 2 elements to get huggingface_<framework> as a first element
            dockerfile = [f"{dockerfile[0]}_{dockerfile[1]}"]+dockerfile[2:]
        framework_change = dockerfile[0]

        if dockerfile[0] == "habana":
            framework_change = dockerfile[1]
            dockerfile = [f"{dockerfile[0]}_{dockerfile[1]}"]+dockerfile[2:]
        # If the modified dockerfile belongs to a different
        # framework, do nothing
        if framework_change != framework:
            continue
        image_type = dockerfile[1]
        py_version = dockerfile[4]
        device_type = dockerfile[-1].split(".")[-1]
        LOGGER.info(f"Building dockerfile: {dockerfile}")
        # Use class static variables to avoid passing, returning the varibles from all functions
        JobParameters.device_types.append(device_type)
        JobParameters.image_types.append(image_type)
        JobParameters.py_versions.append(py_version)
        # create a map for the image_build_string and run_test_types on it
        # this map will be used to update the DLC_IMAGES for pr test jobs
        run_tests_key = f"{image_type}_{device_type}_{py_version}"
        update_image_run_test_types(run_tests_key, constants.ALL)