Message ID | 20240927-vfazio-mypy-v1-5-91a7c2e20884@xes-inc.com |
---|---|
State | Superseded |
Headers | show |
Series | bindings: python: conform to mypy and ruff linter recommendations | expand |
On Fri, Sep 27, 2024 at 8:57 PM Vincent Fazio <vfazio@xes-inc.com> wrote: > No empty commit messages please. > Signed-off-by: Vincent Fazio <vfazio@xes-inc.com> > --- > bindings/python/gpiod/_ext.pyi | 93 ++++++++++++++++++++++++++++++++++++++++++ > bindings/python/setup.py | 2 +- > 2 files changed, 94 insertions(+), 1 deletion(-) > > diff --git a/bindings/python/gpiod/_ext.pyi b/bindings/python/gpiod/_ext.pyi > new file mode 100644 > index 0000000000000000000000000000000000000000..1beb80dde9f080b729374b9dc69322c01fc37889 > --- /dev/null > +++ b/bindings/python/gpiod/_ext.pyi > @@ -0,0 +1,93 @@ > +# SPDX-License-Identifier: LGPL-2.1-or-later > +# SPDX-FileCopyrightText: 2024 Vincent Fazio <vfazio@gmail.com> > + > +from typing import Optional > + > +from .chip_info import ChipInfo > +from .edge_event import EdgeEvent > +from .info_event import InfoEvent > +from .line import Value > +from .line_info import LineInfo > + > +class LineSettings: > + def __init__( > + self, > + direction: int, > + edge_detection: int, > + bias: int, > + drive: int, > + active_low: bool, > + debounce_period: int, > + event_clock: int, > + output_value: int, > + ) -> None: ... > + > +class LineConfig: > + def __init__(self) -> None: ... > + def add_line_settings(self, offsets: list[int], settings: LineSettings) -> None: ... > + def set_output_values(self, global_output_values: list[Value]) -> None: ... > + > +class Request: > + def release(self) -> None: ... > + def get_values(self, offsets: list[int], values: list[Value]) -> None: ... > + def set_values(self, values: dict[int, Value]) -> None: ... > + def reconfigure_lines(self, line_cfg: LineConfig) -> None: ... > + def read_edge_events(self, max_events: Optional[int]) -> list[EdgeEvent]: ... > + @property > + def chip_name(self) -> str: ... > + @property > + def num_lines(self) -> int: ... > + @property > + def offsets(self) -> list[int]: ... > + @property > + def fd(self) -> int: ... > + > +class Chip: > + def __init__(self, path: str) -> None: ... > + def get_info(self) -> ChipInfo: ... > + def line_offset_from_id(self, id: str) -> int: ... > + def get_line_info(self, offset: int, watch: bool) -> LineInfo: ... > + def request_lines( > + self, > + line_cfg: LineConfig, > + consumer: Optional[str], > + event_buffer_size: Optional[int], > + ) -> Request: ... > + def read_info_event(self) -> InfoEvent: ... > + def close(self) -> None: ... > + def unwatch_line_info(self, line: int) -> None: ... > + @property > + def path(self) -> str: ... > + @property > + def fd(self) -> int: ... > + > +def is_gpiochip_device(path: str) -> bool: ... > + > +api_version: str > + > +# enum constants > +BIAS_AS_IS: int > +BIAS_DISABLED: int > +BIAS_PULL_DOWN: int > +BIAS_PULL_UP: int > +BIAS_UNKNOWN: int > +CLOCK_HTE: int > +CLOCK_MONOTONIC: int > +CLOCK_REALTIME: int > +DIRECTION_AS_IS: int > +DIRECTION_INPUT: int > +DIRECTION_OUTPUT: int > +DRIVE_OPEN_DRAIN: int > +DRIVE_OPEN_SOURCE: int > +DRIVE_PUSH_PULL: int > +EDGE_BOTH: int > +EDGE_EVENT_TYPE_FALLING: int > +EDGE_EVENT_TYPE_RISING: int > +EDGE_FALLING: int > +EDGE_NONE: int > +EDGE_RISING: int > +INFO_EVENT_TYPE_LINE_CONFIG_CHANGED: int > +INFO_EVENT_TYPE_LINE_RELEASED: int > +INFO_EVENT_TYPE_LINE_REQUESTED: int > +VALUE_ACTIVE: int > +VALUE_INACTIVE: int > diff --git a/bindings/python/setup.py b/bindings/python/setup.py > index 1f04b9939b47dc7b960679b6f24e87a6f2a4e46f..54790dfd88e77762719fce3d9194499e8ff39d73 100644 > --- a/bindings/python/setup.py > +++ b/bindings/python/setup.py > @@ -224,7 +224,7 @@ setup( > name="gpiod", > url="https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git", > packages=find_packages(exclude=["tests", "tests.*"]), > - package_data={"gpiod": ["py.typed"]}, > + package_data={"gpiod": ["py.typed", "_ext.pyi"]}, > python_requires=">=3.9.0", > ext_modules=[gpiod_ext], > cmdclass={"build_ext": build_ext, "sdist": sdist}, > > -- > 2.34.1 > I had no idea this was possible, thanks! Looks good. Bart
diff --git a/bindings/python/gpiod/_ext.pyi b/bindings/python/gpiod/_ext.pyi new file mode 100644 index 0000000000000000000000000000000000000000..1beb80dde9f080b729374b9dc69322c01fc37889 --- /dev/null +++ b/bindings/python/gpiod/_ext.pyi @@ -0,0 +1,93 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +# SPDX-FileCopyrightText: 2024 Vincent Fazio <vfazio@gmail.com> + +from typing import Optional + +from .chip_info import ChipInfo +from .edge_event import EdgeEvent +from .info_event import InfoEvent +from .line import Value +from .line_info import LineInfo + +class LineSettings: + def __init__( + self, + direction: int, + edge_detection: int, + bias: int, + drive: int, + active_low: bool, + debounce_period: int, + event_clock: int, + output_value: int, + ) -> None: ... + +class LineConfig: + def __init__(self) -> None: ... + def add_line_settings(self, offsets: list[int], settings: LineSettings) -> None: ... + def set_output_values(self, global_output_values: list[Value]) -> None: ... + +class Request: + def release(self) -> None: ... + def get_values(self, offsets: list[int], values: list[Value]) -> None: ... + def set_values(self, values: dict[int, Value]) -> None: ... + def reconfigure_lines(self, line_cfg: LineConfig) -> None: ... + def read_edge_events(self, max_events: Optional[int]) -> list[EdgeEvent]: ... + @property + def chip_name(self) -> str: ... + @property + def num_lines(self) -> int: ... + @property + def offsets(self) -> list[int]: ... + @property + def fd(self) -> int: ... + +class Chip: + def __init__(self, path: str) -> None: ... + def get_info(self) -> ChipInfo: ... + def line_offset_from_id(self, id: str) -> int: ... + def get_line_info(self, offset: int, watch: bool) -> LineInfo: ... + def request_lines( + self, + line_cfg: LineConfig, + consumer: Optional[str], + event_buffer_size: Optional[int], + ) -> Request: ... + def read_info_event(self) -> InfoEvent: ... + def close(self) -> None: ... + def unwatch_line_info(self, line: int) -> None: ... + @property + def path(self) -> str: ... + @property + def fd(self) -> int: ... + +def is_gpiochip_device(path: str) -> bool: ... + +api_version: str + +# enum constants +BIAS_AS_IS: int +BIAS_DISABLED: int +BIAS_PULL_DOWN: int +BIAS_PULL_UP: int +BIAS_UNKNOWN: int +CLOCK_HTE: int +CLOCK_MONOTONIC: int +CLOCK_REALTIME: int +DIRECTION_AS_IS: int +DIRECTION_INPUT: int +DIRECTION_OUTPUT: int +DRIVE_OPEN_DRAIN: int +DRIVE_OPEN_SOURCE: int +DRIVE_PUSH_PULL: int +EDGE_BOTH: int +EDGE_EVENT_TYPE_FALLING: int +EDGE_EVENT_TYPE_RISING: int +EDGE_FALLING: int +EDGE_NONE: int +EDGE_RISING: int +INFO_EVENT_TYPE_LINE_CONFIG_CHANGED: int +INFO_EVENT_TYPE_LINE_RELEASED: int +INFO_EVENT_TYPE_LINE_REQUESTED: int +VALUE_ACTIVE: int +VALUE_INACTIVE: int diff --git a/bindings/python/setup.py b/bindings/python/setup.py index 1f04b9939b47dc7b960679b6f24e87a6f2a4e46f..54790dfd88e77762719fce3d9194499e8ff39d73 100644 --- a/bindings/python/setup.py +++ b/bindings/python/setup.py @@ -224,7 +224,7 @@ setup( name="gpiod", url="https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git", packages=find_packages(exclude=["tests", "tests.*"]), - package_data={"gpiod": ["py.typed"]}, + package_data={"gpiod": ["py.typed", "_ext.pyi"]}, python_requires=">=3.9.0", ext_modules=[gpiod_ext], cmdclass={"build_ext": build_ext, "sdist": sdist},
Signed-off-by: Vincent Fazio <vfazio@xes-inc.com> --- bindings/python/gpiod/_ext.pyi | 93 ++++++++++++++++++++++++++++++++++++++++++ bindings/python/setup.py | 2 +- 2 files changed, 94 insertions(+), 1 deletion(-)