
    *hv                         S r SS/rSSKJr  SSKJr  SSKJrJrJ	r	J
r
Jr  SSKJr  \ " S	 S5      5       r " S
 S5      rSrSr\" 5       rg)z5This module contains the MySQL Server Character Sets.Charsetcharsets    )defaultdict)	dataclass)DefaultDictDictOptionalSequenceTuple   )ProgrammingErrorc                   B    \ rS rSr% Sr\\S'   \\S'   \\S'   \\S'   Sr	g)	r   (   z'Dataclass representing a character set.
charset_idname	collation
is_default N)
__name__
__module____qualname____firstlineno____doc__int__annotations__strbool__static_attributes__r       T/var/www/auris/envauris/lib/python3.13/site-packages/mysql/connector/aio/charsets.pyr   r   (   s    1O
INr   c                       \ rS rSrSrSS jrS\SS4S jrS\S\4S	 jr	S
\
S\4S jrS\
S\4S jrS\
S
\
S\4S jrSrg)Charsets2   aR  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                 V    0 U l         0 U l        [        [        5      U l        S U l        g )N)_charset_id_store_collation_storer   dict_name_store_mysql_major_version)selfs    r    __init__Charsets.__init__I   s'    5746ALTAR37!r   versionc                    Xl         U R                  R                  5         U R                  R                  5         U R                  R                  5         SnUS:  a  [
        nOUS:X  a  [        nO[        S5      eU H?  u  p4pV[        X4XV5      nXpR                  U'   XpR                  U'   XpR                  U   U'   MA     g)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   charsets           r    set_mysql_major_version Charsets.set_mysql_major_versionO   s     %,!$$&##% ?Ca<-N\-N"#@AA7E3Jij	FG18"":./6!!),07T"9-	 8Fr   r   c                 f     U R                   U   $ ! [         a  n[        SU S35      UeSnAff = f)zwGet 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   errs      r    	get_by_idCharsets.get_by_idk   sC    	V))*55 	V"%6zl(#KLRUU	V    
0+0r   c                 f     U R                   U   $ ! [         a  n[        SU S35      UeSnAff = f)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   r<   s      r    get_by_collationCharsets.get_by_collationy   sA    	N((33 	N"Z	{(#CD#M	Nr?   r   c                     US;   a  U R                   S:X  a  SnU R                  U   R                  5        H  nUR                  (       d  M  Us  $    [        SU S35      e! [         a  n[        SU S35      UeSnAff = f)	zuGet character set by name.

Args:
    name: The charset name.

Returns:
    Charset: The Charset dataclass instance.
)utf8zutf-8r0   utf8mb4zCharacter set name r:   Nz(No default was found for character set '')r*   r)   valuesr   r;   r   )r+   r   r6   r<   s       r    get_by_nameCharsets.get_by_name   s    	R((T-F-F!-K ++D188:%%%"N ;
 !I$qQRR  	R"%8h#GHcQ	Rs$   AA" A" A" "
B,A<<Bc                 r     U R                   U   U   $ ! [         a  n[        SU SU S35      UeSnAff = f)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   r<   s       r    get_by_name_and_collation"Charsets.get_by_name_and_collation   sP    	##D))44 	"&tf,>ykU	s    
616)r&   r'   r*   r)   )r$   N)r   r   r   r   r   r,   r   r7   r   r=   r   rA   rH   rK   r   r   r   r    r"   r"   2   s{    ,88s 8t 88VC VG VN# N' NS S S&c c g r   r"   (     big5big5_chinese_ciTr   latin2latin2_czech_csF   dec8dec8_swedish_ciT   cp850cp850_general_ciTr1   latin1latin1_german1_ciF   hp8hp8_english_ciT   koi8rkoi8r_general_ciTr0   r]   latin1_swedish_ciT	   rR   latin2_general_ciT
   swe7swe7_swedish_ciT   asciiascii_general_ciT   ujisujis_japanese_ciT   sjissjis_japanese_ciT   cp1251cp1251_bulgarian_ciF   r]   latin1_danish_ciF   hebrewhebrew_general_ciT   tis620tis620_thai_ciT   euckreuckr_korean_ciT   latin7latin7_estonian_csF   rR   latin2_hungarian_ciF   koi8ukoi8u_general_ciT   r~   cp1251_ukrainian_ciF   gb2312gb2312_chinese_ciT   greekgreek_general_ciT   cp1250cp1250_general_ciT   rR   latin2_croatian_ciF   gbkgbk_chinese_ciT   cp1257cp1257_lithuanian_ciF   latin5latin5_turkish_ciT   r]   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r   cp852cp852_general_ciT)   r   latin7_general_ciT*   r   latin7_general_csF+   r   	macce_binF,   r   cp1250_croatian_ciF)-   rE   utf8mb4_general_ciF.   rE   utf8mb4_binF/   r]   
