def __call__(self, fn):
        argspec = inspect.getargspec(fn)
        if argspec.args[0] == 'self' or argspec.args[0] == 'cls':
            context_index = 1
        else:
            context_index = 0

        @functools.wraps(fn)
        def wrapper(*args, **kwargs):
            context = args[context_index]

            with self._transaction_scope(context):
                return fn(*args, **kwargs)

        return wrapper
Deserialize ``fp`` (a ``.read()``-supporting file-like object containing
dataset/ETHPy150Open openstack/oslo.db/oslo_db/sqlalchemy/enginefacade.py/_TransactionContextManager.__call__--crossover with--dataset/ETHPy150Open AppScale/appscale/AppServer/lib/simplejson/simplejson/__init__.py/load