Skip to content

Bump pymysql from 1.1.2 to 1.2.3 - #1099

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/pymysql-1.2.3
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/pymysql-1.2.3

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Bumps pymysql from 1.1.2 to 1.2.3.

Release notes

Sourced from pymysql's releases.

v1.2.3

Full Changelog: PyMySQL/PyMySQL@v1.2.2...v1.2.3

v1.2.2

Restored the ability to import pymysql.converters.escape_dict for compatibility with aiomysql. This function does not escape dictionaries and is entirely unnecessary. Unless you use aiomysql, there is no need to upgrade from v1.2.1.

Full Changelog: PyMySQL/PyMySQL@v1.2.1...v1.2.2

v1.2.1

What's Changed

New Contributors

Full Changelog: PyMySQL/PyMySQL@v1.2.0...v1.2.1

v1.2.0

What's Changed

New Contributors

... (truncated)

Changelog

Sourced from pymysql's changelog.

v1.2.3

Release date: 2026-09-17

Restored the ability to import pymysql.converters.escape_bytes_prefixed for compatibility with aiomysql.

Use pymysql.converters at your own risk. It's internal functions. No backward compatibility are guaranteed.

v1.2.2

Release date: 2026-09-17

Restored the ability to import pymysql.converters.escape_dict for compatibility with aiomysql. This function does not escape dictionaries and is entirely unnecessary. Unless you use aiomysql, there is no need to upgrade from v1.2.1.

v1.2.1 (security fix)

Release date: 2026-09-17

Fixed a SQL injection vulnerability caused by incorrect escaping of bytes parameters when using the big5, gbk, sjis, cp932, or gb18030 character sets. This vulnerability also occurs when strings decoded from bytes using surrogateescape are passed as query parameters.

See also: https://github.com/PyMySQL/PyMySQL/security/advisories/GHSA-x4f8-9hx9-hpp9

  • Queries are now encoded using the strict error handler instead of surrogateescape. Queries that cannot be encoded using the connection encoding can no longer be sent.

  • bytes parameters are now always sent as hexadecimal literals, such as X'636174'. Note that this increases the number of bytes sent.

  • The binary_prefix parameter of connect() is deprecated. The _binary prefix is no longer sent.

These changes address the confirmed SQL injection vulnerabilities related to character encoding. However, we strongly recommend using UTF-8 (utf8mb4). Other character sets are not thoroughly tested, and their limited use means that problems may go unreported. In the 2020s, encodings other than UTF-8 should be considered legacy.

v1.2.0

... (truncated)

Commits

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update Python code labels Oct 28, 2026
@codecov

codecov Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

❌ 36 Tests Failed:

