spyder icon indicating copy to clipboard operation
spyder copied to clipboard

Wrapped function signature not updating in Helper pane

Open nikfilippas opened this issue 2 years ago • 2 comments

Issue Report Checklist

  • [x] Searched the issues page for similar reports
  • [x] Read the relevant sections of the Spyder Troubleshooting Guide and followed its advice
  • [x] Reproduced the issue after updating with conda update spyder (or pip, if not using Anaconda)
  • [x] Could not reproduce inside jupyter qtconsole (if console-related)
  • [x] Tried basic troubleshooting (if a bug/error)
    • [x] Restarted Spyder
    • [ ] Reset preferences with spyder --reset
    • [x] Reinstalled the latest version of Anaconda
    • [x] Tried the other applicable steps from the Troubleshooting Guide
  • [x] Completed the Problem Description, Steps to Reproduce and Version sections below

Problem Description

functools.wraps updates some of the wrapped function's magic functions so that the new function preserves the name, docstrings, and signature of the old function. It looks like the "Helper" pane does not pick up the wrapped function's updated singature and just shows it as (*args, **kwargs). However, running help(new_function) on the console shows the correct signature. All other related attributes work as expected.

What steps reproduce the problem?

  1. Define a function.
  2. Wrap it using functools.wraps.
  3. New function's signature in Helper pane is wrong.

This can be quickly checked using the following code:

import functools

def foo(a, /, b=2, *, c=3):
    """This is a docstring."""
    return (a, b, c)

def wrapper(func):
    """Do nothing."""
    @functools.wraps(func)
    def new_func(*args, **kwargs):
        return func(*args, **kwargs)
    return new_func

bar = wrapper(foo)

What is the expected output? What do you see instead?

On the console, help(bar) prints:

foo(a, /, b=2, *, c=3)
    This is a docstring.

which is the expected output, but the Helper pane shows the wrong signature: Screenshot from 2022-03-08 14-33-03

Versions

  • Spyder version: 5.1.5
  • Python version: 3.9.7
  • Qt version: 5.12.9
  • PyQt version: N/A
  • Operating System name/version: Ubuntu 20.04.4 LTS

Dependencies

# Mandatory:
atomicwrites >=1.2.0          :  1.4.0 (OK)
chardet >=2.0.0               :  4.0.0 (OK)
cloudpickle >=0.5.0           :  2.0.0 (OK)
cookiecutter >=1.6.0          :  1.7.2 (OK)
diff_match_patch >=20181111   :  20200713 (OK)
intervaltree >=3.0.2          :  3.1.0 (OK)
IPython >=7.6.0               :  7.29.0 (OK)
jedi >=0.17.2;<0.19.0         :  0.18.0 (OK)
jsonschema >=3.2.0            :  3.2.0 (OK)
keyring >=17.0.0              :  23.1.0 (OK)
nbconvert >=4.0               :  6.1.0 (OK)
numpydoc >=0.6.0              :  1.1.0 (OK)
parso >=0.7.0;<0.9.0          :  0.8.2 (OK)
pexpect >=4.4.0               :  4.8.0 (OK)
pickleshare >=0.4             :  0.7.5 (OK)
psutil >=5.3                  :  5.8.0 (OK)
pygments >=2.0                :  2.10.0 (OK)
pylint >=2.5.0;<2.10.0        :  2.9.6 (OK)
pyls_spyder >=0.4.0           :  0.4.0 (OK)
pylsp >=1.2.2;<1.3.0          :  1.2.4 (OK)
pylsp_black >=1.0.0           :  None (OK)
qdarkstyle =3.0.2             :  3.0.2 (OK)
qstylizer >=0.1.10            :  0.1.10 (OK)
qtawesome >=1.0.2             :  1.0.2 (OK)
qtconsole >=5.1.0             :  5.1.1 (OK)
qtpy >=1.5.0                  :  1.10.0 (OK)
rtree >=0.9.7                 :  0.9.7 (OK)
setuptools >=49.6.0           :  58.0.4 (OK)
sphinx >=0.6.6                :  4.4.0 (OK)
spyder_kernels >=2.1.1;<2.2.0 :  2.1.3 (OK)
textdistance >=4.2.0          :  4.2.1 (OK)
three_merge >=0.1.1           :  0.1.1 (OK)
watchdog >=0.10.3             :  2.1.3 (OK)
xdg >=0.26                    :  0.27 (OK)
zmq >=17                      :  22.2.1 (OK)

# Optional:
cython >=0.21                 :  0.29.24 (OK)
matplotlib >=2.0.0            :  3.4.3 (OK)
numpy >=1.7                   :  1.20.3 (OK)
pandas >=1.1.1                :  1.3.4 (OK)
scipy >=0.17.0                :  1.7.1 (OK)
sympy >=0.7.3                 :  1.9 (OK)

nikfilippas avatar Mar 08 '22 12:03 nikfilippas

@ccordoba12 just pinging you in case you might have missed it, seeing as this is the oldest issue that has no replies and no badges.

nikfilippas avatar Mar 14 '22 14:03 nikfilippas

Hi @nikfilippas thank you for the feedback! I was able to reproduce this. We will check into this in a future release :+1:

dalthviz avatar Mar 15 '22 17:03 dalthviz