Skip to content

Add stubs for RPi.GPIO #11345

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions stubs/RPi.GPIO/METADATA.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version = "0.7.*"
upstream_repository = "https://sourceforge.net/p/raspberry-gpio-python/code/"

[tool.stubtest]
# When stubtest tries to import this module:
# error: RPi.GPIO failed to import. RuntimeError: This module can only be run on a Raspberry Pi!
# https://sourceforge.net/p/raspberry-gpio-python/code/ci/08048dd1894a6b09a104557b6eaa6bb68b6baac5/tree/source/py_gpio.c#l1008
skip = true
60 changes: 60 additions & 0 deletions stubs/RPi.GPIO/RPi/GPIO/__init__.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
from collections.abc import Callable
from typing import Literal, TypedDict
from typing_extensions import TypeAlias

class _RPi_Info(TypedDict):
P1_REVISION: int
REVISION: str
TYPE: str
MANUFACTURER: str
PROCESSOR: str
RAM: str

VERSION: str
RPI_INFO: _RPi_Info
RPI_REVISION: int

HIGH: Literal[1]
LOW: Literal[0]

OUT: int
IN: int
HARD_PWM: int
SERIAL: int
I2C: int
SPI: int
UNKNOWN: int

BOARD: int
BCM: int

PUD_OFF: int
PUD_UP: int
PUD_DOWN: int

RISING: int
FALLING: int
BOTH: int

_EventCallback: TypeAlias = Callable[[int], object]

def setup(channel: int, dir: int, pull_up_down: int = ..., initial: int = ...) -> None: ...
def cleanup(channel: int = 0) -> None: ...
def output(channel: int, state: int | bool) -> None: ...
def input(channel: int) -> int: ...
def setmode(mode: int) -> None: ...
def getmode() -> int: ...
def add_event_detect(channel: int, edge: int, callback: _EventCallback | None, bouncetime: int = ...) -> None: ...
def remove_event_detect(channel: int) -> None: ...
def event_detected(channel: int) -> bool: ...
def add_event_callback(channel: int, callback: _EventCallback) -> None: ...
def wait_for_edge(channel: int, edge: int, bouncetime: int = ..., timeout: int = ...) -> int | None: ...
def gpio_function(channel: int) -> int: ...
def setwarnings(gpio_warnings: bool) -> None: ...

class PWM:
def __init__(self, channel: int, frequency: float) -> None: ...
def start(self, dutycycle: float) -> None: ...
def ChangeDutyCycle(self, dutycycle: float) -> None: ...
def ChangeFrequence(self, frequency: float) -> None: ...
def stop(self) -> None: ...
Empty file added stubs/RPi.GPIO/RPi/__init__.pyi
Empty file.