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
Ë
ê^iu2ãót—ddlmZddlZddlmZddlmZddlmZddl    mZ
ddl m Z m Z mZmZmZddlmZdd    lmZdd
lmZmZmZmZmZdd „Zdd „Ze«dd „«Ze«dd„«Zee¬«dd„«Z    d                    dd„Z                         dd„Z!dd„Z"dd„Z#d d„Z$ed¬«    d!                            d"d„«Z%y)#é)Ú annotationsN)ÚIncrementalDecoder)ÚCounter)Ú    lru_cacheé)Ú FREQUENCIESÚKO_NAMESÚLANGUAGE_SUPPORTED_COUNTÚTOO_SMALL_SEQUENCEÚZH_NAMES)Ú is_suspiciously_successive_range)ÚCoherenceMatches)Úis_accentuatedÚis_latinÚis_multi_byte_encodingÚis_unicode_range_secondaryÚ unicode_rangecóª—t|«r td«‚tjd|›«j}|d¬«}i}d}t dd«D]W}|j t|g««}|sŒ!t|«}|€Œ/t|«dusŒ=||vrd||<||xxd    z cc<|d    z }ŒYt|Dcgc]}|||z d
k\r|‘Œc}«Scc}w) zF
    Return associated unicode ranges in a single byte code page.
    z.Function not supported on multi-byte code pagez
encodings.Úignore)Úerrorsré@éÿFrg333333Ã?) rÚOSErrorÚ    importlibÚ import_modulerÚrangeÚdecodeÚbytesrrÚsorted)Ú    iana_nameÚdecoderÚpÚ seen_rangesÚcharacter_countÚiÚchunkÚcharacter_ranges        õhH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\charset_normalizer/cd.pyÚencoding_unicode_ranger)s€ô˜iÔ(ÜÐFÓGÐGä×%Ñ%¨
°9°+Ð&>Ó?×RÑR€Gá#¨8Ô4€AØ"$€KØ€Oä 4˜Ó ò %ˆØ—X‘Xœe Q C›jÓ)ˆâ Ü*7¸Ó*>ˆOàÐ&Øä)¨/Ó:¸eÒCØ"¨+Ñ5Ø34K Ñ0ؘOÓ,°Ñ1Ó,Ø 1Ñ$‘ð %ô ð$/ö    
àØ˜?Ñ+¨oÑ=ÀÒEò ò    
ó ðùò    
sÂ5Ccó’—g}tj«D]-\}}|D]#}t|«|k(sŒ|j|«Œ-Œ/|S)z>
    Return inferred languages used with a unicode range.
    )rÚitemsrÚappend)Ú primary_rangeÚ    languagesÚlanguageÚ
charactersÚ    characters     r(Úunicode_range_languagesr2@s[€ð€Iä +× 1Ñ 1Ó 3òш*Ø#ò    ˆIܘYÓ'¨=Ó8Ø× Ñ  Ô*Ùñ    ðð ÐócóZ—t|«}d}|D]
}d|vsŒ|}n|€dgSt|«S)zœ
    Single-byte encoding language association. Some code page are heavily linked to particular language(s).
    This function does the correspondence.
    NÚLatinú Latin Based)r)r2)r Úunicode_rangesr-Úspecified_ranges    r(Úencoding_languagesr9OsM€ô !7°yÓ A€NØ $€Mà)òˆØ ˜/Ò )Ø+ˆMÙ ðð
ÐØˆÐä " =Ó 1Ð1r3cóì—|jd«s'|jd«s|jd«s|dk(rdgS|jd«s|tvrdgS|jd«s|tvrd    gSgS)
    Multi-byte encoding language association. Some code page are heavily linked to particular language(s).
    This function does the correspondence.
    Úshift_Ú
