def __missing__(self, key):
        if self.default_factory is None:
            raise KeyError(key)
        else:
            ret = self[key] = self.default_factory(name=key)
            return ret
def _makeglobrecursive(pat):
    """Make a glob pattern recursive by appending "/**" to it"""
    if pat.endswith("/") or not pat:
        return pat + "**"
    else:
        return pat + "/**"