From 54f9a111765e2f57145d6c0269fd0a655557e86a Mon Sep 17 00:00:00 2001 From: Houston4444 Date: Tue, 27 Sep 2022 10:48:59 +0200 Subject: [PATCH] add and install interface file to help IDE usage --- MANIFEST.in | 1 + liblo/__init__.pyi | 86 ++++++++++++++++++++++++++++++++++++++++++++++ setup.py | 4 ++- 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 liblo/__init__.pyi diff --git a/MANIFEST.in b/MANIFEST.in index a123481..6fcbc79 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -10,5 +10,6 @@ include scripts/dump_osc.1 include scripts/send_osc.1 include test/*.py include examples/*.py +include liblo/*.pyi graft doc prune doc/build diff --git a/liblo/__init__.pyi b/liblo/__init__.pyi new file mode 100644 index 0000000..c00857a --- /dev/null +++ b/liblo/__init__.pyi @@ -0,0 +1,86 @@ + + +from typing import Callable, Union, overload + +UDP: int +UNIX: int +TCP: int + + +class Message: + def __init__(self, path: str, *args: tuple) -> None: ... + def add(self, *args: tuple): ... + + +class Bundle: + @overload + def __init__(self, timetag: float, *messages: tuple[Message]) -> None: ... + @overload + def __init__(self, *messages: tuple[Message]): ... + + @overload + def add(self, path: str, *messages: tuple[Message]): ... + @overload + def add(self, *args: tuple): ... + + +class Address: + url: str + hostname: str + port: Union[int, str] + protocol: int + + @overload + def __init__(self, hostname: str, port: Union[int, str], proto: int =UDP): ... + @overload + def __init__(self, port: Union[int, str]): ... + @overload + def __init__(self, url: str): ... + + +class __AbstractServer: + url: str + port: Union[int, str] + protocol: int + + def __init__(self, port: Union[int, str], proto: int =UDP, reg_methods=True): ... + def recv(self, timeout: int =None) -> bool: ... + def add_method(self, path: str, typespec: str, func: Callable, user_data=None): ... + def del_method(self, path: str, typespec: str): ... + def register_methods(self, obj=None): ... + def add_bundle_handlers(start_handler: Callable, end_handler: Callable, user_data=None): ... + + @overload + def send(address: Address, path: str, *args: tuple): ... + @overload + def send(address: Address, messages: list[Message]): ... + + def fileno(self) -> int: ... + def free(self): ... + + +class Server(__AbstractServer): + def recv(self, timeout: int =None) -> bool: ... + + +class ServerThread(__AbstractServer): + def start(self): ... + def stop(self): ... + + +class ServerError(BaseException): ... + + +class AddressError(BaseException): ... + + +@overload +def send(target: Union[Address, int, tuple[str, int], str], + path: str, + *args: tuple): ... +@overload +def send(target: Union[Address, int, tuple[str, int], str], + *messages: tuple[Message]): ... + +def time() -> float: ... +def make_method(path: str, typespec: str, user_data=None): ... diff --git a/setup.py b/setup.py index 901d67f..7abe2db 100755 --- a/setup.py +++ b/setup.py @@ -59,6 +59,8 @@ def copy_scripts(self): url = 'http://das.nasophon.de/pyliblo/', description = 'Python bindings for the liblo OSC library', license = 'LGPL', + include_package_data = True, + packages = ['liblo'], scripts = [ 'scripts/send_osc.py', 'scripts/dump_osc.py', @@ -67,7 +69,7 @@ def copy_scripts(self): ('share/man/man1', [ 'scripts/send_osc.1', 'scripts/dump_osc.1', - ]), + ]) ], cmdclass = cmdclass, ext_modules = ext_modules,