def resource()

in geneve/utils/resource.py [0:0]


def resource(uri, basedir=None, cachedir=None, cachefile=None, validate=None):

    with tempdir() as tmpdir:
        local_file = download(uri, tmpdir, basedir=basedir, cachedir=cachedir, cachefile=cachefile, validate=validate)

        if local_file.is_dir():
            tmpdir = local_file
        else:
            kwargs = {}
            if sys.version_info >= (3, 12) and ".tar" in local_file.suffixes:
                kwargs = {"filter": "data"}
            try:
                shutil.unpack_archive(local_file, tmpdir, **kwargs)
            except shutil.ReadError:
                tmpdir = local_file
            else:
                if local_file.parent == tmpdir:
                    local_file.unlink()
                inner_entries = tmpdir.glob("*")
                new_tmpdir = next(inner_entries)
                try:
                    # check if there are other directories or files
                    _ = next(inner_entries)
                except StopIteration:
                    # lone entry, probably a directory, let's use it as base
                    tmpdir = new_tmpdir

        yield tmpdir