Tests completed Failed Passed Skipped
2853 36 2817 136
View the top 3 failed test(s) by shortest run time
tests/test_basic.py::test_binary_data[asyncio-unix-mariadb11.4]
Stack Traces | 0.015s run time
cursor = <aiomysql.cursors.Cursor object at 0x711e5f9ce3d0>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x711e5f6d74c0>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5fc36510>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[asyncio-unix-mariadb11.4]
Stack Traces | 0.015s run time
mysql_server = {'conn_params': {'password': 'rootpw', 'unix_socket': '/tmp/run-mariadb-11.4/mysql.sock', 'user': 'root'}, 'db_type': 'mariadb', 'server_version': '11.4.13-MariaDB-ubu2404', 'server_version_tuple': (11, 4, 13), ...}
loop = <_UnixSelectorEventLoop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5f890890>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[uvloop-unix-mariadb11.4]
Stack Traces | 0.017s run time
cursor = <aiomysql.cursors.Cursor object at 0x711e5e2b7550>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x711e5f568fe0>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5e2b6210>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[asyncio-unix-mariadb11.4]
Stack Traces | 0.018s run time
connection = <aiomysql.connection.Connection object at 0x711e5f7a9e10>
cursor = <aiomysql.cursors.Cursor object at 0x711e5f7a8950>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5f7a9e10>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[uvloop-unix-mariadb11.4]
Stack Traces | 0.018s run time
mysql_server = {'conn_params': {'password': 'rootpw', 'unix_socket': '/tmp/run-mariadb-11.4/mysql.sock', 'user': 'root'}, 'db_type': 'mariadb', 'server_version': '11.4.13-MariaDB-ubu2404', 'server_version_tuple': (11, 4, 13), ...}
loop = <uvloop.Loop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5e2cdd90>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[uvloop-unix-mariadb11.4]
Stack Traces | 0.02s run time
connection = <aiomysql.connection.Connection object at 0x711e5f5dd210>
cursor = <aiomysql.cursors.Cursor object at 0x711e5f5df350>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5f5dd210>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[asyncio-tcp-mariadb11.4]
Stack Traces | 0.02s run time
mysql_server = {'conn_params': {'host': '127.0.0.1', 'password': 'rootpw', 'port': 3306, 'ssl': <ssl.SSLContext object at 0x711e5f799e20>, ...}, 'db_type': 'mariadb', 'server_version': '11.4.13-MariaDB-ubu2404', 'server_version_tuple': (11, 4, 13), ...}
loop = <_UnixSelectorEventLoop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5f578a10>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[asyncio-tcp-mariadb11.4]
Stack Traces | 0.021s run time
connection = <aiomysql.connection.Connection object at 0x711e5fc34f10>
cursor = <aiomysql.cursors.Cursor object at 0x711e5fc36e50>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5fc34f10>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[uvloop-tcp-mariadb11.4]
Stack Traces | 0.022s run time
cursor = <aiomysql.cursors.Cursor object at 0x711e5f4de710>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x711e5e2a76a0>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5f4df0d0>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[asyncio-unix-mariadb11.8]
Stack Traces | 0.022s run time
mysql_server = {'conn_params': {'password': 'rootpw', 'unix_socket': '/tmp/run-mariadb-11.8/mysql.sock', 'user': 'root'}, 'db_type': 'mariadb', 'server_version': '11.8.9-MariaDB-ubu2404', 'server_version_tuple': (11, 8, 9), ...}
loop = <_UnixSelectorEventLoop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48b46c4f0>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[uvloop-tcp-mariadb11.4]
Stack Traces | 0.022s run time
mysql_server = {'conn_params': {'host': '127.0.0.1', 'password': 'rootpw', 'port': 3306, 'ssl': <ssl.SSLContext object at 0x711e5f79af90>, ...}, 'db_type': 'mariadb', 'server_version': '11.4.13-MariaDB-ubu2404', 'server_version_tuple': (11, 4, 13), ...}
loop = <uvloop.Loop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5f542b50>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[asyncio-unix-mariadb10.6]
Stack Traces | 0.023s run time
cursor = <aiomysql.cursors.Cursor object at 0x7ad2589445c0>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x7ad25893e840>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad2589472c0>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[asyncio-unix-mariadb11.8]
Stack Traces | 0.023s run time
cursor = <aiomysql.cursors.Cursor object at 0x7bd48b9a84f0>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x7bd48b475ea0>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48b9a8fa0>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[uvloop-tcp-mariadb11.4]
Stack Traces | 0.024s run time
connection = <aiomysql.connection.Connection object at 0x711e5e2d9e10>
cursor = <aiomysql.cursors.Cursor object at 0x711e5e2d8050>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5e2d9e10>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[asyncio-unix-mariadb11.8]
Stack Traces | 0.025s run time
connection = <aiomysql.connection.Connection object at 0x7bd48ba2af20>
cursor = <aiomysql.cursors.Cursor object at 0x7bd48ba2bdc0>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48ba2af20>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[uvloop-unix-mariadb11.8]
Stack Traces | 0.026s run time
cursor = <aiomysql.cursors.Cursor object at 0x7bd48b4f2800>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x7bd48b2cc8b0>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48b4f2c80>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[uvloop-unix-mariadb11.8]
Stack Traces | 0.026s run time
mysql_server = {'conn_params': {'password': 'rootpw', 'unix_socket': '/tmp/run-mariadb-11.8/mysql.sock', 'user': 'root'}, 'db_type': 'mariadb', 'server_version': '11.8.9-MariaDB-ubu2404', 'server_version_tuple': (11, 8, 9), ...}
loop = <uvloop.Loop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48b2f4f10>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[asyncio-tcp-mariadb10.6]
Stack Traces | 0.027s run time
cursor = <aiomysql.cursors.Cursor object at 0x7ad2587c2630>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x7ad258836d40>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad2587c3d70>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[asyncio-unix-mariadb10.6]
Stack Traces | 0.027s run time
mysql_server = {'conn_params': {'password': 'rootpw', 'unix_socket': '/tmp/run-mariadb-10.6/mysql.sock', 'user': 'root'}, 'db_type': 'mariadb', 'server_version': '10.6.28-MariaDB-ubu2204', 'server_version_tuple': (10, 6, 28), ...}
loop = <_UnixSelectorEventLoop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad258b1f140>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[asyncio-tcp-mariadb11.8]
Stack Traces | 0.028s run time
cursor = <aiomysql.cursors.Cursor object at 0x7bd48b46f1c0>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x7bd48b3d7130>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48b46e260>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[asyncio-unix-mariadb10.6]
Stack Traces | 0.029s run time
connection = <aiomysql.connection.Connection object at 0x7ad258944590>
cursor = <aiomysql.cursors.Cursor object at 0x7ad258944aa0>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad258944590>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[asyncio-tcp-mariadb11.8]
Stack Traces | 0.029s run time
mysql_server = {'conn_params': {'host': '127.0.0.1', 'password': 'rootpw', 'port': 3306, 'ssl': <ssl.SSLContext object at 0x7bd48b522cc0>, ...}, 'db_type': 'mariadb', 'server_version': '11.8.9-MariaDB-ubu2404', 'server_version_tuple': (11, 8, 9), ...}
loop = <_UnixSelectorEventLoop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48b4f3160>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[asyncio-tcp-mariadb11.8]
Stack Traces | 0.03s run time
connection = <aiomysql.connection.Connection object at 0x7bd48ba88fa0>
cursor = <aiomysql.cursors.Cursor object at 0x7bd48ba8a0b0>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48ba88fa0>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[uvloop-unix-mariadb10.6]
Stack Traces | 0.03s run time
connection = <aiomysql.connection.Connection object at 0x7ad25880d190>
cursor = <aiomysql.cursors.Cursor object at 0x7ad25880e4b0>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad25880d190>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[uvloop-unix-mariadb11.8]
Stack Traces | 0.03s run time
connection = <aiomysql.connection.Connection object at 0x7bd48b4d2650>
cursor = <aiomysql.cursors.Cursor object at 0x7bd48b4d1e70>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48b4d2650>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[asyncio-tcp-mariadb10.6]
Stack Traces | 0.03s run time
mysql_server = {'conn_params': {'host': '127.0.0.1', 'password': 'rootpw', 'port': 3306, 'ssl': <ssl.SSLContext object at 0x7ad2589104d0>, ...}, 'db_type': 'mariadb', 'server_version': '10.6.28-MariaDB-ubu2204', 'server_version_tuple': (10, 6, 28), ...}
loop = <_UnixSelectorEventLoop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad2588147a0>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[uvloop-tcp-mariadb11.8]
Stack Traces | 0.032s run time
cursor = <aiomysql.cursors.Cursor object at 0x7bd48b2f7220>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x7bd48a1d9870>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48b2f5a50>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[uvloop-tcp-mariadb11.8]
Stack Traces | 0.032s run time
mysql_server = {'conn_params': {'host': '127.0.0.1', 'password': 'rootpw', 'port': 3306, 'ssl': <ssl.SSLContext object at 0x7bd48b43d8c0>, ...}, 'db_type': 'mariadb', 'server_version': '11.8.9-MariaDB-ubu2404', 'server_version_tuple': (11, 8, 9), ...}
loop = <uvloop.Loop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48a1e2a70>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[asyncio-tcp-mariadb11.4]
Stack Traces | 0.035s run time
cursor = <aiomysql.cursors.Cursor object at 0x711e5fbe89d0>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x711e5f785e40>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.11........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x711e5fbe97d0>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.11.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[uvloop-tcp-mariadb11.8]
Stack Traces | 0.035s run time
connection = <aiomysql.connection.Connection object at 0x7bd48b996650>
cursor = <aiomysql.cursors.Cursor object at 0x7bd48b994730>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.10........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7bd48b996650>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.10.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[asyncio-tcp-mariadb10.6]
Stack Traces | 0.036s run time
connection = <aiomysql.connection.Connection object at 0x7ad2587c07a0>
cursor = <aiomysql.cursors.Cursor object at 0x7ad2587c2060>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad2587c07a0>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[uvloop-tcp-mariadb10.6]
Stack Traces | 0.037s run time
mysql_server = {'conn_params': {'host': '127.0.0.1', 'password': 'rootpw', 'port': 3306, 'ssl': <ssl.SSLContext object at 0x7ad258fec3d0>, ...}, 'db_type': 'mariadb', 'server_version': '10.6.28-MariaDB-ubu2204', 'server_version_tuple': (10, 6, 28), ...}
loop = <uvloop.Loop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad25752e420>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[uvloop-tcp-mariadb10.6]
Stack Traces | 0.038s run time
cursor = <aiomysql.cursors.Cursor object at 0x7ad2586e5a60>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x7ad258682e80>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad2586e46e0>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_datatypes[uvloop-tcp-mariadb10.6]
Stack Traces | 0.04s run time
connection = <aiomysql.connection.Connection object at 0x7ad2586e5100>
cursor = <aiomysql.cursors.Cursor object at 0x7ad2586e4290>
datatype_table = None

    #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_datatypes#x1B[39;49;00m(connection, cursor, datatype_table):#x1B[90m#x1B[39;49;00m
        encoding = connection.charset#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m encoding == #x1B[33m'#x1B[39;49;00m#x1B[33mutf8mb4#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            encoding = #x1B[33m'#x1B[39;49;00m#x1B[33mutf8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# insert values#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        v = (#x1B[90m#x1B[39;49;00m
            #x1B[94mTrue#x1B[39;49;00m, -#x1B[94m3#x1B[39;49;00m, #x1B[94m123456789012#x1B[39;49;00m, #x1B[94m5.7#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mhello#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\"#x1B[39;49;00m#x1B[33m world#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mEspa#x1B[39;49;00m#x1B[33m\xc3#x1B[39;49;00m#x1B[33m\xb1#x1B[39;49;00m#x1B[33mol#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mbinary#x1B[39;49;00m#x1B[33m\x00#x1B[39;49;00m#x1B[33mdata#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m.encode(encoding),#x1B[90m#x1B[39;49;00m
            datetime.date(#x1B[94m1988#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m, #x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.datetime.now().replace(microsecond=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            datetime.timedelta(#x1B[94m5#x1B[39;49;00m, #x1B[94m6#x1B[39;49;00m), datetime.time(#x1B[94m16#x1B[39;49;00m, #x1B[94m32#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            time.localtime())#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mvalues (#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%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%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%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%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%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
            v)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad2586e5100>
