Source code for dimcat.data.catalogs.outputs
from __future__ import annotations
import logging
from typing import Iterator, Optional, Tuple
from dimcat.data.catalogs.base import DimcatCatalog
from dimcat.data.resources.base import F
from dimcat.data.resources.dc import DimcatResource, FeatureSpecs
from dimcat.data.resources.utils import feature_specs2config
module_logger = logging.getLogger(__name__)
[docs]class OutputsCatalog(DimcatCatalog):
[docs] def get_feature(self, feature: Optional[FeatureSpecs] = None) -> F:
"""Looks up the given feature in the "features" package and returns it.
Raises:
PackageNotFoundError: If no package with the name "features" is loaded.
NoMatchingResourceFoundError: If no resource matching the specs is found in the "features" package.
"""
package = self.get_package_by_name("features")
if feature is None:
return package.get_resource_by_name()
feature_config = feature_specs2config(feature)
return package.get_resource_by_config(feature_config)
[docs] def iter_resources(self) -> Iterator[Tuple[str, DimcatResource]]:
"""Iterates over all resources in all packages.
Yields:
The package name and the resource.
"""
for package in self._packages:
for resource in package:
yield package.package_name, resource