zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
U
M±d¶.ã@sbddlZddlZddlZddlmZddlmZddlmZddl    m
Z
ddl m Z m Z mZmZmZmZddlmZdd    lmZmZmZmZmZmZeed
eed œd d „ƒZeed
eed œdd„ƒZeed
eeed œdd„ƒZeed
eed œdd„ƒZ eed
eed œdd„ƒZ!eed
eed œdd„ƒZ"eed
eed œdd„ƒZ#eed
eed œdd„ƒZ$eed
eed œdd„ƒZ%eed
eed œdd„ƒZ&eed œd d!„Z'eed
eed œd"d#„ƒZ(eed
eed œd$d%„ƒZ)eed
eed œd&d'„ƒZ*eed
eed œd(d)„ƒZ+eed
eed œd*d+„ƒZ,ee-eƒd
eed,œd-d.„ƒZ.eed
eed œd/d0„ƒZ/dSe0e1eed2œd3d4„Z2ed5d
eed6œd7d8„ƒZ3e0eeee0fd9œd:d;„Z4eed<œd=d>„Z5dTeeed@œdAdB„Z6ee edCœdDdE„Z7eee8dFœdGdH„Z9eeedFœdIdJ„Z:dKej;dLfee1eddMœdNdO„Z<dUe0ee=e1eee0eeee eddfdPœ
dQdR„Z>dS)Vé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ÚreturncCsVzt |¡}Wntk
r$YdSXd|kpTd|kpTd|kpTd|kpTd|kpTd|kS)NFz
WITH GRAVEz
WITH ACUTEz WITH CEDILLAzWITH DIAERESISzWITH CIRCUMFLEXz
WITH TILDE©Ú unicodedataÚnameÚ
ValueError©rÚ description©rúOd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\charset_normalizer/utils.pyÚis_accentuatedsÿþýüúrcCs.t |¡}|s|S| d¡}tt|ddƒƒS)Nú ré)rÚ decompositionÚsplitÚchrÚint)rZ
decomposedÚcodesrrrÚ remove_accent&s
 
 
r'cCs.t|ƒ}t ¡D]\}}||kr|SqdS)zK
    Retrieve the Unicode range official name from a single character.
    N)ÚordrÚitems)rZ character_ordÚ
range_nameZ    ord_rangerrrÚ unicode_range1s
 
