Commit Graph

16 Commits

Author SHA1 Message Date
Michael W. Hudson
4437f2c301 backport gvanrossum's checkin of
revision 1.17 of weakref.py

SF patch 564549 (Erik Andersén).

The WeakKeyDictionary constructor didn't work when a dict arg was
given.  Fixed by moving a line.  Also adding a unit test.

Bugfix candidate.
2002-08-23 16:29:01 +00:00
Fred Drake
3bae7ddf8e WeakKeyDictionary.has_key(): If the key being tested is not weakly
referencable (weakref.ref() raises TypeError), return 0 instead of
propogating the TypeError.
This closes SF bug #478536; bugfix candidate.
2001-11-06 16:36:53 +00:00
Fred Drake
e029242d5c ReferenceError is now built-in, so pick it up from the right place.
It still needs to be here to preserve the API.
2001-10-05 21:54:09 +00:00
Fred Drake
746fe0fae5 Clean up circular references in the Weak*Dictionary classes; this avoids
depending on the cycle detector code in the library implementation.
This is a *slightly* different patch than SF patch #417795, but takes
the same approach.  (This version avoids calling the __len__() method of
the dict in the remove() functions.)
This closes SF patch #417795.
2001-09-28 19:01:26 +00:00
Fred Drake
b663a2ccbd Add __delitem__() support for WeakKeyDictionary.
This closes SF bug #458860.
2001-09-06 14:51:01 +00:00
Fred Drake
4fd06e0170 Make sure that WeakValueDictionary[] raises KeyError instead of TypeError
for keys that are not in the dictionary.
2001-08-03 04:11:27 +00:00
Fred Drake
101209d44c Added iterator support to the Weak*Dictionary classes. 2001-05-02 05:43:09 +00:00
Fred Drake
bd7f818c50 Weak*Dictionary: Added docstrings to the classes.
Weak*Dictionary.update():  No longer create a temporary list to hold the
    things that will be stuffed into the underlying dictionary.  This had
    been done so that if any of the objects used as the weakly-held value
    was not weakly-referencable, no updates would take place (TypeError
    would be raised).  With this change, TypeError will still be raised
    but a partial update could occur.  This is more like other .update()
    implementations.

Thoughout, use of the name "ref" as a local variable has been removed.  The
original use of the name occurred when the function to create a weak
reference was called "new"; the overloaded use of the name could be
confusing for someone reading the code.  "ref" used as a variable name
has been replaced with "wr" (for 'weak reference').
2001-04-19 16:26:06 +00:00
Fred Drake
1d9e4b7de3 Weak*Dictionary.update(): Fix calls to [].append() to only have one
parameter.

Weak*Dictionary.get():  Make the second parameter optional.

WeakKeyDictionary.has_key(), .keys():  Make these actually work!
2001-04-16 17:34:48 +00:00
Fred Drake
9a9d219f07 mapping(): Remove this function since it does not add anything to the API. 2001-04-10 19:11:23 +00:00
Skip Montanaro
40fc16059f final round of __all__ lists (I hope) - skipped urllib2 because Moshe may be
giving it a slight facelift
2001-03-01 04:27:19 +00:00
Fred Drake
9d2c85dec7 Change WeakDictionary to WeakValueDictionary in a couple more places.
WeakValueDictionary.copy(),
WeakKeyDictionary.copy():  Actually return the copy!
2001-03-01 03:06:03 +00:00
Martin v. Löwis
5e1633365d Patch #403985: Add support for weak-keyed dictionaries 2001-02-27 18:36:56 +00:00
Fred Drake
0399bd8ce2 Ouch! I need a better test suite for this. ;-( 2001-02-02 19:28:35 +00:00
Fred Drake
312a5dc539 WeakDictionary.items(): Do not allow (key,ref) pairs to leak out for
dead references.
2001-02-02 15:13:24 +00:00
Fred Drake
41deb1efc2 PEP 205, Weak References -- initial checkin. 2001-02-01 05:27:45 +00:00