From 9161e24e45bb568c57d9c62e4815b5fe3b4e0950 Mon Sep 17 00:00:00 2001
From: Riley Banks <waultah@gmail.com>
Date: Tue, 11 Jan 2022 08:40:42 +0100
Subject: [PATCH] Implement getargspec using inspect.Signature
---
bottle.py | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/bottle.py b/bottle.py
index 08bce53..c700625 100644
--- a/bottle.py
+++ b/bottle.py
@@ -40,9 +40,27 @@ import base64, cgi, email.utils, functools, hmac, itertools, mimetypes,\
from datetime import date as datedate, datetime, timedelta
from tempfile import TemporaryFile
from traceback import format_exc, print_exc
-from inspect import getargspec
from unicodedata import normalize
+# inspect.getargspec was removed in Python 3.6, use
+# Signature-based version where we can (Python 3.3+)
+try:
+ from inspect import signature
+ def getargspec(func):
+ params = signature(func).parameters
+ args, varargs, keywords, defaults = [], None, None, []
+ for name, param in params.items():
+ if param.kind == param.VAR_POSITIONAL:
+ varargs = name
+ elif param.kind == param.VAR_KEYWORD:
+ keywords = name
+ else:
+ args.append(name)
+ if param.default is not param.empty:
+ defaults.append(param.default)
+ return (args, varargs, keywords, tuple(defaults) or defaults)
+except ImportError:
+ from inspect import getargspec
try: from simplejson import dumps as json_dumps, loads as json_lds
except ImportError: # pragma: no cover
--
2.33.1