iso2022_jpÚeuc_jÚcp932ÚJapaneseÚgbÚChineseÚ
iso2022_krÚKorean)Ú
startswithr r    )r s r(Úmb_encoding_languagesrEcs}€ð    ×јXÔ&Ø × Ñ   Ô -Ø × Ñ  Ô (Ø ˜Ò àˆ|ÐØ×јDÔ! Y´(Ñ%:؈{ÐØ×јLÔ)¨Y¼(Ñ-B؈zÐà €Ir3)Úmaxsizecór—d}d}t|D]$}|s t|«rd}|sŒt|«dusŒ#d}Œ&||fS)zg
    Determine main aspects from a supported language if it contains accents and if is pure Latin.
    FT)rrr)r/Útarget_have_accentsÚtarget_pure_latinr1s    r(Úget_target_featuresrJxsW€ð
!&ÐØ"Ðä  Ñ*ò&ˆ    Ù"¤~°iÔ'@Ø"&Ð Ú ¤¨)Ó!4¸Ò!=Ø %Ñ ð    &ð Р1Ð 1Ð1r3có€—g}td„|D««}tj«D]h\}}t|«\}}|r|durŒ|dur|rŒ"t    |«}t    |D    cgc]    }    |    |vsŒ|    ‘Œ c}    «}
|
|z } | dk\sŒV|j || f«Œjt |d„d¬«}|D cgc]} | d‘Œ    c} Scc}    wcc} w)zE
    Return associated languages associated to given characters.
    c3ó2K—|]}t|«–—Œy­w©N)r)Ú.0r1s  r(ú    <genexpr>z%alphabet_languages.<locals>.<genexpr>‘sèø€ÒT¸Iœn¨Y×7ÑTùs‚Fgš™™™™™É?có —|dS©Nr©©Úxs r(ú<lambda>z$alphabet_languages.<locals>.<lambda>§s
€°°!±€r3T©ÚkeyÚreverser)Úanyrr+rJÚlenr,r) r0Úignore_non_latinr.Úsource_have_accentsr/Úlanguage_charactersrHrIr$ÚcÚcharacter_match_countÚratioÚcompatible_languages              r(Úalphabet_languagesrb‰sé€ð *,€IäÑTÈÔTÓTÐä)4×):Ñ):Ó)<ò0Ñ%ˆÐ%Ü1DÀXÓ1NÑ.ÐÐ.á Р1°UÑ :Ø à  %Ñ 'Ñ,?Ø ä"Ð#6Ó7ˆä%(Ø+Ö ?1¨q°JªŠQÒ ?ó&
Ðð-¨Ñ>ˆà C‹<Ø × Ñ ˜h¨Ð.Õ /ð%0ô(y¡n¸dÔC€Ià>GÖ HÐ':Ð  Ó "Ò HÐHùò @ùò IsÁ    B6
Á)B6
Â' B;có8—|tvrt|›d«‚d}tt|«}t|«}tt|«}|dkD}t    |t d|««D]'\}}||vrŒ t|j |«}    ||z }
t||
z«} |durt| |    z
«dkDrŒM|durt| |    z
«|dz kr|dz }Œkt|d|    } t||    d    } |d|}||d    }tt|«t| «z«}tt|«t| «z«}t| «dk(r |dkr|dz }Œæt| «dk(r |dkr|dz }Œÿ|t| «z d
k\s|t| «z d
k\sŒ#|dz }Œ*|t|«z S) aN
    Determine if a ordered characters list (by occurrence from most appearance to rarest) match a particular language.
    The result is a ratio between 0. (absolutely no correspondence) and 1. (near perfect fit).
    Beware that is function is not strict on the match in order to ease the detection. (Meaning close match is 1.)
    z not availableréFéTérNgš™™™™™Ù?)    rÚ
