Skip to content


RarArchive (GenericBinary, FilesystemRoot) dataclass

Filesystem stored in a RAR archive.

RarUnpacker (Unpacker)

Unpack RAR archives using the free unrar tool.

unpack(self, resource, config) async

Unpack the given resource.

Users should not call this method directly; rather, they should run or Resource.unpack.


Name Type Description Default
resource Resource

The resource that is being unpacked

config ~CC

Optional config for unpacking. If an implementation provides a default, this default will always be used when config would otherwise be None. Note that a copy of the default config will be passed, so the default config values cannot be modified persistently by a component run.

Source code in ofrak_components/
async def unpack(self, resource: Resource, config: CC):
    with tempfile.NamedTemporaryFile(
    ) as temp_archive, tempfile.TemporaryDirectory() as temp_dir:
        temp_archive.write(await resource.get_data())

        command = ["unar", "-no-directory", "-no-recursion",]
  , cwd=temp_dir, check=True, capture_output=True)
        except subprocess.CalledProcessError as e:
            raise UnpackerError(format_called_process_error(e))

        rar_view = await resource.view_as(RarArchive)
        await rar_view.initialize_from_disk(temp_dir)