o
     h                     @  s   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	l	m
Z
 dd
lmZ ddlmZ ddlmZ erjddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ G dd deZG dd deZeZdS )a  

.. dialect:: mysql+cymysql
    :name: CyMySQL
    :dbapi: cymysql
    :connectstring: mysql+cymysql://<username>:<password>@<host>/<dbname>[?<options>]
    :url: https://github.com/nakagami/CyMySQL

.. note::

    The CyMySQL dialect is **not tested as part of SQLAlchemy's continuous
    integration** and may have unresolved issues.  The recommended MySQL
    dialects are mysqlclient and PyMySQL.

    )annotations)Any)Iterable)Optional)TYPE_CHECKING)Union   )MySQLDialect)MySQLDialect_mysqldb)BIT   )util)
Connection)DBAPIConnection)DBAPICursor)DBAPIModule)Dialect)PoolProxiedConnection)_ResultProcessorTypec                   @  s   e Zd Zd
ddZd	S )_cymysqlBITdialectr   coltypeobjectreturn#Optional[_ResultProcessorType[Any]]c                 C  s   ddd}|S )	z@Convert MySQL's 64 bit, variable length binary string to a long.valueOptional[Iterable[int]]r   Optional[int]c                 S  s.   | d urd}t | D ]}|d> |B }q
|S | S )Nr      )iter)r   vi r"   T/var/www/html/venv/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/cymysql.pyprocess4   s   z-_cymysqlBIT.result_processor.<locals>.processN)r   r   r   r   r"   )selfr   r   r$   r"   r"   r#   result_processor/   s   
z_cymysqlBIT.result_processorN)r   r   r   r   r   r   )__name__
__module____qualname__r&   r"   r"   r"   r#   r   .   s    r   c                   @  sb   e Zd ZdZdZdZdZdZdZe	
ejeeiZedddZdddZdddZdddZdS )MySQLDialect_cymysqlcymysqlTNFr   r   c                 C  s   t dS )Nr+   )
__import__)clsr"   r"   r#   import_dbapiJ   s   z!MySQLDialect_cymysql.import_dbapi
connectionr   strc                 C  s   |j jS N)r/   charset)r%   r/   r"   r"   r#   _detect_charsetN   s   z$MySQLDialect_cymysql._detect_charset	exceptionDBAPIModule.Errorintc                 C  s   |j S r1   )errno)r%   r4   r"   r"   r#   _extract_error_codeQ   s   z(MySQLDialect_cymysql._extract_error_codee7Optional[Union[PoolProxiedConnection, DBAPIConnection]]cursorOptional[DBAPICursor]boolc                 C  s2   t || jjr| |dv S t || jjrdS dS )N)i  i  i  i  i  TF)
isinstanceloaded_dbapiOperationalErrorr8   InterfaceError)r%   r9   r/   r;   r"   r"   r#   is_disconnectT   s
   z"MySQLDialect_cymysql.is_disconnect)r   r   )r/   r   r   r0   )r4   r5   r   r6   )r9   r5   r/   r:   r;   r<   r   r=   )r'   r(   r)   driversupports_statement_cachedescription_encodingsupports_sane_rowcountsupports_sane_multi_rowcountsupports_unicode_statementsr   update_copyr	   colspecsr   r   classmethodr.   r3   r8   rB   r"   r"   r"   r#   r*   ?   s    

r*   N)__doc__
__future__r   typingr   r   r   r   r   baser	   mysqldbr
   typesr    r   engine.baser   engine.interfacesr   r   r   r   r   sql.type_apir   r   r*   r   r"   r"   r"   r#   <module>   s,   +