r+cCs.zt |¡}Wntk
r$YdSXd|kS)NFZLATINrrrrrÚis_latin?s
r,cCs*z| d¡Wntk
r$YdSXdS)NÚasciiFT)ÚencodeÚUnicodeEncodeError©rrrrÚis_asciiHs
r1cCs2t |¡}d|krdSt|ƒ}|dkr*dSd|kS)NÚPTFZ Punctuation©rÚcategoryr+©rÚcharacter_categoryÚcharacter_rangerrrÚis_punctuationQs
r8cCs:t |¡}d|ksd|krdSt|ƒ}|dkr2dSd|kS)NÚSÚNTFZFormsr3r5rrrÚ    is_symbol`s
r;cCst|ƒ}|dkrdSd|kS)NFZ    Emoticons)r+)rr7rrrÚ is_emoticonosr<cCs&| ¡s|dkrdSt |¡}d|kS)N>ú+ú>ú<ú;ú,õ|TÚZ)Úisspacerr4©rr6rrrÚ is_separatorys
rFcCs| ¡| ¡kS©N)ÚislowerÚisupperr0rrrÚis_case_variableƒsrJcCst |¡}|dkS)NÚCo)rr4rErrrÚis_private_use_onlyˆs
rLcCs.zt |¡}Wntk
r$YdSXd|kS)NFÚCJKr©rZcharacter_namerrrÚis_cjkŽs
rOcCs.zt |¡}Wntk
r$YdSXd|kS)NFZHIRAGANArrNrrrÚ is_hiragana˜s
rPcCs.zt |¡}Wntk
r$YdSXd|kS)NFZKATAKANArrNrrrÚ is_katakana¢s
rQcCs.zt |¡}Wntk
r$YdSXd|kS)NFZHANGULrrNrrrÚ    is_hangul¬s
rRcCs.zt |¡}Wntk
r$YdSXd|kS)NFZTHAIrrNrrrÚis_thai¶s
rS)r*rcst‡fdd„tDƒƒS)Nc3s|]}|ˆkVqdSrGr)Ú.0Úkeyword©r*rrÚ    <genexpr>Âsz-is_unicode_range_secondary.<locals>.<genexpr>)ÚanyrrVrrVrÚis_unicode_range_secondaryÀsrYcCs(| ¡dko&| ¡dko&|dko&|dkS)NFúu)rDÚ isprintabler0rrrÚis_unprintableÅs 
ÿþür\é)ÚsequenceÚ search_zonercCs t|tƒst‚t|ƒ}tt|dt||ƒ…jdddƒ}t|ƒdkrHdS|D]N}| ¡     dd¡}t
  ¡D]0\}}||kr„|S||krh|SqhqLdS)zW
    Extract using ASCII-only decoder any specified encoding in the first n-bytes.
    Nr-Úignore©Úerrorsrú-Ú_) Ú
isinstanceÚbytesÚ    TypeErrorÚlenrrÚminÚdecodeÚlowerÚreplacerr))r^r_Zseq_lenÚresultsZspecified_encodingÚencoding_aliasÚ encoding_ianarrrÚany_specified_encodingÐs"
þ  rpé€)rrcCs |dkptt d |¡¡jtƒS)zQ
    Verify is a specific encoding is a multi byte one based on it IANA name
    >    Ú    utf_16_leÚutf_7Úutf_16Ú    utf_32_leÚutf_32Úutf_8Ú    utf_8_sigÚ    utf_16_beÚ    utf_32_beú encodings.{})Ú
issubclassÚ    importlibÚ import_moduleÚformatrr )rrrrÚis_multi_byte_encodingðs 
þör€)r^rcCsJtD]@}t|}t|tƒr |g}|D]}| |¡r$||fSq$qdS)z9
    Identify and extract SIG/BOM in given sequence.
    )Nó)rrerfÚ
startswith)r^Ú iana_encodingZmarksÚmarkrrrÚidentify_sig_or_boms
 
r…)rƒrcCs|dkS)N>rtrvr)rƒrrrÚshould_strip_sig_or_bomsr†T)Úcp_nameÚstrictrcCsL| ¡ dd¡}t ¡D]\}}|||fkr|Sq|rHtd |¡ƒ‚|S)Nrcrdz Unable to retrieve IANA for '{}')rkrlrr)rr)r‡rˆrnrorrrÚ    iana_names 
r‰)Údecoded_sequencercCs4tƒ}|D] }t|ƒ}|dkr q
| |¡q
t|ƒSrG)Úsetr+ÚaddÚlist)rŠÚrangesrr7rrrÚ
range_scan+s r)Ú iana_name_aÚ iana_name_brc    CsŒt|ƒst|ƒrdSt d |¡¡j}t d |¡¡j}|dd}|dd}d}tdƒD]*}t|gƒ}| |¡| |¡krX|d7}qX|dS)    Ngr{r`raréÿr éþ)r€r}r~rrÚrangerfrj)    rr‘Z    decoder_aZ    decoder_bZid_aZid_bZcharacter_match_countÚiZ to_be_decodedrrrÚ cp_similarity9s ÿÿ
 
 
 
r–cCs|tko|t|kS)zŽ
    Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using
    the function cp_similarity.
    )r)rr‘rrrÚ is_cp_similarQs
þr—Zcharset_normalizerz)%(asctime)s | %(levelname)s | %(message)s)rÚlevelÚ format_stringrcCs:t |¡}| |¡t ¡}| t |¡¡| |¡dSrG)ÚloggingÚ    getLoggerÚsetLevelÚ StreamHandlerÚ setFormatterÚ    FormatterÚ
addHandler)rr˜r™ÚloggerÚhandlerrrrÚset_logging_handler\s
 
 
r£)
Ú    sequencesroÚoffsetsÚ
chunk_sizeÚbom_or_sig_availableÚstrip_sig_or_bomÚ sig_payloadÚis_multi_byte_decoderÚdecoded_payloadrc    cs*|r6|dkr6|D]"}    ||    |    |…}
|
s,q4|
Vqnð|D]ê}    |    |} | t|ƒdkrXq:||    |    |…} |r||dkr||| } | j||rŠdndd}
|r|    dkrt|dƒ} |r|
d| …|krt|    |    dd    ƒD]H}||| …} |rø|dkrø|| } | j|dd}
|
d| …|krԐqqÔ|
Vq:dS)
NFér`rˆrarr!ééÿÿÿÿ)rhrjrir”)r¤ror¥r¦r§r¨r©rªr«r•ÚchunkZ    chunk_endZ cut_sequenceZchunk_partial_size_chkÚjrrrÚcut_sequence_chunksis> 
 
þ
ÿþ  r±)r])T)N)?r}ršrÚcodecsrZencodings.aliasesrÚ    functoolsrÚrerÚtypingrrrr    r
r Ú_multibytecodecr ZconstantrrrrrrÚstrÚboolrr'r+r,r1r8r;r<rFrJrLrOrPrQrRrSrhrYr\rfr%rpr€r…r†r‰rÚfloatr–r—ÚINFOr£r”r±rrrrÚ<module>s–       
 
                              
  ýü ÷ ö