OneScience's picture
Upload folder using huggingface_hub
35cdf53 verified
Raw
History Blame Contribute Delete
1.6 kB
"""Module that provides an abstraction for accessing test data."""
import os
import pathlib
from typing import Literal, overload
from absl.testing import absltest
class Data:
"""Provides an abstraction for accessing test data."""
def __init__(self, data_dir: os.PathLike[str] | str):
"""Initiailizes data wrapper, providing users with high level data access.
Args:
data_dir: Directory containing test data.
"""
self._data_dir = pathlib.Path(data_dir)
def path(self, data_name: str | os.PathLike[str] | None = None) -> str:
"""Returns the path to a given test data.
Args:
data_name: the name of the test data file relative to data_dir. If not
set, this will return the absolute path to the data directory.
"""
data_dir_path = (
pathlib.Path(absltest.get_default_test_srcdir()) / self._data_dir
)
if data_name:
return str(data_dir_path / data_name)
return str(data_dir_path)
@overload
def load(
self, data_name: str | os.PathLike[str], mode: Literal['rt'] = 'rt'
) -> str:
...
@overload
def load(
self, data_name: str | os.PathLike[str], mode: Literal['rb'] = 'rb'
) -> bytes:
...
def load(
self, data_name: str | os.PathLike[str], mode: str = 'rt'
) -> str | bytes:
"""Returns the contents of a given test data.
Args:
data_name: the name of the test data file relative to data_dir.
mode: the mode in which to read the data file. Defaults to text ('rt').
"""
with open(self.path(data_name), mode=mode) as f:
return f.read()