From: Vincent Fazio Date: Thu, 14 Nov 2024 14:50:56 +0000 (-0600) Subject: bindings: python: loosen type requirements in public API X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=8f62e6c45355588621ca5916cfab6d1d8e787a77;p=qemu-gpiodev%2Flibgpiod.git bindings: python: loosen type requirements in public API Previously, `Chip.request_lines` and `LineRequest.reconfigure_lines` were typed to accept a config argument that was either an int, a str, or a tuple[int | str]. This had two downsides, namely: * The tuple was typed as having only a single element and not a variable number of elements. The examples and test suite relied on a variable length tuple. * The tuple type itself was overly restictive. The function implementations had no requirement that the value be a tuple, only that it was iterable if it was not a str or an int. Now, these functions accept an Iterable[int | str] instead of tuples to offer greater flexibility to callers. This change does not break compatibility for existing users. Closes: https://github.com/brgl/libgpiod/issues/102 Signed-off-by: Vincent Fazio Link: https://lore.kernel.org/r/20241114145116.2123714-4-vfazio@xes-inc.com Signed-off-by: Bartosz Golaszewski --- diff --git a/bindings/python/gpiod/chip.py b/bindings/python/gpiod/chip.py index 175fcb0..1db199e 100644 --- a/bindings/python/gpiod/chip.py +++ b/bindings/python/gpiod/chip.py @@ -13,6 +13,7 @@ from .line_request import LineRequest from .line_settings import LineSettings, _line_settings_to_ext if TYPE_CHECKING: + from collections.abc import Iterable from datetime import timedelta from .chip_info import ChipInfo @@ -225,7 +226,9 @@ class Chip: def request_lines( self, - config: dict[tuple[Union[int, str]], Optional[LineSettings]], + config: dict[ + Union[Iterable[Union[int, str]], int, str], Optional[LineSettings] + ], consumer: Optional[str] = None, event_buffer_size: Optional[int] = None, output_values: Optional[dict[Union[int, str], Value]] = None, diff --git a/bindings/python/gpiod/line_request.py b/bindings/python/gpiod/line_request.py index a8e4a87..c7b32f3 100644 --- a/bindings/python/gpiod/line_request.py +++ b/bindings/python/gpiod/line_request.py @@ -148,7 +148,10 @@ class LineRequest: self._req.set_values(mapped) def reconfigure_lines( - self, config: dict[tuple[Union[int, str]], LineSettings] + self, + config: dict[ + Union[Iterable[Union[int, str]], int, str], Optional[LineSettings] + ], ) -> None: """ Reconfigure requested lines.