]> granicus.if.org Git - python/commit
Make weak references subclassable:
authorFred Drake <fdrake@acm.org>
Fri, 2 Jul 2004 18:57:45 +0000 (18:57 +0000)
committerFred Drake <fdrake@acm.org>
Fri, 2 Jul 2004 18:57:45 +0000 (18:57 +0000)
commit0a4dd390bf653128de8bc2e99da64967c8cdf86e
tree9c3b3989bc85eda1277464459cda1eae87f5d7a5
parent813914049de32303ce31cae11abe9c5a49a08a4e
Make weak references subclassable:

- weakref.ref and weakref.ReferenceType will become aliases for each
  other

- weakref.ref will be a modern, new-style class with proper __new__
  and __init__ methods

- weakref.WeakValueDictionary will have a lighter memory footprint,
  using a new weakref.ref subclass to associate the key with the
  value, allowing us to have only a single object of overhead for each
  dictionary entry (currently, there are 3 objects of overhead per
  entry: a weakref to the value, a weakref to the dictionary, and a
  function object used as a weakref callback; the weakref to the
  dictionary could be avoided without this change)

- a new macro, PyWeakref_CheckRefExact(), will be added

- PyWeakref_CheckRef() will check for subclasses of weakref.ref

This closes SF patch #983019.
Doc/lib/libweakref.tex
Include/weakrefobject.h
Lib/test/test_weakref.py
Lib/weakref.py
Misc/NEWS
Modules/_weakref.c
Objects/object.c
Objects/weakrefobject.c