summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-08-02 01:31:28 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-08-02 01:31:28 +0000
commit47eba75f35e86f865f7ebb177266fa6e525ac307 (patch)
tree8fec04c76507763571c48459fcc323ed7c41d773
parent11b294d1d2114ecf51453697e87f9c7ce8fedc38 (diff)
downloadsqlalchemy-47eba75f35e86f865f7ebb177266fa6e525ac307.tar.gz
replaced metaclass/__new__ insanity with a __call__()
-rw-r--r--lib/sqlalchemy/orm/sessionmaker.py28
1 files changed, 13 insertions, 15 deletions
diff --git a/lib/sqlalchemy/orm/sessionmaker.py b/lib/sqlalchemy/orm/sessionmaker.py
index adf80f9a7..13e28fd1a 100644
--- a/lib/sqlalchemy/orm/sessionmaker.py
+++ b/lib/sqlalchemy/orm/sessionmaker.py
@@ -66,20 +66,8 @@ def sessionmaker(autoflush, transactional, bind=None, scope=None, enhance_classe
default_scope=scope
- class ScopedProps(type):
- pass
- def makeprop(name):
- def set(self, attr):
- setattr(registry(), name, attr)
- def get(self):
- return getattr(registry(), name)
- return property(get, set)
- for prop in ('bind', 'dirty', 'identity_map'):
- setattr(ScopedProps, prop, makeprop(prop))
-
class ScopedSess(Sess):
- __metaclass__ = ScopedProps
- def __new__(cls, **kwargs):
+ def __call__(self, **kwargs):
if len(kwargs):
scope = kwargs.pop('scope', default_scope)
if scope is not None:
@@ -93,14 +81,24 @@ def sessionmaker(autoflush, transactional, bind=None, scope=None, enhance_classe
return Sess(**kwargs)
else:
return registry()
+
def instrument(name):
def do(cls, *args, **kwargs):
return getattr(registry(), name)(*args, **kwargs)
- return classmethod(do)
+ return do
for meth in ('get', 'close', 'save', 'commit', 'update', 'flush', 'query', 'delete'):
setattr(ScopedSess, meth, instrument(meth))
- return ScopedSess
+ def makeprop(name):
+ def set(self, attr):
+ setattr(registry(), name, attr)
+ def get(self):
+ return getattr(registry(), name)
+ return property(get, set)
+ for prop in ('bind', 'dirty', 'identity_map'):
+ setattr(ScopedSess, prop, makeprop(prop))
+
+ return ScopedSess()
elif scope is not None:
raise exceptions.ArgumentError("Unknown scope '%s'" % scope)
else: