[docs]classDimensionsConfigModel(DSGBaseModel):"""Represents multiple dimension models. Used when registering multiple dimensions in one command. """dimensions:DimensionsListModel=Field(title="dimensions",description="Dimensions for submission to the dimension registry",)
[docs]@field_validator("dimensions")@classmethoddefcheck_files(cls,values:dict)->dict:"""Validate dimension files are unique across all dimensions"""check_uniqueness((x.filenameforxinvaluesifisinstance(x,DimensionModel)andx.filename),"dimension record filename",)returnvalues
[docs]@field_validator("dimensions")@classmethoddefcheck_names(cls,values:dict)->dict:"""Validate dimension names are unique across all dimensions."""check_uniqueness([dim.namefordiminvalues],"dimension record name",)returnvalues
classDimensionsConfig(ConfigBase):"""Provides an interface to a DimensionsConfigModel."""def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)self._src_dir=None@staticmethoddefconfig_filename():return"dimensions.json5"@propertydefconfig_id(self):assertFalse,"not correct for this class"@staticmethoddefmodel_class():returnDimensionsConfigModel@classmethoddefload(cls,config_filename:Path,*args,**kwargs):returnsuper().load(config_filename,*args,**kwargs)@classmethoddefload_from_model(cls,model):returncls(model)