]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Identity map .discard() uses dict.pop(,None)
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 9 Sep 2011 20:11:13 +0000 (16:11 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 9 Sep 2011 20:11:13 +0000 (16:11 -0400)
    internally instead of "del" to avoid KeyError/warning
    during a non-determinate gc teardown [ticket:2267]

CHANGES
lib/sqlalchemy/orm/identity.py

diff --git a/CHANGES b/CHANGES
index 8e0398d89a6d33a253031db187d02c011a080449..11f11734723702b61b1b989e70e2c16f33496565 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -15,6 +15,10 @@ CHANGES
      when the Session.is_active is True.
      [ticket:2241]
 
+  - Identity map .discard() uses dict.pop(,None) 
+    internally instead of "del" to avoid KeyError/warning 
+    during a non-determinate gc teardown [ticket:2267]
+
   - Fixed regression in new composite rewrite where
     deferred=True option failed due to missing
     import [ticket:2253]
index 8f000e419c13215649b2156f41c6d7db5227b065..136bb7f014d0a6c061985af666c8d7266c291122 100644 (file)
@@ -193,7 +193,7 @@ class WeakInstanceDict(IdentityMap):
     def discard(self, state):
         st = dict.get(self, state.key, None)
         if st is state:
-            dict.__delitem__(self, state.key)
+            dict.pop(self, state.key, None)
             self._manage_removed_state(state)
 
     def prune(self):
@@ -234,7 +234,7 @@ class StrongInstanceDict(IdentityMap):
         if obj is not None:
             st = attributes.instance_state(obj)
             if st is state:
-                dict.__delitem__(self, state.key)
+                dict.pop(self, state.key, None)
                 self._manage_removed_state(state)
 
     def prune(self):