Skip to content

Commit f5a36d5

Browse files
author
Release Manager
committed
sagemathgh-36488: Fix func_persist: do not use the (now removed) inspect.formatargspec, but instead use inspect.signature. Fix func_persist: do not use inspect.formatargspec (gone as of Python 3.11) <!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes sagemath#1234" use "Introduce new method to calculate 1+1" --> <!-- Describe your changes here in detail --> The method `inspect.formatargspec` has been deprecated since Python 3.5, now removed as of 3.11. `func_persist` still uses it, so we replace it with `inspect.signature`. Another option would be to replace it with `sageinspect.sage_formatargspec`. I think that func_persist should only be used with Python functions, not Cython, and `inspect.signature` is nicer for Python functions. If the function is defined as `def test(n: int) -> int:`, For example, then `inspect.signature` will return `(n: int) -> int` while `sageinspect.sage_formatargspec` will just return `(n)`. This should fix sagemath#36302. <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes sagemath#12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [X] The title is concise, informative, and self-explanatory. - [X] The description explains in detail what this PR is about. - [X] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on - sagemath#12345: short description why this is a dependency - sagemath#34567: ... --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> URL: sagemath#36488 Reported by: John H. Palmieri Reviewer(s): balejk
2 parents 1b6460d + 5d8ddcf commit f5a36d5

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

src/sage/misc/func_persist.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ def bern(n):
4545

4646
from . import persist
4747

48-
4948
class func_persist:
5049
r"""
5150
Put ``@func_persist`` right before your function
@@ -57,7 +56,7 @@ def __init__(self, f, dir='func_persist'):
5756
os.makedirs(dir, exist_ok=True)
5857
self.__doc__ = '%s%s%s' % (
5958
f.__name__,
60-
inspect.formatargspec(*inspect.getargs(f.__code__)),
59+
inspect.signature(f),
6160
f.__doc__)
6261

6362
def __call__(self, *args, **kwds):

0 commit comments

Comments
 (0)