Index: registry.py
===================================================================
--- registry.py	(revision 6094)
+++ registry.py	(working copy)
@@ -98,6 +98,7 @@
 __all__ = ['StackedObjectProxy', 'RegistryManager', 'StackedObjectRestorer',
            'restorer']
 
+Empty = object()
 class StackedObjectProxy(object):
     """Track an object instance internally using a stack
     
@@ -110,7 +111,7 @@
     objects can be removed with _pop_object. 
     
     """
-    def __init__(self, default=None, name="Default"):
+    def __init__(self, default=Empty, name="Default"):
         """Create a new StackedObjectProxy
         
         If a default is given, its used in every thread if no other object
@@ -119,7 +120,7 @@
         """
         self.__dict__['____name__'] = name
         self.__dict__['____local__'] = threadinglocal.local()
-        if default:
+        if default is not Empty:
             self.__dict__['____default_object__'] = default
     
     def __getattr__(self, attr):
@@ -156,7 +157,10 @@
     
     def __contains__(self, key):
         return key in self._current_obj()
-    
+
+    def __nonzero__(self):
+        return self._current_obj() and True or False
+
     def current_obj(self):
         """
         Deprecated (Aug 15 2006); moved to _current_obj.
@@ -176,8 +180,8 @@
         if objects:
             return objects[-1]
         else:
-            object = self.__dict__.get('____default_object__')
-            if object:
+            object = self.__dict__.get('____default_object__', Empty)
+            if object is not Empty:
                 return object
             else:
                 raise TypeError(
