spyder-ide / spyder

Official repository for Spyder - The Scientific Python Development Environment
https://www.spyder-ide.org
MIT License
8.22k stars 1.59k forks source link

Docstrings generation is wierd for functions with many arguments #20458

Open leonefamily opened 1 year ago

leonefamily commented 1 year ago

Issue Report Checklist

Problem Description

Not all arguments are being printed, when a docstring is generated under a function, that has many arguments. Furthermore, other standard ways don't work at all - right click menu option Generate docstring is inactive, and Ctrl+Alt+D just moves the cursor up to the argument, which gets printed first, when using the """ method (in my case it's default_config_path argument). I use standalone Spyder (not with Anaconda).

What steps reproduce the problem?

  1. Type """ in the first line of function
  2. Click Generate docstring popup, when it appears
  3. See the broken docstring

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

I expected every stated argument to appear in the docstring, but it only prints 12 of them (there are 22 in total), and also the alignment is broken (docstring's body drives off to the right). It only happens to functions with many arguments:

image

Versions

Dependencies

# Mandatory:
atomicwrites >=1.2.0                 :  1.4.1 (OK)
chardet >=2.0.0                      :  5.0.0 (OK)
cloudpickle >=0.5.0                  :  2.1.0 (OK)
cookiecutter >=1.6.0                 :  2.1.1 (OK)
diff_match_patch >=20181111          :  20200713 (OK)
intervaltree                         :  None (OK)
IPython >=7.31.1;<8.0.0              :  7.34.0 (OK)
jedi >=0.17.2;<0.19.0                :  0.18.1 (OK)
jellyfish >=0.7                      :  0.9.0 (OK)
jsonschema >=3.2.0                   :  4.14.0 (OK)
keyring >=17.0.0                     :  23.8.2 (OK)
nbconvert >=4.0                      :  7.0.0 (OK)
numpydoc >=0.6.0                     :  1.4.0 (OK)
paramiko >=2.4.0                     :  2.11.0 (OK)
parso >=0.7.0;<0.9.0                 :  0.8.3 (OK)
pexpect >=4.4.0                      :  4.8.0 (OK)
pickleshare >=0.4                    :  0.7.5 (OK)
psutil >=5.3                         :  5.9.1 (OK)
pygments >=2.0                       :  2.13.0 (OK)
pylint >=2.5.0;<3.0                  :  2.15.0 (OK)
pyls_spyder >=0.4.0                  :  0.4.0 (OK)
pylsp >=1.5.0;<1.6.0                 :  1.5.0 (OK)
pylsp_black >=1.2.0                  :  1.2.1 (OK)
qdarkstyle >=3.0.2;<3.1.0            :  3.0.3 (OK)
qstylizer >=0.1.10                   :  0.2.1 (OK)
qtawesome >=1.0.2                    :  1.1.1 (OK)
qtconsole >=5.3.2;<5.4.0             :  5.3.2 (OK)
qtpy >=2.1.0                         :  2.2.0 (OK)
rtree >=0.9.7                        :  1.0.0 (OK)
setuptools >=49.6.0                  :  65.3.0 (OK)
sphinx >=0.6.6                       :  5.1.1 (OK)
spyder_kernels >=2.3.3;<2.4.0        :  2.3.3 (OK)
textdistance >=4.2.0                 :  4.4.0 (OK)
three_merge >=0.1.1                  :  0.1.1 (OK)
watchdog                             :  2.1.9 (OK)
zmq >=22.1.0                         :  23.2.1 (OK)

# Optional:
cython >=0.21                        :  0.29.32 (OK)
matplotlib >=3.0.0                   :  3.5.3 (OK)
numpy >=1.7                          :  1.22.4 (OK)
pandas >=1.1.1                       :  1.4.3 (OK)
scipy >=0.17.0                       :  1.9.1 (OK)
sympy >=0.7.3                        :  1.11 (OK)

# Spyder plugins:
spyder_terminal.terminalplugin 1.2.2 :  1.2.2 (OK)
dalthviz commented 1 year ago

Hi @leonefamily thank you for the feedback! Could it be possible for you to submit to the issue the example function definition as code to reproduce this locally more easily?

If you have any other info in order to understand why this could be happening let us know!