from typing import Any
from typing import Optional

from .base import MySQLCompiler as MySQLCompiler
from .base import MySQLDialect as MySQLDialect
from .base import MySQLExecutionContext as MySQLExecutionContext
from .base import MySQLIdentifierPreparer as MySQLIdentifierPreparer
from .base import TEXT as TEXT
from ... import sql as sql
from ... import util as util

class MySQLExecutionContext_mysqldb(MySQLExecutionContext):
    @property
    def rowcount(self): ...

class MySQLCompiler_mysqldb(MySQLCompiler): ...
class MySQLIdentifierPreparer_mysqldb(MySQLIdentifierPreparer): ...

class MySQLDialect_mysqldb(MySQLDialect):
    driver: str = ...
    supports_unicode_statements: bool = ...
    supports_sane_rowcount: bool = ...
    supports_sane_multi_rowcount: bool = ...
    supports_native_decimal: bool = ...
    default_paramstyle: str = ...
    execution_ctx_cls: Any = ...
    statement_compiler: Any = ...
    preparer: Any = ...
    def __init__(self, **kwargs: Any) -> None: ...
    def supports_server_side_cursors(self): ...
    @classmethod
    def dbapi(cls): ...
    def on_connect(self): ...
    def do_ping(self, dbapi_connection: Any): ...
    def do_executemany(
        self,
        cursor: Any,
        statement: Any,
        parameters: Any,
        context: Optional[Any] = ...,
    ) -> None: ...
    def create_connect_args(
        self, url: Any, _translate_args: Optional[Any] = ...
    ): ...

dialect = MySQLDialect_mysqldb
