o
    #jDi                     @  s  U d Z ddlmZ ddl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 ed Zd	Zg ed
R ZdZdZdZdZdZejdddG dd dZejdd		ddddZg edd ejd!d"d#ed$d%ejd!d"d#ed&d'ejd!d"d#ed(d)ejd!d"d#ed*d+ejd!d"d#ed,d-ejd!d"d#ed.d/ejd!d"d#ed0d1ejd!d"d#ed2d3ejd!d"d#ed4d5ejd!d"d#ed6d7ejdd8d#ed9d:ejdd;d#ed<d=ejdd>d#ed?d@ejdd;d#edAdBejdd>d#edCdDejdd8d#edEdFejdd8d#edGdHejdd;d#edIdJejdd;d#edKdLejdd;d#edMdNejdd>d#edOdPejdd;d#edQdRejd!dSd#edTdUejd!g edVR d#edWdXejd!ed#edYdZejd!ed#ed[d\ejd!d]d#ed^d_ejd!d`d#edadbejd!dcd#edddeejd!ed#edfdgejd!ed#edhdiejd!djd#edkdlejd!dmd#edndoejd!dpd#edqdrejd!dSd#edsdtejd!ed#edudvejd!ed#edwdxejd!dyd#edzd{ejd!ed#ed|d}ejd!ed#ed~dejd!ed#eddejd!d]d#eddejd!dcd#eddejd!d`d#eddejd!dd#eddejd!ed#eddejd!dd#eddejd!ed#eddejd!dd#eddejdd>d#eddejd!ed#eddejd!d]d#eddejd!dd#eddejd!ed#eddejd!ed#eddejd!d`d#eddejd!ed#eddejd!dd#eddejd!dpd#eddejd!dd#eddejd!dd#eddejd!dd#eddejd!ed#eddejd!dd#eddejd!d]d#eddejd!ed#eddejd!ed#eddejd!ed#eddejd!ed#eddejd!dcd#eddejd!d`d#eddejd!ed#eddejd!dd#eddejd!dd#eddejd!dcd#eddejd!dd#eddejd!dd#eddejd!dd#eddejd!ed#eddejd!d]d#eddejd!ed#eddejd!dcd#eddejd!ed#eddejd!d]d#eddejd!d`d#eddejd!dd#R Z e	dd e D Z!de"d< ej#dddZ$dddZ%dddZ&dS )z<Encoding registry with metadata for all supported encodings.    )annotationsN)Iterable)MappingProxyType)Literal)EncodingEra)Vascii	big5hkscscp1006cp1026cp1125cp1140cp1250cp1251cp1252cp1253cp1254cp1255cp1256cp1257cp1258cp273cp424cp437cp500cp720cp737cp775cp850cp852cp855cp856cp857cp858cp860cp861cp862cp863cp864cp865cp866cp869cp874cp875cp932cp949euc_jis_2004euc_krgb18030	hp-roman8hziso2022_jp_2iso2022_jp_2004iso2022_jp_ext
iso2022_kr	iso8859-1
iso8859-10
iso8859-13
iso8859-14
iso8859-15
iso8859-16	iso8859-2	iso8859-3	iso8859-4	iso8859-5	iso8859-6	iso8859-7	iso8859-8	iso8859-9johabkoi8-rkoi8-tkoi8-ukz1048mac-cyrillic	mac-greekmac-iceland
mac-latin2	mac-romanmac-turkishptcp154shift_jis_2004tis-620utf-16	utf-16-be	utf-16-leutf-32	utf-32-be	utf-32-leutf-7utf-8	utf-8-sig)brcydadeenesfifrgaidisitmsnlnoptsvtr)rubguksrmkbe)plcshuhrrosksl)ru   rv   rw   rx   rz   r{   )etltlv)arfaT)frozenslotsc                   @  s:   e Zd ZU dZded< ded< ded< ded	< ded
< dS )EncodingInfozMetadata for a single encoding.EncodingNamenameztuple[str, ...]aliasesr   eraboolis_multibyte	languagesN)__name__
__module____qualname____doc____annotations__ r   r   Q/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/chardet/registry.pyr      s   
 r      )maxsizer   r   include_encodingsfrozenset[str] | Noneexclude_encodingsreturntuple[EncodingInfo, ...]c                   sR    fddt  D }durfdd|D }dur%fdd|D }t|S )a  Return registry entries matching the given filters.

    Filters are applied in order: era, include, exclude.

    :param era: Bit flags specifying which encoding eras to include.
    :param include_encodings: If not ``None``, only return encodings in this set.
    :param exclude_encodings: If not ``None``, exclude encodings in this set.
    :returns: A tuple of matching :class:`EncodingInfo` entries.
    c                 3  s    | ]
}|j  @ r|V  qd S Nr   .0encr   r   r   	<genexpr>       z!get_candidates.<locals>.<genexpr>Nc                 3  s    | ]
}|j  v r|V  qd S r   r   r   )r   r   r   r      r   c                 3  s    | ]
}|j  vr|V  qd S r   r   r   )r   r   r   r      r   )REGISTRYvaluestuple)r   r   r   
candidatesr   )r   r   r   r   get_candidates   s   r   r   )zus-asciiFr   )r   r   r   r   r   r[   )r[   utf8Zcsutf8zunicode-1-1-utf-8Zunicode11utf8Zunicode20utf8zx-unicode20utf8r\   )z	UTF-8-SIGz	utf-8-bomrT   )zUTF-16utf16Zcsutf16rU   )z	UTF-16-BEzutf-16beZ	csutf16berV   )z	UTF-16-LEzutf-16leZ	csutf16lerW   )zUTF-32utf32Zcsutf32rX   )z	UTF-32-BEzutf-32beZ	csutf32berY   )z	UTF-32-LEzutf-32leZ	csutf32lerZ   )zUTF-7utf7Zcsutf7r   )	z
Big5-HKSCSZ	Big5HKSCSbig5zbig5-twcsbig5cp950zcn-big5zx-x-big5Zcsbig5hkscs)zhr-   )ZCP932ms932mskanjizms-kanjiZcswindows31jzwindows-31j)jar.   )
ZCP949ms949uhczwindows-949Zcsksc56011987z
iso-ir-149zks_c_5601-1987zks_c_5601-1989ksc5601Zksc_5601)kor/   )zEUC-JIS-2004zeuc-jpeucjpujiszu-jiszeuc-jisx0213Zcseucpkdfmtjapanesezx-euc-jpr0   )zEUC-KReuckrZcseuckrr1   )ZGB18030zgb-18030gb2312gbkZcsgb2312Zgb_2312z
gb_2312-80zx-gbkcsiso58gb231280z	iso-ir-58Z	csgb18030Zcsgbkcp936ms936zwindows-936r3   )z
HZ-GB-2312r3   r4   )zISO-2022-JP-2ziso-2022-jpcsiso2022jpziso2022-jp-1Zcsiso2022jp2r5   )zISO-2022-JP-2004ziso2022-jp-3r6   )zISO-2022-JP-EXTr7   )zISO-2022-KRcsiso2022krrR   )
zShift-JIS-2004ZShift_JIS_2004	shift_jissjisshiftjiss_jiszshift-jisx0213zx-sjis
csshiftjisms_kanjir+   )ZCP874zwindows-874zdos-874)thr   )zWindows-1250r   zx-cp1250Zcswindows1250rr   r   )zWindows-1251r   zx-cp1251Zcswindows1251r   )zWindows-1252r   zx-cp1252Zcswindows1252r   )zWindows-1253r   zx-cp1253Zcswindows1253)elr   )zWindows-1254r   zx-cp1254Zcswindows1254)rn   r   )zWindows-1255r   zx-cp1255Zcswindows1255)her   )zWindows-1256r   zx-cp1256Zcswindows1256r   )zWindows-1257r   zx-cp1257Zcswindows1257r   )zWindows-1258r   zx-cp1258Zcswindows1258)virG   )zKOI8-RZkoi8rZkoiZkoi8cskoi8r)ro   rI   )zKOI8-UZkoi8uzkoi8-ruZcskoi8u)rq   rS   )zTIS-620tis620ziso-8859-11z
iso8859-11Z	iso885911Zcstis620r8   )z
ISO-8859-1zlatin-1latin1r8   Ziso88591r>   )z
ISO-8859-2zlatin-2latin2r>   Ziso88592r?   )z
ISO-8859-3zlatin-3latin3r?   Ziso88593)eomtrn   r@   )z
ISO-8859-4zlatin-4latin4r@   Ziso88594rA   )z
ISO-8859-5rA   cyrillicZiso88595rB   )z
ISO-8859-6rB   arabicZiso88596ziso-8859-6-eziso-8859-6-iZcsiso88596eZcsiso88596irC   )z
ISO-8859-7rC   greekZiso88597Zsun_eu_greekrD   )
z
ISO-8859-8rD   hebrewZiso88598ziso-8859-8-eziso-8859-8-iZcsiso88598eZcsiso88598iZvisualZlogicalrE   )z
ISO-8859-9zlatin-5latin5rE   Ziso88599r9   )zISO-8859-10zlatin-6latin6r9   Z	iso885910)rg   rc   r:   )zISO-8859-13zlatin-7latin7r:   Z	iso885913Zcsiso885913r;   )	zISO-8859-14zlatin-8latin8r;   Z	iso885914Zcsiso885914z
iso-ir-199z
iso-celticl8)r^   re   r]   gdr<   )zISO-8859-15zlatin-9latin9r<   Z	iso885915Zcsisolatin9Zcsiso885915l9r=   )zISO-8859-16zlatin-10latin10r=   Z	iso885916Zcsiso885916z
iso-ir-226l10)ry   ru   rx   rw   rz   r{   rF   )ZJohabrK   )zMac-CyrillicZMacCyrillicmaccyrilliczx-mac-cyrilliczx-mac-ukrainianrL   )z	Mac-GreekZMacGreekmacgreekrM   )zMac-IcelandZ
MacIceland
maciceland)rg   rN   )z
Mac-Latin2Z	MacLatin2	maclatin2maccentraleuroperO   )z	Mac-RomanZMacRomanmacroman	macintoshZcsmacintoshmaczx-mac-romanrP   )zMac-TurkishZ
MacTurkish
macturkishr   )ZCP720r	   )ZCP1006)urr   )ZCP1125rH   )zKOI8-T)tgrJ   )zKZ-1048rJ   zstrk1048-2002rk1048)kkrQ   )ZPTCP154pt154cp154r2   )z	HP-Roman8roman8r8
csHPRoman8r   )ZCP437)ra   rd   r`   rb   rl   rh   rj   r_   rm   rc   re   r   )ZCP737r   )ZCP775r   )ZCP850r   )ZCP852r   )ZCP855r    )ZCP856r!   )ZCP857r"   )ZCP858r#   )ZCP860)rl   r$   )ZCP861r%   )ZCP862r&   )ZCP863)rd   r'   )ZCP864)r   r(   )ZCP865)r_   rk   r)   )ZCP866r*   )ZCP869r   )ZCP1140cp037Zcp01140Zibm01140ibm1140Z
csibm01140r   )ZCP424r   )ZCP500r,   )ZCP875r
   )ZCP1026r   )ZCP273)r`   c                 C  s   i | ]}|j |qS r   r   )r   er   r   r   
