def run(self): self.set_overridden( { 'psycopg2': { 'connect': { 'returns': 'psycopg2.extensions.connection' } }, 'psycopg2.extensions.connection': { 'cursor': { 'returns': 'psycopg2.extensions.cursor' } }, } ) cursor_path = 'psycopg2.extensions.cursor.%s' def func_name(e): return e.split('(')[0] def func_args(e): return re.findall('[^(,)]+', e)[1:] wrapped = { cursor_path % func_name(m): default_context_wrapper_factory('data.psycopg2.%s.' % func_name(m), mapping={a: 1 for a in func_args(m)}, state='data.postgres', disable_if='model') for m in 'callproc(resource),execute(resource),executemany(resource),fetchone,fetchmany,fetchall,' 'nextset'.split(',') } wrapped['psycopg2.extensions.connection.cursor'] = wrap_returned_instance_decorator( 'psycopg2.extensions.cursor', wrapped ) self.set_wrapped( wrapped ) super(Psycopg2Instrumentor, self).run()
def run(self): self.set_overridden( { 'sqlite3': { 'connect': { 'returns': 'sqlite3.Connection' } }, 'sqlite3.Connection': { 'cursor': { 'returns': 'sqlite3.Cursor' } } } ) cursor_path = 'sqlite3.Cursor.%s' def func_name(e): return e.split('(')[0] def func_args(e): return re.findall('[^(,)]+', e)[1:] wrapped = {cursor_path % func_name(m): default_context_wrapper_factory('data.sqlite.%s.' % func_name(m), mapping={a: 1 for a in func_args(m)}, state='data.sqlite', disable_if='model') for m in 'execute(resource),executemany(resource),fetchone,fetchmany,fetchall'.split(',')} wrapped['sqlite3.Connection.cursor'] = wrap_returned_instance_decorator( 'sqlite3.Cursor', wrapped ) self.set_wrapped( wrapped ) super(SqliteInstrumentor, self).run()