obj = b'binary\x00data'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_issues.py::test_issue_323[uvloop-unix-mariadb10.6]
Stack Traces | 0.04s run time
mysql_server = {'conn_params': {'password': 'rootpw', 'unix_socket': '/tmp/run-mariadb-10.6/mysql.sock', 'user': 'root'}, 'db_type': 'mariadb', 'server_version': '10.6.28-MariaDB-ubu2204', 'server_version_tuple': (10, 6, 28), ...}
loop = <uvloop.Loop running=False closed=False debug=False>
recwarn = WarningsRecorder(record=True)

    #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_issue_323#x1B[39;49;00m(mysql_server, loop, recwarn):#x1B[90m#x1B[39;49;00m
        #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m aiomysql.create_pool(**mysql_server[#x1B[33m'#x1B[39;49;00m#x1B[33mconn_params#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
                                        loop=loop) #x1B[94mas#x1B[39;49;00m pool:#x1B[90m#x1B[39;49;00m
            #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m pool.acquire() #x1B[94mas#x1B[39;49;00m conn:#x1B[90m#x1B[39;49;00m
                #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
                    drop_db = #x1B[33m"#x1B[39;49;00m#x1B[33mDROP DATABASE IF EXISTS bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(drop_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_db = #x1B[33m"#x1B[39;49;00m#x1B[33mCREATE DATABASE bugtest;#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_db)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    create_table = #x1B[33m"""#x1B[39;49;00m#x1B[33mCREATE TABLE IF NOT EXISTS `bugtest`.`testtable` (#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                `bindata` VARBINARY(200) NOT NULL,#x1B[39;49;00m#x1B[33m#x1B[39;49;00m
    #x1B[33m                PRIMARY KEY (`id`)#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[90m#x1B[39;49;00m
                    #x1B[94mawait#x1B[39;49;00m cur.execute(create_table)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    recwarn.clear()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                    #x1B[94masync#x1B[39;49;00m #x1B[94mwith#x1B[39;49;00m conn.cursor() #x1B[94mas#x1B[39;49;00m cur:#x1B[90m#x1B[39;49;00m
