'Return True if this path matches the given pattern.'

def match(self, path_pattern):

    cf = self._flavour.casefold
    path_pattern = cf(path_pattern)
    (drv, root, pat_parts) = self._flavour.parse_parts((path_pattern,))
    if (not pat_parts):
        raise ValueError('empty    pattern')
    if (drv and (drv != cf(self._drv))):
        return False
    if (root and (root != cf(self._root))):
        return False
    parts = self._cparts
    if (drv or root):
        if (len(pat_parts) != len(parts)):
            return False
        pat_parts = pat_parts[1:]
    elif (len(pat_parts) > len(parts)):
        return False
    for (part, pat) in zip(reversed(parts), reversed(pat_parts)):
        if (not fnmatch.fnmatchcase(part, pat)):
            return False
    return True
