| Upstream-Status: Backport [https://github.com/wxWidgets/Phoenix/commit/9986a0d5] |
| |
| Signed-off-by: Kai Kang <kai.kang@windriver.com> |
| |
| From 9986a0d5c24b5d45ddf571d60351f68765a8a9be Mon Sep 17 00:00:00 2001 |
| From: Scott Talbert <swt@techie.net> |
| Date: Mon, 8 Aug 2022 22:35:58 -0400 |
| Subject: [PATCH] pypubsub: Replace deprecated inspect.getargspec |
| |
| inspect.getargspec was removed in Python 3.11. This is a backport of: |
| https://github.com/schollii/pypubsub/commit/089c7a73f85c76a3aa22e4b10c71db1bf65a8637 |
| --- |
| wx/lib/pubsub/core/callables.py | 23 +++++++++++++++-------- |
| 1 file changed, 15 insertions(+), 8 deletions(-) |
| |
| diff --git a/wx/lib/pubsub/core/callables.py b/wx/lib/pubsub/core/callables.py |
| index 65eb1ebe..7e798c54 100644 |
| --- a/wx/lib/pubsub/core/callables.py |
| +++ b/wx/lib/pubsub/core/callables.py |
| @@ -12,7 +12,7 @@ CallArgsInfo regarding its autoTopicArgName data member. |
|
|
| """
|
|
|
| -from inspect import getargspec, ismethod, isfunction
|
| +from inspect import ismethod, isfunction, signature, Parameter
|
|
|
| from .. import py2and3
|
|
|
| @@ -133,19 +133,26 @@ class CallArgsInfo: |
| self.autoTopicArgName = None."""
|
|
|
| #args, firstArgIdx, defaultVals, acceptsAllKwargs
|
| - (allParams, varParamName, varOptParamName, defaultVals) = getargspec(func)
|
| - if defaultVals is None:
|
| - defaultVals = []
|
| - else:
|
| - defaultVals = list(defaultVals)
|
| + allParams = []
|
| + defaultVals = []
|
| + varParamName = None
|
| + varOptParamName = None
|
| + for argName, param in signature(func).parameters.items():
|
| + if param.default != Parameter.empty:
|
| + defaultVals.append(param.default)
|
| + if param.kind == Parameter.VAR_POSITIONAL:
|
| + varParamName = argName
|
| + elif param.kind == Parameter.VAR_KEYWORD:
|
| + varOptParamName = argName
|
| + else:
|
| + allParams.append(argName)
|
|
|
| self.acceptsAllKwargs = (varOptParamName is not None)
|
| self.acceptsAllUnnamedArgs = (varParamName is not None)
|
| -
|
| self.allParams = allParams
|
| - del self.allParams[0:firstArgIdx] # does nothing if firstArgIdx == 0
|
|
|
| self.numRequired = len(self.allParams) - len(defaultVals)
|
| + assert len(self.allParams) >= len(defaultVals)
|
| assert self.numRequired >= 0
|
|
|
| # if listener wants topic, remove that arg from args/defaultVals
|
| -- |
| 2.34.1 |
| |