Skip to content

Commit

Permalink
sagemathgh-36488: Fix func_persist: do not use the (now removed) insp…
Browse files Browse the repository at this point in the history
…ect.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
  • Loading branch information
Release Manager committed Oct 28, 2023
2 parents ae28a4d + 5d8ddcf commit dcb049f
Showing 1 changed file with 1 addition and 2 deletions.
3 changes: 1 addition & 2 deletions src/sage/misc/func_persist.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ def bern(n):

from . import persist


class func_persist:
r"""
Put ``@func_persist`` right before your function
Expand All @@ -57,7 +56,7 @@ def __init__(self, f, dir='func_persist'):
os.makedirs(dir, exist_ok=True)
self.__doc__ = '%s%s%s' % (
f.__name__,
inspect.formatargspec(*inspect.getargs(f.__code__)),
inspect.signature(f),
f.__doc__)

def __call__(self, *args, **kwds):
Expand Down

0 comments on commit dcb049f

Please sign in to comment.