Source code for rook.fixes.providers.legacy
"""Legacy Rook dataset fix provider."""
from rook.fixes.providers.base import (
ATLAS_DATASET_PREFIXES,
CMIP6_DECADAL_DATASET_PREFIX,
FixContext,
FixProvider,
)
[docs]
class LegacyDatasetFixProvider(FixProvider):
"""Rook's legacy dataset fix provider."""
name = "legacy"
[docs]
def prepare(self, ds, *, context=None):
from rook.fixes.legacy.decadal import decadal_fix_calendar
# TODO: decide whether this special CMIP6-decadal pre-concat calendar
# preparation belongs in Woodpecker or remains a Rook operation hook.
return decadal_fix_calendar(None, ds)
[docs]
def apply(self, ds, *, context=None):
context = context or FixContext()
dataset_id = context.dataset_id or ""
if dataset_id.startswith(ATLAS_DATASET_PREFIXES):
from rook.fixes.legacy.atlas import apply_atlas_fixes
return apply_atlas_fixes(dataset_id, ds)
if dataset_id.startswith(CMIP6_DECADAL_DATASET_PREFIX):
from rook.fixes.legacy.decadal import apply_decadal_fixes
return apply_decadal_fixes(
dataset_id,
ds,
output_dir=context.output_dir,
)
return ds