o
    c.                     @   s  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
 d dlmZmZmZmZmZmZ d dlmZ dd	lmZmZmZmZmZmZ eed
dedefddZeed
dedefddZeed
dedee fddZeed
dedefddZ eed
dedefddZ!eed
dedefddZ"eed
dedefddZ#eed
dedefddZ$eed
dedefddZ%eed
dedefdd Z&dedefd!d"Z'eed
dedefd#d$Z(eed
dedefd%d&Z)eed
dedefd'd(Z*eed
dedefd)d*Z+eed
dedefd+d,Z,ee-ed
d-edefd.d/Z.eed
dedefd0d1Z/d_d3e0d4e1dee fd5d6Z2ed7d
d8edefd9d:Z3d3e0deee e0f fd;d<Z4d=edefd>d?Z5d`dAedBedefdCdDZ6dEedee fdFdGZ7dHedIede8fdJdKZ9dHedIedefdLdMZ:dNej;dOfd8edPe1dQeddfdRdSZ<	dadTe0dUedVe=dWe1dXedYedZe0d[ed\ee deeddf fd]d^Z>dS )b    N)IncrementalDecoder)aliases)	lru_cache)findall)	GeneratorListOptionalSetTupleUnion)MultibyteIncrementalDecoder   )ENCODING_MARKSIANA_SUPPORTED_SIMILARRE_POSSIBLE_ENCODING_INDICATIONUNICODE_RANGES_COMBINEDUNICODE_SECONDARY_RANGE_KEYWORDUTF8_MAXIMAL_ALLOCATION)maxsize	characterreturnc                 C   sT   zt | }W n
 ty   Y dS w d|v p)d|v p)d|v p)d|v p)d|v p)d|v S )NFz
WITH GRAVEz
WITH ACUTEzWITH CEDILLAzWITH DIAERESISzWITH CIRCUMFLEXz
WITH TILDEunicodedataname
ValueErrorr   description r   \G:\Development\the-witcher-3-mod-manager\.venv\lib\site-packages\charset_normalizer\utils.pyis_accentuated   s    r   c                 C   s.   t | }|s	| S |d}tt|d dS )N r      )r   Zdecompositionsplitchrint)r   Z
decomposedcodesr   r   r   remove_accent&   s
   

r&   c                 C   s0   	 t | }t D ]\}}||v r|  S q	d S N)ordr   items)r   Zcharacter_ord
range_nameZ	ord_ranger   r   r   unicode_range1   s   r+   c                 C   *   z
t | }W d|v S  ty   Y dS w )NFZLATINr   r   r   r   r   is_latin?   s   r-   c                 C   s&   z|  d W dS  ty   Y dS w )NasciiFT)encodeUnicodeEncodeErrorr   r   r   r   is_asciiH   s   r2   c                 C   s2   t | }d|v rdS t| }|d u rdS d|v S )NPTFPunctuationr   categoryr+   r   character_categorycharacter_ranger   r   r   is_punctuationQ   s   
r:   c                 C   s:   t | }d|v sd|v rdS t| }|d u rdS d|v S )NSNTFFormsr5   r7   r   r   r   	is_symbol`   s   
r>   c                 C   s   t | }|d u r
dS d|v S )NFZ	Emoticons)r+   )r   r9   r   r   r   is_emoticono   s   r?   c                 C   s&   |   s| dv r
dS t| }d|v S )N>   ><+;,u   ｜TZ)isspacer   r6   r   r8   r   r   r   is_separatory   s   
rH   c                 C   s   |   |  kS r'   )islowerisupperr1   r   r   r   is_case_variable   s   rK   c                 C   s   t | }|dkS )NCo)r   r6   rG   r   r   r   is_private_use_only   s   
rM   c                 C   r,   )NFCJKr   r   Zcharacter_namer   r   r   is_cjk      rP   c                 C   r,   )NFZHIRAGANAr   rO   r   r   r   is_hiragana   rQ   rR   c                 C   r,   )NFZKATAKANAr   rO   r   r   r   is_katakana   rQ   rS   c                 C   r,   )NFZHANGULr   rO   r   r   r   	is_hangul   rQ   rT   c                 C   r,   )NFTHAIr   rO   r   r   r   is_thai   rQ   rV   r*   c                    s   t  fddtD S )Nc                 3   s    | ]}| v V  qd S r'   r   ).0keywordr*   r   r   	<genexpr>   s    z-is_unicode_range_secondary.<locals>.<genexpr>)anyr   rY   r   rY   r   is_unicode_range_secondary   s   r\   c                 C   s(   |   du o|  du o| dko| dkS )NFu   ﻿)rF   isprintabler1   r   r   r   is_unprintable   s   
r_      sequencesearch_zonec                 C   s   	 t | tstt| }tt| d t|| jddd}t|dkr%d S |D ]'}| 	dd}t
 D ]\}}||krC|    S ||krM|    S q5q'd S )Nr.   ignoreerrorsr   -_)
