Skip to content

Commit f8e612d

Browse files
authored
Merge pull request #804 from Labelbox/AL-4435-improve-metadata-get-by-name-method
add get_by_name method to metadata ontology
2 parents b84bbb0 + f245781 commit f8e612d

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
# Version 3.34.0 (...)
4+
### Added
5+
* Added `get_by_name()` method to MetadataOntology object to access both custom and reserved metadata by name.
6+
37
# Version 3.33.1 (2022-12-14)
48
### Fixed
59
* Fixed where batch creation limit was still limiting # of data rows. SDK should now support creating batches with up to 100k data rows

labelbox/schema/data_row_metadata.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)