Skip to content

Commit 11e0d70

Browse files
author
Thierry RAMORASOAVINA
committed
Simplify the interface of Dictionary.add_variable_from_spec regarding the variable meta_data
1 parent fac0079 commit 11e0d70

File tree

2 files changed

+4
-51
lines changed

2 files changed

+4
-51
lines changed

khiops/core/dictionary.py

Lines changed: 3 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
)
@@ -861,13 +860,8 @@ def add_variable_from_spec(
861860
rule : str, optional
862861
Variable rule (in verbatim).
863862
meta_data : dict, optional
864-
A Python dictionary which holds the metadata specification
865-
with the following keys:
866-
- keys : list, default []
867-
list of meta-data keys
868-
- values : list, default []
869-
list of meta-data values.
870-
The values can be str, bool, float or int.
863+
A Python dictionary which holds the metadata specification.
864+
The dictionary keys are str. The values can be str, bool, float or int.
871865
872866
Raises
873867
------
@@ -899,27 +893,6 @@ def add_variable_from_spec(
899893
if meta_data is not None:
900894
if not is_dict_like(meta_data):
901895
raise TypeError(type_error_message("meta_data", meta_data, "dict-like"))
902-
if "keys" not in meta_data or "values" not in meta_data:
903-
raise ValueError(
904-
"'meta_data' does not contain "
905-
"the mandatory keys 'keys' and 'values'"
906-
)
907-
if not is_list_like(meta_data["keys"]):
908-
raise TypeError(
909-
type_error_message(
910-
"meta_data['keys']", meta_data["keys"], "list-like"
911-
)
912-
)
913-
if not is_list_like(meta_data["values"]):
914-
raise TypeError(
915-
type_error_message(
916-
"meta_data['values']", meta_data["values"], "list-like"
917-
)
918-
)
919-
if len(meta_data["keys"]) != len(meta_data["values"]):
920-
raise ValueError(
921-
"'meta_data' keys and values " "do not have the same size"
922-
)
923896
if label is not None:
924897
if not is_string_like(label):
925898
raise TypeError(type_error_message("label", label, "string-like"))
@@ -943,7 +916,7 @@ def add_variable_from_spec(
943916
variable.type = type
944917
variable.used = used
945918
if meta_data is not None:
946-
for key, value in zip(meta_data["keys"], meta_data["values"]):
919+
for key, value in meta_data.items():
947920
variable.meta_data.add_value(key, value)
948921
if label is not None:
949922
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)