Ejemplo n.º 1
0
        def method_returning_dict(db: Any, *args: Any, **kwargs: Any) -> Any:
            assert (returns is not None)  # mypy bug
            with get_cursor(db) as cur:
                prepared_args = prepare_args_as_dict(func_def, args, kwargs)
                cur.execute(hook(query.text, prepared_args), prepared_args)
                names = [desc[0] for desc in cur.description]

                if isinstance(returns.outer_dict_by, int):
                    keyidx = returns.outer_dict_by
                else:
                    try:
                        keyidx = names.index(returns.outer_dict_by)
                    except ValueError:
                        raise KeyError(
                            f'key column {returns.outer_dict_by} not found')

                if keyidx >= len(names):
                    raise IndexError(
                        f'key column index {keyidx} is out of range')

                if returns.remove_key_column:
                    trimmed_names = names[0:keyidx] + names[keyidx + 1:]
                    process_row = generate_row_processor(
                        returns.inner_format, trimmed_names)
                    return {
                        row[keyidx]:
                        process_row(row[0:keyidx] + row[keyidx + 1:])
                        for row in cur
                    }
                else:
                    process_row = generate_row_processor(
                        returns.inner_format, names)
                    return {row[keyidx]: process_row(row) for row in cur}
Ejemplo n.º 2
0
 async def method_returning_single(db: Any, *args: Any, **kwargs: Any) -> Any:
     assert(returns is not None)  # mypy bug
     async with get_cursor(db) as cur:
         prepared_args = prepare_args_as_dict(func_def, args, kwargs)
         await cur.execute(hook(query.text, prepared_args), prepared_args)
         names = [desc[0] for desc in cur.description]
         process_row = generate_row_processor(returns.inner_format, names)
         return process_row(await cur.fetchone())
Ejemplo n.º 3
0
        async def method_returning_none(db: Any, *args: Any,
                                        **kwargs: Any) -> None:
            prepared_args = prepare_args_as_dict(func_def, args, kwargs)
            prepared_args_list = prepare_args_as_list(func_def, args, kwargs)

            async with _get_connection(db) as conn:
                await conn.execute(hook(query.text, prepared_args),
                                   *prepared_args_list)
Ejemplo n.º 4
0
def test_dict_as_dict(func_def):
    assert prepare_args_as_dict(func_def, ['a', 2, 'cc', 44], {}) == {
        'a': 'a',
        'b': 2,
        'c': 'cc',
        'd': 44,
        'e': 'e',
        'f': 6
    }
Ejemplo n.º 5
0
 def method_returning_list(db: Any, *args: Any,
                           **kwargs: Any) -> List[Any]:
     assert (returns is not None)  # mypy bug
     with get_cursor(db) as cur:
         prepared_args = prepare_args_as_dict(func_def, args, kwargs)
         cur.execute(hook(query.text, prepared_args), prepared_args)
         names = [desc[0] for desc in cur.description]
         process_row = generate_row_processor(returns.inner_format,
                                              names)
         return [process_row(row) for row in cur]
Ejemplo n.º 6
0
        async def method_returning_single(db: Any, *args: Any,
                                          **kwargs: Any) -> Any:
            assert (returns is not None)  # mypy bug
            prepared_args = prepare_args_as_dict(func_def, args, kwargs)
            prepared_args_list = prepare_args_as_list(func_def, args, kwargs)
            process_row = _generate_row_processor(returns.inner_format)

            async with _get_connection(db) as conn:
                return process_row(await conn.fetchrow(
                    hook(query.text, prepared_args), *prepared_args_list))
Ejemplo n.º 7
0
        async def method_returning_iterator(
                db: Any, *args: Any, **kwargs: Any) -> AsyncIterator[Any]:
            assert (returns is not None)  # mypy bug
            prepared_args = prepare_args_as_dict(func_def, args, kwargs)
            prepared_args_list = prepare_args_as_list(func_def, args, kwargs)
            process_row = _generate_row_processor(returns.inner_format)

            async with _get_connection(db, True) as conn:
                async for row in conn.cursor(hook(query.text, prepared_args),
                                             *prepared_args_list):
                    yield process_row(row)
Ejemplo n.º 8
0
        async def method_returning_dict(db: Any, *args: Any,
                                        **kwargs: Any) -> Any:
            assert (returns is not None)  # mypy bug
            assert (returns.outer_dict_by is not None)
            prepared_args = prepare_args_as_dict(func_def, args, kwargs)
            prepared_args_list = prepare_args_as_list(func_def, args, kwargs)

            if not returns.remove_key_column:
                process_row = _generate_row_processor(returns.inner_format)
            elif isinstance(returns.outer_dict_by, int):
                process_row = _generate_row_processor_removing_index(
                    returns.inner_format, returns.outer_dict_by)
            else:
                process_row = _generate_row_processor_removing_name(
                    returns.inner_format, returns.outer_dict_by)

            async with _get_connection(db) as conn:
                return {
                    row[returns.outer_dict_by]: process_row(row)
                    for row in await conn.fetch(
                        hook(query.text, prepared_args), *prepared_args_list)
                }
Ejemplo n.º 9
0
 def method_returning_none(db: Any, *args: Any, **kwargs: Any) -> None:
     with get_cursor(db) as cur:
         prepared_args = prepare_args_as_dict(func_def, args, kwargs)
         cur.execute(hook(query.text, prepared_args), prepared_args)