Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Object Explorer Options for Identifier Sorting #22071

Open
3 of 10 tasks
PhilipYip1988 opened this issue May 10, 2024 · 1 comment
Open
3 of 10 tasks

Object Explorer Options for Identifier Sorting #22071

PhilipYip1988 opened this issue May 10, 2024 · 1 comment

Comments

@PhilipYip1988
Copy link

Issue Report Checklist

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

Object Explorer Sort Identifiers by Column

The Object Explorer lacks some options to sort identifiers.

If a variable is viewed with the object explorer:

2

There is a Type column and a Callable column. The column title cannot be selected to group the identifiers by this column:

3

For example selecting Callable should show the identifiers grouped in the following order:

False:

  • denominator
  • imag
  • numerator
  • real

True:

  • as_integer_ratio
  • bit_count
  • bit_length
  • conjugate
  • from_bytes
  • to_bytes

Selecting Type should group them by:

builtin_function_or_method:

  • as_integer_ratio
  • bit_count
  • bit_length
  • conjugate
  • from_bytes
  • to_bytes

int:

  • denominator
  • imag
  • numerator
  • real

Properties Button

The Callable button toggles whether Callable identifiers are shown or not:

4

This gives a way of showing only non-callable attributes however it does not give a way of only showing callable attributes. It might be good to have a P button here giving the option to display non-callable Properties. So for example if P was toggle off and C was toggled on, the following would show:

  • as_integer_ratio
  • bit_count
  • bit_length
  • conjugate
  • from_bytes
  • to_bytes

The Datamodel button toggles whether Datamodel identifiers are shown or not:

5

Identifiers are shown alphabetically so these can easily be viewed separately by scrolling.

Additional Option to Group Classes and Modules

If in the Spyder preferences, Exclude callable and modules is selected:

image

Then something like pandas can be inspected:

image

This has classes and modules:

7

When grouped by Callable it might be useful to have an option to group modules below the other Properties and to group classes below the other Callables. However this option couldn't be selected by just clicking the column title and would require an additional setting.

Additional Option to Group Callable by Behaviour

Another useful option for Callables would be to group by behaviour i.e. immutable or mutable. For example in the list:

image

Immutable Callable:

  • copy
  • count
  • index

Mutable Callable:

  • append
  • clear
  • extend
  • insert
  • pop
  • remove
  • reverse
  • sort

Use Object Explorer Setting for Script Editor

It would also be useful to have the ability to apply the Object Explorer Setting to the Script Editor:

1

For example:

  • Properties
  • Modules
  • Callables
  • Classes

Paste Traceback/Error Below (if applicable)

PASTE TRACEBACK HERE

Versions

  • Spyder version: 6.0.0a5 (conda)
  • Python version: 3.11.9 64-bit
  • Qt version: 5.15.8
  • PyQt5 version: 5.15.9
  • Operating System: Windows-10-10.0.22631-SP0

Dependencies

# Mandatory:
atomicwrites >=1.2.0              :  1.4.1 (OK)
chardet >=2.0.0                   :  5.2.0 (OK)
cloudpickle >=0.5.0               :  3.0.0 (OK)
cookiecutter >=1.6.0              :  2.6.0 (OK)
diff_match_patch >=20181111       :  20230430 (OK)
intervaltree >=3.0.2              :  3.1.0 (OK)
IPython >=8.13.0,<9.0.0,!=8.17.1  :  8.22.2 (OK)
jedi >=0.17.2,<0.20.0             :  0.19.1 (OK)
jellyfish >=0.7                   :  1.0.3 (OK)
jsonschema >=3.2.0                :  4.22.0 (OK)
keyring >=17.0.0                  :  25.2.0 (OK)
nbconvert >=4.0                   :  7.16.4 (OK)
numpydoc >=0.6.0                  :  1.7.0 (OK)
paramiko >=2.4.0                  :  3.4.0 (OK)
parso >=0.7.0,<0.9.0              :  0.8.4 (OK)
pexpect >=4.4.0                   :  4.9.0 (OK)
pickleshare >=0.4                 :  0.7.5 (OK)
psutil >=5.3                      :  5.9.8 (OK)
pygments >=2.0                    :  2.18.0 (OK)
pylint >=3.1,<4                   :  3.1.0 (OK)
pylint_venv >=3.0.2               :  3.0.3 (OK)
pyls_spyder >=0.4.0               :  0.4.0 (OK)
pylsp >=1.11.0,<1.12.0            :  1.11.0 (OK)
pylsp_black >=2.0.0,<3.0.0        :  2.0.0 (OK)
pyuca >=1.2                       :  1.2 (OK)
qdarkstyle >=3.2.0,<3.3.0         :  3.2.3 (OK)
qstylizer >=0.2.2                 :  0.2.3 (OK)
qtawesome >=1.3.1,<1.4.0          :  1.3.1 (OK)
qtconsole >=5.5.1,<5.6.0          :  5.5.2 (OK)
qtpy >=2.4.0                      :  2.4.1 (OK)
rtree >=0.9.7                     :  1.2.0 (OK)
setuptools >=49.6.0               :  69.5.1 (OK)
sphinx >=0.6.6                    :  7.3.7 (OK)
spyder_kernels >=3.0.0b5,<3.0.0b6 :  3.0.0b5 (OK)
superqt >=0.6.1,<1.0.0            :  0.6.4 (OK)
textdistance >=4.2.0              :  4.6.2 (OK)
three_merge >=0.1.1               :  0.1.1 (OK)
watchdog >=0.10.3                 :  4.0.0 (OK)
zmq >=24.0.0                      :  26.0.3 (OK)

# Optional:
cython >=0.21                     :  3.0.10 (OK)
matplotlib >=3.0.0                :  3.8.4 (OK)
numpy >=1.7                       :  1.26.4 (OK)
pandas >=1.1.1                    :  2.2.2 (OK)
scipy >=0.17.0                    :  1.13.0 (OK)
sympy >=0.7.3                     :  1.12 (OK)

@ccordoba12
Copy link
Member

Hey @PhilipYip1988, thanks for reporting and the detailed description of your feature request.

Unfortunately, we lack the manpower to implement it at the moment. But I'll leave it open in case someone wants to take a look at it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants