a
    žlJhŸv  ã                   @   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   úN/var/www/shaz/venv/lib/python3.9/site-packages/mysql/connector/aio/charsets.pyr   (   s
   
c                   @   sp   e Zd ZdZddœdd„Zeddœdd„Zeed	œd
d„Ze	edœdd„Z
e	edœdd„Ze	e	edœ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)
    N)Úreturnc                 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__)Úversionr   c                 C   s’   || _ | j ¡  | j ¡  | j ¡  d}|dkr6t}n|dkrDt}ntdƒ‚|D ]<\}}}}t||||ƒ}|| j|< || j|< || j| |< qPdS )zôSet 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$   Zcharsets_tupler   r   r   r   Úcharsetr   r   r   Úset_mysql_major_versionO   s    	




z Charsets.set_mysql_major_version)r   r   c              
   C   sH   z| j | W S  tyB } ztd|› dƒ|‚W Y d}~n
d}~0 0 dS )zŸGet 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   s    	zCharsets.get_by_id)r   r   c              
   C   sH   z| j | W S  tyB } ztd|› dƒ|‚W Y d}~n
d}~0 0 dS )z©Get character set by collation.

        Args:
            collation: The collation name.

        Returns:
            Charset: The Charset dataclass instance.
        z
Collation r,   N)r   r-   r   )r"   r   r.   r   r   r   Úget_by_collationy   s    	zCharsets.get_by_collation)r   r   c              
   C   sŠ   z>|dv r| j dkrd}| j|  ¡ D ]}|jr&|  W S q&W n6 tyt } ztd|› dƒ|‚W Y d}~n
d}~0 0 td|› dƒ‚dS )	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*   r.   r   r   r   Úget_by_name‡   s    	(zCharsets.get_by_name)r   r   r   c              
   C   sR   z| j | | W S  tyL } z$td|› d|› dƒ|‚W Y d}~n
d}~0 0 dS )zÖGet 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   r.   r   r   r   Úget_by_name_and_collationš   s    
ÿþz"Charsets.get_by_name_and_collation)r   r   r   r   r#   r   r+   r   r/   r   r0   r5   r6   r   r   r   r   r   2   s   r   (  ©é   Úbig5Zbig5_chinese_ciT©r   Úlatin2Zlatin2_czech_csF©é   Údec8Zdec8_swedish_ciT©é   Úcp850Zcp850_general_ciT©r&   Úlatin1Zlatin1_german1_ciF©é   Úhp8Zhp8_english_ciT©é   Úkoi8rZkoi8r_general_ciT©r%   rC   Zlatin1_swedish_ciT©é	   r;   Zlatin2_general_ciT©é
   Úswe7Zswe7_swedish_ciT©é   ÚasciiZascii_general_ciT©é   ÚujisZujis_japanese_ciT©é   ÚsjisZsjis_japanese_ciT©é   Úcp1251Zcp1251_bulgarian_ciF©é   rC   Zlatin1_danish_ciF©é   ÚhebrewZhebrew_general_ciT©é   Útis620Ztis620_thai_ciT©é   ÚeuckrZeuckr_korean_ciT©é   Úlatin7Zlatin7_estonian_csF©é   r;   Zlatin2_hungarian_ciF©é   Úkoi8uZkoi8u_general_ciT©é   r[   Zcp1251_ukrainian_ciF©é   Úgb2312Zgb2312_chinese_ciT©é   ÚgreekZgreek_general_ciT©é   Úcp1250Zcp1250_general_ciT©é   r;   Zlatin2_croatian_ciF©é   ÚgbkZgbk_chinese_ciT©é   Úcp1257Zcp1257_lithuanian_ciF©é   Úlatin5Zlatin5_turkish_ciT©é   rC   Zlatin1_german2_ciF©é    Úarmscii8Zarmscii8_general_ciT)é!   Úutf8mb3Zutf8mb3_general_ciT©é"   ry   Zcp1250_czech_csF©é#   Úucs2Zucs2_general_ciT©é$   Úcp866Zcp866_general_ciT©é%   Úkeybcs2Zkeybcs2_general_ciT©é&   ÚmacceZmacce_general_ciT©é'   ÚmacromanZmacroman_general_ciT©é(   Úcp852Zcp852_general_ciT©é)   ri   Zlatin7_general_ciT©é*   ri   Zlatin7_general_csF©é+   r™   Z	macce_binF©é,   ry   Zcp1250_croatian_ciF)é-   r2   Úutf8mb4_general_ciF©é.   r2   Zutf8mb4_binF©é/   rC   Z
