@@ -147,6 +147,31 @@ def _build_ontology(self):
147147 str , DataRowMetadataSchema ] = self ._make_normalized_name_index (
148148 self .custom_fields )
149149
150+ def get_by_name (
151+ self , name : str
152+ ) -> Union [DataRowMetadataSchema , Dict [str , DataRowMetadataSchema ]]:
153+ """ Get metadata by name
154+
155+ >>> mdo.get_by_name(name)
156+
157+ Args:
158+ name (str): Name of metadata schema
159+
160+ Returns:
161+ Metadata schema as `DataRowMetadataSchema` or dict, in case of Enum metadata
162+
163+ Raises:
164+ KeyError: When provided name is not presented in neither reserved nor custom metadata list
165+ """
166+
167+ # search through reserved names first
168+ if name in self .reserved_by_name :
169+ return self .reserved_by_name [name ]
170+ elif name in self .custom_by_name :
171+ return self .custom_by_name [name ]
172+ else :
173+ raise KeyError (f"There is no metadata with name { name } " )
174+
150175 @staticmethod
151176 def _make_name_index (
152177 fields : List [DataRowMetadataSchema ]
@@ -224,7 +249,7 @@ def _parse_ontology(raw_ontology) -> List[DataRowMetadataSchema]:
224249 return fields
225250
226251 def refresh_ontology (self ):
227- """ Update the `DataRowMetadataOntology` instance with the latest
252+ """ Update the `DataRowMetadataOntology` instance with the latest
228253 metadata ontology schemas
229254 """
230255 self ._raw_ontology = self ._get_ontology ()
@@ -279,7 +304,7 @@ def update_schema(self, name: str, new_name: str) -> DataRowMetadataSchema:
279304
280305 Returns:
281306 Updated metadata schema as `DataRowMetadataSchema`
282-
307+
283308 Raises:
284309 KeyError: When provided name is not a valid custom metadata
285310 """
0 commit comments