Catalog is a set of data packages.
We can create a catalog providing a list of data packages:
from frictionless import Catalog, Package
catalog = Catalog(packages=[Package('tables/*')])
Usually Catalog is used to describe some external set of datasets like a CKAN instance or a Github user or search. For example:
from frictionless import Catalog
catalog = Catalog('https://demo.ckan.org/dataset/')
print(catalog)
The core purpose of having a catalog is to provide an ability to have a set of packages. The Catalog class provides useful methods to manage packages:
from frictionless import Catalog
catalog = Catalog('https://demo.ckan.org/dataset/')
catalog.package_names
catalog.has_package
catalog.add_package
catalog.get_package
catalog.clear_packages
As any of the Metadata classes the Catalog class can be saved as JSON or YAML:
from frictionless import Package
catalog = Catalog('https://demo.ckan.org/dataset/')
catalog.to_json('datacatalog.json') # Save as JSON
catalog.to_yaml('datacatalog.yaml') # Save as YAML
Catalog representation
(source: Optional[Any] = None, *, control: Optional[Control] = None, name: Optional[str] = None, title: Optional[str] = None, description: Optional[str] = None, packages: List[Union[Package, str]] = [], basepath: Optional[str] = None)
A short url-usable (and preferably human-readable) name. This MUST be lower-case and contain only alphanumeric characters along with “.”, “_” or “-” characters.
Optional[str]
A Catalog title according to the specs. It should be a human-oriented title of the resource.
Optional[str]
A Catalog description according to the specs. It should be a human-oriented description of the resource.
Optional[str]
A list of packages. Each package in the list is a Data Package.
List[Package]
A basepath of the catalog. The normpath of the resource is joined `basepath` and `/path`
Optional[str]
Return names of packages
List[str]
Add new package to the package
(package: Union[Package, str]) -> Package
Remove all the packages
Get package by name
(name: str) -> Package
Check if a package is present
(name: str) -> bool
Infer catalog's metadata
(*, sample=True, stats=False)
Remove package by name
(name: str) -> Package
Set package by name
(package: Package) -> Optional[Package]