#14159: Don't install callbacks on values of TripleDict, MonoDict
------------------------------+---------------------------------------------
       Reporter:  nbruin      |         Owner:  tbd                             
   
           Type:  defect      |        Status:  needs_work                      
   
       Priority:  major       |     Milestone:  sage-5.8                        
   
      Component:  memleak     |    Resolution:                                  
   
       Keywords:              |   Work issues:  Make part the coverage script 
happy
Report Upstream:  N/A         |     Reviewers:  Nils Bruin                      
   
        Authors:  Simon King  |     Merged in:                                  
   
   Dependencies:  #13387      |      Stopgaps:                                  
   
------------------------------+---------------------------------------------

Comment (by SimonKing):

 What I suggest is the following:
 {{{
         sage: from sage.structure.coerce_dict import MonoDict
         sage: import gc
         sage: M = MonoDict(13)
         sage: MW = MonoDict(13, weak_values=True)
         sage: class Foo: pass
         sage: a = Foo()
         sage: b = Foo()
         sage: k = 1
         sage: M[k] = a
         sage: MW[k] = b
         sage: M[k] is a
         True
         sage: MW[k] is b
         True
         sage: k in M
         True
         sage: k in MW
         True
         sage: import gc
         sage: del a,b
         sage: _ = gc.collect()
         sage: k in M
         True
         sage: k in MW
         False
         sage: len(MW)
         0
         sage: len(M)
         1
         sage: MW[k] = int(5)
         sage: MW[k]
         5
 }}}

 Hence, we have the option to use weak values, but even in that case we
 would accept non-weakrefable values, too.

 And, similarly, for `TripleDict`, with using `weak_values` for the homset
 cache.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14159#comment:25>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to