diff options
Diffstat (limited to 'dev-python/cherrypy')
-rw-r--r-- | dev-python/cherrypy/Manifest | 2 | ||||
-rw-r--r-- | dev-python/cherrypy/cherrypy-18.6.1-r1.ebuild | 78 | ||||
-rw-r--r-- | dev-python/cherrypy/cherrypy-18.7.0.ebuild | 69 | ||||
-rw-r--r-- | dev-python/cherrypy/files/cherrypy-18.6.1-close-files.patch | 416 | ||||
-rw-r--r-- | dev-python/cherrypy/files/cherrypy-18.6.1-py311.patch | 32 |
5 files changed, 0 insertions, 597 deletions
diff --git a/dev-python/cherrypy/Manifest b/dev-python/cherrypy/Manifest index e96a34aa2b17..888526929922 100644 --- a/dev-python/cherrypy/Manifest +++ b/dev-python/cherrypy/Manifest @@ -1,3 +1 @@ -DIST CherryPy-18.6.1.tar.gz 692730 BLAKE2B 44cef7ed54a090df396691001b794bf13be2c61003bf80b63223e3a42914ce50fcfe43c06626fb881105e3ed6fbf587df7024bbf7cfde00a8263c432f4cc7ae4 SHA512 186a0992a443e1ffc1a2924b3351dcb0e6cc6c88b39ac32330d6365fe1b0a35c2008a3a18e1a57f61ffd1901ea6134333bb6288024d8ffbb1fd8e8dcd3145007 -DIST CherryPy-18.7.0.tar.gz 621794 BLAKE2B d60cd21d0b0bacbb18bcaeb525be143c3639f462978e9835e5c77ba8ce732a3af4662e4c37e2d20e1ad19760900775dee4a3cd98db53e70a19611d30c8329bce SHA512 321771a3e3cda16090bfb7a79c297defd67655ba5453e440e09e85fec41cba850544bebac7203206c95e38d79b3bce22368ea19c0fb1fbedbb00d76a4ab59c8b DIST CherryPy-18.8.0.tar.gz 622679 BLAKE2B 673f9a103a901161ee801656fa37fa0a4fcd2d9276a5231e48c1663264eb7f922d5d862018995a345a8485252416fa0229da49b8d265288efce2dccd37d79ff8 SHA512 abacc995c1757b8d0171d57eb59b6e5931c46019d8f0f43479e334bb4f58b61a27541d9d0997d665f81905bc3c89e42d40d8e5a6e3a5f9bf251bc9089ceb5249 diff --git a/dev-python/cherrypy/cherrypy-18.6.1-r1.ebuild b/dev-python/cherrypy/cherrypy-18.6.1-r1.ebuild deleted file mode 100644 index e8c592b55252..000000000000 --- a/dev-python/cherrypy/cherrypy-18.6.1-r1.ebuild +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{8..11} pypy3 ) - -inherit distutils-r1 - -MY_PN="CherryPy" -MY_P=${MY_PN}-${PV} -DESCRIPTION="CherryPy is a pythonic, object-oriented HTTP framework" -HOMEPAGE=" - https://cherrypy.dev/ - https://github.com/cherrypy/cherrypy/ - https://pypi.org/project/CherryPy/ -" -SRC_URI="mirror://pypi/${MY_PN::1}/${MY_PN}/${MY_P}.tar.gz" -S=${WORKDIR}/${MY_P} - -LICENSE="BSD" -SLOT="0" -KEYWORDS="amd64 arm arm64 ppc ~ppc64 ~riscv x86" -IUSE="ssl test" - -RDEPEND=" - >=dev-python/cheroot-8.2.1[${PYTHON_USEDEP}] - >=dev-python/portend-2.1.1[${PYTHON_USEDEP}] - dev-python/more-itertools[${PYTHON_USEDEP}] - dev-python/zc-lockfile[${PYTHON_USEDEP}] - dev-python/jaraco-collections[${PYTHON_USEDEP}] - ssl? ( - dev-python/pyopenssl[${PYTHON_USEDEP}] - ) -" -BDEPEND=" - dev-python/setuptools_scm[${PYTHON_USEDEP}] - test? ( - dev-python/routes[${PYTHON_USEDEP}] - dev-python/simplejson[${PYTHON_USEDEP}] - dev-python/objgraph[${PYTHON_USEDEP}] - dev-python/path-py[${PYTHON_USEDEP}] - dev-python/requests-toolbelt[${PYTHON_USEDEP}] - dev-python/pytest-services[${PYTHON_USEDEP}] - ) -" - -distutils_enable_tests pytest - -python_prepare_all() { - local PATCHES=( - # https://github.com/cherrypy/cherrypy/pull/1946 - "${FILESDIR}"/${P}-close-files.patch - "${FILESDIR}"/${P}-py311.patch - ) - - sed -r -e '/(pytest-sugar|pytest-cov)/ d' \ - -i setup.py || die - - sed -r -e 's:--cov-report[[:space:]]+[[:graph:]]+::g' \ - -e 's:--cov[[:graph:]]+::g' \ - -e 's:--doctest[[:graph:]]+::g' \ - -i pytest.ini || die - - distutils-r1_python_prepare_all -} - -python_test() { - local EPYTEST_DESELECT=() - [[ ${EPYTHON} == python3.11 ]] && EPYTEST_DESELECT+=( - # broken by changes in traceback output - cherrypy/test/test_request_obj.py::RequestObjectTests::testErrorHandling - cherrypy/test/test_tools.py::ToolTests::testHookErrors - ) - - epytest -} diff --git a/dev-python/cherrypy/cherrypy-18.7.0.ebuild b/dev-python/cherrypy/cherrypy-18.7.0.ebuild deleted file mode 100644 index b1cedd9565ea..000000000000 --- a/dev-python/cherrypy/cherrypy-18.7.0.ebuild +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{8..11} pypy3 ) - -inherit distutils-r1 - -MY_PN="CherryPy" -MY_P=${MY_PN}-${PV} -DESCRIPTION="CherryPy is a pythonic, object-oriented HTTP framework" -HOMEPAGE=" - https://cherrypy.dev/ - https://github.com/cherrypy/cherrypy/ - https://pypi.org/project/CherryPy/ -" -SRC_URI="mirror://pypi/${MY_PN::1}/${MY_PN}/${MY_P}.tar.gz" -S=${WORKDIR}/${MY_P} - -LICENSE="BSD" -SLOT="0" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" -IUSE="ssl test" - -RDEPEND=" - >=dev-python/cheroot-8.2.1[${PYTHON_USEDEP}] - >=dev-python/portend-2.1.1[${PYTHON_USEDEP}] - dev-python/more-itertools[${PYTHON_USEDEP}] - dev-python/zc-lockfile[${PYTHON_USEDEP}] - dev-python/jaraco-collections[${PYTHON_USEDEP}] - ssl? ( - dev-python/pyopenssl[${PYTHON_USEDEP}] - ) -" -BDEPEND=" - dev-python/setuptools_scm[${PYTHON_USEDEP}] - test? ( - dev-python/routes[${PYTHON_USEDEP}] - dev-python/simplejson[${PYTHON_USEDEP}] - dev-python/objgraph[${PYTHON_USEDEP}] - dev-python/path-py[${PYTHON_USEDEP}] - dev-python/requests-toolbelt[${PYTHON_USEDEP}] - dev-python/pytest-services[${PYTHON_USEDEP}] - ) -" - -distutils_enable_tests pytest - -python_prepare_all() { - sed -i -e '/cov/d' pytest.ini || die - # upstream has been using xfail to mark flaky tests, then added - # xfail_strict... not a good idea - sed -i -e '/xfail_strict/d' pytest.ini || die - - distutils-r1_python_prepare_all -} - -python_test() { - local EPYTEST_DESELECT=() - [[ ${EPYTHON} == python3.11 ]] && EPYTEST_DESELECT+=( - # broken by changes in traceback output - cherrypy/test/test_request_obj.py::RequestObjectTests::testErrorHandling - cherrypy/test/test_tools.py::ToolTests::testHookErrors - ) - - epytest -} diff --git a/dev-python/cherrypy/files/cherrypy-18.6.1-close-files.patch b/dev-python/cherrypy/files/cherrypy-18.6.1-close-files.patch deleted file mode 100644 index 478d717dfb8c..000000000000 --- a/dev-python/cherrypy/files/cherrypy-18.6.1-close-files.patch +++ /dev/null @@ -1,416 +0,0 @@ -From 94a2cc036203c6da55174ef3b105c0c875bbc79f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org> -Date: Mon, 31 Jan 2022 22:25:34 +0100 -Subject: [PATCH] Use context managers to close files properly and fix tests on - PyPy - -Use context managers (`with`) to ensure that all open files are closed -correctly. This resolves resource leaks and test failures with PyPy3.7. - -The code prior to this change used four approaches for closing files: - -1. Using a context manager (`with` clause). - -2. Using a try/finally clause. - -3. Closing the file in the same scope (unreliable: file object can leak - on exception). - -4. Not closing open files at all. - -The last point is a real problem for PyPy since it does not GC -unreachable objects as aggressively as CPython does. While leaving -a function scope on CPython causes the file objects private to it to -be destroyed (and therefore closed), in PyPy they can stay dangling -for some time. When combines with buffered writes, this means that -writes can still remain pending after returning from function. - -Using a context manager is a simple, consistent way to ensure that -the file object is closed once it is no longer needed. In turn, this -guarantees that all pending writes will be performed upon function -return and the code won't be hiting race conditions between writing -a file and reading it afterwards. ---- - cherrypy/_cperror.py | 3 ++- - cherrypy/_cpmodpy.py | 5 +---- - cherrypy/lib/auth_digest.py | 13 ++++++------ - cherrypy/lib/covercp.py | 40 ++++++++++++++++++------------------ - cherrypy/lib/reprconf.py | 5 +---- - cherrypy/lib/sessions.py | 10 ++------- - cherrypy/process/plugins.py | 3 ++- - cherrypy/test/helper.py | 3 ++- - cherrypy/test/logtest.py | 33 ++++++++++++++++------------- - cherrypy/test/modfastcgi.py | 5 +---- - cherrypy/test/modfcgid.py | 5 +---- - cherrypy/test/modpy.py | 5 +---- - cherrypy/test/modwsgi.py | 5 +---- - cherrypy/test/test_core.py | 5 ++--- - cherrypy/test/test_states.py | 11 +++++----- - 15 files changed, 67 insertions(+), 84 deletions(-) - -diff --git a/cherrypy/_cperror.py b/cherrypy/_cperror.py -index 4e727682..ebf1dcf6 100644 ---- a/cherrypy/_cperror.py -+++ b/cherrypy/_cperror.py -@@ -532,7 +532,8 @@ def get_error_page(status, **kwargs): - return result - else: - # Load the template from this path. -- template = io.open(error_page, newline='').read() -+ with io.open(error_page, newline='') as f: -+ template = f.read() - except Exception: - e = _format_exception(*_exc_info())[-1] - m = kwargs['message'] -diff --git a/cherrypy/_cpmodpy.py b/cherrypy/_cpmodpy.py -index 0e608c48..a08f0ed9 100644 ---- a/cherrypy/_cpmodpy.py -+++ b/cherrypy/_cpmodpy.py -@@ -339,11 +339,8 @@ LoadModule python_module modules/mod_python.so - } - - mpconf = os.path.join(os.path.dirname(__file__), 'cpmodpy.conf') -- f = open(mpconf, 'wb') -- try: -+ with open(mpconf, 'wb') as f: - f.write(conf_data) -- finally: -- f.close() - - response = read_process(self.apache_path, '-k start -f %s' % mpconf) - self.ready = True -diff --git a/cherrypy/lib/auth_digest.py b/cherrypy/lib/auth_digest.py -index fbb5df64..981e9a5d 100644 ---- a/cherrypy/lib/auth_digest.py -+++ b/cherrypy/lib/auth_digest.py -@@ -101,13 +101,12 @@ def get_ha1_file_htdigest(filename): - """ - def get_ha1(realm, username): - result = None -- f = open(filename, 'r') -- for line in f: -- u, r, ha1 = line.rstrip().split(':') -- if u == username and r == realm: -- result = ha1 -- break -- f.close() -+ with open(filename, 'r') as f: -+ for line in f: -+ u, r, ha1 = line.rstrip().split(':') -+ if u == username and r == realm: -+ result = ha1 -+ break - return result - - return get_ha1 -diff --git a/cherrypy/lib/covercp.py b/cherrypy/lib/covercp.py -index 3e219713..005fafa5 100644 ---- a/cherrypy/lib/covercp.py -+++ b/cherrypy/lib/covercp.py -@@ -334,26 +334,26 @@ class CoverStats(object): - yield '</body></html>' - - def annotated_file(self, filename, statements, excluded, missing): -- source = open(filename, 'r') -- buffer = [] -- for lineno, line in enumerate(source.readlines()): -- lineno += 1 -- line = line.strip('\n\r') -- empty_the_buffer = True -- if lineno in excluded: -- template = TEMPLATE_LOC_EXCLUDED -- elif lineno in missing: -- template = TEMPLATE_LOC_NOT_COVERED -- elif lineno in statements: -- template = TEMPLATE_LOC_COVERED -- else: -- empty_the_buffer = False -- buffer.append((lineno, line)) -- if empty_the_buffer: -- for lno, pastline in buffer: -- yield template % (lno, cgi.escape(pastline)) -- buffer = [] -- yield template % (lineno, cgi.escape(line)) -+ with open(filename, 'r') as source: -+ buffer = [] -+ for lineno, line in enumerate(source.readlines()): -+ lineno += 1 -+ line = line.strip('\n\r') -+ empty_the_buffer = True -+ if lineno in excluded: -+ template = TEMPLATE_LOC_EXCLUDED -+ elif lineno in missing: -+ template = TEMPLATE_LOC_NOT_COVERED -+ elif lineno in statements: -+ template = TEMPLATE_LOC_COVERED -+ else: -+ empty_the_buffer = False -+ buffer.append((lineno, line)) -+ if empty_the_buffer: -+ for lno, pastline in buffer: -+ yield template % (lno, cgi.escape(pastline)) -+ buffer = [] -+ yield template % (lineno, cgi.escape(line)) - - @cherrypy.expose - def report(self, name): -diff --git a/cherrypy/lib/reprconf.py b/cherrypy/lib/reprconf.py -index 3976652e..76381d7b 100644 ---- a/cherrypy/lib/reprconf.py -+++ b/cherrypy/lib/reprconf.py -@@ -163,11 +163,8 @@ class Parser(configparser.ConfigParser): - # fp = open(filename) - # except IOError: - # continue -- fp = open(filename) -- try: -+ with open(filename) as fp: - self._read(fp, filename) -- finally: -- fp.close() - - def as_dict(self, raw=False, vars=None): - """Convert an INI file to a dictionary""" -diff --git a/cherrypy/lib/sessions.py b/cherrypy/lib/sessions.py -index 5b3328f2..0f56a4fa 100644 ---- a/cherrypy/lib/sessions.py -+++ b/cherrypy/lib/sessions.py -@@ -516,11 +516,8 @@ class FileSession(Session): - if path is None: - path = self._get_file_path() - try: -- f = open(path, 'rb') -- try: -+ with open(path, 'rb') as f: - return pickle.load(f) -- finally: -- f.close() - except (IOError, EOFError): - e = sys.exc_info()[1] - if self.debug: -@@ -531,11 +528,8 @@ class FileSession(Session): - def _save(self, expiration_time): - assert self.locked, ('The session was saved without being locked. ' - "Check your tools' priority levels.") -- f = open(self._get_file_path(), 'wb') -- try: -+ with open(self._get_file_path(), 'wb') as f: - pickle.dump((self._data, expiration_time), f, self.pickle_protocol) -- finally: -- f.close() - - def _delete(self): - assert self.locked, ('The session deletion without being locked. ' -diff --git a/cherrypy/process/plugins.py b/cherrypy/process/plugins.py -index 2a9952de..e96fb1ce 100644 ---- a/cherrypy/process/plugins.py -+++ b/cherrypy/process/plugins.py -@@ -436,7 +436,8 @@ class PIDFile(SimplePlugin): - if self.finalized: - self.bus.log('PID %r already written to %r.' % (pid, self.pidfile)) - else: -- open(self.pidfile, 'wb').write(ntob('%s\n' % pid, 'utf8')) -+ with open(self.pidfile, 'wb') as f: -+ f.write(ntob('%s\n' % pid, 'utf8')) - self.bus.log('PID %r written to %r.' % (pid, self.pidfile)) - self.finalized = True - start.priority = 70 -diff --git a/cherrypy/test/helper.py b/cherrypy/test/helper.py -index c1ca4535..cae49533 100644 ---- a/cherrypy/test/helper.py -+++ b/cherrypy/test/helper.py -@@ -505,7 +505,8 @@ server.ssl_private_key: r'%s' - - def get_pid(self): - if self.daemonize: -- return int(open(self.pid_file, 'rb').read()) -+ with open(self.pid_file, 'rb') as f: -+ return int(f.read()) - return self._proc.pid - - def join(self): -diff --git a/cherrypy/test/logtest.py b/cherrypy/test/logtest.py -index 344be987..112bdc25 100644 ---- a/cherrypy/test/logtest.py -+++ b/cherrypy/test/logtest.py -@@ -97,7 +97,8 @@ class LogCase(object): - - def emptyLog(self): - """Overwrite self.logfile with 0 bytes.""" -- open(self.logfile, 'wb').write('') -+ with open(self.logfile, 'wb') as f: -+ f.write('') - - def markLog(self, key=None): - """Insert a marker line into the log and set self.lastmarker.""" -@@ -105,10 +106,11 @@ class LogCase(object): - key = str(time.time()) - self.lastmarker = key - -- open(self.logfile, 'ab+').write( -- b'%s%s\n' -- % (self.markerPrefix, key.encode('utf-8')) -- ) -+ with open(self.logfile, 'ab+') as f: -+ f.write( -+ b'%s%s\n' -+ % (self.markerPrefix, key.encode('utf-8')) -+ ) - - def _read_marked_region(self, marker=None): - """Return lines from self.logfile in the marked region. -@@ -122,20 +124,23 @@ class LogCase(object): - logfile = self.logfile - marker = marker or self.lastmarker - if marker is None: -- return open(logfile, 'rb').readlines() -+ with open(logfile, 'rb') as f: -+ return f.readlines() - - if isinstance(marker, str): - marker = marker.encode('utf-8') - data = [] - in_region = False -- for line in open(logfile, 'rb'): -- if in_region: -- if line.startswith(self.markerPrefix) and marker not in line: -- break -- else: -- data.append(line) -- elif marker in line: -- in_region = True -+ with open(logfile, 'rb') as f: -+ for line in f: -+ if in_region: -+ if (line.startswith(self.markerPrefix) -+ and marker not in line): -+ break -+ else: -+ data.append(line) -+ elif marker in line: -+ in_region = True - return data - - def assertInLog(self, line, marker=None): -diff --git a/cherrypy/test/modfastcgi.py b/cherrypy/test/modfastcgi.py -index 79ec3d18..0c6d01e2 100644 ---- a/cherrypy/test/modfastcgi.py -+++ b/cherrypy/test/modfastcgi.py -@@ -112,15 +112,12 @@ class ModFCGISupervisor(helper.LocalWSGISupervisor): - fcgiconf = os.path.join(curdir, fcgiconf) - - # Write the Apache conf file. -- f = open(fcgiconf, 'wb') -- try: -+ with open(fcgiconf, 'wb') as f: - server = repr(os.path.join(curdir, 'fastcgi.pyc'))[1:-1] - output = self.template % {'port': self.port, 'root': curdir, - 'server': server} - output = output.replace('\r\n', '\n') - f.write(output) -- finally: -- f.close() - - result = read_process(APACHE_PATH, '-k start -f %s' % fcgiconf) - if result: -diff --git a/cherrypy/test/modfcgid.py b/cherrypy/test/modfcgid.py -index d101bd67..ea373004 100644 ---- a/cherrypy/test/modfcgid.py -+++ b/cherrypy/test/modfcgid.py -@@ -101,15 +101,12 @@ class ModFCGISupervisor(helper.LocalSupervisor): - fcgiconf = os.path.join(curdir, fcgiconf) - - # Write the Apache conf file. -- f = open(fcgiconf, 'wb') -- try: -+ with open(fcgiconf, 'wb') as f: - server = repr(os.path.join(curdir, 'fastcgi.pyc'))[1:-1] - output = self.template % {'port': self.port, 'root': curdir, - 'server': server} - output = ntob(output.replace('\r\n', '\n')) - f.write(output) -- finally: -- f.close() - - result = read_process(APACHE_PATH, '-k start -f %s' % fcgiconf) - if result: -diff --git a/cherrypy/test/modpy.py b/cherrypy/test/modpy.py -index 7c288d2c..024453e9 100644 ---- a/cherrypy/test/modpy.py -+++ b/cherrypy/test/modpy.py -@@ -107,13 +107,10 @@ class ModPythonSupervisor(helper.Supervisor): - if not os.path.isabs(mpconf): - mpconf = os.path.join(curdir, mpconf) - -- f = open(mpconf, 'wb') -- try: -+ with open(mpconf, 'wb') as f: - f.write(self.template % - {'port': self.port, 'modulename': modulename, - 'host': self.host}) -- finally: -- f.close() - - result = read_process(APACHE_PATH, '-k start -f %s' % mpconf) - if result: -diff --git a/cherrypy/test/modwsgi.py b/cherrypy/test/modwsgi.py -index da7d240b..24c72684 100644 ---- a/cherrypy/test/modwsgi.py -+++ b/cherrypy/test/modwsgi.py -@@ -109,14 +109,11 @@ class ModWSGISupervisor(helper.Supervisor): - if not os.path.isabs(mpconf): - mpconf = os.path.join(curdir, mpconf) - -- f = open(mpconf, 'wb') -- try: -+ with open(mpconf, 'wb') as f: - output = (self.template % - {'port': self.port, 'testmod': modulename, - 'curdir': curdir}) - f.write(output) -- finally: -- f.close() - - result = read_process(APACHE_PATH, '-k start -f %s' % mpconf) - if result: -diff --git a/cherrypy/test/test_core.py b/cherrypy/test/test_core.py -index 6fde3a97..42460b3f 100644 ---- a/cherrypy/test/test_core.py -+++ b/cherrypy/test/test_core.py -@@ -586,9 +586,8 @@ class CoreRequestHandlingTest(helper.CPWebCase): - def testFavicon(self): - # favicon.ico is served by staticfile. - icofilename = os.path.join(localDir, '../favicon.ico') -- icofile = open(icofilename, 'rb') -- data = icofile.read() -- icofile.close() -+ with open(icofilename, 'rb') as icofile: -+ data = icofile.read() - - self.getPage('/favicon.ico') - self.assertBody(data) -diff --git a/cherrypy/test/test_states.py b/cherrypy/test/test_states.py -index 28dd6510..d59a4d87 100644 ---- a/cherrypy/test/test_states.py -+++ b/cherrypy/test/test_states.py -@@ -424,11 +424,12 @@ test_case_name: "test_signal_handler_unsubscribe" - p.join() - - # Assert the old handler ran. -- log_lines = list(open(p.error_log, 'rb')) -- assert any( -- line.endswith(b'I am an old SIGTERM handler.\n') -- for line in log_lines -- ) -+ with open(p.error_log, 'rb') as f: -+ log_lines = list(f) -+ assert any( -+ line.endswith(b'I am an old SIGTERM handler.\n') -+ for line in log_lines -+ ) - - - def test_safe_wait_INADDR_ANY(): # pylint: disable=invalid-name --- -2.35.1 - diff --git a/dev-python/cherrypy/files/cherrypy-18.6.1-py311.patch b/dev-python/cherrypy/files/cherrypy-18.6.1-py311.patch deleted file mode 100644 index 5d629dd8c333..000000000000 --- a/dev-python/cherrypy/files/cherrypy-18.6.1-py311.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 8245a74aa4e090c40445535a9ce3997ed9904798 Mon Sep 17 00:00:00 2001 -From: Dominic Davis-Foster <dominic@davis-foster.co.uk> -Date: Fri, 28 Jan 2022 23:11:52 +0000 -Subject: [PATCH] Switch from inspect.getargspec to inspect.getfullargspec - -inspect.getargspec has been deprecated since 3.0 ---- - cherrypy/_cpdispatch.py | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) - -diff --git a/cherrypy/_cpdispatch.py b/cherrypy/_cpdispatch.py -index 83eb79cb..5c506e99 100644 ---- a/cherrypy/_cpdispatch.py -+++ b/cherrypy/_cpdispatch.py -@@ -206,12 +206,8 @@ except ImportError: - def test_callable_spec(callable, args, kwargs): # noqa: F811 - return None - else: -- getargspec = inspect.getargspec -- # Python 3 requires using getfullargspec if -- # keyword-only arguments are present -- if hasattr(inspect, 'getfullargspec'): -- def getargspec(callable): -- return inspect.getfullargspec(callable)[:4] -+ def getargspec(callable): -+ return inspect.getfullargspec(callable)[:4] - - - class LateParamPageHandler(PageHandler): --- -2.35.1 - |