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 21, 2023
2 parents 8c280f4 + 5d8ddcf commit b8c02f4
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 6 deletions.
6 changes: 3 additions & 3 deletions build/pkgs/configure/checksums.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
tarball=configure-VERSION.tar.gz
sha1=aa7054a0e6a582d2db1475dc47f63a54e6ac569f
md5=40eab024557ad51e08dfb08e2753a465
cksum=802824779
sha1=e9ec90b5f3a9fc230231b585a9c08ea8a66ace6c
md5=72292ce4a4020d99ea0f6d065e678034
cksum=2701940086
2 changes: 1 addition & 1 deletion build/pkgs/configure/package-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
c47788b02a42ef4907a0e61e702fbe9bbef27590
234e44080724748caf9c59fd72f1720782ebd619
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 b8c02f4

Please sign in to comment.