Skip to content

Bump sqlalchemy from 1.3.24 to 2.0.47#1065

Closed
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/pip/sqlalchemy-2.0.47
Closed

Bump sqlalchemy from 1.3.24 to 2.0.47#1065
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/pip/sqlalchemy-2.0.47

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Feb 25, 2026

Bumps sqlalchemy from 1.3.24 to 2.0.47.

Release notes

Sourced from sqlalchemy's releases.

2.0.47

Released: February 24, 2026

orm

  • [orm] [bug] Fixed issue when using ORM mappings with Python 3.14's PEP 649 feature that no longer requires "future annotations", where the ORM's introspection of the __init__ method of mapped classes would fail if non-present identifiers in annotations were present. The vendored getfullargspec() method has been amended to use Format.FORWARDREF under Python 3.14 to prevent resolution of names that aren't present.

    References: #13104

engine

  • [engine] [usecase] The connection object returned by _engine.Engine.raw_connection() now supports the context manager protocol, automatically returning the connection to the pool when exiting the context.

    References: #13116

postgresql

  • [postgresql] [bug] Fixed an issue in the PostgreSQL dialect where foreign key constraint reflection would incorrectly swap or fail to capture onupdate and ondelete values when these clauses appeared in a different order than expected in the constraint definition. This issue primarily affected PostgreSQL-compatible databases such as CockroachDB, which may return ON DELETE before ON UPDATE in the constraint definition string. The reflection logic now correctly parses both clauses regardless of their ordering.

    References: #13105

  • [postgresql] [bug] Fixed issue in the engine_insertmanyvalues feature where using PostgreSQL's ON CONFLICT clause with _dml.Insert.returning.sort_by_parameter_order enabled would generate invalid SQL when the insert used an implicit sentinel (server-side autoincrement primary key). The generated SQL would incorrectly declare a sentinel counter column in the imp_sen table alias without providing corresponding values in the VALUES clause, leading to a ProgrammingError indicating column count mismatch. The fix allows batch execution mode when embed_values_counter is active, as the embedded counter provides the ordering capability needed even with upsert behaviors, rather than unnecessarily downgrading to row-at-a-time execution.

... (truncated)

Commits

Dependabot compatibility score

You can trigger a rebase of this PR by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.24 to 2.0.47.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-version: 2.0.47
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file python Pull requests that update Python code labels Feb 25, 2026
@codecov
Copy link

codecov bot commented Feb 25, 2026

❌ 45 Tests Failed:

