'Check if the provided version matches the constraints.
:param version: The version to match against this instance.
:type version: Strring or :class:`Version` instance.'

def match(self, version):

    if isinstance(version, string_types):
        version = self.version_class(version)
    for (operator, constraint, prefix) in self._parts:
        f = self._operators.get(operator)
        if isinstance(f, string_types):
            f = getattr(self, f)
        if (not f):
            msg = ('%r    not    implemented    for    %s' % (operator, self.__class__.__name__))
            raise NotImplementedError(msg)
        if (not f(version, constraint, prefix)):
            return False
    return True
