On Tuesday, January 8, 2019 at 6:21:39 AM UTC-8, Salvatore Stella wrote: > > Dear all, > sorry for disappearing on this. I am a little confused: if both parent and > element refer to the same cache how is it possible that clearing one does > not > clear the other? > S. > > If you have D={1:1} A=D B=D
You have two references to the same dictionary. Executing A.clear() will lead to B pointing to an empty dictionary (the same one A is pointing to). If however you do A={} then A will be pointing to a fresh empty dict and B will still be pointing to the original dictionary, which is not empty. Is that perhaps how you were trying to clear the cache? As far as I can see, calling clear on the one reference of the cache also ensures that the other reference points to an empty cache. -- Incidentally, I found an error in sage/misc/cachefunc.pyx:3286. try: P = inst.parent() return P.__dict__.setdefault(self._cache_name, default) except AttributeError: pass if not hasattr(P,'__cached_methods'): If "P=inst.parent()" fails with an AttributeError then this gets silence and the "hasattr" fails due to P not having been assigned. I think the initialization of P should be moved out of the try block. It's the lookup of P.__dict__ that should be silenced, not the initialization of P. -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.