Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
sjisprober.py
Go to the documentation of this file.
1
27
28
from
typing
import
Union
29
30
from
.chardistribution
import
SJISDistributionAnalysis
31
from
.codingstatemachine
import
CodingStateMachine
32
from
.enums
import
MachineState, ProbingState
33
from
.jpcntx
import
SJISContextAnalysis
34
from
.mbcharsetprober
import
MultiByteCharSetProber
35
from
.mbcssm
import
SJIS_SM_MODEL
36
37
38
class
SJISProber
(
MultiByteCharSetProber
):
39
def
__init__
(self) -> None:
40
super
().
__init__
()
41
self.
coding_sm
=
CodingStateMachine
(SJIS_SM_MODEL)
42
self.
distribution_analyzer
=
SJISDistributionAnalysis
()
43
self.
context_analyzer
=
SJISContextAnalysis
()
44
self.
reset
reset
reset
()
45
46
def
reset
(self) -> None:
47
super
().
reset
()
48
self.
context_analyzer
.
reset
()
49
50
@property
51
def
charset_name
(self) -> str:
52
return
self.
context_analyzer
.charset_name
53
54
@property
55
def
language
(self) -> str:
56
return
"Japanese"
57
58
def
feed
(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
59
assert
self.
coding_sm
is
not
None
60
assert
self.
distribution_analyzer
is
not
None
61
62
for
i, byte
in
enumerate
(byte_str):
63
coding_state = self.
coding_sm
.next_state(byte)
64
if
coding_state ==
MachineState.ERROR
:
65
self.
logger
.debug(
66
"%s %s prober hit error at byte %s"
,
67
self.
charset_name
charset_name
charset_name
charset_name
,
68
self.
language
language
language
language
,
69
i,
70
)
71
self.
_state
_state
_state
=
ProbingState.NOT_ME
72
break
73
if
coding_state ==
MachineState.ITS_ME
:
74
self.
_state
_state
_state
=
ProbingState.FOUND_IT
75
break
76
if
coding_state ==
MachineState.START
:
77
char_len = self.
coding_sm
.get_current_charlen()
78
if
i == 0:
79
self.
_last_char
_last_char
[1] = byte
80
self.
context_analyzer
.
feed
(
81
self.
_last_char
_last_char
[2 - char_len :], char_len
82
)
83
self.
distribution_analyzer
.
feed
(self.
_last_char
_last_char
, char_len)
84
else
:
85
self.
context_analyzer
.
feed
(
86
byte_str[i + 1 - char_len : i + 3 - char_len], char_len
87
)
88
self.
distribution_analyzer
.
feed
(byte_str[i - 1 : i + 1], char_len)
89
90
self.
_last_char
_last_char
[0] = byte_str[-1]
91
92
if
self.
state
state
state
==
ProbingState.DETECTING
:
93
if
self.
context_analyzer
.got_enough_data()
and
(
94
self.
get_confidence
get_confidence
get_confidence
() > self.
SHORTCUT_THRESHOLD
95
):
96
self.
_state
_state
_state
=
ProbingState.FOUND_IT
97
98
return
self.
state
state
state
99
100
def
get_confidence
(self) -> float:
101
assert
self.
distribution_analyzer
is
not
None
102
103
context_conf = self.
context_analyzer
.
get_confidence
()
104
distrib_conf = self.
distribution_analyzer
.
get_confidence
()
105
return
max(context_conf, distrib_conf)
pip._vendor.chardet.chardistribution.SJISDistributionAnalysis
Definition
chardistribution.py:221
pip._vendor.chardet.charsetprober.CharSetProber.logger
logger
Definition
charsetprober.py:48
pip._vendor.chardet.charsetprober.CharSetProber.reset
None reset(self)
Definition
charsetprober.py:50
pip._vendor.chardet.charsetprober.CharSetProber.state
ProbingState state(self)
Definition
charsetprober.py:65
pip._vendor.chardet.charsetprober.CharSetProber.SHORTCUT_THRESHOLD
float SHORTCUT_THRESHOLD
Definition
charsetprober.py:42
pip._vendor.chardet.charsetprober.CharSetProber.language
Optional[str] language(self)
Definition
charsetprober.py:58
pip._vendor.chardet.charsetprober.CharSetProber.charset_name
Optional[str] charset_name(self)
Definition
charsetprober.py:54
pip._vendor.chardet.charsetprober.CharSetProber.get_confidence
float get_confidence(self)
Definition
charsetprober.py:68
pip._vendor.chardet.charsetprober.CharSetProber._state
_state
Definition
charsetprober.py:45
pip._vendor.chardet.codingstatemachine.CodingStateMachine
Definition
codingstatemachine.py:34
pip._vendor.chardet.jpcntx.SJISContextAnalysis
Definition
jpcntx.py:189
pip._vendor.chardet.mbcharsetprober.MultiByteCharSetProber
Definition
mbcharsetprober.py:38
pip._vendor.chardet.mbcharsetprober.MultiByteCharSetProber.reset
None reset(self)
Definition
mbcharsetprober.py:49
pip._vendor.chardet.mbcharsetprober.MultiByteCharSetProber._last_char
_last_char
Definition
mbcharsetprober.py:47
pip._vendor.chardet.mbcharsetprober.MultiByteCharSetProber.language
language
Definition
mbcharsetprober.py:67
pip._vendor.chardet.mbcharsetprober.MultiByteCharSetProber.state
state
Definition
mbcharsetprober.py:85
pip._vendor.chardet.mbcharsetprober.MultiByteCharSetProber.get_confidence
float get_confidence(self)
Definition
mbcharsetprober.py:93
pip._vendor.chardet.mbcharsetprober.MultiByteCharSetProber.charset_name
charset_name
Definition
mbcharsetprober.py:66
pip._vendor.chardet.mbcharsetprober.MultiByteCharSetProber._state
_state
Definition
mbcharsetprober.py:70
pip._vendor.chardet.sjisprober.SJISProber
Definition
sjisprober.py:38
pip._vendor.chardet.sjisprober.SJISProber.charset_name
str charset_name(self)
Definition
sjisprober.py:51
pip._vendor.chardet.sjisprober.SJISProber.reset
None reset(self)
Definition
sjisprober.py:46
pip._vendor.chardet.sjisprober.SJISProber._last_char
_last_char
Definition
sjisprober.py:83
pip._vendor.chardet.sjisprober.SJISProber.language
language
Definition
sjisprober.py:68
pip._vendor.chardet.sjisprober.SJISProber.coding_sm
coding_sm
Definition
sjisprober.py:41
pip._vendor.chardet.sjisprober.SJISProber.distribution_analyzer
distribution_analyzer
Definition
sjisprober.py:42
pip._vendor.chardet.sjisprober.SJISProber.__init__
None __init__(self)
Definition
sjisprober.py:39
pip._vendor.chardet.sjisprober.SJISProber.language
str language(self)
Definition
sjisprober.py:55
pip._vendor.chardet.sjisprober.SJISProber.state
state
Definition
sjisprober.py:92
pip._vendor.chardet.sjisprober.SJISProber.get_confidence
float get_confidence(self)
Definition
sjisprober.py:100
pip._vendor.chardet.sjisprober.SJISProber.charset_name
charset_name
Definition
sjisprober.py:67
pip._vendor.chardet.sjisprober.SJISProber.feed
ProbingState feed(self, Union[bytes, bytearray] byte_str)
Definition
sjisprober.py:58
pip._vendor.chardet.sjisprober.SJISProber._state
_state
Definition
sjisprober.py:71
pip._vendor.chardet.sjisprober.SJISProber.context_analyzer
context_analyzer
Definition
sjisprober.py:43
i
for i
Definition
prime_search.m:10
venv
lib
python3.12
site-packages
pip
_vendor
chardet
sjisprober.py
Generated by
1.9.8