From 450d7fdbb0aa71437b4a5b84cbb6392a54d03603 Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Mon, 21 Jul 2025 16:19:44 +0200 Subject: [PATCH 1/2] varlink: drop inspect.signature fallback `inspect.signature` was introduced in Python 3.3 and the minimal Python version requirement is 3.9. --- varlink/server.py | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/varlink/server.py b/varlink/server.py index 03e7259..5cf1e00 100644 --- a/varlink/server.py +++ b/varlink/server.py @@ -138,23 +138,16 @@ def _handle(self, message, raw_message, _server=None, _request=None): kwargs = {} - if hasattr(inspect, "signature"): - sig = inspect.signature(func) - arg_names = [ - ( - sig.parameters[k].kind - in (inspect.Parameter.POSITIONAL_OR_KEYWORD, inspect.Parameter.KEYWORD_ONLY) - and k - or None - ) - for k in sig.parameters.keys() - ] - else: - from itertools import izip - - spec = inspect.getargspec(func) - matched_args = [reversed(x) for x in [spec.args, spec.defaults or []]] - arg_names = dict(izip(*matched_args)) + sig = inspect.signature(func) + arg_names = [ + ( + sig.parameters[k].kind + in (inspect.Parameter.POSITIONAL_OR_KEYWORD, inspect.Parameter.KEYWORD_ONLY) + and k + or None + ) + for k in sig.parameters.keys() + ] if message.get("more", False) or message.get("oneway", False) or message.get("upgrade", False): if message.get("more", False) and "_more" in arg_names: From 63d8883a16a668f5a0387365e5636a37191062b7 Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Mon, 21 Jul 2025 20:11:24 +0200 Subject: [PATCH 2/2] Fix `split` does not exists on `string` error `string.split()` was removed in Python 3.0. --- varlink/server.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/varlink/server.py b/varlink/server.py index 5cf1e00..8031cd5 100644 --- a/varlink/server.py +++ b/varlink/server.py @@ -3,7 +3,6 @@ import os import socket import stat -import string from socketserver import BaseServer, StreamRequestHandler, ThreadingMixIn from .error import InterfaceNotFound, InvalidParameter, MethodNotImplemented, VarlinkEncoder, VarlinkError @@ -305,7 +304,7 @@ def get_listen_fd(): except OSError: return None - fields = string.split(os.environ["LISTEN_FDNAMES"], ":") + fields = os.environ.get("LISTEN_FDNAMES", "").split(":") if len(fields) != fds: return None