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

Issue reporter pops out when viewing class instances with user-defined __setstate__ #23547

Open
HicbirSeyLeah opened this issue Jan 24, 2025 · 2 comments

Comments

@HicbirSeyLeah
Copy link

HicbirSeyLeah commented Jan 24, 2025

Description

What steps will reproduce the problem?

The variable viewer works fine as I can still view the instance, it's just this issue reporter itself poped up. when trying to view it.

Here's an example class that reproduced this bug:

class Foo(object):
  def __init__(self, val=2):
     self.val = val
  def __getstate__(self):
     print("I'm being pickled")
     self.val *= 2
     return self.__dict__
  def __setstate__(self, d):
     print("I'm being unpickled with these values: " + repr(d))
     self.__dict__ = d
     self.val *= 3
f = Foo()

And then double click instance f in the variable explorer to view it.

Cheers

Versions

  • Spyder version: 6.0.3 (conda)
  • Python version: 3.12.8 64-bit
  • Qt version: 5.15.8
  • PyQt5 version: 5.15.9
  • Operating System: Windows-10-10.0.19045-SP0

Dependencies

# Mandatory:
aiohttp >=3.9.3                      :  3.11.11 (OK)
asyncssh >=2.14.0,<3.0.0             :  2.19.0 (OK)
atomicwrites >=1.2.0                 :  1.4.1 (OK)
chardet >=2.0.0                      :  5.2.0 (OK)
cloudpickle >=0.5.0                  :  3.1.1 (OK)
cookiecutter >=1.6.0                 :  2.6.0 (OK)
diff_match_patch >=20181111          :  20241021 (OK)
github >=2.3.0                       :  2.5.0 (OK)
importlib_metadata >=4.6.0           :  8.5.0 (OK)
intervaltree >=3.0.2                 :  3.1.0 (OK)
IPython >=8.13.0,<9.0.0,!=8.17.1     :  8.31.0 (OK)
jedi >=0.17.2,<0.20.0                :  0.19.2 (OK)
jellyfish >=0.7                      :  1.1.3 (OK)
jsonschema >=3.2.0                   :  4.23.0 (OK)
keyring >=17.0.0                     :  25.6.0 (OK)
nbconvert >=4.0                      :  7.16.5 (OK)
numpydoc >=0.6.0                     :  1.8.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                         :  6.1.1 (OK)
pygments >=2.0                       :  2.19.1 (OK)
pylint >=3.1,<4                      :  3.3.3 (OK)
pylint_venv >=3.0.2                  :  3.0.4 (OK)
pyls_spyder >=0.4.0                  :  0.4.0 (OK)
pylsp >=1.12.0,<1.13.0               :  1.12.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.4 (OK)
qtawesome >=1.3.1,<1.4.0             :  1.3.1 (OK)
qtconsole >=5.6.1,<5.7.0             :  5.6.1 (OK)
qtpy >=2.4.0                         :  2.4.2 (OK)
rtree >=0.9.7                        :  1.3.0 (OK)
setuptools >=49.6.0                  :  75.8.0 (OK)
sphinx >=0.6.6                       :  8.1.3 (OK)
spyder_kernels >=3.0.2,<3.1.0        :  3.0.2 (OK)
superqt >=0.6.2,<1.0.0               :  0.7.0 (OK)
textdistance >=4.2.0                 :  4.6.2 (OK)
three_merge >=0.1.1                  :  0.1.1 (OK)
watchdog >=0.10.3                    :  6.0.0 (OK)
yarl >=1.9.4                         :  1.18.3 (OK)
zmq >=24.0.0                         :  26.2.0 (OK)

# Optional:
cython >=0.21                        :  3.0.11 (OK)
matplotlib >=3.0.0                   :  3.10.0 (OK)
numpy >=1.7                          :  2.2.2 (OK)
pandas >=1.1.1                       :  2.2.3 (OK)
scipy >=0.17.0                       :  1.15.0 (OK)
sympy >=0.7.3                        :  1.13.3 (OK)

# Spyder plugins:
spyder_notebook.notebookplugin 0.6.1 :  0.6.1 (OK)
@athompson673
Copy link
Contributor

Reproduced on my end, and specifically only for defining __setstate__. Defining __getstate__ alone does not trigger the error for me.

Image

No traceback is printed, and also the object viewer for f came up as normal along with the error message..

@ccordoba12
Copy link
Member

Hey @howaboutnothavinganame, thanks for reporting. It seems __setstate__ interferes with the unpickling we need to do on the Spyder side to display the object.

We'll try to take a look at this problem in a future release.

@ccordoba12 ccordoba12 added this to the v6.x.x milestone Jan 27, 2025
@ccordoba12 ccordoba12 changed the title 'Issue reporter' poped out when double click to view instances with user-defined __getstate__ & __setstate__ Issue reporter pops out when viewing class instances with user-defined __setstate__ Jan 27, 2025
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

3 participants