Source code for vimsheet.io.base

"""Abstract base class for all format adapters."""

from __future__ import annotations

from abc import ABC, abstractmethod
from pathlib import Path

from vimsheet.model.workbook import Workbook


[docs] class FormatAdapter(ABC): """Base class every I/O adapter must implement.""" supported_extensions: list[str] = [] can_read_formulas: bool = False can_write_formulas: bool = False multi_sheet: bool = False
[docs] @abstractmethod def read(self, path: Path, **opts: object) -> Workbook: """Read *path* and return a populated Workbook."""
[docs] @abstractmethod def write(self, workbook: Workbook, path: Path, **opts: object) -> None: """Serialise *workbook* to *path*."""