From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Kent Gibson <warthog618@gmail.com>,
Linus Walleij <linus.walleij@linaro.org>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Viresh Kumar <viresh.kumar@linaro.org>
Cc: linux-gpio@vger.kernel.org, Bartosz Golaszewski <brgl@bgdev.pl>
Subject: [libgpiod v2][PATCH v3 0/4] bindings: implement python bindings for libgpiod v2
Date: Fri, 7 Oct 2022 16:55:17 +0200 [thread overview]
Message-ID: <20221007145521.329614-1-brgl@bgdev.pl> (raw)
This is the third iteration of python bindings for libgpiod but it really has
very little in common with the previous version.
This time the code has been split into high-level python and low-level
C layers with the latter only doing the bare minimum.
The data model is mostly based on the C++ one with the main difference
being utilizing dynamic typing and keyword arguments in place of the
builder pattern. That allows us to reduce the number of methods and
objects.
Because python doesn't have RAII, unlike C++, we provide a module-level
request_lines() helper as gpiod.Chip(path).request_lines(...) one-liner
could lead to the chip left dangling even after the last reference is
dropped.
Because python forces us to dynamically allocate objects all the time even
for fundamental types (which are also immutable) there's no point in trying
to replicate the edge-event buffer. Instead LineRequest.read_edge_event()
just returns a list of events.
Bartosz Golaszewski (4):
bindings: python: remove old version
bindings: python: add examples
bindings: python: add tests
bindings: python: implement python bindings for libgpiod v2
bindings/python/.gitignore | 8 +
bindings/python/Makefile.am | 26 +-
bindings/python/examples/Makefile.am | 16 +-
bindings/python/examples/gpiodetect.py | 15 +-
bindings/python/examples/gpiofind.py | 14 +-
bindings/python/examples/gpioget.py | 34 +-
bindings/python/examples/gpioinfo.py | 41 +-
bindings/python/examples/gpiomon.py | 52 +-
bindings/python/examples/gpioset.py | 46 +-
bindings/python/gpiod/Makefile.am | 17 +
bindings/python/gpiod/__init__.py | 53 +
bindings/python/gpiod/chip.py | 308 ++
bindings/python/gpiod/chip_info.py | 21 +
bindings/python/gpiod/edge_event.py | 46 +
bindings/python/gpiod/exception.py | 20 +
bindings/python/gpiod/ext/Makefile.am | 11 +
bindings/python/gpiod/ext/chip.c | 335 +++
bindings/python/gpiod/ext/common.c | 92 +
bindings/python/gpiod/ext/internal.h | 20 +
bindings/python/gpiod/ext/line-config.c | 133 +
bindings/python/gpiod/ext/line-settings.c | 130 +
bindings/python/gpiod/ext/module.c | 193 ++
bindings/python/gpiod/ext/request.c | 402 +++
bindings/python/gpiod/info_event.py | 33 +
bindings/python/gpiod/internal.py | 19 +
bindings/python/gpiod/line.py | 56 +
bindings/python/gpiod/line_info.py | 73 +
bindings/python/gpiod/line_request.py | 258 ++
bindings/python/gpiod/line_settings.py | 62 +
bindings/python/gpiodmodule.c | 2662 ------------------
bindings/python/setup.py | 47 +
bindings/python/tests/Makefile.am | 26 +-
bindings/python/tests/__init__.py | 17 +
bindings/python/tests/__main__.py | 16 +
bindings/python/tests/gpiod_py_test.py | 832 ------
bindings/python/tests/gpiomockupmodule.c | 309 --
bindings/python/tests/gpiosim/Makefile.am | 7 +
bindings/python/tests/gpiosim/__init__.py | 4 +
bindings/python/tests/gpiosim/chip.py | 66 +
bindings/python/tests/gpiosim/ext.c | 345 +++
bindings/python/tests/helpers.py | 16 +
bindings/python/tests/tests_chip.py | 231 ++
bindings/python/tests/tests_chip_info.py | 52 +
bindings/python/tests/tests_edge_event.py | 219 ++
bindings/python/tests/tests_info_event.py | 189 ++
bindings/python/tests/tests_line_info.py | 101 +
bindings/python/tests/tests_line_request.py | 449 +++
bindings/python/tests/tests_line_settings.py | 79 +
bindings/python/tests/tests_module.py | 59 +
configure.ac | 3 +
50 files changed, 4338 insertions(+), 3925 deletions(-)
create mode 100644 bindings/python/.gitignore
create mode 100644 bindings/python/gpiod/Makefile.am
create mode 100644 bindings/python/gpiod/__init__.py
create mode 100644 bindings/python/gpiod/chip.py
create mode 100644 bindings/python/gpiod/chip_info.py
create mode 100644 bindings/python/gpiod/edge_event.py
create mode 100644 bindings/python/gpiod/exception.py
create mode 100644 bindings/python/gpiod/ext/Makefile.am
create mode 100644 bindings/python/gpiod/ext/chip.c
create mode 100644 bindings/python/gpiod/ext/common.c
create mode 100644 bindings/python/gpiod/ext/internal.h
create mode 100644 bindings/python/gpiod/ext/line-config.c
create mode 100644 bindings/python/gpiod/ext/line-settings.c
create mode 100644 bindings/python/gpiod/ext/module.c
create mode 100644 bindings/python/gpiod/ext/request.c
create mode 100644 bindings/python/gpiod/info_event.py
create mode 100644 bindings/python/gpiod/internal.py
create mode 100644 bindings/python/gpiod/line.py
create mode 100644 bindings/python/gpiod/line_info.py
create mode 100644 bindings/python/gpiod/line_request.py
create mode 100644 bindings/python/gpiod/line_settings.py
delete mode 100644 bindings/python/gpiodmodule.c
create mode 100644 bindings/python/setup.py
create mode 100644 bindings/python/tests/__init__.py
create mode 100644 bindings/python/tests/__main__.py
delete mode 100755 bindings/python/tests/gpiod_py_test.py
delete mode 100644 bindings/python/tests/gpiomockupmodule.c
create mode 100644 bindings/python/tests/gpiosim/Makefile.am
create mode 100644 bindings/python/tests/gpiosim/__init__.py
create mode 100644 bindings/python/tests/gpiosim/chip.py
create mode 100644 bindings/python/tests/gpiosim/ext.c
create mode 100644 bindings/python/tests/helpers.py
create mode 100644 bindings/python/tests/tests_chip.py
create mode 100644 bindings/python/tests/tests_chip_info.py
create mode 100644 bindings/python/tests/tests_edge_event.py
create mode 100644 bindings/python/tests/tests_info_event.py
create mode 100644 bindings/python/tests/tests_line_info.py
create mode 100644 bindings/python/tests/tests_line_request.py
create mode 100644 bindings/python/tests/tests_line_settings.py
create mode 100644 bindings/python/tests/tests_module.py
--
2.34.1
next reply other threads:[~2022-10-07 14:55 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-07 14:55 Bartosz Golaszewski [this message]
2022-10-07 14:55 ` [libgpiod v2][PATCH v3 1/4] bindings: python: remove old version Bartosz Golaszewski
2022-10-07 14:55 ` [libgpiod v2][PATCH v3 2/4] bindings: python: add examples Bartosz Golaszewski
2022-10-13 3:09 ` Kent Gibson
2022-10-17 12:00 ` Bartosz Golaszewski
2022-10-17 12:11 ` Kent Gibson
2022-10-17 13:49 ` Andy Shevchenko
2022-10-17 14:07 ` Kent Gibson
2022-10-17 14:19 ` Andy Shevchenko
2022-10-17 15:53 ` Bartosz Golaszewski
2022-10-17 16:09 ` Kent Gibson
2022-10-17 16:20 ` Kent Gibson
2022-10-17 16:55 ` Andy Shevchenko
2022-10-17 16:57 ` Andy Shevchenko
2022-10-17 17:26 ` Bartosz Golaszewski
2022-10-17 16:24 ` Andy Shevchenko
2022-10-17 16:39 ` Kent Gibson
2022-10-07 14:55 ` [libgpiod v2][PATCH v3 3/4] bindings: python: add tests Bartosz Golaszewski
2022-10-13 3:09 ` Kent Gibson
2022-10-07 14:55 ` [libgpiod v2][PATCH v3 4/4] bindings: python: implement python bindings for libgpiod v2 Bartosz Golaszewski
2022-10-07 15:26 ` Andy Shevchenko
2022-10-07 18:19 ` Bartosz Golaszewski
2022-10-13 3:10 ` Kent Gibson
2022-10-13 11:12 ` Kent Gibson
2022-10-26 12:32 ` Bartosz Golaszewski
2022-10-26 12:56 ` Kent Gibson
2022-10-12 12:34 ` [libgpiod v2][PATCH v3 0/4] bindings: " Bartosz Golaszewski
2022-10-12 12:41 ` Kent Gibson
2022-10-12 12:51 ` Bartosz Golaszewski
2022-10-12 13:03 ` Kent Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221007145521.329614-1-brgl@bgdev.pl \
--to=brgl@bgdev.pl \
--cc=andriy.shevchenko@linux.intel.com \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=viresh.kumar@linaro.org \
--cc=warthog618@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.