
    ,hv                         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             Z G d
 d      ZdZdZ e       Zy)z5This module contains the MySQL Server Character Sets.Charsetcharsets    )defaultdict)	dataclass)DefaultDictDictOptionalSequenceTuple   )ProgrammingErrorc                   :    e Zd ZU dZeed<   eed<   eed<   eed<   y)r   z'Dataclass representing a character set.
charset_idname	collation
is_defaultN)__name__
__module____qualname____doc__int__annotations__strbool     ^/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/mysql/connector/aio/charsets.pyr   r   (   s    1O
INr   c                   l    e Zd ZdZddZdeddfdZdedefdZd	e	defd
Z
de	defdZde	d	e	defdZy)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                 V    i | _         i | _        t        t              | _        d | _        y )N)_charset_id_store_collation_storer   dict_name_store_mysql_major_version)selfs    r   __init__zCharsets.__init__I   s'    5746ALTAR37!r   versionc                    || _         | j                  j                          | j                  j                          | j                  j                          d}|dk\  rt
        }n|dk(  rt        }nt        d      |D ]E  \  }}}}t        ||||      }|| j                  |<   || j                  |<   || j                  |   |<   G y)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_versionz Charsets.set_mysql_major_versionO   s     %,!$$&##% ?Ca<-N\-N"#@AA7E 	83Jij$	:FG18D"":./6D!!),07DT"9-		8r   r   c                 d    	 | j                   |   S # t        $ r}t        d| d      |d}~ww xY 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   errs      r   	get_by_idzCharsets.get_by_idk   sC    	V))*55 	V"%6zl(#KLRUU	V    	/*/r   c                 d    	 | j                   |   S # t        $ r}t        d| d      |d}~ww xY w)zGet character set by collation.

        Args:
            collation: The collation name.

        Returns:
            Charset: The Charset dataclass instance.
        z
Collation r4   N)r#   r5   r   )r'   r   r6   s      r   get_by_collationzCharsets.get_by_collationy   sA    	N((33 	N"Z	{(#CD#M	Nr8   r   c                     	 |dv r| j                   dk(  rd}| j                  |   j                         D ]  }|j                  s|c S  	 t        d| d      # t        $ r}t        d| d      |d}~ww xY w)	zGet character set by name.

        Args:
            name: The charset name.

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