ValueErrorÚsetrZÚziprÚindexÚintÚabs)r/Úordered_charactersÚcharacter_approved_countÚFREQUENCIES_language_setÚordered_characters_countÚ target_language_characters_countÚlarge_alphabetr1Úcharacter_rankÚcharacter_rank_in_languageÚexpected_projection_ratioÚcharacter_rank_projectionÚcharacters_before_sourceÚcharacters_after_sourceÚcharacters_beforeÚcharacters_afterÚbefore_match_countÚafter_match_counts                  r(Úcharacters_popularity_comparer}¬s;€ð”{Ñ"ܘH˜: ^Ð4Ó5Ð5à$%ÐÜ"¤;¨xÑ#8Ó9Ðä$'Ð(:Ó$;ÐÜ,/´ ¸HÑ0EÓ,FÐ$à;¸bÑ@€Nä%(ØœE !Ð%=Ó>ó&ó8Ñ!ˆ    >ð Ð4Ñ 4Ø ä*5°hÑ*?×*EÑ*EÀiÓ*PÐ"à ,Ð/GÑ Gð    "ô*-¨^Ð>WÑ-WÓ)XÐ!ð ˜eÑ #ÜÐ-Ð0JÑJÓKÈaÒOà ð ˜dÑ "ÜÐ-Ð0JÑJÓKØ.°Ñ2ò3ð %¨Ñ )Ð $Ø ä.9¸(Ñ.CØ Ð(ð/
Рô.9¸Ñ-BØ &Ð 'ð.
Ðð(:¸!¸NÐ'KÐØ&8¸¸Ð&IÐä"%Ü Ð!Ó "¤SÐ)AÓ%BÑ Bó#
Ðô"%Ü Ð Ó !¤CÐ(?Ó$@Ñ @ó"
Ðô Ð'Ó (¨AÒ -Ð2DÈÒ2IØ $¨Ñ )Ð $Ø ä Ð&Ó '¨1Ò ,Ð1BÀaÒ1GØ $¨Ñ )Ð $Ø ð ¤Ð%=Ó!>Ñ >À#Ò EØ ¤3Ð'>Ó#?Ñ?À3ÔFà $¨Ñ )Ð $Ù ðq8ðt $¤cÐ*<Ó&=Ñ =Ð=r3có,—i}|D]u}|j«durŒt|«}|€Œ$d}|D]}t||«dusŒ|}n|€|}||vr|j«||<Œ[||xx|j«z cc<Œwt    |j ««S)a
    Given a decoded text sequence, return a list of str. Unicode range / alphabet separation.
    Ex. a text containing English/Latin with a bit a Hebrew will return two items in the resulting list;
    One containing the latin letters and the other hebrew.
    FN)Úisalpharr ÚlowerÚlistÚvalues)Údecoded_sequenceÚlayersr1r'Úlayer_target_rangeÚdiscovered_ranges      r(Úalpha_unicode_splitr‡üsɀð  €Fà%ò8ˆ    Ø × Ñ Ó  %Ñ 'Ø ä&3°IÓ&>ˆà Ð "Ø à)-Ðà &ò    Ð ä0Ð1AÀ?ÓSØòð&6Ð"Ùð     ð Ð %Ø!0Ð à  VÑ +Ø)2¯©Ó):ˆFÐ%Ñ &Ø àÐ!Ó" i§o¡oÓ&7Ñ7Ô"ð58ô8 — ‘ “Ó  Ð r3c óþ—i}|D]-}|D]&}|\}}||vr|g||<Œ||j|«Œ(Œ/|Dcgc]+}|tt||«t||«z d«f‘Œ-}}t    |d„d¬«Scc}w)z‹
    This function merge results previously given by the function coherence_ratio.
    The return type is the same as coherence_ratio.
    recó —|dSrQrRrSs r(rUz(merge_coherence_ratios.<locals>.<lambda><s
€ q¨¡t€r3TrV)r,ÚroundÚsumrZr)ÚresultsÚper_language_ratiosÚresultÚ
sub_resultr/r`Úmerges       r(Úmerge_coherence_ratiosr‘#s€ð
35ÐØò8ˆØ ò    8ˆJØ(‰OˆHeØÐ2Ñ2Ø16°Ð# HÑ-ØØ  Ñ )× 0Ñ 0°Õ 7ñ     8ð8ð ,ö     ð ð Ü ÜÐ'¨Ñ1Ó2´SÐ9LÈXÑ9VÓ5WÑWØó ò    
ð     €Eð     ô %™^°TÔ :Ð:ùò     s¹0A:có‡—t«Š|D]6}|\}}|jdd«}|‰vrg‰|<‰|j|«Œ8tˆfd„‰D««r*g}‰D]!}|j|t    ‰|«f«Œ#|S|S)u³
    We shall NOT return "English—" in CoherenceMatches because it is an alternative
    of "English". This function only keeps the best match and remove the em-dash in it.
    u—Úc3ó@•K—|]}t‰|«dkD–—Œy­w)rN)rZ)rNÚeÚ index_resultss  €r(rOz/filter_alt_coherence_matches.<locals>.<genexpr>Os øèø€Ò
<¨Œ3ˆ}˜QÑÓ   1Õ $Ñ
<ùsƒ)ÚdictÚreplacer,rYÚmax)rŒrŽr/r`Ú
no_em_nameÚfiltered_resultsr–s      @r(Úfilter_alt_coherence_matchesrœ?s¬ø€ô
-1«F€Màò0ˆØ ‰ˆ%Ø"×*Ñ*¨5°"Ó5ˆ
à ˜]Ñ *Ø(*ˆM˜*Ñ %àjÑ!×(Ñ(¨Õ/ð0ô Ó
<¨mÔ
<Ô<Ø-/Ðà%ò    NˆHØ × #Ñ # X¬s°=ÀÑ3JÓ/KÐ$LÕ Mð    Nð Ðà €Nr3ic    ó—g}d}d}||jd«ng}d|vrd}|jd«t|«D]¢}t|«}|j    «}    t d„|    D««}
|
t krŒ:|    D  cgc]\} } | ‘Œ    } } } |xs t| |«D]B}t|| «}||krŒ|dk\r|dz }|j|t|d    «f«|d
k\sŒBŒ¢Œ¤tt|«d „d¬ «Scc} } w) z¨
    Detect ANY language that can be identified in given sequence. The sequence will be analysed by layers.
    A layer = Character extraction by alphabets/ranges.
    Frú,r6Tc3ó&K—|]    \}}|–—Œ y­wrMrR)rNr^Úos   r(rOz"coherence_ratio.<locals>.<genexpr>qsèø€Ò"=©¨¨A¤1Ñ"=ùs‚gš™™™™™é?rrerfcó —|dSrQrRrSs r(rUz!coherence_ratio.<locals>.<lambda>Šs
€¸Q¸q¹T€r3rV) ÚsplitÚremover‡rÚ most_commonr‹r rbr}r,rŠrrœ)rƒÚ    thresholdÚ lg_inclusionrŒr[Úsufficient_match_countÚlg_inclusion_listÚlayerÚsequence_frequenciesr¤r$r^r Úpopular_character_orderedr/r`s                r(Úcoherence_ratior¬ZsB€ð(*€GØ"Ðà"#Ðà3?Ð3K˜ ×*Ñ*¨3Ô/ÐQSÐØÐ)Ñ)ØÐØ× Ñ  Ô/ä$Ð%5Ó6òˆÜ18¸³ÐØ*×6Ñ6Ó8ˆ ä"Ñ"=°Ô"=Ó=ˆà Ô0Ò 0Ø à>I×/J±d°a¸²Ð/JÐ!Ñ/Jà)ò
Ô-?Ø %Ð'7ó.
ò    ˆHô9ØÐ3óˆEðyÒ ØØ˜#’Ø&¨!Ñ+Ð&à N‰N˜H¤e¨E°1£oÐ6Ô 7à%¨Ó*Ùñ    ðô8 Ü$ WÓ-±>È4ô ðùó'0KsÁ= C;)r ÚstrÚreturnú    list[str])r-r­r®r¯)r/r­r®ztuple[bool, bool])F)r0r¯r[Úboolr®r¯)r/r­rmr¯r®Úfloat)rƒr­r®r¯)rŒzlist[CoherenceMatches]r®r)rŒrr®r)gš™™™™™¹?N)rƒr­r¥r±r¦z
str | Noner®r)&Ú
__future__rrÚcodecsrÚ collectionsrÚ    functoolsrÚtypingÚ TypeCounterÚconstantrr    r
r r Úmdr ÚmodelsrÚutilsrrrrrr)r2r9rErJrbr}r‡r‘rœr¬rRr3r(ú<module>r¼sðÝ"ãÝ%ÝÝÝ)÷õõ1Ý$÷õó"óJ ñ ƒò2ó ð2ñ& ƒòó ðñ( Ð+Ô,ò 2ó-ð 2ð"5:ð IØð IØ-1ð Iàó IðFM>ØðM>Ø'0ðM>à
óM>ó`$!óN;ó8ñ6 4ÔàNRð0Øð0Ø&+ð0ØAKð0àò0óñ0r3