[docs]defvalidate_models():""" Check YAML datamodel validation Checks all YAML datamodels for corresponding validated JSON models. Raises ------ ValueError when invalidated YAML models are found """# get or set the datamodel directorydmdir=os.getenv("DATAMODEL_DIR")ifnotdmdir:dmdir=pathlib.Path(__file__).parent.parent.parent.parent# get the list of JSON and YAML datamodelsjsons=pathlib.Path(dmdir)/"datamodel"/"products"/"json"yamls=pathlib.Path(dmdir)/"datamodel"/"products"/"yaml"yfiles=yamls.rglob("*.yaml")jfiles=list(jsons.rglob("*.json"))# look for any YAML datamodels that don't have corresponding JSON modelsinvalid=[]foryinyfiles:newy=pathlib.Path(y.as_posix().replace("yaml","json"))ifnewynotinjfiles:invalid.append(y.name)# raise error for any not-yet-validated YAML datamodelsifany(invalid):jinv="\n".join(sorted(invalid))raiseValueError(f'The following YAMLs do not yet have validated JSON datamodels:\n{jinv}')
[docs]defrevalidate(species:str,release:str=None,verbose:bool=None):""" Rewrite JSON datamodels Rewrites all the datamodel stubs for a given existing file species and release. Parameters ---------- species : str the file species name of a YAML datamodel release : str, optional the SDSS release, by default None verbose : bool, optional if True, turn on verbosity, by default None """dm=DataModel.from_yaml(species=species,release=release,verbose=verbose)dm.write_stubs()