# 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
)
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):
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
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()