from typing import List


def dict_value_from_path(src_dict: dict, path: List[str], case_sensitive: bool = False):
    """
    returns the value of dict field specified via "path" in form of  a list of keys. By default the keys are matching
    case insensitive way.

    Example:
    src_dict = {"level1:{"level2":{"level3:value}}}
    list_of_keys = ["level1", "level2", "level3"]

    :param src_dict: dict from where to extract data b
    :param path: list of keys to specify the needed data
    :param case_sensitive: case sensototy flag for matching keys of dict against path entries

    :return: value of a dict branch
    """
    s = src_dict.copy()
    key_upper = dict()
    key = ""

    for p in path:

        if not case_sensitive:
            key_upper_key = {key.upper(): key for key in s.keys()}
            key = key_upper_key[p.upper()] if p.upper() in key_upper_key else None

        else:
            key = p

        try:
            s = s[key]

        except Exception as e:
            s = None
            break

    return s