latin1_binF©é0   rC   Zlatin1_general_ciF©é1   rC   Zlatin1_general_csF©é2   r[   Z
cp1251_binF©é3   r[   Zcp1251_general_ciT©é4   r[   Zcp1251_general_csF©é5   rœ   Zmacroman_binF©é6   Úutf16Zutf16_general_ciT©é7   r¼   Z	utf16_binF©é8   Úutf16leZutf16le_general_ciT©é9   Úcp1256Zcp1256_general_ciT©é:   r   Z
cp1257_binF©é;   r   Zcp1257_general_ciT©é<   Úutf32Zutf32_general_ciT©é=   rË   Z	utf32_binF©é>   rÁ   Zutf16le_binF©é?   ÚbinaryrÒ   T©é@   r‰   Zarmscii8_binF©éA   rR   Z	ascii_binF©éB   ry   Z
cp1250_binF©éC   rÄ   Z
cp1256_binF©éD   r“   Z	cp866_binF©éE   r>   Zdec8_binF©éF   rv   Z	greek_binF©éG   r`   Z
hebrew_binF©éH   rF   Zhp8_binF©éI   r–   Zkeybcs2_binF©éJ   rI   Z	koi8r_binF©éK   rn   Z	koi8u_binF)éL   r‹   Zutf8mb3_tolower_ciF©éM   r;   Z
latin2_binF©éN   r„   Z
latin5_binF©éO   ri   Z
latin7_binF©éP   rA   Z	cp850_binF©éQ   rŸ   Z	cp852_binF©éR   rO   Zswe7_binF)éS   r‹   Zutf8mb3_binF©éT   r9   Zbig5_binF©éU   rf   Z	euckr_binF©éV   rs   Z
gb2312_binF©éW   r~   Zgbk_binF©éX   rX   Zsjis_binF©éY   rc   Z
tis620_binF©éZ   r   Zucs2_binF©é[   rU   Zujis_binF©é\   Úgeostd8Zgeostd8_general_ciT©é]   r  Zgeostd8_binF©é^   rC   Zlatin1_spanish_ciF©é_   Úcp932Zcp932_japanese_ciT©é`   r  Z	cp932_binF©éa   ÚeucjpmsZeucjpms_japanese_ciT©éb   r  Zeucjpms_binF©éc   ry   Zcp1250_polish_ciF©ée   r¼   Zutf16_unicode_ciF©éf   r¼   Zutf16_icelandic_ciF©ég   r¼   Zutf16_latvian_ciF©éh   r¼   Zutf16_romanian_ciF©éi   r¼   Zutf16_slovenian_ciF©éj   r¼   Zutf16_polish_ciF©ék   r¼   Zutf16_estonian_ciF©él   r¼   Zutf16_spanish_ciF©ém   r¼   Zutf16_swedish_ciF©én   r¼   Zutf16_turkish_ciF©éo   r¼   Zutf16_czech_ciF©ép   r¼   Zutf16_danish_ciF©éq   r¼   Zutf16_lithuanian_ciF©ér   r¼   Zutf16_slovak_ciF©és   r¼   Zutf16_spanish2_ciF©ét   r¼   Zutf16_roman_ciF©éu   r¼   Zutf16_persian_ciF©év   r¼   Zutf16_esperanto_ciF©éw   r¼   Zutf16_hungarian_ciF©éx   r¼   Zutf16_sinhala_ciF©éy   r¼   Zutf16_german2_ciF©éz   r¼   Zutf16_croatian_ciF©é{   r¼   Zutf16_unicode_520_ciF©é|   r¼   Zutf16_vietnamese_ciF©é€   r   Zucs2_unicode_ciF©é   r   Zucs2_icelandic_ciF©é‚   r   Zucs2_latvian_ciF©éƒ   r   Zucs2_romanian_ciF©é„   r   Zucs2_slovenian_ciF©é…   r   Zucs2_polish_ciF©é†   r   Zucs2_estonian_ciF©é‡   r   Zucs2_spanish_ciF©éˆ   r   Zucs2_swedish_ciF©é‰   r   Zucs2_turkish_ciF©éŠ   r   Zucs2_czech_ciF©é‹   r   Zucs2_danish_ciF©éŒ   r   Zucs2_lithuanian_ciF©é   r   Zucs2_slovak_ciF©éŽ   r   Zucs2_spanish2_ciF©é   r   Zucs2_roman_ciF©é   r   Zucs2_persian_ciF©é‘   r   Zucs2_esperanto_ciF©é’   r   Zucs2_hungarian_ciF©é“   r   Zucs2_sinhala_ciF©é”   r   Zucs2_german2_ciF©é•   r   Zucs2_croatian_ciF©é–   r   Zucs2_unicode_520_ciF©é—   r   Zucs2_vietnamese_ciF©éŸ   r   Zucs2_general_mysql500_ciF©é    rË   Zutf32_unicode_ciF©é¡   rË   Zutf32_icelandic_ciF©é¢   rË   Zutf32_latvian_ciF©é£   rË   Zutf32_romanian_ciF©é¤   rË   Zutf32_slovenian_ciF©é¥   rË   Zutf32_polish_ciF©é¦   rË   Zutf32_estonian_ciF©é§   rË   Zutf32_spanish_ciF©é¨   rË   Zutf32_swedish_ciF©é©   rË   Zutf32_turkish_ciF©éª   rË   Zutf32_czech_ciF©é«   rË   Zutf32_danish_ciF©é¬   rË   Zutf32_lithuanian_ciF©é­   rË   Zutf32_slovak_ciF©é®   rË   Zutf32_spanish2_ciF©é¯   rË   Zutf32_roman_ciF©é°   rË   Zutf32_persian_ciF©é±   rË   Zutf32_esperanto_ciF©é²   rË   Zutf32_hungarian_ciF©é³   rË   Zutf32_sinhala_ciF©é´   rË   Zutf32_german2_ciF©éµ   rË   Zutf32_croatian_ciF©é¶   rË   Zutf32_unicode_520_ciF©é·   rË   Zutf32_vietnamese_ciF)éÀ   r‹   Zutf8mb3_unicode_ciF)éÁ   r‹   Zutf8mb3_icelandic_ciF)éÂ   r‹   Zutf8mb3_latvian_ciF)éÃ   r‹   Zutf8mb3_romanian_ciF)éÄ   r‹   Zutf8mb3_slovenian_ciF)éÅ   r‹   Zutf8mb3_polish_ciF)éÆ   r‹   Zutf8mb3_estonian_ciF)éÇ   r‹   Zutf8mb3_spanish_ciF)éÈ   r‹   Zutf8mb3_swedish_ciF)éÉ   r‹   Zutf8mb3_turkish_ciF)éÊ   r‹   Zutf8mb3_czech_ciF)éË   r‹   Zutf8mb3_danish_ciF)éÌ   r‹   Zutf8mb3_lithuanian_ciF)éÍ   r‹   Zutf8mb3_slovak_ciF)éÎ   r‹   Zutf8mb3_spanish2_ciF)éÏ   r‹   Zutf8mb3_roman_ciF)éÐ   r‹   Zutf8mb3_persian_ciF)éÑ   r‹   Zutf8mb3_esperanto_ciF)éÒ   r‹   Zutf8mb3_hungarian_ciF)éÓ   r‹   Zutf8mb3_sinhala_ciF)éÔ   r‹   Zutf8mb3_german2_ciF)éÕ   r‹   Zutf8mb3_croatian_ciF)éÖ   r‹   Zutf8mb3_unicode_520_ciF)é×   r‹   Zutf8mb3_vietnamese_ciF)éß   r‹   Zutf8mb3_general_mysql500_ciF©éà   r2   Zutf8mb4_unicode_ciF©éá   r2   Zutf8mb4_icelandic_ciF©éâ   r2   Zutf8mb4_latvian_ciF©éã   r2   Zutf8mb4_romanian_ciF©éä   r2   Zutf8mb4_slovenian_ciF©éå   r2   Zutf8mb4_polish_ciF©éæ   r2   Zutf8mb4_estonian_ciF©éç   r2   Zutf8mb4_spanish_ciF©éè   r2   Zutf8mb4_swedish_ciF©éé   r2   Zutf8mb4_turkish_ciF©éê   r2   Zutf8mb4_czech_ciF©éë   r2   Zutf8mb4_danish_ciF©éì   r2   Zutf8mb4_lithuanian_ciF©éí   r2   Zutf8mb4_slovak_ciF©éî   r2   Zutf8mb4_spanish2_ciF©éï   r2   Zutf8mb4_roman_ciF©éð   r2   Zutf8mb4_persian_ciF©éñ   r2   Zutf8mb4_esperanto_ciF©éò   r2   Zutf8mb4_hungarian_ciF©éó   r2   Zutf8mb4_sinhala_ciF©éô   r2   Zutf8mb4_german2_ciF©éõ   r2   Zutf8mb4_croatian_ciF©éö   r2   Zutf8mb4_unicode_520_ciF©é÷   r2   Zutf8mb4_vietnamese_ciF©éø   Úgb18030Zgb18030_chinese_ciT©éù   rù  Zgb18030_binF©éú   rù  Zgb18030_unicode_520_ciF)éÿ   r2   Zutf8mb4_0900_ai_ciT)é   r2   Zutf8mb4_de_pb_0900_ai_ciF)i  r2   Zutf8mb4_is_0900_ai_ciF)i  r2   Zutf8mb4_lv_0900_ai_ciF)i  r2   Zutf8mb4_ro_0900_ai_ciF)i  r2   Zutf8mb4_sl_0900_ai_ciF)i  r2   Zutf8mb4_pl_0900_ai_ciF)i  r2   Zutf8mb4_et_0900_ai_ciF)i  r2   Zutf8mb4_es_0900_ai_ciF)i  r2   Zutf8mb4_sv_0900_ai_ciF)i	  r2   Zutf8mb4_tr_0900_ai_ciF)i
  r2   Zutf8mb4_cs_0900_ai_ciF)i  r2   Zutf8mb4_da_0900_ai_ciF)i  r2   Zutf8mb4_lt_0900_ai_ciF)i  r2   Zutf8mb4_sk_0900_ai_ciF)i  r2   Zutf8mb4_es_trad_0900_ai_ciF)i  r2   Zutf8mb4_la_0900_ai_ciF)i  r2   Zutf8mb4_eo_0900_ai_ciF)i  r2   Zutf8mb4_hu_0900_ai_ciF)i  r2   Zutf8mb4_hr_0900_ai_ciF)i  r2   Zutf8mb4_vi_0900_ai_ciF)i  r2   Zutf8mb4_0900_as_csF)i  r2   Zutf8mb4_de_pb_0900_as_csF)i  r2   Zutf8mb4_is_0900_as_csF)i  r2   Zutf8mb4_lv_0900_as_csF)i  r2   Zutf8mb4_ro_0900_as_csF)i  r2   Zutf8mb4_sl_0900_as_csF)i  r2   Zutf8mb4_pl_0900_as_csF)i  r2   Zutf8mb4_et_0900_as_csF)i  r2   Zutf8mb4_es_0900_as_csF)i  r2   Zutf8mb4_sv_0900_as_csF)i   r2   Zutf8mb4_tr_0900_as_csF)i!  r2   Zutf8mb4_cs_0900_as_csF)i"  r2   Zutf8mb4_da_0900_as_csF)i#  r2   Zutf8mb4_lt_0900_as_csF)i$  r2   Zutf8mb4_sk_0900_as_csF)i%  r2   Zutf8mb4_es_trad_0900_as_csF)i&  r2   Zutf8mb4_la_0900_as_csF)i(  r2   Zutf8mb4_eo_0900_as_csF)i)  r2   Zutf8mb4_hu_0900_as_csF)i*  r2   Zutf8mb4_hr_0900_as_csF)i,  r2   Zutf8mb4_vi_0900_as_csF)i/  r2   Zutf8mb4_ja_0900_as_csF)i0  r2   Zutf8mb4_ja_0900_as_cs_ksF)i1  r2   Zutf8mb4_0900_as_ciF)i2  r2   Zutf8mb4_ru_0900_ai_ciF)i3  r2   Zutf8mb4_ru_0900_as_csF)i4  r2   Zutf8mb4_zh_0900_as_csF)i5  r2   Zutf8mb4_0900_binF)i6  r2   Zutf8mb4_nb_0900_ai_ciF)i7  r2   Zutf8mb4_nb_0900_as_csF)i8  r2   Zutf8mb4_nn_0900_ai_ciF)i9  r2   Zutf8mb4_nn_0900_as_csF)i:  r2   Zutf8mb4_sr_latn_0900_ai_ciF)i;  r2   Zutf8mb4_sr_latn_0900_as_csF)i<  r2   Zutf8mb4_bs_0900_ai_ciF)i=  r2   Zutf8mb4_bs_0900_as_csF)i>  r2   Zutf8mb4_bg_0900_ai_ciF)i?  r2   Zutf8mb4_bg_0900_as_csF)i@  r2   Zutf8mb4_gl_0900_ai_ciF)iA  r2   Zutf8mb4_gl_0900_as_csF)iB  r2   Zutf8mb4_mn_cyrl_0900_ai_ciF)iC  r2   Zutf8mb4_mn_cyrl_0900_as_csF)Þr7   r:   r<   r?   rB   rD   rG   rJ   rK   rM   rP   rS   rV   rY   r\   r^   ra   rd   rg   rj   rl   ro   rq   rt   rw   rz   r|   r   r‚   r…   r‡   )rŠ   r1   Zutf8_general_ciTrŒ   rŽ   r‘   r”   r—   rš   r   r    r¢   r¤   r¦   )r¨   r2   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å   rç   ré   rì   rî   rð   rò   rô   rö   )rø   r1   Zutf8_binFrù   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  r2  r4  r6  r8  r:  r<  r>  r@  rB  rD  rF  rH  rJ  rL  rN  rP  rR  rT  rV  rX  rZ  r\  r^  r`  rb  rd  rf  rh  rj  rl  rn  rp  rr  rt  rv  rx  rz  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®  r1   Zutf8_unicode_ciF)r¯  r1   Zutf8_icelandic_ciF)r°  r1   Zutf8_latvian_ciF)r±  r1   Zutf8_romanian_ciF)r²  r1   Zutf8_slovenian_ciF)r³  r1   Zutf8_polish_ciF)r´  r1   Zutf8_estonian_ciF)rµ  r1   Zutf8_spanish_ciF)r¶  r1   Zutf8_swedish_ciF)r·  r1   Zutf8_turkish_ciF)r¸  r1   Zutf8_czech_ciF)r¹  r1   Zutf8_danish_ciF)rº  r1   Zutf8_lithuanian_ciF)r»  r1   Zutf8_slovak_ciF)r¼  r1   Zutf8_spanish2_ciF)r½  r1   Zutf8_roman_ciF)r¾  r1   Zutf8_persian_ciF)r¿  r1   Zutf8_esperanto_ciF)rÀ  r1   Zutf8_hungarian_ciF)rÁ  r1   Zutf8_sinhala_ciF)rÂ  r1   Zutf8_german2_ciF)rÃ  r1   Zutf8_croatian_ciF)rÄ  r1   Zutf8_unicode_520_ciF)rÅ  r1   Zutf8_vietnamese_ciF)rÆ  r1   Z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