Check if the value of this namespace is matched by
        keys

        '*' is treated as wildcard

        Arguments:

        keys -- list of keys

        Examples:

            ns = Namespace("a.b.c")
            ns.match(["a"]) #True
            ns.match(["a","b"]) #True
            ns.match(["a","b","c"]) #True
            ns.match(["a","*","c"]) #True
            ns.match(["b","b","c"]) #False

def match(self, keys, partial=True):
        """
        Check if the value of this namespace is matched by
        keys

        '*' is treated as wildcard

        Arguments:

        keys -- list of keys

        Examples:

            ns = Namespace("a.b.c")
            ns.match(["a"]) #True
            ns.match(["a","b"]) #True
            ns.match(["a","b","c"]) #True
            ns.match(["a","*","c"]) #True
            ns.match(["b","b","c"]) #False

        """
        if not partial and len(keys) != self.length:
            return False
        c = 0
        for k in keys:
            if c >= self.length:
                return False
            a = self.keys[c]
            if a != "*" and k != "*" and k != a:
                return False
            c += 1

        return True