latin1_binF0   r]   latin1_general_ciF1   r]   latin1_general_csFr#   r~   
cp1251_binF3   r~   cp1251_general_ciT4   r~   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   rr   	ascii_binFB   r   
cp1250_binFC   r  
cp1256_binFD   r   	cp866_binFE   rV   dec8_binFF   r   	greek_binFG   r   
hebrew_binFH   ra   hp8_binFI   r   keybcs2_binFJ   re   	koi8r_binFK   r   	koi8u_binF)L   r   utf8mb3_tolower_ciFM   rR   
latin2_binFN   r   
latin5_binFO   r   
latin7_binFP   rZ   	cp850_binFQ   r   	cp852_binFR   rn   swe7_binF)S   r   utf8mb3_binFT   rO   big5_binFU   r   	euckr_binFV   r   
gb2312_binFW   r   gbk_binFX   rz   sjis_binFY   r   
tis620_binFZ   r   ucs2_binF[   rv   ujis_binF\   geostd8geostd8_general_ciT]   rw  geostd8_binF^   r]   latin1_spanish_ciF_   cp932cp932_japanese_ciT`   r  	cp932_binFa   eucjpmseucjpms_japanese_ciTb   r  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   rE   utf8mb4_unicode_ciF   rE   utf8mb4_icelandic_ciF   rE   utf8mb4_latvian_ciF   rE   utf8mb4_romanian_ciF   rE   utf8mb4_slovenian_ciF   rE   utf8mb4_polish_ciF   rE   utf8mb4_estonian_ciF   rE   utf8mb4_spanish_ciF   rE   utf8mb4_swedish_ciF   rE   utf8mb4_turkish_ciF   rE   utf8mb4_czech_ciF   rE   utf8mb4_danish_ciF   rE   utf8mb4_lithuanian_ciF   rE   utf8mb4_slovak_ciF   rE   utf8mb4_spanish2_ciF   rE   utf8mb4_roman_ciF   rE   utf8mb4_persian_ciF   rE   utf8mb4_esperanto_ciF   rE   utf8mb4_hungarian_ciF   rE   utf8mb4_sinhala_ciF   rE   utf8mb4_german2_ciF   rE   utf8mb4_croatian_ciF   rE   utf8mb4_unicode_520_ciF   rE   utf8mb4_vietnamese_ciF   gb18030gb18030_chinese_ciT   r  gb18030_binF   r  gb18030_unicode_520_ciF)   rE   utf8mb4_0900_ai_ciT)   rE   utf8mb4_de_pb_0900_ai_ciF)i  rE   utf8mb4_is_0900_ai_ciF)i  rE   utf8mb4_lv_0900_ai_ciF)i  rE   utf8mb4_ro_0900_ai_ciF)i  rE   utf8mb4_sl_0900_ai_ciF)i  rE   utf8mb4_pl_0900_ai_ciF)i  rE   utf8mb4_et_0900_ai_ciF)i  rE   utf8mb4_es_0900_ai_ciF)i  rE   utf8mb4_sv_0900_ai_ciF)i	  rE   utf8mb4_tr_0900_ai_ciF)i
  rE   utf8mb4_cs_0900_ai_ciF)i  rE   utf8mb4_da_0900_ai_ciF)i  rE   utf8mb4_lt_0900_ai_ciF)i  rE   utf8mb4_sk_0900_ai_ciF)i  rE   utf8mb4_es_trad_0900_ai_ciF)i  rE   utf8mb4_la_0900_ai_ciF)i  rE   utf8mb4_eo_0900_ai_ciF)i  rE   utf8mb4_hu_0900_ai_ciF)i  rE   utf8mb4_hr_0900_ai_ciF)i  rE   utf8mb4_vi_0900_ai_ciF)i  rE   utf8mb4_0900_as_csF)i  rE   utf8mb4_de_pb_0900_as_csF)i  rE   utf8mb4_is_0900_as_csF)i  rE   utf8mb4_lv_0900_as_csF)i  rE   utf8mb4_ro_0900_as_csF)i  rE   utf8mb4_sl_0900_as_csF)i  rE   utf8mb4_pl_0900_as_csF)i  rE   utf8mb4_et_0900_as_csF)i  rE   utf8mb4_es_0900_as_csF)i  rE   utf8mb4_sv_0900_as_csF)i   rE   utf8mb4_tr_0900_as_csF)i!  rE   utf8mb4_cs_0900_as_csF)i"  rE   utf8mb4_da_0900_as_csF)i#  rE   utf8mb4_lt_0900_as_csF)i$  rE   utf8mb4_sk_0900_as_csF)i%  rE   utf8mb4_es_trad_0900_as_csF)i&  rE   utf8mb4_la_0900_as_csF)i(  rE   utf8mb4_eo_0900_as_csF)i)  rE   utf8mb4_hu_0900_as_csF)i*  rE   utf8mb4_hr_0900_as_csF)i,  rE   utf8mb4_vi_0900_as_csF)i/  rE   utf8mb4_ja_0900_as_csF)i0  rE   utf8mb4_ja_0900_as_cs_ksF)i1  rE   utf8mb4_0900_as_ciF)i2  rE   utf8mb4_ru_0900_ai_ciF)i3  rE   utf8mb4_ru_0900_as_csF)i4  rE   utf8mb4_zh_0900_as_csF)i5  rE   utf8mb4_0900_binF)i6  rE   utf8mb4_nb_0900_ai_ciF)i7  rE   utf8mb4_nb_0900_as_csF)i8  rE   utf8mb4_nn_0900_ai_ciF)i9  rE   utf8mb4_nn_0900_as_csF)i:  rE   utf8mb4_sr_latn_0900_ai_ciF)i;  rE   utf8mb4_sr_latn_0900_as_csF)i<  rE   utf8mb4_bs_0900_ai_ciF)i=  rE   utf8mb4_bs_0900_as_csF)i>  rE   utf8mb4_bg_0900_ai_ciF)i?  rE   utf8mb4_bg_0900_as_csF)i@  rE   utf8mb4_gl_0900_ai_ciF)iA  rE   utf8mb4_gl_0900_as_csF)iB  rE   utf8mb4_mn_cyrl_0900_ai_ciF)iC  rE   utf8mb4_mn_cyrl_0900_as_csF)rM   rQ   rT   rX   r\   r_   rc   rg   ri   rl   rp   rt   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rD   utf8_general_ciTr   r   r   r   r   r   r   r   r   r   r   )r   rE   r   Tr   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r   r#  r&  r)  r,  r/  r2  r5  r8  r;  r>  rA  rD  rI  rL  rO  rR  rU  rX  )r[  rD   utf8_binFr]  r`  rc  rf  ri  rl  ro  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/  r2  r5  r8  r;  r>  rA  rD  rG  rJ  rM  rP  rS  rV  rY  r\  r_  rb  re  rh  )rk  rD   utf8_unicode_ciF)rm  rD   utf8_icelandic_ciF)ro  rD   utf8_latvian_ciF)rq  rD   utf8_romanian_ciF)rs  rD   utf8_slovenian_ciF)ru  rD   utf8_polish_ciF)rw  rD   utf8_estonian_ciF)ry  rD   utf8_spanish_ciF)r{  rD   utf8_swedish_ciF)r}  rD   utf8_turkish_ciF)r  rD   utf8_czech_ciF)r  rD   utf8_danish_ciF)r  rD   utf8_lithuanian_ciF)r  rD   utf8_slovak_ciF)r  rD   utf8_spanish2_ciF)r  rD   utf8_roman_ciF)r  rD   utf8_persian_ciF)r  rD   utf8_esperanto_ciF)r  rD   utf8_hungarian_ciF)r  rD   utf8_sinhala_ciF)r  rD   utf8_german2_ciF)r  rD   utf8_croatian_ciF)r  rD   utf8_unicode_520_ciF)r  rD   utf8_vietnamese_ciF)r  rD   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"   r3   r4   r   r   r   r    <module>rP     sf   : <j
! # ! ? ? %   w wt_ B	_ B :r   