]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
merged scopefunc patch from r6420 of 0.5 branch
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 20 Oct 2009 17:33:33 +0000 (17:33 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 20 Oct 2009 17:33:33 +0000 (17:33 +0000)
lib/sqlalchemy/orm/scoping.py
lib/sqlalchemy/util.py

index f00b30849d0a7bce96ee440e539265d781af4e92..a8ed9c9108d4a17368903deae42ec8657b0548e8 100644 (file)
@@ -5,7 +5,8 @@
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
 
 import sqlalchemy.exceptions as sa_exc
-from sqlalchemy.util import ScopedRegistry, to_list, get_cls_kwargs, deprecated
+from sqlalchemy.util import ScopedRegistry, ThreadLocalRegistry, \
+                            to_list, get_cls_kwargs, deprecated
 from sqlalchemy.orm import (
     EXT_CONTINUE, MapperExtension, class_mapper, object_session
     )
@@ -29,7 +30,10 @@ class ScopedSession(object):
 
     def __init__(self, session_factory, scopefunc=None):
         self.session_factory = session_factory
-        self.registry = ScopedRegistry(session_factory, scopefunc)
+        if scopefunc:
+            self.registry = ScopedRegistry(session_factory, scopefunc)
+        else:
+            self.registry = ThreadLocalRegistry(session_factory)
         self.extension = _ScopedExt(self)
 
     def __call__(self, **kwargs):
index 8f0b5583dd758af8b51d650cde1f6f45e01b5ef4..da426cbd80bf7bf1ff29755efd92992a3272febb 100644 (file)
@@ -1180,14 +1180,7 @@ class ScopedRegistry(object):
 
     scopefunc
       a callable that will return a key to store/retrieve an object.
-      If None, ScopedRegistry uses a threading.local object instead.
-
     """
-    def __new__(cls, createfunc, scopefunc=None):
-        if not scopefunc:
-            return object.__new__(_TLocalRegistry)
-        else:
-            return object.__new__(cls)
 
     def __init__(self, createfunc, scopefunc):
         self.createfunc = createfunc
@@ -1213,8 +1206,8 @@ class ScopedRegistry(object):
         except KeyError:
             pass
 
-class _TLocalRegistry(ScopedRegistry):
-    def __init__(self, createfunc, scopefunc=None):
+class ThreadLocalRegistry(ScopedRegistry):
+    def __init__(self, createfunc):
         self.createfunc = createfunc
         self.registry = threading.local()