Ticket #130 (closed defect: fixed)

Opened 2 months ago

Last modified 2 months ago

pickle in demo.py doesn't work

Reported by: Tomas Pospisek <tpo_d..@sourcepole.ch> Assigned to: gaph..@gmail.com
Priority: major Milestone:
Component: Gaphor Version:
Keywords: Cc:

Description

Context: having searched for a vector graphics library that in itself provides point to select, drag, highlight etc. functionality I'm trying to get up and running with gaphas.

To get started I'm using demo.py, however demo.py's pickle doesn't work. When I start demo.py (SVN version as of today) and then immediately press 'pickle' I get:

Traceback (most recent call last):
  File "./demo.py", line 281, in on_clicked
    pickle.dump(view.canvas, f)
  File "/usr/lib/python2.5/pickle.py", line 1362, in dump
    Pickler(file, protocol).dump(obj)
  File "/usr/lib/python2.5/pickle.py", line 224, in dump
    self.save(obj)
  File "/usr/lib/python2.5/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib/python2.5/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib/python2.5/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.5/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.5/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/usr/lib/python2.5/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib/python2.5/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib/python2.5/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.5/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.5/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/usr/lib/python2.5/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.5/pickle.py", line 600, in save_list
    self._batch_appends(iter(obj))
  File "/usr/lib/python2.5/pickle.py", line 615, in _batch_appends
    save(x)
  File "/usr/lib/python2.5/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib/python2.5/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib/python2.5/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.5/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.5/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/usr/lib/python2.5/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib/python2.5/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib/python2.5/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.5/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.5/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/usr/lib/python2.5/pickle.py", line 306, in save
    rv = reduce(self.proto)
  File "/usr/lib/python2.5/copy_reg.py", line 69, in _reduce_ex
    raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle Matrix objects

unpickling I get:

Traceback (most recent call last):
  File "./demo.py", line 295, in on_clicked
    canvas = pickle.load(f)
  File "/usr/lib/python2.5/pickle.py", line 1370, in load
    return Unpickler(file).load()
  File "/usr/lib/python2.5/pickle.py", line 858, in load
    dispatch[key](self)
  File "/usr/lib/python2.5/pickle.py", line 880, in load_eof
    raise EOFError
EOFError

Attachments

Change History

09/15/08 02:38:23 changed by ogba..@gmail.com

Seems like someone has to import source:gaphas/trunk/gaphas/picklers.py where pickling occurs, so that corresponding constructors/reducers get initialized.

09/17/08 12:59:30 changed by gaph..@gmail.com

  • owner changed from arj..@yirdis.nl to gaph..@gmail.com.
  • status changed from new to assigned.

Indeed, we forgot to import that that.

(follow-up: ↓ 4 ) 09/17/08 12:59:45 changed by gaph..@gmail.com

  • status changed from assigned to closed.
  • resolution set to fixed.

(In [2398]) Import gaphas.picklers in demo app. Fixed #130

(in reply to: ↑ 3 ) 09/19/08 13:04:09 changed by anonymous

Replying to gaph..@gmail.com:

(In [2398]) Import gaphas.picklers in demo app. Fixed #130

Wow, good performance! I'm confirming that now (un)pickling actually does work. Very nice. Thanks, *t


Add/Change #130 (pickle in demo.py doesn't work)




Action