Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
charsetgroupprober.py
Go to the documentation of this file.
27
28from typing import List, Optional, Union
29
30from .charsetprober import CharSetProber
31from .enums import LanguageFilter, ProbingState
32
33
35 def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None:
36 super().__init__(lang_filter=lang_filter)
37 self._active_num = 0
38 self.probers: List[CharSetProber] = []
39 self._best_guess_prober: Optional[CharSetProber] = None
40
41 def reset(self) -> None:
42 super().reset()
43 self._active_num = 0
44 for prober in self.probers:
46 prober.active = True
47 self._active_num += 1
49
50 @property
51 def charset_name(self) -> Optional[str]:
52 if not self._best_guess_prober:
54 if not self._best_guess_prober:
55 return None
56 return self._best_guess_prober.charset_name
57
58 @property
59 def language(self) -> Optional[str]:
60 if not self._best_guess_prober:
62 if not self._best_guess_prober:
63 return None
64 return self._best_guess_prober.language
65
66 def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
67 for prober in self.probers:
68 if not prober.active:
69 continue
70 state = prober.feed(byte_str)
71 if not state:
72 continue
73 if state == ProbingState.FOUND_IT:
74 self._best_guess_prober = prober
76 return self.state
77 if state == ProbingState.NOT_ME:
78 prober.active = False
79 self._active_num -= 1
80 if self._active_num <= 0:
82 return self.state
83 return self.state
84
85 def get_confidence(self) -> float:
86 state = self.state
87 if state == ProbingState.FOUND_IT:
88 return 0.99
89 if state == ProbingState.NOT_ME:
90 return 0.01
91 best_conf = 0.0
92 self._best_guess_prober = None
93 for prober in self.probers:
94 if not prober.active:
95 self.logger.debug("%s not active", prober.charset_name)
96 continue
98 self.logger.debug(
99 "%s %s confidence = %s", prober.charset_name, prober.language, conf
100 )
101 if best_conf < conf:
102 best_conf = conf
103 self._best_guess_prober = prober
104 if not self._best_guess_prober:
105 return 0.0
106 return best_conf
None __init__(self, LanguageFilter lang_filter=LanguageFilter.NONE)
ProbingState feed(self, Union[bytes, bytearray] byte_str)
for i