Exemple #1
0
    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()
Exemple #2
0
    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()