U
    4Jej  ã                   @   sP  U d Z ddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ dZejedf ed	< d
Zejedf ed< de Zejedf ed< dZejedf ed< de e Zejedf ed< dZejedf ed< G dd„ dejƒZd$eje eje dœdd„Zee	jdœdd„Zeedœdd„Zeedœdd„Zd%eeed!œd"d#„ZdS )&zMySQL helpers.é    N)ÚCharacterSet)ÚMYSQL_CHARACTER_SETS)Úversion)ÚVersion)"ZBIGINTÚBINARYZBITÚBLOBZBOOLEANZCHARZDATEZDATETIMEZDECIMALZDOUBLEZENUMÚFLOATZINTEGERÚJSONÚLONGBLOBÚLONGTEXTÚ
MEDIUMBLOBZ	MEDIUMINTÚ
MEDIUMTEXTZNCHARZNVARCHARZNUMERICZSETZSMALLINTZREALÚTEXTZTIMEÚ	TIMESTAMPÚTINYBLOBZTINYINTÚTINYTEXTZ	VARBINARYZVARCHARZYEAR.ÚMYSQL_COLUMN_TYPES)r   r   r   r   ÚMYSQL_TEXT_COLUMN_TYPES)r	   Ú!MYSQL_TEXT_COLUMN_TYPES_WITH_JSON)r
   r   r   r   ÚMYSQL_BLOB_COLUMN_TYPES)ZGEOMETRYÚ"MYSQL_COLUMN_TYPES_WITHOUT_DEFAULT)ÚDEFAULTZIGNOREZUPDATEÚMYSQL_INSERT_METHODc                   @   s*   e Zd ZU dZeed< eed< eed< dS )ÚCharSetz%MySQL character set as a named tuple.ÚidÚcharsetZ	collationN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚ__annotations__Ústr© r#   r#   ú@/tmp/pip-unpacked-wheel-6qcj4cmz/sqlite3_to_mysql/mysql_utils.pyr   M   s   
r   )r   Úreturnc              
   c   s¼   | dk	r`t tƒD ]L\}}|dk	rz"|d | kr@t|| |d ƒV  W q tk
rZ   Y qY qX qnXt ¡ D ]N} t tƒD ]@\}}|dk	rtzt|| |d ƒV  W qt tk
r²   Y qtY qtX qtqhdS )z#Get supported MySQL character sets.Nr   é   )Ú	enumerater   r   ÚKeyErrorr   Úget_supported)r   ÚindexÚinfor#   r#   r$   Úmysql_supported_character_setsU   s    r,   )Úversion_stringr%   c                 C   s   t  t dd| ¡¡S )zGet MySQL version.z-.*$Ú )r   ÚparseÚreÚsub)r-   r#   r#   r$   Úget_mysql_versionk   s    r2   c                 C   sd   t | ƒ}|  ¡  d¡r:|jdkr`|jdkr`|jdkr`dS n&|jdkrHdS |jdkr`|jdkr`dS dS )zCheck for MySQL JSON support.ú-mariadbé
   é   é   Té   F©r2   ÚlowerÚendswithÚmajorÚminorÚmicro©r-   Zmysql_versionr#   r#   r$   Úcheck_mysql_json_supportp   s    
r?   c                 C   sZ   t | ƒ}|  ¡  d¡r:|jdkrV|jdkrV|jdkrVdS n|jdkrHdS |jdkrVdS dS )	z$Check for FULLTEXT indexing support.r3   r4   r   é   Tr7   é   Fr8   r>   r#   r#   r$   Úcheck_mysql_fulltext_support~   s    

rB   é@   )Úidentifier_nameÚ
max_lengthr%   c                 C   s   t | ƒd|… S )z?https://dev.mysql.com/doc/refman/8.0/en/identifier-length.html.N)r"   )rD   rE   r#   r#   r$   Úsafe_identifier_lengthŒ   s    rF   )N)rC   ) r   r0   ÚtypingÚtZmysql.connectorr   Zmysql.connector.charsetsr   Ú	packagingr   Zpackaging.versionr   r   ÚTupler"   r!   r   r   r   r   r   Ú
NamedTupler   ÚOptionalÚIteratorr,   r2   Úboolr?   rB   r    rF   r#   r#   r#   r$   Ú<module>   s&   %
ÿ