bindings: python: fix line request by name with multiple entries
authorChuang Zhu <git@chuang.cz>
Wed, 10 Jul 2024 12:57:18 +0000 (14:57 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Thu, 11 Jul 2024 11:25:00 +0000 (13:25 +0200)
When multiple entries are requested using line names in
Chip.request_lines(), only the the last entry is added to
LineRequest._name_map, causing a ValueError when trying to use functions
like LineRequest.set_value() on any former entries.

Move the required variables to the correct scope.

Signed-off-by: Chuang Zhu <git@chuang.cz>
[Bartosz: tweak the commit message]
Co-developed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Kent Gibson <warthog618@gmail.com>
Link: https://lore.kernel.org/r/20240710125719.33655-2-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
bindings/python/gpiod/chip.py

index 47bda1111d83bef336005ad07af2cfdfc24bc732..7692ba42c3375dee0b3892befca9267cec69d846 100644 (file)
@@ -279,11 +279,12 @@ class Chip:
         else:
             mapped_output_values = None
 
+        name_map = dict()
+        offset_map = dict()
+        global_output_values = list()
+
         for lines, settings in config.items():
             offsets = list()
-            name_map = dict()
-            offset_map = dict()
-            global_output_values = list()
 
             if isinstance(lines, int) or isinstance(lines, str):
                 lines = (lines,)