Tests completed Failed Passed Skipped
72 45 27 1
View the top 3 failed test(s) by shortest run time
tests/test_async_iter.py::test_async_iter_over_sa_result[asyncio-unix-mariadb11.4]
Stack Traces | 0.008s run time
mysql_params = {'db': 'test_pymysql', 'local_infile': True, 'password': 'rootpw', 'unix_socket': '/tmp/run-mariadb-11.4/mysql.sock', ...}
table = None
loop = <_UnixSelectorEventLoop running=False closed=False debug=False>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_async_iter_over_sa_result#x1B[39;49;00m(mysql_params, table, loop):#x1B[90m#x1B[39;49;00m
        ret = []#x1B[90m#x1B[39;49;00m
        engine = #x1B[94mawait#x1B[39;49;00m sa.create_engine(**mysql_params, loop=loop)#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m engine.acquire()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94masync#x1B[39;49;00m #x1B[94mfor#x1B[39;49;00m i #x1B[95min#x1B[39;49;00m (#x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())):#x1B[90m#x1B[39;49;00m
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_async_iter.py#x1B[0m:61: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0db9ed0>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0db8f90>
metadata = (('id', 9, None, 9, 9, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_double_close[asyncio-unix-mariadb11.4]
Stack Traces | 0.023s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e54900>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_double_close#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mSELECT 1#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:295: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f106ae50>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f1068190>
metadata = (('1', 3, None, 1, 1, 0, ...),)

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_execute_sa_insert_with_dict[asyncio-unix-mariadb11.4]
Stack Traces | 0.023s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e55b20>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_execute_sa_insert_with_dict#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert(), {#x1B[33m"#x1B[39;49;00m#x1B[33mid#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[94m2#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mname#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[33m"#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:87: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0ce7e50>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0ce6850>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_execute_text_select[asyncio-unix-mariadb11.4]
Stack Traces | 0.023s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e56520>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_execute_text_select#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mSELECT * FROM sa_tbl;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:41: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0c7f810>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0c7c150>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_row_proxy[asyncio-unix-mariadb11.4]
Stack Traces | 0.023s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e55760>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_row_proxy#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:150: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0c61250>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0c61350>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_execute_sa_insert_named_params[asyncio-unix-mariadb11.4]
Stack Traces | 0.024s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e55da0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_execute_sa_insert_named_params#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert(), #x1B[96mid#x1B[39;49;00m=#x1B[94m2#x1B[39;49;00m, name=#x1B[33m"#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0dc7d10>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0dc7f90>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_fetchmany_close_after_last_read[asyncio-unix-mariadb11.4]
Stack Traces | 0.024s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0bd96c0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_fetchmany_close_after_last_read#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:431: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0d54350>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0d57810>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_fetchmany_closed[asyncio-unix-mariadb11.4]
Stack Traces | 0.024s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0bd8ae0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_fetchmany_closed#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:402: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0ec95d0>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0ecae10>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_fetchone_closed[asyncio-unix-mariadb11.4]
Stack Traces | 0.024s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e54220>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_fetchone_closed#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:357: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f10bdf90>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f10bfe50>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_raw_insert[asyncio-unix-mariadb11.4]
Stack Traces | 0.024s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e54b80>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_raw_insert#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO sa_tbl (name) VALUES (#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mthird#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:184: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f1001c50>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f1003a10>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_async_iter[asyncio-unix-mariadb11.4]
Stack Traces | 0.025s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0bd96c0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_async_iter#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m"#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        ret = []#x1B[90m#x1B[39;49;00m
>       #x1B[94masync#x1B[39;49;00m #x1B[94mfor#x1B[39;49;00m row #x1B[95min#x1B[39;49;00m conn.execute(tbl.select()):#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:466: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/utils.py#x1B[0m:104: in __anext__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._obj = #x1B[94mawait#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._coro#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0ddbad0>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0dd8b50>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_execute_sa_insert_with_tuple[asyncio-unix-mariadb11.4]
Stack Traces | 0.025s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e560c0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_execute_sa_insert_with_tuple#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert(), (#x1B[94m2#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:99: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0cbcf10>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0cbcf90>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_fetchall_closed[asyncio-unix-mariadb11.4]
Stack Traces | 0.025s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e55b20>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_fetchall_closed#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:338: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0dda650>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0dda510>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_raw_insert_with_named_params[asyncio-unix-mariadb11.4]
Stack Traces | 0.025s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e54360>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_raw_insert_with_named_params#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        res = #x1B[94mawait#x1B[39;49;00m conn.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO sa_tbl (id, name) VALUES (#x1B[39;49;00m#x1B[33m%(id)s#x1B[39;49;00m#x1B[33m, #x1B[39;49;00m#x1B[33m%(name)s#x1B[39;49;00m#x1B[33m)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[96mid#x1B[39;49;00m=#x1B[94m2#x1B[39;49;00m, name=#x1B[33m'#x1B[39;49;00m#x1B[33mthird#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:232: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0d61010>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0d62190>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_raw_select_with_wildcard[asyncio-unix-mariadb11.4]
Stack Traces | 0.025s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e54a40>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_raw_select_with_wildcard#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m conn.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m'#x1B[39;49;00m#x1B[33mSELECT * FROM sa_tbl WHERE name LIKE #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m%#x1B[39;49;00m#x1B[33mtest#x1B[39;49;00m#x1B[33m%#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:275: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0e64ed0>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0e646d0>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_scalar_None[asyncio-unix-mariadb11.4]
Stack Traces | 0.025s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e547c0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_scalar_None#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.delete())#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.scalar(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:141: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:187: in scalar
    #x1B[0mres = #x1B[94mawait#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.execute(query, *multiparams, **params)#x1B[90m#x1B[39;49;00m
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f11640d0>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f11672d0>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_types.py::test_values[asyncio-unix-mariadb11.4]
Stack Traces | 0.025s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0ca0400>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_values#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(#x1B[90m#x1B[39;49;00m
            val=UserDefinedEnum.Value1)#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
>       result = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select().where(#x1B[90m#x1B[39;49;00m
            tbl.c.val == UserDefinedEnum.Value1)#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_types.py#x1B[0m:69: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0c62710>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0c61750>
metadata = (('id', 8, None, 20, 20, 0, ...), ('val', 8, None, 20, 20, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_execute_sa_insert_positional_params[asyncio-unix-mariadb11.4]
Stack Traces | 0.026s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e560c0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_execute_sa_insert_positional_params#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert(), #x1B[94m2#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:123: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0e65f90>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0e643d0>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_fetchall[asyncio-unix-mariadb11.4]
Stack Traces | 0.026s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0bd8860>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_fetchall#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:325: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0efcd10>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0efc450>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_raw_insert_with_params[asyncio-unix-mariadb11.4]
Stack Traces | 0.026s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e54040>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_raw_insert_with_params#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        res = #x1B[94mawait#x1B[39;49;00m conn.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO sa_tbl (id, name) VALUES (#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m, #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[94m2#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mthird#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:200: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0e34310>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0e35e90>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_scalar[asyncio-unix-mariadb11.4]
Stack Traces | 0.026s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e54fe0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_scalar#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:133: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f12ed710; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f12ed710; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f12ed710; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f12ed710; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f12ed710; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f12ed710; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f12ed710; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_connection.py::test_execute_sa_select[asyncio-unix-mariadb11.4]
Stack Traces | 0.027s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f11b6ca0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_execute_sa_select#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:62: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0d6ffd0>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0d6f990>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_fetchmany_with_size[asyncio-unix-mariadb11.4]
Stack Traces | 0.027s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0bd8f40>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_fetchmany_with_size#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:389: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0e34790>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0e34550>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_fetchmany_with_size_closed[asyncio-unix-mariadb11.4]
Stack Traces | 0.027s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0bd9a80>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_fetchmany_with_size_closed#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:413: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f1068110>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f106a7d0>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_raw_insert_with_params_dict[asyncio-unix-mariadb11.4]
Stack Traces | 0.027s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0e54e00>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_raw_insert_with_params_dict#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        res = #x1B[94mawait#x1B[39;49;00m conn.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO sa_tbl (id, name) VALUES (#x1B[39;49;00m#x1B[33m%(id)s#x1B[39;49;00m#x1B[33m, #x1B[39;49;00m#x1B[33m%(name)s#x1B[39;49;00m#x1B[33m)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            {#x1B[33m'#x1B[39;49;00m#x1B[33mid#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[94m2#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mname#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[33m'#x1B[39;49;00m#x1B[33mthird#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m})#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:216: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0beee50>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0befd90>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_connection.py::test_statement_in[asyncio-unix-mariadb11.4]
Stack Traces | 0.027s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0bd9a80>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_statement_in#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m"#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m"#x1B[39;49;00m#x1B[33mthird#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        stmt = tbl.select().where(tbl.c.id.in_([#x1B[94m1#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m]))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        ret = []#x1B[90m#x1B[39;49;00m
>       #x1B[94masync#x1B[39;49;00m #x1B[94mfor#x1B[39;49;00m row #x1B[95min#x1B[39;49;00m conn.execute(stmt):#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:480: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/utils.py#x1B[0m:104: in __anext__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._obj = #x1B[94mawait#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._coro#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:173: in _execute
    #x1B[0m#x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[96mstr#x1B[39;49;00m(compiled), post_processed_params)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11....../site-packages/aiomysql/cursors.py#x1B[0m:239: in execute
    #x1B[0m#x1B[94mawait#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._query(query)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11....../site-packages/aiomysql/cursors.py#x1B[0m:457: in _query
    #x1B[0m#x1B[94mawait#x1B[39;49;00m conn.query(q)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11............/site-packages/aiomysql/connection.py#x1B[0m:469: in query
    #x1B[0m#x1B[94mawait#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._read_query_result(unbuffered=unbuffered)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11............/site-packages/aiomysql/connection.py#x1B[0m:683: in _read_query_result
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result.read()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11............/site-packages/aiomysql/connection.py#x1B[0m:1164: in read
    #x1B[0mfirst_packet = #x1B[94mawait#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.connection._read_packet()#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11............/site-packages/aiomysql/connection.py#x1B[0m:652: in _read_packet
    #x1B[0mpacket.raise_for_error()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/pymysql/protocol.py#x1B[0m:219: in raise_for_error
    #x1B[0merr.raise_mysql_exception(#x1B[96mself#x1B[39;49;00m._data)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

data = b"\xff(\x04#42000You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '[POSTCOMPILE_id_1])' at line 3"

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mraise_mysql_exception#x1B[39;49;00m(data):#x1B[90m#x1B[39;49;00m
        errno = struct.unpack(#x1B[33m"#x1B[39;49;00m#x1B[33m<h#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, data[#x1B[94m1#x1B[39;49;00m:#x1B[94m3#x1B[39;49;00m])[#x1B[94m0#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
        #x1B[90m# https://dev.mysql..../mysql-server/latest/page_protocol_basic_err_packet.html#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Error packet has optional sqlstate that is 5 bytes and starts with '#'.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m data[#x1B[94m3#x1B[39;49;00m] == #x1B[94m0x23#x1B[39;49;00m:  #x1B[90m# '#'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[90m# sqlstate = data[4:9].decode()#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[90m# TODO: Append (sqlstate) in the error message. This will be come in next minor release.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            errval = data[#x1B[94m9#x1B[39;49;00m:].decode(#x1B[33m"#x1B[39;49;00m#x1B[33mutf-8#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mreplace#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            errval = data[#x1B[94m3#x1B[39;49;00m:].decode(#x1B[33m"#x1B[39;49;00m#x1B[33mutf-8#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mreplace#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        errorclass = error_map.get(errno)#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m errorclass #x1B[95mis#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            errorclass = InternalError #x1B[94mif#x1B[39;49;00m errno < #x1B[94m1000#x1B[39;49;00m #x1B[94melse#x1B[39;49;00m OperationalError#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m errorclass(errno, errval)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '[POSTCOMPILE_id_1])' at line 3")#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/pymysql/err.py#x1B[0m:150: ProgrammingError
tests/sa/test_sa_connection.py::test_create_table[asyncio-unix-mariadb11.4]
Stack Traces | 0.028s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0bd8180>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_create_table#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        res = #x1B[94mawait#x1B[39;49;00m conn.execute(DropTable(tbl))#x1B[90m#x1B[39;49;00m
        #x1B[94mwith#x1B[39;49;00m pytest.raises(sa.ResourceClosedError):#x1B[90m#x1B[39;49;00m
            #x1B[94mawait#x1B[39;49;00m res.fetchmany()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mwith#x1B[39;49;00m pytest.raises(aiomysql.ProgrammingError):#x1B[90m#x1B[39;49;00m
            #x1B[94mawait#x1B[39;49;00m conn.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mSELECT * FROM sa_tbl#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        res = #x1B[94mawait#x1B[39;49;00m conn.execute(CreateTable(tbl))#x1B[90m#x1B[39;49;00m
        #x1B[94mwith#x1B[39;49;00m pytest.raises(sa.ResourceClosedError):#x1B[90m#x1B[39;49;00m
            #x1B[94mawait#x1B[39;49;00m res.fetchmany()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mSELECT * FROM sa_tbl#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:456: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0d90a50>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0ce6c90>
metadata = (('id', 3, None, 11, 11, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_transaction.py::test_inner_transaction_rollback[asyncio-unix-mariadb11.4]
Stack Traces | 0.028s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0ca0cc0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_inner_transaction_rollback#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn)#x1B[90m#x1B[39;49;00m
        tr1 = #x1B[94mawait#x1B[39;49;00m conn.begin()#x1B[90m#x1B[39;49;00m
        tr2 = #x1B[94mawait#x1B[39;49;00m conn.begin()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33maaaa#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr2.rollback()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m tr1.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:242: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f1018e10; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f1018e10; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f1018e10; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f1018e10; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f1018e10; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f1018e10; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f1018e10; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_nested_transaction_commit[asyncio-unix-mariadb11.4]
Stack Traces | 0.028s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0ca09a0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_nested_transaction_commit#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn)#x1B[90m#x1B[39;49;00m
        tr1 = #x1B[94mawait#x1B[39;49;00m conn.begin_nested()#x1B[90m#x1B[39;49;00m
        tr2 = #x1B[94mawait#x1B[39;49;00m conn.begin_nested()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr1.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33maaaa#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr2.commit()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr1.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:280: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0d0b850; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d0b850; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0d0b850; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0d0b850; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d0b850; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0d0b850; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d0b850; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_root_transaction[asyncio-unix-mariadb11.4]
Stack Traces | 0.028s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0bdb420>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_root_transaction#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn1 = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn1)#x1B[90m#x1B[39;49;00m
        conn2 = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        tr = #x1B[94mawait#x1B[39;49;00m conn1.begin()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn1.execute(tbl.delete())#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res1 = #x1B[94mawait#x1B[39;49;00m conn2.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                  ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:94: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0dad5d0; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0dad5d0; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0dad5d0; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0dad5d0; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0dad5d0; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0dad5d0; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0dad5d0; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_without_transactions[asyncio-unix-mariadb11.4]
Stack Traces | 0.028s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0bdb7e0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_without_transactions#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn1 = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn1)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        conn2 = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
>       res1 = #x1B[94mawait#x1B[39;49;00m conn1.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                  ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:64: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0c45110; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c45110; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0c45110; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0c45110; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c45110; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0c45110; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c45110; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_nested_transaction_commit_twice[asyncio-unix-mariadb11.4]
Stack Traces | 0.029s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0ca0d60>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_nested_transaction_commit_twice#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn)#x1B[90m#x1B[39;49;00m
        tr1 = #x1B[94mawait#x1B[39;49;00m conn.begin_nested()#x1B[90m#x1B[39;49;00m
        tr2 = #x1B[94mawait#x1B[39;49;00m conn.begin_nested()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33maaaa#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr2.commit()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr1.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr2.commit()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr1.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:308: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0d6f590; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d6f590; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0d6f590; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0d6f590; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d6f590; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0d6f590; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d6f590; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_nested_transaction_rollback[asyncio-unix-mariadb11.4]
Stack Traces | 0.029s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0ca0220>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_nested_transaction_rollback#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn)#x1B[90m#x1B[39;49;00m
        tr1 = #x1B[94mawait#x1B[39;49;00m conn.begin_nested()#x1B[90m#x1B[39;49;00m
        tr2 = #x1B[94mawait#x1B[39;49;00m conn.begin_nested()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr1.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33maaaa#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr2.rollback()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr1.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:329: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0c63c10; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c63c10; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0c63c10; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0c63c10; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c63c10; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0c63c10; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c63c10; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_nested_transaction_rollback_twice[asyncio-unix-mariadb11.4]
Stack Traces | 0.029s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0ca0040>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_nested_transaction_rollback_twice#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn)#x1B[90m#x1B[39;49;00m
        tr1 = #x1B[94mawait#x1B[39;49;00m conn.begin_nested()#x1B[90m#x1B[39;49;00m
        tr2 = #x1B[94mawait#x1B[39;49;00m conn.begin_nested()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33maaaa#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr2.rollback()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr1.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr2.rollback()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr1.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr1.commit()#x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:358: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0a7bb50; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0a7bb50; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0a7bb50; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0a7bb50; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0a7bb50; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0a7bb50; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0a7bb50; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_rollback_on_connection_close[asyncio-unix-mariadb11.4]
Stack Traces | 0.029s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0ca02c0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_rollback_on_connection_close#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn1 = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn1)#x1B[90m#x1B[39;49;00m
        conn2 = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        tr = #x1B[94mawait#x1B[39;49;00m conn1.begin()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn1.execute(tbl.delete())#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res1 = #x1B[94mawait#x1B[39;49;00m conn2.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                  ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:160: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0c01fd0; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c01fd0; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0c01fd0; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0c01fd0; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c01fd0; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0c01fd0; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c01fd0; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_root_transaction_close[asyncio-unix-mariadb11.4]
Stack Traces | 0.029s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0ca0680>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_root_transaction_close#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn1 = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn1)#x1B[90m#x1B[39;49;00m
        conn2 = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        tr = #x1B[94mawait#x1B[39;49;00m conn1.begin()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn1.execute(tbl.delete())#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res1 = #x1B[94mawait#x1B[39;49;00m conn2.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                  ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:139: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0d2b7d0; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d2b7d0; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0d2b7d0; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0d2b7d0; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d2b7d0; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0d2b7d0; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d2b7d0; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_root_transaction_rollback[asyncio-unix-mariadb11.4]
Stack Traces | 0.029s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0bdb380>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_root_transaction_rollback#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn1 = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn1)#x1B[90m#x1B[39;49;00m
        conn2 = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        tr = #x1B[94mawait#x1B[39;49;00m conn1.begin()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn1.execute(tbl.delete())#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res1 = #x1B[94mawait#x1B[39;49;00m conn2.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                  ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:117: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0c9e610; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c9e610; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0c9e610; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0c9e610; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c9e610; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0c9e610; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0c9e610; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_transactions_sequence[asyncio-unix-mariadb11.4]
Stack Traces | 0.029s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0ca0ea0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_transactions_sequence#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.delete())#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m conn._transaction #x1B[95mis#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        tr1 = #x1B[94mawait#x1B[39;49;00m conn.begin()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr1 #x1B[95mis#x1B[39;49;00m conn._transaction#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33ma#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
>       res1 = #x1B[94mawait#x1B[39;49;00m conn.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                 ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:408: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0ce5550; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0ce5550; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0ce5550; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0ce5550; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0ce5550; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0ce5550; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0ce5550; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_transaction.py::test_twophase_transaction_commit[asyncio-unix-mariadb11.4]
Stack Traces | 0.029s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0ca0400>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_twophase_transaction_commit#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn)#x1B[90m#x1B[39;49;00m
        tr = #x1B[94mawait#x1B[39;49;00m conn.begin_twophase(#x1B[33m'#x1B[39;49;00m#x1B[33msa_twophase#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr.xid == #x1B[33m'#x1B[39;49;00m#x1B[33msa_twophase#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33maaaa#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr.prepare()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr.commit()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m tr.is_active#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:377: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f0d92890; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d92890; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f0d92890; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0d92890; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d92890; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f0d92890; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f0d92890; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_connection.py::test_fetchmany[asyncio-unix-mariadb11.4]
Stack Traces | 0.03s run time
sa_connect = <function sa_connect.<locals>.connect at 0x7fb1f0bd9120>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_fetchmany#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33msecond#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.select())#x1B[90m#x1B[39;49;00m
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_connection.py#x1B[0m:376: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0d3f4d0>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0d3c690>
metadata = (('id', 8, None, 20, 20, 0, ...), ('name', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_default.py::test_default_fields_edit[asyncio-unix-mariadb11.4]
Stack Traces | 0.031s run time
make_engine = <function make_engine.<locals>._make_engine at 0x7fb1f0bdab60>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_default_fields_edit#x1B[39;49;00m(make_engine):#x1B[90m#x1B[39;49;00m
        engine = #x1B[94mawait#x1B[39;49;00m make_engine()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(engine)#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m engine.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
            created_at = datetime.datetime.now()#x1B[90m#x1B[39;49;00m
            description = #x1B[33m'#x1B[39;49;00m#x1B[33mnew descr#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            enabled = #x1B[94mFalse#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            number = #x1B[94m111#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mawait#x1B[39;49;00m conn.execute(table.insert().values(#x1B[90m#x1B[39;49;00m
                description=description,#x1B[90m#x1B[39;49;00m
                enabled=enabled,#x1B[90m#x1B[39;49;00m
                created_at=created_at,#x1B[90m#x1B[39;49;00m
                number=number,#x1B[90m#x1B[39;49;00m
            ))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>           res = #x1B[94mawait#x1B[39;49;00m conn.execute(table.select())#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_default.py#x1B[0m:121: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f1167f10>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f1164210>
metadata = (('id', 3, None, 11, 11, 0, ...), ('string_length', 3, None, 11, 11, 0, ...), ('number', 3, None, 11, 11, 0, ...), ('description', 253, None, 1020, 1020, 0, ...), ('created_at', 12, None, 26, 26, 6, ...), ('enabled', 1, None, 4, 4, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_transaction.py::test_inner_transaction_close[asyncio-unix-mariadb11.4]
Stack Traces | 0.031s run time
sa_connect = <function sa_connect.<locals>._connect at 0x7fb1f0ca0720>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_inner_transaction_close#x1B[39;49;00m(sa_connect):#x1B[90m#x1B[39;49;00m
        conn = #x1B[94mawait#x1B[39;49;00m sa_connect()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(conn)#x1B[90m#x1B[39;49;00m
        tr1 = #x1B[94mawait#x1B[39;49;00m conn.begin()#x1B[90m#x1B[39;49;00m
        tr2 = #x1B[94mawait#x1B[39;49;00m conn.begin()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m conn.execute(tbl.insert().values(name=#x1B[33m'#x1B[39;49;00m#x1B[33maaaa#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr2.close()#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m tr2.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94massert#x1B[39;49;00m tr1.is_active#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m tr1.commit()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       res = #x1B[94mawait#x1B[39;49;00m conn.scalar(select([func.count()]).select_from(tbl))#x1B[90m#x1B[39;49;00m
                                ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_transaction.py#x1B[0m:261: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/_selectable_constructors.py#x1B[0m:538: in select
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m Select(*entities)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5403: in __init__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raw_columns = [#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/selectable.py#x1B[0m:5404: in <listcomp>
    #x1B[0mcoercions.expect(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:396: in expect
    #x1B[0mresolved = impl._literal_coercion(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:635: in _literal_coercion
    #x1B[0m#x1B[96mself#x1B[39;49;00m._raise_for_expected(element, argname)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:1133: in _raise_for_expected
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:696: in _raise_for_expected
    #x1B[0m#x1B[96msuper#x1B[39;49;00m()._raise_for_expected(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <sqlalchemy.sql.coercions.ColumnsClauseImpl object at 0x7fb1f1602ec0>
element = [<sqlalchemy.sql.functions.count at 0x7fb1f1199690; count>]
argname = None, resolved = None
advice = 'Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f1199690; count>)?'
code = None, err = None, kw = {}
got = '[<sqlalchemy.sql.functions.count at 0x7fb1f1199690; count>]'
msg = 'Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f1199690; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f1199690; count>)?'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_raise_for_expected#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        element: Any,#x1B[90m#x1B[39;49;00m
        argname: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        resolved: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        advice: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        code: Optional[#x1B[96mstr#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        err: Optional[#x1B[96mException#x1B[39;49;00m] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        **kw: Any,#x1B[90m#x1B[39;49;00m
    ) -> NoReturn:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m #x1B[95mand#x1B[39;49;00m resolved #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m element:#x1B[90m#x1B[39;49;00m
            got = #x1B[33m"#x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object resolved from #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m object#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (resolved, element)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            got = #x1B[96mrepr#x1B[39;49;00m(element)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m argname:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected for argument #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m; got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.name,#x1B[90m#x1B[39;49;00m
                argname,#x1B[90m#x1B[39;49;00m
                got,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m expected, got #x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m % (#x1B[96mself#x1B[39;49;00m.name, got)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m advice:#x1B[90m#x1B[39;49;00m
            msg += #x1B[33m"#x1B[39;49;00m#x1B[33m #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + advice#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m exc.ArgumentError(msg, code=code) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96merr#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.functions.count at 0x7fb1f1199690; count>]. Did you mean to say select(<sqlalchemy.sql.functions.count at 0x7fb1f1199690; count>)?#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../sqlalchemy/sql/coercions.py#x1B[0m:519: ArgumentError
tests/sa/test_sa_default.py::test_default_fields_isnull[asyncio-unix-mariadb11.4]
Stack Traces | 0.032s run time
make_engine = <function make_engine.<locals>._make_engine at 0x7fb1f0bda020>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_default_fields_isnull#x1B[39;49;00m(make_engine):#x1B[90m#x1B[39;49;00m
        engine = #x1B[94mawait#x1B[39;49;00m make_engine()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(engine)#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m engine.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
            created_at = #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            enabled = #x1B[94mFalse#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mawait#x1B[39;49;00m conn.execute(table.insert().values(#x1B[90m#x1B[39;49;00m
                enabled=enabled,#x1B[90m#x1B[39;49;00m
                created_at=created_at,#x1B[90m#x1B[39;49;00m
            ))#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>           res = #x1B[94mawait#x1B[39;49;00m conn.execute(table.select())#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_default.py#x1B[0m:96: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f1001890>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f1000c10>
metadata = (('id', 3, None, 11, 11, 0, ...), ('string_length', 3, None, 11, 11, 0, ...), ('number', 3, None, 11, 11, 0, ...), ('description', 253, None, 1020, 1020, 0, ...), ('created_at', 12, None, 26, 26, 6, ...), ('enabled', 1, None, 4, 4, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_default.py::test_default_fields[asyncio-unix-mariadb11.4]
Stack Traces | 0.033s run time
make_engine = <function make_engine.<locals>._make_engine at 0x7fb1f0bd9b20>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_default_fields#x1B[39;49;00m(make_engine):#x1B[90m#x1B[39;49;00m
        engine = #x1B[94mawait#x1B[39;49;00m make_engine()#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(engine)#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m engine.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
            #x1B[94mawait#x1B[39;49;00m conn.execute(table.insert().values())#x1B[90m#x1B[39;49;00m
>           res = #x1B[94mawait#x1B[39;49;00m conn.execute(table.select())#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_default.py#x1B[0m:75: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0efce50>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0efd0d0>
metadata = (('id', 3, None, 11, 11, 0, ...), ('string_length', 3, None, 11, 11, 0, ...), ('number', 3, None, 11, 11, 0, ...), ('description', 253, None, 1020, 1020, 0, ...), ('created_at', 12, None, 26, 26, 6, ...), ('enabled', 1, None, 4, 4, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError
tests/sa/test_sa_compiled_cache.py::test_dialect[asyncio-unix-mariadb11.4]
Stack Traces | 0.041s run time
make_engine = <function make_engine.<locals>._make_engine at 0x7fb1f11b67a0>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.run_loop#x1B[90m#x1B[39;49;00m
    #x1B[94masync#x1B[39;49;00m #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_dialect#x1B[39;49;00m(make_engine):#x1B[90m#x1B[39;49;00m
        cache = #x1B[96mdict#x1B[39;49;00m()#x1B[90m#x1B[39;49;00m
        engine = #x1B[94mawait#x1B[39;49;00m make_engine(compiled_cache=cache)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m start(engine)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m engine.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
            #x1B[90m# check select with params not added to cache#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            q = tbl.select().where(tbl.c.val == #x1B[33m'#x1B[39;49;00m#x1B[33msome_val_1#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>           cursor = #x1B[94mawait#x1B[39;49;00m conn.execute(q)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/sa/test_sa_compiled_cache.py#x1B[0m:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/connection.py#x1B[0m:179: in _execute
    #x1B[0mret = #x1B[94mawait#x1B[39;49;00m create_result_proxy(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:14: in create_result_proxy
    #x1B[0m#x1B[94mawait#x1B[39;49;00m result_proxy._prepare()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:250: in _prepare
    #x1B[0m#x1B[96mself#x1B[39;49;00m._metadata = ResultMetaData(#x1B[96mself#x1B[39;49;00m, cursor.description)#x1B[90m#x1B[39;49;00m
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.sa.result.ResultMetaData object at 0x7fb1f0cda690>
result_proxy = <aiomysql.sa.result.ResultProxy object at 0x7fb1f0cda5d0>
metadata = (('id', 8, None, 20, 20, 0, ...), ('val', 253, None, 1020, 1020, 0, ...))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m__init__#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, result_proxy, metadata):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._processors = processors = []#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        result_map = {}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m result_proxy._result_map:#x1B[90m#x1B[39;49;00m
            result_map = {elem[#x1B[94m0#x1B[39;49;00m]: elem[#x1B[94m3#x1B[39;49;00m] #x1B[94mfor#x1B[39;49;00m elem #x1B[95min#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                          result_proxy._result_map}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We do not strictly need to store the processor in the key mapping,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# though it is faster in the Python version (probably because of the#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# saved attribute lookup self._processors)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m._keymap = keymap = {}#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.keys = []#x1B[90m#x1B[39;49;00m
        dialect = result_proxy.dialect#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# `dbapi_type_map` property removed in SQLAlchemy 1.2+.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Usage of `getattr` only needed for backward compatibility with#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# older versions of SQLAlchemy.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        typemap = #x1B[96mgetattr#x1B[39;49;00m(dialect, #x1B[33m'#x1B[39;49;00m#x1B[33mdbapi_type_map#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, {})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m dialect.case_sensitive, \
               ^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mDoesn#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt support case insensitive database connection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AttributeError: 'MySQLDialect_pymysql' object has no attribute 'case_sensitive'#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../aiomysql/sa/result.py#x1B[0m:116: AttributeError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Mar 3, 2026

Superseded by #1068.

@dependabot dependabot bot closed this Mar 3, 2026
@dependabot dependabot bot deleted the dependabot/pip/sqlalchemy-2.0.47 branch March 3, 2026 01:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update Python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants