o
    gv                     @   s~   d Z ddgZddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZ ddlmZ eG d	d dZG d
d dZdZdZe ZdS )z5This module contains the MySQL Server Character Sets.Charsetcharsets    )defaultdict)	dataclass)DefaultDictDictOptionalSequenceTuple   )ProgrammingErrorc                   @   s2   e Zd ZU dZeed< eed< eed< eed< dS )r   z'Dataclass representing a character set.
charset_idname	collation
is_defaultN)__name__
__module____qualname____doc__int__annotations__strbool r   r   V/var/www/html/api-tag/env/lib/python3.10/site-packages/mysql/connector/aio/charsets.pyr   (   s   
 c                   @   sx   e Zd ZdZdddZdeddfddZd	edefd
dZde	defddZ
de	defddZde	de	defddZdS )Charsetsa  MySQL supported character sets and collations class.

    This class holds the list of character sets with their collations supported by
    MySQL, making available methods to get character sets by name, collation, or ID.
    It uses a sparse matrix or tree-like representation using a dict in a dict to hold
    the character set name and collations combinations.
    The list is hardcoded, so we avoid a database query when getting the name of the
    used character set or collation.

    The call of ``charsets.set_mysql_major_version()`` should be done before using any
    of the retrieval methods.

    Usage:
        >>> from mysql.connector.aio.charsets import charsets
        >>> charsets.set_mysql_major_version(8)
        >>> charsets.get_by_name("utf-8")
        Charset(charset_id=255,
                name='utf8mb4',
                collation='utf8mb4_0900_ai_ci',
                is_default=True)
    returnNc                 C   s    i | _ i | _tt| _d | _d S )N)_charset_id_store_collation_storer   dict_name_store_mysql_major_version)selfr   r   r   __init__I   s   

zCharsets.__init__versionc                 C   s   || _ | j  | j  | j  d}|dkrt}n|dkr"t}ntd|D ]\}}}}t||||}|| j|< || j|< || j| |< q(dS )zSet the MySQL major version.

        Sets what tuple should be used based on the MySQL major version to store the
        list of character sets and collations.

        Args:
            version: The MySQL major version (i.e. 8 or 5)
        N      zInvalid MySQL major version)	r!   r   clearr   r    MYSQL_8_CHARSETSMYSQL_5_CHARSETSr   r   )r"   r$   charsets_tupler   r   r   r   charsetr   r   r   set_mysql_major_versionO   s    	




z Charsets.set_mysql_major_versionr   c              
   C   8   z| j | W S  ty } z	td| d|d}~ww )zGet character set by ID.

        Args:
            charset_id: The charset ID.

        Returns:
            Charset: The Charset dataclass instance.
        zCharacter set ID  unknownN)r   KeyErrorr   )r"   r   errr   r   r   	get_by_idk      	zCharsets.get_by_idr   c              
   C   r-   )zGet character set by collation.

        Args:
            collation: The collation name.

        Returns:
            Charset: The Charset dataclass instance.
        z
Collation r.   N)r   r/   r   )r"   r   r0   r   r   r   get_by_collationy   r2   zCharsets.get_by_collationr   c              
   C   sz   z|dv r| j dkrd}| j|  D ]
}|jr|  W S qW n ty4 } z	td| d|d}~ww td| d)	zGet character set by name.

        Args:
            name: The charset name.

        Returns:
            Charset: The Charset dataclass instance.
        )utf8zutf-8r%   utf8mb4zCharacter set name r.   Nz(No default was found for character set '')r!   r    valuesr   r/   r   )r"   r   r+   r0   r   r   r   get_by_name   s   	
zCharsets.get_by_namec              
   C   sB   z| j | | W S  ty  } ztd| d| d|d}~ww )zGet character set by name and collation.

        Args:
            name: The charset name.
            collation: The collation name.

        Returns:
            Charset: The Charset dataclass instance.
        zCharacter set name 'z' with collation 'z' not foundN)r    r/   r   )r"   r   r   r0   r   r   r   get_by_name_and_collation   s   
z"Charsets.get_by_name_and_collation)r   N)r   r   r   r   r#   r   r,   r   r1   r   r3   r8   r9   r   r   r   r   r   2   s    
r   (     big5big5_chinese_ciTr   latin2latin2_czech_csF   dec8dec8_swedish_ciT   cp850cp850_general_ciTr&   latin1latin1_german1_ciF   hp8hp8_english_ciT   koi8rkoi8r_general_ciTr%   rJ   latin1_swedish_ciT	   r?   latin2_general_ciT
   swe7swe7_swedish_ciT   asciiascii_general_ciT   ujisujis_japanese_ciT   sjissjis_japanese_ciT   cp1251cp1251_bulgarian_ciF   rJ   latin1_danish_ciF   hebrewhebrew_general_ciT   tis620tis620_thai_ciT   euckreuckr_korean_ciT   latin7latin7_estonian_csF   r?   latin2_hungarian_ciF   koi8ukoi8u_general_ciT   rk   cp1251_ukrainian_ciF   gb2312gb2312_chinese_ciT   greekgreek_general_ciT   cp1250cp1250_general_ciT   r?   latin2_croatian_ciF   gbkgbk_chinese_ciT   cp1257cp1257_lithuanian_ciF   latin5latin5_turkish_ciT   rJ   latin1_german2_ciF    armscii8armscii8_general_ciT)!   utf8mb3utf8mb3_general_ciT"   r   cp1250_czech_csF#   ucs2ucs2_general_ciT$   cp866cp866_general_ciT%   keybcs2keybcs2_general_ciT&   maccemacce_general_ciT'   macromanmacroman_general_ciT(   cp852cp852_general_ciT)   r~   latin7_general_ciT*   r~   latin7_general_csF+   r   	macce_binF,   r   cp1250_croatian_ciF)-   r5   utf8mb4_general_ciF.   r5   utf8mb4_binF/   rJ   
