Grouper use

Hi everybody,

I try to play with "sharex" feature. Then, I have been guided to the
class "Grouper" of module cbook:

http://matplotlib.sourceforge.net/api/cbook_api.html

So I tried the following example:

···

##############################
from matplotlib.cbook import *

g = Grouper()
g.join('a', 'b')
##############################

I obtain:

Traceback (most recent call last):
  File "test_grouper.py", line 4, in <module>
    g.join('a', 'b')
  File ".../matplotlib/cbook.py", line 1118, in join
    set_a = mapping.setdefault(ref(a), [ref(a)])
TypeError: cannot create weak reference to 'str' object

What is the problem?

Thanks in advance,

Julien

--
python -c "print ''.join([chr(154 - ord(c)) for c in '*9(9&(18%.\
9&1+,\'Z4(55l4('])"

"When a distinguished but elderly scientist states that something is
possible, he is almost certainly right. When he states that something is
impossible, he is very probably wrong." (first law of AC Clarke)

TP wrote:

Hi everybody,

I try to play with "sharex" feature. Then, I have been guided to the
class "Grouper" of module cbook:

http://matplotlib.sourceforge.net/api/cbook_api.html

So I tried the following example:

##############################
from matplotlib.cbook import *

g = Grouper()
g.join('a', 'b')
##############################

I obtain:

Traceback (most recent call last):
  File "test_grouper.py", line 4, in <module>
    g.join('a', 'b')
  File ".../matplotlib/cbook.py", line 1118, in join
    set_a = mapping.setdefault(ref(a), [ref(a)])
TypeError: cannot create weak reference to 'str' object

What is the problem?

Grouper is implemented using weak references, which are supported only for some types of objects, as described here:

Evidently the cbook Grouper docstring was written when the implementation was different, and did not use weakref. So, you have found a major bug in the docstring.

Eric

···

Thanks in advance,

Julien

Yes -- I'll update the docstring. The weakref support was added afterward during one of my many memory leak crusades :wink:

What were you attempting to do with the Grouper? You shouldn't have to use the class directly to use the sharex/sharey functionality -- it's only an implementation detail.

Mike

Eric Firing wrote:

···

TP wrote:
  

Hi everybody,

I try to play with "sharex" feature. Then, I have been guided to the
class "Grouper" of module cbook:

http://matplotlib.sourceforge.net/api/cbook_api.html

So I tried the following example:

##############################
from matplotlib.cbook import *

g = Grouper()
g.join('a', 'b')
##############################

I obtain:

Traceback (most recent call last):
  File "test_grouper.py", line 4, in <module>
    g.join('a', 'b')
  File ".../matplotlib/cbook.py", line 1118, in join
    set_a = mapping.setdefault(ref(a), [ref(a)])
TypeError: cannot create weak reference to 'str' object

What is the problem?
    
Grouper is implemented using weak references, which are supported only for some types of objects, as described here:
weakref — Weak references — Python 3.12.0 documentation

Evidently the cbook Grouper docstring was written when the implementation was different, and did not use weakref. So, you have found a major bug in the docstring.

Eric

Thanks in advance,

Julien

------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options
  
--
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA