Tutorial: intermediate topics¶
These tutorials are placeholders for focused guides that build on the basic catalog workflow. They should stay small and runnable.
Custom hooks and extractors¶
Use this level for examples that register hooks through PluginRegistry, fill
metadata before validation, collect derived metadata, or handle rollback
warnings. The existing runnable example is:
uv run python examples/custom_extractor/scripts/run.py
Future content should show:
before_validate_metadatafor metadata defaultsextract_metadatafor derived metadatacontext.add_warning(...)for non-fatal findingsfocused tests for hook outcomes
Artifact writers¶
Use this level for examples that materialise data during add_artifact(), for
example writing an in-memory object or unpacking a zip archive with helpers from
ogcat.writers.
Future content should show:
memory_source()withmemory_writer()path_source()withpath_writer()UnzipArtifactWriterrollback behavior when a writer fails
Validation patterns¶
Use this level for stricter catalog policies. Required metadata fields are errors during ingest, while unknown metadata is accepted unless strict validation is requested explicitly.
Future content should show:
validate_spec()before writing a catalog specvalidate_metadata()andValidationIssue.pathallow_unknown_metadata=Falsewith explicit strict validationuser-friendly error messages in CLIs or notebooks
CLI parity¶
Use this level for shell-first workflows that mirror the Python API.
Future content should show:
compact search expressions such as
species=CH4,title:methane, andfield?--fieldsplus--format csv|tsv|pipe--json,--ids, and--pathsfor automation