latin1_binF0   rJ   latin1_general_ciF1   rJ   latin1_general_csF2   rk   
cp1251_binF3   rk   cp1251_general_ciT4   rk   cp1251_general_csF5   r   macroman_binF6   utf16utf16_general_ciT7   r   	utf16_binF8   utf16leutf16le_general_ciT9   cp1256cp1256_general_ciT:   r   
cp1257_binF;   r   cp1257_general_ciT<   utf32utf32_general_ciT=   r  	utf32_binF>   r   utf16le_binF?   binaryr  T@   r   armscii8_binFA   r_   	ascii_binFB   r   
cp1250_binFC   r   
cp1256_binFD   r   	cp866_binFE   rC   dec8_binFF   r   	greek_binFG   rr   
hebrew_binFH   rN   hp8_binFI   r   keybcs2_binFJ   rR   	koi8r_binFK   r   	koi8u_binF)L   r   utf8mb3_tolower_ciFM   r?   
latin2_binFN   r   
latin5_binFO   r~   
latin7_binFP   rG   	cp850_binFQ   r   	cp852_binFR   r[   swe7_binF)S   r   utf8mb3_binFT   r<   big5_binFU   rz   	euckr_binFV   r   
gb2312_binFW   r   gbk_binFX   rg   sjis_binFY   rv   
tis620_binFZ   r   ucs2_binF[   rc   ujis_binF\   geostd8geostd8_general_ciT]   rf  geostd8_binF^   rJ   latin1_spanish_ciF_   cp932cp932_japanese_ciT`   rp  	cp932_binFa   eucjpmseucjpms_japanese_ciTb   rw  eucjpms_binFc   r   cp1250_polish_ciFe   r   utf16_unicode_ciFf   r   utf16_icelandic_ciFg   r   utf16_latvian_ciFh   r   utf16_romanian_ciFi   r   utf16_slovenian_ciFj   r   utf16_polish_ciFk   r   utf16_estonian_ciFl   r   utf16_spanish_ciFm   r   utf16_swedish_ciFn   r   utf16_turkish_ciFo   r   utf16_czech_ciFp   r   utf16_danish_ciFq   r   utf16_lithuanian_ciFr   r   utf16_slovak_ciFs   r   utf16_spanish2_ciFt   r   utf16_roman_ciFu   r   utf16_persian_ciFv   r   utf16_esperanto_ciFw   r   utf16_hungarian_ciFx   r   utf16_sinhala_ciFy   r   utf16_german2_ciFz   r   utf16_croatian_ciF{   r   utf16_unicode_520_ciF|   r   utf16_vietnamese_ciF   r   ucs2_unicode_ciF   r   ucs2_icelandic_ciF   r   ucs2_latvian_ciF   r   ucs2_romanian_ciF   r   ucs2_slovenian_ciF   r   ucs2_polish_ciF   r   ucs2_estonian_ciF   r   ucs2_spanish_ciF   r   ucs2_swedish_ciF   r   ucs2_turkish_ciF   r   ucs2_czech_ciF   r   ucs2_danish_ciF   r   ucs2_lithuanian_ciF   r   ucs2_slovak_ciF   r   ucs2_spanish2_ciF   r   ucs2_roman_ciF   r   ucs2_persian_ciF   r   ucs2_esperanto_ciF   r   ucs2_hungarian_ciF   r   ucs2_sinhala_ciF   r   ucs2_german2_ciF   r   ucs2_croatian_ciF   r   ucs2_unicode_520_ciF   r   ucs2_vietnamese_ciF   r   ucs2_general_mysql500_ciF   r  utf32_unicode_ciF   r  utf32_icelandic_ciF   r  utf32_latvian_ciF   r  utf32_romanian_ciF   r  utf32_slovenian_ciF   r  utf32_polish_ciF   r  utf32_estonian_ciF   r  utf32_spanish_ciF   r  utf32_swedish_ciF   r  utf32_turkish_ciF   r  utf32_czech_ciF   r  utf32_danish_ciF   r  utf32_lithuanian_ciF   r  utf32_slovak_ciF   r  utf32_spanish2_ciF   r  utf32_roman_ciF   r  utf32_persian_ciF   r  utf32_esperanto_ciF   r  utf32_hungarian_ciF   r  utf32_sinhala_ciF   r  utf32_german2_ciF   r  utf32_croatian_ciF   r  utf32_unicode_520_ciF   r  utf32_vietnamese_ciF)   r   utf8mb3_unicode_ciF)   r   utf8mb3_icelandic_ciF)   r   utf8mb3_latvian_ciF)   r   utf8mb3_romanian_ciF)   r   utf8mb3_slovenian_ciF)   r   utf8mb3_polish_ciF)   r   utf8mb3_estonian_ciF)   r   utf8mb3_spanish_ciF)   r   utf8mb3_swedish_ciF)   r   utf8mb3_turkish_ciF)   r   utf8mb3_czech_ciF)   r   utf8mb3_danish_ciF)   r   utf8mb3_lithuanian_ciF)   r   utf8mb3_slovak_ciF)   r   utf8mb3_spanish2_ciF)   r   utf8mb3_roman_ciF)   r   utf8mb3_persian_ciF)   r   utf8mb3_esperanto_ciF)   r   utf8mb3_hungarian_ciF)   r   utf8mb3_sinhala_ciF)   r   utf8mb3_german2_ciF)   r   utf8mb3_croatian_ciF)   r   utf8mb3_unicode_520_ciF)   r   utf8mb3_vietnamese_ciF)   r   utf8mb3_general_mysql500_ciF   r5   utf8mb4_unicode_ciF   r5   utf8mb4_icelandic_ciF   r5   utf8mb4_latvian_ciF   r5   utf8mb4_romanian_ciF   r5   utf8mb4_slovenian_ciF   r5   utf8mb4_polish_ciF   r5   utf8mb4_estonian_ciF   r5   utf8mb4_spanish_ciF   r5   utf8mb4_swedish_ciF   r5   utf8mb4_turkish_ciF   r5   utf8mb4_czech_ciF   r5   utf8mb4_danish_ciF   r5   utf8mb4_lithuanian_ciF   r5   utf8mb4_slovak_ciF   r5   utf8mb4_spanish2_ciF   r5   utf8mb4_roman_ciF   r5   utf8mb4_persian_ciF   r5   utf8mb4_esperanto_ciF   r5   utf8mb4_hungarian_ciF   r5   utf8mb4_sinhala_ciF   r5   utf8mb4_german2_ciF   r5   utf8mb4_croatian_ciF   r5   utf8mb4_unicode_520_ciF   r5   utf8mb4_vietnamese_ciF   gb18030gb18030_chinese_ciT   r  gb18030_binF   r  gb18030_unicode_520_ciF)   r5   utf8mb4_0900_ai_ciT)   r5   utf8mb4_de_pb_0900_ai_ciF)i  r5   utf8mb4_is_0900_ai_ciF)i  r5   utf8mb4_lv_0900_ai_ciF)i  r5   utf8mb4_ro_0900_ai_ciF)i  r5   utf8mb4_sl_0900_ai_ciF)i  r5   utf8mb4_pl_0900_ai_ciF)i  r5   utf8mb4_et_0900_ai_ciF)i  r5   utf8mb4_es_0900_ai_ciF)i  r5   utf8mb4_sv_0900_ai_ciF)i	  r5   utf8mb4_tr_0900_ai_ciF)i
  r5   utf8mb4_cs_0900_ai_ciF)i  r5   utf8mb4_da_0900_ai_ciF)i  r5   utf8mb4_lt_0900_ai_ciF)i  r5   utf8mb4_sk_0900_ai_ciF)i  r5   utf8mb4_es_trad_0900_ai_ciF)i  r5   utf8mb4_la_0900_ai_ciF)i  r5   utf8mb4_eo_0900_ai_ciF)i  r5   utf8mb4_hu_0900_ai_ciF)i  r5   utf8mb4_hr_0900_ai_ciF)i  r5   utf8mb4_vi_0900_ai_ciF)i  r5   utf8mb4_0900_as_csF)i  r5   utf8mb4_de_pb_0900_as_csF)i  r5   utf8mb4_is_0900_as_csF)i  r5   utf8mb4_lv_0900_as_csF)i  r5   utf8mb4_ro_0900_as_csF)i  r5   utf8mb4_sl_0900_as_csF)i  r5   utf8mb4_pl_0900_as_csF)i  r5   utf8mb4_et_0900_as_csF)i  r5   utf8mb4_es_0900_as_csF)i  r5   utf8mb4_sv_0900_as_csF)i   r5   utf8mb4_tr_0900_as_csF)i!  r5   utf8mb4_cs_0900_as_csF)i"  r5   utf8mb4_da_0900_as_csF)i#  r5   utf8mb4_lt_0900_as_csF)i$  r5   utf8mb4_sk_0900_as_csF)i%  r5   utf8mb4_es_trad_0900_as_csF)i&  r5   utf8mb4_la_0900_as_csF)i(  r5   utf8mb4_eo_0900_as_csF)i)  r5   utf8mb4_hu_0900_as_csF)i*  r5   utf8mb4_hr_0900_as_csF)i,  r5   utf8mb4_vi_0900_as_csF)i/  r5   utf8mb4_ja_0900_as_csF)i0  r5   utf8mb4_ja_0900_as_cs_ksF)i1  r5   utf8mb4_0900_as_ciF)i2  r5   utf8mb4_ru_0900_ai_ciF)i3  r5   utf8mb4_ru_0900_as_csF)i4  r5   utf8mb4_zh_0900_as_csF)i5  r5   utf8mb4_0900_binF)i6  r5   utf8mb4_nb_0900_ai_ciF)i7  r5   utf8mb4_nb_0900_as_csF)i8  r5   utf8mb4_nn_0900_ai_ciF)i9  r5   utf8mb4_nn_0900_as_csF)i:  r5   utf8mb4_sr_latn_0900_ai_ciF)i;  r5   utf8mb4_sr_latn_0900_as_csF)i<  r5   utf8mb4_bs_0900_ai_ciF)i=  r5   utf8mb4_bs_0900_as_csF)i>  r5   utf8mb4_bg_0900_ai_ciF)i?  r5   utf8mb4_bg_0900_as_csF)i@  r5   utf8mb4_gl_0900_ai_ciF)iA  r5   utf8mb4_gl_0900_as_csF)iB  r5   utf8mb4_mn_cyrl_0900_ai_ciF)iC  r5   utf8mb4_mn_cyrl_0900_as_csF)r:   r>   rA   rE   rI   rL   rP   rT   rV   rY   r]   ra   re   ri   rm   rp   rt   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   )r   r4   utf8_general_ciTr   r   r   r   r   r   r   r   r   r   r   )r   r5   r   Tr   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r  r!  r$  r'  r*  r-  r0  r3  r8  r;  r>  rA  rD  rG  )rJ  r4   utf8_binFrL  rO  rR  rU  rX  r[  r^  ra  rd  rh  rk  rn  rr  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r  r  r!  r$  r'  r*  r-  r0  r3  r6  r9  r<  r?  rB  rE  rH  rK  rN  rQ  rT  rW  )rZ  r4   utf8_unicode_ciF)r\  r4   utf8_icelandic_ciF)r^  r4   utf8_latvian_ciF)r`  r4   utf8_romanian_ciF)rb  r4   utf8_slovenian_ciF)rd  r4   utf8_polish_ciF)rf  r4   utf8_estonian_ciF)rh  r4   utf8_spanish_ciF)rj  r4   utf8_swedish_ciF)rl  r4   utf8_turkish_ciF)rn  r4   utf8_czech_ciF)rp  r4   utf8_danish_ciF)rr  r4   utf8_lithuanian_ciF)rt  r4   utf8_slovak_ciF)rv  r4   utf8_spanish2_ciF)rx  r4   utf8_roman_ciF)rz  r4   utf8_persian_ciF)r|  r4   utf8_esperanto_ciF)r~  r4   utf8_hungarian_ciF)r  r4   utf8_sinhala_ciF)r  r4   utf8_german2_ciF)r  r4   utf8_croatian_ciF)r  r4   utf8_unicode_520_ciF)r  r4   utf8_vietnamese_ciF)r  r4   utf8_general_mysql500_ciFr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  N)r   __all__collectionsr   dataclassesr   typingr   r   r   r	   r
   errorsr   r   r   r(   r)   r   r   r   r   r   <module>   s   	z  # 
b