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   V/var/www/html/fyndo/pharma/fyndo/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[   utf8csutf8zunicode-1-1-utf-8unicode11utf8unicode20utf8zx-unicode20utf8r\   )z	UTF-8-SIGz	utf-8-bomrT   )zUTF-16utf16csutf16rU   )z	UTF-16-BEzutf-16be	csutf16berV   )z	UTF-16-LEzutf-16le	csutf16lerW   )zUTF-32utf32csutf32rX   )z	UTF-32-BEzutf-32be	csutf32berY   )z	UTF-32-LEzutf-32le	csutf32lerZ   )zUTF-7utf7csutf7r   )	z
Big5-HKSCS	Big5HKSCSbig5zbig5-twcsbig5cp950zcn-big5zx-x-big5csbig5hkscs)zhr-   )CP932ms932mskanjizms-kanjicswindows31jzwindows-31j)jar.   )
CP949ms949uhczwindows-949csksc56011987z
iso-ir-149zks_c_5601-1987zks_c_5601-1989ksc5601ksc_5601)kor/   )zEUC-JIS-2004zeuc-jpeucjpujiszu-jiszeuc-jisx0213cseucpkdfmtjapanesezx-euc-jpr0   )zEUC-KReuckrcseuckrr1   )GB18030zgb-18030gb2312gbkcsgb2312gb_2312z
gb_2312-80zx-gbkcsiso58gb231280z	iso-ir-58	csgb18030csgbkcp936ms936zwindows-936r3   )z
HZ-GB-2312r3   r4   )zISO-2022-JP-2ziso-2022-jpcsiso2022jpziso2022-jp-1csiso2022jp2r5   )zISO-2022-JP-2004ziso2022-jp-3r6   )zISO-2022-JP-EXTr7   )zISO-2022-KRcsiso2022krrR   )
zShift-JIS-2004Shift_JIS_2004	shift_jissjisshiftjiss_jiszshift-jisx0213zx-sjis
csshiftjisms_kanjir+   )CP874zwindows-874zdos-874)thr   )zWindows-1250r   zx-cp1250cswindows1250rr   r   )zWindows-1251r   zx-cp1251cswindows1251r   )zWindows-1252r   zx-cp1252cswindows1252r   )zWindows-1253r   zx-cp1253cswindows1253)elr   )zWindows-1254r   zx-cp1254cswindows1254)rn   r   )zWindows-1255r   zx-cp1255cswindows1255)her   )zWindows-1256r   zx-cp1256cswindows1256r   )zWindows-1257r   zx-cp1257cswindows1257r   )zWindows-1258r   zx-cp1258cswindows1258)virG   )zKOI8-Rkoi8rkoikoi8cskoi8r)ro   rI   )zKOI8-Ukoi8uzkoi8-rucskoi8u)rq   rS   )zTIS-620tis620ziso-8859-11z
iso8859-11	iso885911cstis620r8   )z
ISO-8859-1zlatin-1latin1r8   iso88591r>   )z
ISO-8859-2zlatin-2latin2r>   iso88592r?   )z
ISO-8859-3zlatin-3latin3r?   iso88593)eomtrn   r@   )z
ISO-8859-4zlatin-4latin4r@   iso88594rA   )z
ISO-8859-5rA   cyrilliciso88595rB   )z
ISO-8859-6rB   arabiciso88596ziso-8859-6-eziso-8859-6-icsiso88596ecsiso88596irC   )z
ISO-8859-7rC   greekiso88597sun_eu_greekrD   )
z
ISO-8859-8rD   hebrewiso88598ziso-8859-8-eziso-8859-8-icsiso88598ecsiso88598ivisuallogicalrE   )z
ISO-8859-9zlatin-5latin5rE   iso88599r9   )zISO-8859-10zlatin-6latin6r9   	iso885910)rg   rc   r:   )zISO-8859-13zlatin-7latin7r:   	iso885913csiso885913r;   )	zISO-8859-14zlatin-8latin8r;   	iso885914csiso885914z
iso-ir-199z
iso-celticl8)r^   re   r]   gdr<   )zISO-8859-15zlatin-9latin9r<   	iso885915csisolatin9csiso885915l9r=   )zISO-8859-16zlatin-10latin10r=   	iso885916csiso885916z
iso-ir-226l10)ry   ru   rx   rw   rz   r{   rF   )JohabrK   )zMac-CyrillicMacCyrillicmaccyrilliczx-mac-cyrilliczx-mac-ukrainianrL   )z	Mac-GreekMacGreekmacgreekrM   )zMac-Iceland
MacIceland
maciceland)rg   rN   )z
Mac-Latin2	MacLatin2	maclatin2maccentraleuroperO   )z	Mac-RomanMacRomanmacroman	macintoshcsmacintoshmaczx-mac-romanrP   )zMac-Turkish
MacTurkish
macturkishr   )CP720r	   )CP1006)urr   )CP1125rH   )zKOI8-T)tgrJ   )zKZ-1048rJ   zstrk1048-2002rk1048)kkrQ   )PTCP154pt154cp154r2   )z	HP-Roman8roman8r8
csHPRoman8r   )CP437)ra   rd   r`   rb   rl   rh   rj   r_   rm   rc   re   r   )CP737r   )CP775r   )CP850r   )CP852r   )CP855r    )CP856r!   )CP857r"   )CP858r#   )CP860)rl   r$   )CP861r%   )CP862r&   )CP863)rd   r'   )CP864)r   r(   )CP865)r_   rk   r)   )CP866r*   )CP869r   )CP1140cp037cp01140ibm01140ibm1140
csibm01140r   )CP424r   )CP500r,   )CP875r
   )CP1026r   )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   loweredentryalias
codec_namer   r   r   rg    s"   	


rg  
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 )rg  rf  )r   rl  	canonicalmsgr   r   r   _validate_encoding  s
   ro  	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   )ro  )r   r   rl  r   r   r     s    z&normalize_encodings.<locals>.<genexpr>zG must not be empty; omit the argument or pass None to disable filtering)	frozensetrf  )rp  rl  resultrn  r   rr  r   normalize_encodings  s   
ru  )NN)r   r   r   r   r   r   r   r   )r   r`  r   ra  )r   r`  rl  r`  r   r`  )rp  rq  rl  r`  r   r   )'r   
__future__r   rc  dataclasses	functoolscollections.abcr   typesr   typingr   chardet.enumsr   r   _WESTERN_WESTERN_TR	_CYRILLIC_CENTRAL_EU_CENTRAL_EU_NO_RO_BALTIC_ARABIC	dataclassr   	lru_cacher   
MODERN_WEBLEGACY_REGIONAL
LEGACY_ISO
LEGACY_MACDOS	MAINFRAME_REGISTRY_ENTRIESr   r   cacherg  ro  ru  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                                                           "            +