<dictcomp>  s    r   z#MappingProxyType[str, EncodingInfo]r   r   strEncodingName | Nonec              	   C  s   |   }t D ]}|j|kr|j  S |jD ]}|  |kr&|j    S qqzt| j}W n ttfy<   Y dS w ||krEt	|S dS )zConvert an encoding name string to the canonical EncodingName.

    Handles arbitrary casing, aliases, and Python codec names.

    :param name: Any encoding name string.
    :returns: The canonical :data:`EncodingName`, or ``None`` if unknown.
    N)
lowerr   r   r   r   codecslookupLookupError
ValueErrorlookup_encoding)r   ZloweredentryaliasZ
codec_namer   r   r   r     s"   	


r   
param_namec                 C  s,   t | }|du rd| d| }t||S )a  Validate and normalize a single encoding name.

    :param name: The encoding name to validate.
    :param param_name: Parameter name for error messages.
    :returns: The canonical encoding name.
    :raises ValueError: If the encoding name is unknown.
    NzUnknown encoding z in )r   r   )r   r   	canonicalmsgr   r   r   _validate_encoding  s
   r  	encodingsIterable[str] | Nonec                   s<   | du rdS t  fdd| D }|s  d}t||S )a8  Normalize an iterable of encoding names to canonical forms.

    :param encodings: Encoding names to normalize, or ``None``.
    :param param_name: Parameter name for error messages.
    :returns: A frozenset of canonical encoding names, or ``None``.
    :raises ValueError: If any encoding name is unknown.
    Nc                 3  s    | ]}t | V  qd S r   )r  )r   r   r   r   r   r     s    z&normalize_encodings.<locals>.<genexpr>zG must not be empty; omit the argument or pass None to disable filtering)	frozensetr   )r  r   resultr  r   r  r   normalize_encodings  s   
r  )NN)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   
__future__r   r   dataclasses	functoolscollections.abcr   typesr   typingr   Zchardet.enumsr   r   Z_WESTERNZ_WESTERN_TRZ	_CYRILLICZ_CENTRAL_EUZ_CENTRAL_EU_NO_ROZ_BALTICZ_ARABIC	dataclassr   	lru_cacher   Z
MODERN_WEBZLEGACY_REGIONALZ
LEGACY_ISOZ
LEGACY_MACZDOSZ	MAINFRAMEZ_REGISTRY_ENTRIESr   r   cacher   r  r  r   r   r   r   <module>   s	   Z

		&-4;BIQbp 
      <  C  P  W  ^  e  x                     #    *    1    8    @    G    O    ^    e    l    s    z     
            $      ;      B      I      W      i
      y
                                '        .        5	        D        L        S        Z        a        h        o        v        ~                                                 "          )          0          7          >          E          L          S          Z          a          h          o          w                                                           "            +