>                       #x1B[94mawait#x1B[39;49;00m cur.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO `bugtest`.`testtable` #x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                                          #x1B[33m"#x1B[39;49;00m#x1B[33m(bindata) VALUES (#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[33mb#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m\xB0#x1B[39;49;00m#x1B[33m\x17#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_issues.py#x1B[0m:450: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad258658c50>
obj = b'\xb0\x17'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError
tests/test_basic.py::test_binary_data[uvloop-unix-mariadb10.6]
Stack Traces | 0.041s run time
cursor = <aiomysql.cursors.Cursor object at 0x7ad258818e30>
table_cleanup = <function table_cleanup.<locals>._register_table at 0x7ad258796980>

    #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_binary_data#x1B[39;49;00m(cursor, table_cleanup):#x1B[90m#x1B[39;49;00m
        data = #x1B[96mbytes#x1B[39;49;00m(#x1B[96mbytearray#x1B[39;49;00m(#x1B[96mrange#x1B[39;49;00m(#x1B[94m256#x1B[39;49;00m)) * #x1B[94m4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mCREATE TABLE test_blob (b blob)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        table_cleanup(#x1B[33m'#x1B[39;49;00m#x1B[33mtest_blob#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
>       #x1B[94mawait#x1B[39;49;00m cursor.execute(#x1B[33m"#x1B[39;49;00m#x1B[33mINSERT INTO test_blob (b) VALUES (#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
                             (data,))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_basic.py#x1B[0m:140: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:237: in execute
    #x1B[0mquery = query % #x1B[96mself#x1B[39;49;00m._escape_args(args, conn)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in _escape_args
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../.local/lib/python3.12........./site-packages/aiomysql/cursors.py#x1B[0m:197: in <genexpr>
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mtuple#x1B[39;49;00m(conn.escape(arg) #x1B[94mfor#x1B[39;49;00m arg #x1B[95min#x1B[39;49;00m args)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <aiomysql.connection.Connection object at 0x7ad258818e90>
obj = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x...e2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mescape#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, obj):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m""" Escape whatever value you pass to it"""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mstr#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m + #x1B[96mself#x1B[39;49;00m.escape_string(obj) + #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[94mif#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(obj, #x1B[96mbytes#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[94mreturn#x1B[39;49;00m escape_bytes_prefixed(obj)#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           TypeError: 'str' object is not callable#x1B[0m

#x1B[1m#x1B[31m../../../.local/lib/python3.12.../site-packages/aiomysql/connection.py#x1B[0m:418: TypeError

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

Bumps [pymysql](https://github.com/PyMySQL/PyMySQL) from 1.1.2 to 1.2.3.
- [Release notes](https://github.com/PyMySQL/PyMySQL/releases)
- [Changelog](https://github.com/PyMySQL/PyMySQL/blob/main/CHANGELOG.md)
- [Commits](PyMySQL/PyMySQL@v1.1.2...v1.2.3)

---
updated-dependencies:
- dependency-name: pymysql
  dependency-version: 1.2.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/pip/pymysql-1.2.3 branch from e43efaa to 2c0737f Compare November 3, 2026 01:53

This branch has not been deployed

No deployments
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