Skip to content

Commit 4824303

Browse files
author
Thierry RAMORASOAVINA
committed
Simplify the interface of Dictionary.add_variable_from_spec regarding the variable meta_data
1 parent 4ccbaf1 commit 4824303

File tree

2 files changed

+5
-51
lines changed

2 files changed

+5
-51
lines changed

khiops/core/dictionary.py

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
from khiops.core.internals.common import (
2525
deprecation_message,
2626
is_dict_like,
27-
is_list_like,
2827
is_string_like,
2928
type_error_message,
3029
)
@@ -849,13 +848,9 @@ def add_variable_from_spec(
849848
rule : str, optional
850849
Variable rule (in verbatim).
851850
meta_data : dict, optional
852-
A Python dictionary which holds the metadata specification
853-
with the following keys:
854-
- keys : list, default []
855-
list of meta-data keys
856-
- values : list, default []
857-
list of meta-data values.
858-
The values can be str, bool, float or int.
851+
A Python dictionary which holds the metadata specification.
852+
The dictionary keys are str.
853+
The values can be str, bool, float or int.
859854
860855
Raises
861856
------
@@ -892,27 +887,6 @@ def add_variable_from_spec(
892887
if meta_data is not None:
893888
if not is_dict_like(meta_data):
894889
raise TypeError(type_error_message("meta_data", meta_data, "dict-like"))
895-
if "keys" not in meta_data or "values" not in meta_data:
896-
raise ValueError(
897-
"'meta_data' does not contain "
898-
"the mandatory keys 'keys' and 'values'"
899-
)
900-
if not is_list_like(meta_data["keys"]):
901-
raise TypeError(
902-
type_error_message(
903-
"meta_data['keys']", meta_data["keys"], "list-like"
904-
)
905-
)
906-
if not is_list_like(meta_data["values"]):
907-
raise TypeError(
908-
type_error_message(
909-
"meta_data['values']", meta_data["values"], "list-like"
910-
)
911-
)
912-
if len(meta_data["keys"]) != len(meta_data["values"]):
913-
raise ValueError(
914-
"'meta_data' keys and values " "do not have the same size"
915-
)
916890
if label is not None:
917891
if not is_string_like(label):
918892
raise TypeError(type_error_message("label", label, "string-like"))
@@ -936,7 +910,7 @@ def add_variable_from_spec(
936910
variable.type = type
937911
variable.used = used
938912
if meta_data is not None:
939-
for key, value in zip(meta_data["keys"], meta_data["values"]):
913+
for key, value in meta_data.items():
940914
variable.meta_data.add_value(key, value)
941915
if label is not None:
942916
variable.label = label

tests/test_core.py

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1892,31 +1892,11 @@ def test_dictionary_accessors(self):
18921892
dictionary.add_variable_from_spec(
18931893
name="fresh_one", type="Categorical", meta_data="str"
18941894
)
1895-
# 'meta_data' mandatory keys must exist
1896-
with self.assertRaisesRegex(ValueError, "meta_data.*mandatory keys"):
1897-
dictionary.add_variable_from_spec(
1898-
name="fresh_one", type="Categorical", meta_data={"keys": []}
1899-
)
1900-
1901-
# 'meta_data' 'keys' and 'values' must be list
1902-
with self.assertRaisesRegex(TypeError, "meta_data.*list"):
1903-
dictionary.add_variable_from_spec(
1904-
name="fresh_one",
1905-
type="Categorical",
1906-
meta_data={"keys": "str", "values": "str"},
1907-
)
1908-
# 'meta_data' 'keys' and 'values' must be the same size
1909-
with self.assertRaisesRegex(ValueError, "meta_data.*size"):
1910-
dictionary.add_variable_from_spec(
1911-
name="fresh_one",
1912-
type="Categorical",
1913-
meta_data={"keys": ["a", "b"], "values": [1]},
1914-
)
19151895
# successful adding (with meta-data)
19161896
dictionary.add_variable_from_spec(
19171897
name="fresh_one",
19181898
type="Categorical",
1919-
meta_data={"keys": ["a", "b"], "values": [1, 2]},
1899+
meta_data={"a": 1, "b": 2},
19201900
)
19211901
self.assertEqual(
19221902
2,

0 commit comments

Comments
 (0)