diff --git a/encord/metadata_schema.py b/encord/metadata_schema.py index da4127b4..e2bee5a9 100644 --- a/encord/metadata_schema.py +++ b/encord/metadata_schema.py @@ -337,6 +337,35 @@ def add_scalar( ) self._dirty = True + def set_scalar( + self, + k: str, + *, + data_type: Union[ + Literal["boolean", "datetime", "number", "uuid", "varchar", "text", "string", "long_string"], + MetadataSchemaScalarType, + ], + ) -> None: + """ + Sets a simple metadata type for a given key in the schema. + + Alias of add_scalar + + **Parameters:** + + - k : str: The key for which the metadata type is being set. + - data_type : Literal["boolean", "datetime", "number", "uuid", "varchar", "text", "string", "long_string"] + The type of metadata to be associated with the key. Must be a valid identifier. + "string" is an alias of "varchar" + "long_string" is an alias of "text" + + **Raises:** + + MetadataSchemaError: If the key `k` is already defined in the schema with a conflicting type. + ValueError: If `data_type` is not a valid type of metadata identifier. + """ + self.add_scalar(k, data_type=data_type) + def delete_key(self, k: str, *, hard: bool = False) -> None: """ Delete a metadata key from the schema. diff --git a/tests/test_metadata_schema.py b/tests/test_metadata_schema.py index 81eaf90f..b5d5a143 100644 --- a/tests/test_metadata_schema.py +++ b/tests/test_metadata_schema.py @@ -44,6 +44,8 @@ def test_metadata_schema() -> None: meta.add_scalar("g", data_type="number") meta.add_scalar("g", data_type="text") meta.add_scalar("g", data_type="number") + meta.set_scalar("g", data_type="text") + meta.set_scalar("g", data_type="number") assert meta.has_key("g") assert not meta.has_key("g2")