def test_repr(self): options = dict(foo="bar", baz=1) output = repr(FrozenBunch(options)) assert isinstance(output, str) assert output.startswith("FrozenBunch") for key, value in options.items(): assert f"{key}={value}" in output
def __init__( self, name: str, *, type: Union[str, DatasetType], dependencies: Collection[str] = (), categories: Optional[Union[int, Sequence[str], str, pathlib.Path]] = None, citation: Optional[str] = None, homepage: Optional[str] = None, license: Optional[str] = None, valid_options: Optional[Dict[str, Sequence]] = None, extra: Optional[Dict[str, Any]] = None, ) -> None: self.name = name.lower() self.type = DatasetType[type.upper()] if isinstance(type, str) else type self.dependecies = dependencies if categories is None: path = BUILTIN_DIR / f"{self.name}.categories" categories = path if path.exists() else [] if isinstance(categories, int): categories = [str(label) for label in range(categories)] elif isinstance(categories, (str, pathlib.Path)): path = pathlib.Path(categories).expanduser().resolve() categories, *_ = zip(*self.read_categories_file(path)) self.categories = tuple(categories) self.citation = citation self.homepage = homepage self.license = license valid_split: Dict[str, Sequence] = dict(split=["train"]) if valid_options is None: valid_options = valid_split elif "split" not in valid_options: valid_options.update(valid_split) elif "train" not in valid_options["split"]: raise ValueError( f"'train' has to be a valid argument for option 'split', " f"but found only {sequence_to_str(valid_options['split'], separate_last='and ')}." ) self._valid_options: Dict[str, Sequence] = valid_options self._configs = tuple( DatasetConfig(**dict(zip(valid_options.keys(), combination))) for combination in itertools.product(*valid_options.values())) self.extra = FrozenBunch(extra or dict())
def __init__( self, name: str, *, type: Union[str, DatasetType], dependencies: Collection[str] = (), categories: Optional[Union[int, Sequence[str], str, pathlib.Path]] = None, citation: Optional[str] = None, homepage: Optional[str] = None, license: Optional[str] = None, valid_options: Optional[Dict[str, Sequence[Any]]] = None, extra: Optional[Dict[str, Any]] = None, ) -> None: self.name = name.lower() self.type = DatasetType[type.upper()] if isinstance(type, str) else type self.dependecies = dependencies if categories is None: path = BUILTIN_DIR / f"{self.name}.categories" categories = path if path.exists() else [] if isinstance(categories, int): categories = [str(label) for label in range(categories)] elif isinstance(categories, (str, pathlib.Path)): path = pathlib.Path(categories).expanduser().resolve() categories, *_ = zip(*self.read_categories_file(path)) self.categories = tuple(categories) self.citation = citation self.homepage = homepage self.license = license self._valid_options = valid_options or dict() self._configs = tuple( DatasetConfig(**dict(zip(self._valid_options.keys(), combination))) for combination in itertools.product( *self._valid_options.values())) self.extra = FrozenBunch(extra or dict())
def test_immutable_setattr(self): frozen_bunch = FrozenBunch() with pytest.raises(RuntimeError, match="immutable"): frozen_bunch.foo = "bar"
def test_getattr(self): options = dict(foo="bar", baz=1) config = FrozenBunch(options) for key, value in options.items(): assert getattr(config, key) == value
def test_immutable_delattr(self, ): frozen_bunch = FrozenBunch(foo="bar") with pytest.raises(RuntimeError, match="immutable"): del frozen_bunch.foo