isinstancebytes	TypeErrorlenr   r   mindecodelowerreplacer   r)   )ra   rb   Zseq_lenresultsspecified_encodingencoding_aliasencoding_ianar   r   r   any_specified_encoding   s(   
rt      r   c                 C   s"   	 | dv pt td| jtS )N>	   	utf_32_leutf_8	utf_16_le	utf_32_beutf_32utf_7	utf_16_be	utf_8_sigutf_16encodings.{})
issubclass	importlibimport_moduleformatr   r   )r   r   r   r   is_multi_byte_encoding   s   
r   c                 C   sL   	 t D ] }t | }t|tr|g}|D ]}| |r"||f    S qqdS )N)N    )r   rh   ri   
startswith)ra   iana_encodingZmarksmarkr   r   r   identify_sig_or_bom  s   

r   r   c                 C   s   | dvS )N>   rz   r~   r   )r   r   r   r   should_strip_sig_or_bom  s   r   Tcp_namestrictc                 C   sL   |   dd} t D ]\}}| ||fv r|  S q|r$td| | S )Nrf   rg   z Unable to retrieve IANA for '{}')rn   ro   r   r)   r   r   )r   r   rr   rs   r   r   r   	iana_name  s   r   decoded_sequencec                 C   s4   t  }| D ]}t|}|d u rq|| qt|S r'   )setr+   addlist)r   Zrangesr   r9   r   r   r   
range_scan+  s   r   iana_name_aiana_name_bc           	      C   s   t | st |r
dS td| j}td|j}|dd}|dd}d}tdD ]}t|g}||||krA|d7 }q,|d S )	Ng        r   rc   rd   r      r      )r   r   r   r   r   rangeri   rm   )	r   r   Z	decoder_aZ	decoder_bZid_aZid_bcharacter_match_countiZto_be_decodedr   r   r   cp_similarity9  s*   


r   c                 C   s   	 | t v o
|t |  v S r'   )r   )r   r   r   r   r   is_cp_similarR  s   
r   charset_normalizerz)%(asctime)s | %(levelname)s | %(message)slevelformat_stringc                 C   s:   t | }|| t  }|t | || d S r'   )logging	getLoggersetLevelStreamHandlersetFormatter	Formatter
addHandler)r   r   r   loggerhandlerr   r   r   set_logging_handler]  s
   

r   	sequencesrs   offsets
chunk_sizebom_or_sig_availablestrip_sig_or_bomsig_payloadis_multi_byte_decoderdecoded_payloadc	                 c   s&   |r|du r|D ]}	||	|	|  }
|
s d S |
V  q	d S |D ]p}	|	| }|t | d kr/q | |	|	|  }|rA|du rA|| }|j||rHdndd}
|r|	dkrt|d}|r|
d | |vrt|	|	d d	D ]#}| || }|r{|du r{|| }|j|dd}
|
d | |v r nqi|
V  q d S )
NF   rc   r   rd   r   r!      )rk   rm   rl   r   )r   rs   r   r   r   r   r   r   r   r   chunkZ	chunk_endZcut_sequenceZchunk_partial_size_chkjr   r   r   cut_sequence_chunksk  sD   

r   )r`   )Tr'   )?r   r   r   codecsr   encodings.aliasesr   	functoolsr   rer   typingr   r   r   r	   r
   r   _multibytecodecr   constantr   r   r   r   r   r   strboolr   r&   r+   r-   r2   r:   r>   r?   rH   rK   rM   rP   rR   rS   rT   rV   rk   r\   r_   ri   r$   rt   r   r   r   r   r   floatr   r   INFOr   r   r   r   r   r   r   <module>   s      

							
 
	
