Source code for hailtop.fs.stat_result

from enum import Enum, auto
from typing import Any, NamedTuple

from hailtop.utils.filesize import filesize


class FileType(Enum):
    DIRECTORY = auto()
    FILE = auto()
    SYMLINK = auto()


class FileStatus(NamedTuple):
    path: str
    owner: str | int | None
    size: int
    # common point between unix, google, and hadoop filesystems, represented as a unix timestamp
    modification_time: float | None

    def to_legacy_dict(self) -> dict[str, Any]:
        return {
            'path': self.path,
            'owner': self.owner,
            'size_bytes': self.size,
            'size': filesize(self.size),
            'modification_time': self.modification_time,
        }


[docs]class FileListEntry(NamedTuple): """Data returned by :func:`hailtop.fs.stat` or :func:`hailtop.fs.ls`""" path: str owner: str | int | None """Optional name or id of the entry's owner""" size: int """Size in bytes""" typ: FileType # common point between unix, google, and hadoop filesystems, represented as a unix timestamp modification_time: float | None """An optional floating point unix timestamp in seconds""" def is_dir(self) -> bool: return self.typ is FileType.DIRECTORY def to_legacy_dict(self) -> dict[str, Any]: return { 'path': self.path, 'owner': self.owner, 'size_bytes': self.size, 'size': filesize(self.size), 'modification_time': self.modification_time, 'is_dir': self.is_dir(), }
StatResult = FileListEntry # backwards compatibility