summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdoc/python_stub.py15
-rw-r--r--src/plugins/python/weechat.pyi80
2 files changed, 52 insertions, 43 deletions
diff --git a/doc/python_stub.py b/doc/python_stub.py
index 7778d9753..ba5f730c4 100755
--- a/doc/python_stub.py
+++ b/doc/python_stub.py
@@ -28,6 +28,7 @@ from pathlib import Path
import re
DOC_DIR = Path(__file__).resolve().parent / "en"
+SRC_DIR = Path(__file__).resolve().parent.parent / "src"
STUB_HEADER = """\
#
@@ -56,11 +57,19 @@ def print_stub_constants() -> None:
"string": "str",
}
constant_pattern = re.compile(CONSTANT_RE)
- with open(DOC_DIR / "weechat_scripting.en.adoc",
- encoding="utf-8") as scripting_file:
+ with open(
+ DOC_DIR / "weechat_scripting.en.adoc", encoding="utf-8"
+ ) as scripting_file, open(
+ SRC_DIR / "plugins" / "weechat-plugin.h", encoding="utf-8"
+ ) as plugin_header_file:
scripting = scripting_file.read()
+ plugin_header = plugin_header_file.read()
for match in constant_pattern.finditer(scripting):
- print(f'{match["constant"]}: {types[match["type"]]}')
+ value_re = rf'^#define {match["constant"]} +(?P<value>[\w"-]+)$'
+ value_match = re.search(value_re, plugin_header, re.MULTILINE)
+ value = f' = {value_match["value"]}' if value_match else ""
+
+ print(f'{match["constant"]}: {types[match["type"]]}{value}')
def print_stub_functions() -> None:
diff --git a/src/plugins/python/weechat.pyi b/src/plugins/python/weechat.pyi
index de277d548..8c20260c9 100644
--- a/src/plugins/python/weechat.pyi
+++ b/src/plugins/python/weechat.pyi
@@ -5,46 +5,46 @@
from typing import Dict
-WEECHAT_RC_OK: int
-WEECHAT_RC_OK_EAT: int
-WEECHAT_RC_ERROR: int
-WEECHAT_CONFIG_READ_OK: int
-WEECHAT_CONFIG_READ_MEMORY_ERROR: int
-WEECHAT_CONFIG_READ_FILE_NOT_FOUND: int
-WEECHAT_CONFIG_WRITE_OK: int
-WEECHAT_CONFIG_WRITE_ERROR: int
-WEECHAT_CONFIG_WRITE_MEMORY_ERROR: int
-WEECHAT_CONFIG_OPTION_SET_OK_CHANGED: int
-WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE: int
-WEECHAT_CONFIG_OPTION_SET_ERROR: int
-WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND: int
-WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET: int
-WEECHAT_CONFIG_OPTION_UNSET_OK_RESET: int
-WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED: int
-WEECHAT_CONFIG_OPTION_UNSET_ERROR: int
-WEECHAT_LIST_POS_SORT: str
-WEECHAT_LIST_POS_BEGINNING: str
-WEECHAT_LIST_POS_END: str
-WEECHAT_HOTLIST_LOW: str
-WEECHAT_HOTLIST_MESSAGE: str
-WEECHAT_HOTLIST_PRIVATE: str
-WEECHAT_HOTLIST_HIGHLIGHT: str
-WEECHAT_HOOK_PROCESS_RUNNING: int
-WEECHAT_HOOK_PROCESS_ERROR: int
-WEECHAT_HOOK_CONNECT_OK: int
-WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND: int
-WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND: int
-WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED: int
-WEECHAT_HOOK_CONNECT_PROXY_ERROR: int
-WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR: int
-WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR: int
-WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR: int
-WEECHAT_HOOK_CONNECT_MEMORY_ERROR: int
-WEECHAT_HOOK_CONNECT_TIMEOUT: int
-WEECHAT_HOOK_CONNECT_SOCKET_ERROR: int
-WEECHAT_HOOK_SIGNAL_STRING: str
-WEECHAT_HOOK_SIGNAL_INT: str
-WEECHAT_HOOK_SIGNAL_POINTER: str
+WEECHAT_RC_OK: int = 0
+WEECHAT_RC_OK_EAT: int = 1
+WEECHAT_RC_ERROR: int = -1
+WEECHAT_CONFIG_READ_OK: int = 0
+WEECHAT_CONFIG_READ_MEMORY_ERROR: int = -1
+WEECHAT_CONFIG_READ_FILE_NOT_FOUND: int = -2
+WEECHAT_CONFIG_WRITE_OK: int = 0
+WEECHAT_CONFIG_WRITE_ERROR: int = -1
+WEECHAT_CONFIG_WRITE_MEMORY_ERROR: int = -2
+WEECHAT_CONFIG_OPTION_SET_OK_CHANGED: int = 2
+WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE: int = 1
+WEECHAT_CONFIG_OPTION_SET_ERROR: int = 0
+WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND: int = -1
+WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET: int = 0
+WEECHAT_CONFIG_OPTION_UNSET_OK_RESET: int = 1
+WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED: int = 2
+WEECHAT_CONFIG_OPTION_UNSET_ERROR: int = -1
+WEECHAT_LIST_POS_SORT: str = "sort"
+WEECHAT_LIST_POS_BEGINNING: str = "beginning"
+WEECHAT_LIST_POS_END: str = "end"
+WEECHAT_HOTLIST_LOW: str = "0"
+WEECHAT_HOTLIST_MESSAGE: str = "1"
+WEECHAT_HOTLIST_PRIVATE: str = "2"
+WEECHAT_HOTLIST_HIGHLIGHT: str = "3"
+WEECHAT_HOOK_PROCESS_RUNNING: int = -1
+WEECHAT_HOOK_PROCESS_ERROR: int = -2
+WEECHAT_HOOK_CONNECT_OK: int = 0
+WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND: int = 1
+WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND: int = 2
+WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED: int = 3
+WEECHAT_HOOK_CONNECT_PROXY_ERROR: int = 4
+WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR: int = 5
+WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR: int = 6
+WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR: int = 7
+WEECHAT_HOOK_CONNECT_MEMORY_ERROR: int = 8
+WEECHAT_HOOK_CONNECT_TIMEOUT: int = 9
+WEECHAT_HOOK_CONNECT_SOCKET_ERROR: int = 10
+WEECHAT_HOOK_SIGNAL_STRING: str = "string"
+WEECHAT_HOOK_SIGNAL_INT: str = "int"
+WEECHAT_HOOK_SIGNAL_POINTER: str = "pointer"
def register(name: str, author: str, version: str, license: str, description: str, shutdown_function: str, charset: str) -> int: