57 with WithSession(self.engine, self.autocommit) as session: |
57 with WithSession(self.engine, self.autocommit) as session: |
58 al = ab + (session,) + ae |
58 al = ab + (session,) + ae |
59 return func(*al, **kw) |
59 return func(*al, **kw) |
60 |
60 |
61 caller=func |
61 caller=func |
62 argspec = inspect.getargspec(caller) |
62 argspec = inspect.getfullargspec(caller) |
63 args =[i for i in argspec.args if i != "session" ] |
63 args =[i for i in argspec.args if i != "session" ] |
64 sargs=", ".join(args) |
64 sargs=", ".join(args) |
65 if sargs: |
65 if sargs: |
66 sargs+=", session" |
66 sargs+=", session" |
67 else: |
67 else: |
68 sargs="session" |
68 sargs="session" |
69 defaults = argspec.defaults |
69 defaults = argspec.defaults |
70 if not defaults: |
70 if not defaults: |
71 defaults = (None,) |
71 defaults = (None,) |
72 else: |
72 else: |
73 defaults += (None,) |
73 defaults += (None,) |
74 evaldict = caller.func_globals.copy() |
74 evaldict = caller.__globals__.copy() |
75 evaldict['_call_'] = func |
75 evaldict['_call_'] = func |
76 evaldict['decorator'] = wrapper |
76 evaldict['decorator'] = wrapper |
77 wrap = FunctionMaker.create( |
77 wrap = FunctionMaker.create( |
78 '%s(%s)' % (caller.__name__, sargs), |
78 '%s(%s)' % (caller.__name__, sargs), |
79 'return decorator(_call_, %s)' % sargs, |
79 'return decorator(_call_, %s)' % sargs, |