aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarvin Scholz <epirat07@gmail.com>2025-04-01 22:11:14 +0200
committerXavier Claessens <xclaesse@gmail.com>2025-08-29 17:36:44 -0400
commit17aa0acd0b91df8c38fb3be948b5d32ff73fd91d (patch)
tree7134ae0217638340e889d7a8b3695ddee2578e3a
parent36a47e91619fc47312ebcbf7b4832207ae46e017 (diff)
downloadmeson-17aa0acd0b91df8c38fb3be948b5d32ff73fd91d.zip
meson-17aa0acd0b91df8c38fb3be948b5d32ff73fd91d.tar.gz
meson-17aa0acd0b91df8c38fb3be948b5d32ff73fd91d.tar.bz2
interpreter: add dict.values() method
Analogous to keys(), this returns the values in an array. It uses the same sorting as keys(), else it would quite confusing to return values in a different order than the corresponding keys.
-rw-r--r--docs/markdown/snippets/add_dict_values.md12
-rw-r--r--docs/yaml/elementary/dict.yml5
-rw-r--r--mesonbuild/interpreter/primitives/dict.py13
3 files changed, 29 insertions, 1 deletions
diff --git a/docs/markdown/snippets/add_dict_values.md b/docs/markdown/snippets/add_dict_values.md
new file mode 100644
index 0000000..0b97a70
--- /dev/null
+++ b/docs/markdown/snippets/add_dict_values.md
@@ -0,0 +1,12 @@
+## Added a `values()` method for dictionaries
+
+Mesons built-in [[@dict]] type now supports the [[dict.values]] method
+to retrieve the dictionary values as an array, analogous to the
+[[dict.keys]] method.
+
+```meson
+dict = { 'b': 'world', 'a': 'hello' }
+
+[[#dict.keys]] # Returns ['a', 'b']
+[[#dict.values]] # Returns ['hello', 'world']
+```
diff --git a/docs/yaml/elementary/dict.yml b/docs/yaml/elementary/dict.yml
index 70844bb..3a5c484 100644
--- a/docs/yaml/elementary/dict.yml
+++ b/docs/yaml/elementary/dict.yml
@@ -46,3 +46,8 @@ methods:
- name: keys
returns: array[str]
description: Returns an array of keys in the dictionary.
+
+- name: values
+ returns: array[any]
+ description: Returns an array of values in the dictionary.
+ since: 1.10.0
diff --git a/mesonbuild/interpreter/primitives/dict.py b/mesonbuild/interpreter/primitives/dict.py
index d641fa8..794c150 100644
--- a/mesonbuild/interpreter/primitives/dict.py
+++ b/mesonbuild/interpreter/primitives/dict.py
@@ -9,6 +9,7 @@ from ...interpreterbase import (
IterableObject,
MesonOperator,
ObjectHolder,
+ FeatureNew,
typed_operator,
noKwargs,
noPosargs,
@@ -48,6 +49,9 @@ class DictHolder(ObjectHolder[T.Dict[str, TYPE_var]], IterableObject):
def size(self) -> int:
return len(self.held_object)
+ def _keys_getter(self) -> T.List[str]:
+ return sorted(self.held_object)
+
@noKwargs
@typed_pos_args('dict.has_key', str)
@InterpreterObject.method('has_key')
@@ -58,7 +62,14 @@ class DictHolder(ObjectHolder[T.Dict[str, TYPE_var]], IterableObject):
@noPosargs
@InterpreterObject.method('keys')
def keys_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> T.List[str]:
- return sorted(self.held_object)
+ return self._keys_getter()
+
+ @noKwargs
+ @noPosargs
+ @InterpreterObject.method('values')
+ @FeatureNew('dict.values', '1.10.0')
+ def values_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> T.List[TYPE_var]:
+ return [self.held_object[k] for k in self._keys_getter()]
@noArgsFlattening
@noKwargs