def match(path, glob):
    """Match the path with the glob.

    Arguments:

    path -- A list of keys representing the path.
    glob -- A list of globs to match against the path.

    """
    path_len = len(path)
    glob_len = len(glob)

    ss = -1
    ss_glob = glob
    if '**' in glob:
        ss = glob.index('**')
        if '**' in glob[ss + 1:]:
            raise dpath.exceptions.InvalidGlob("Invalid glob. Only one '**' is permitted per glob.")

        if path_len >= glob_len:
            # Just right or more stars.
            more_stars = ['*'] * (path_len - glob_len + 1)
            ss_glob = glob[:ss] + more_stars + glob[ss + 1:]
        elif path_len == glob_len - 1:
            # Need one less star.
            ss_glob = glob[:ss] + glob[ss + 1:]

    if path_len == len(ss_glob):
        # Python 3 support
        if PY3:
            return all(map(fnmatch.fnmatch, list(map(str, paths_only(path))), list(map(str, ss_glob))))
        else: # Default to Python 2
            return all(map(fnmatch.fnmatch, map(str, paths_only(path)), map(str, ss_glob)))

    return False
def match ( path , glob ) : path_len = len ( path ) glob_len = len ( glob ) ss = - 1 ss_glob = glob if '**' in glob : ss = glob . index ( '**' ) if '**' in glob [ ss + 1 : ] : raise dpath . exceptions . InvalidGlob ( "Invalid glob. Only one '**' is permitted per glob." ) if path_len >= glob_len : more_stars = [ '*' ] * ( path_len - glob_len + 1 ) ss_glob = glob [ : ss ] + more_stars + glob [ ss + 1 : ] elif path_len == glob_len - 1 : ss_glob = glob [ : ss ] + glob [ ss + 1 : ] if path_len == len ( ss_glob ) : if PY3 : return all ( map ( fnmatch . fnmatch , list ( map ( str , paths_only ( path ) ) ) , list ( map ( str , ss_glob ) ) ) ) else : return all ( map ( fnmatch . fnmatch , map ( str , paths_only ( path ) ) , map ( str , ss_glob ) ) ) return False
Match the path with the glob.

    Arguments:

    path -- A list of keys representing the path.
    glob -- A list of globs to match against the path.