jtcg_locale_detector 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +37 -0
- data/PACKAGING_SUMMARY.md +195 -0
- data/README.md +226 -0
- data/bin/locale-detector +159 -0
- data/jtcg_locale_detector.gemspec +48 -0
- data/lib/locale_detector/client.rb +163 -0
- data/lib/locale_detector/detector.rb +46 -0
- data/lib/locale_detector/version.rb +3 -0
- data/lib/locale_detector.rb +25 -0
- data/locale_detector.gemspec +46 -0
- data/python/cli.py +220 -0
- data/python/requirements.txt +8 -0
- data/python/src/__init__.py +10 -0
- data/python/src/__pycache__/__init__.cpython-311.pyc +0 -0
- data/python/src/__pycache__/__init__.cpython-313.pyc +0 -0
- data/python/src/__pycache__/locale_data.cpython-311.pyc +0 -0
- data/python/src/__pycache__/locale_data.cpython-313.pyc +0 -0
- data/python/src/__pycache__/locale_detector.cpython-311.pyc +0 -0
- data/python/src/__pycache__/locale_detector.cpython-313.pyc +0 -0
- data/python/src/artifacts/fasttext/lid.176.bin +0 -0
- data/python/src/artifacts/fasttext/lid.176.ftz +0 -0
- data/python/src/download_fasttext.py +69 -0
- data/python/src/locale_data.py +178 -0
- data/python/src/locale_detector.py +534 -0
- data/python/src/locale_detector_c.c +403 -0
- data/python/src/locale_detector_c.h +37 -0
- data/python/src/locale_detector_cy.cpp +23126 -0
- data/python/src/locale_detector_cy.cpython-311-darwin.so +0 -0
- data/python/src/locale_detector_cy.cpython-313-darwin.so +0 -0
- data/python/src/locale_detector_cy.html +6460 -0
- data/python/src/locale_detector_cy.pyx +501 -0
- data/python/src/utils/__init__.py +1 -0
- data/python/src/utils/__pycache__/__init__.cpython-311.pyc +0 -0
- data/python/src/utils/__pycache__/__init__.cpython-313.pyc +0 -0
- data/python/src/utils/__pycache__/data_utils.cpython-311.pyc +0 -0
- data/python/src/utils/__pycache__/data_utils.cpython-313.pyc +0 -0
- data/python/src/utils/data_utils.py +50 -0
- data/python/src/utils/data_utils_cy.cpp +10086 -0
- data/python/src/utils/data_utils_cy.cpython-311-darwin.so +0 -0
- data/python/src/utils/data_utils_cy.cpython-313-darwin.so +0 -0
- data/python/src/utils/data_utils_cy.html +600 -0
- data/python/src/utils/data_utils_cy.pyx +94 -0
- data/python/src/zhon/__init__.py +7 -0
- data/python/src/zhon/__pycache__/__init__.cpython-311.pyc +0 -0
- data/python/src/zhon/__pycache__/hanzi.cpython-311.pyc +0 -0
- data/python/src/zhon/__pycache__/pinyin.cpython-311.pyc +0 -0
- data/python/src/zhon/__pycache__/zhuyin.cpython-311.pyc +0 -0
- data/python/src/zhon/cedict/__init__.py +14 -0
- data/python/src/zhon/cedict/__pycache__/__init__.cpython-311.pyc +0 -0
- data/python/src/zhon/cedict/__pycache__/all.cpython-311.pyc +0 -0
- data/python/src/zhon/cedict/__pycache__/simplified.cpython-311.pyc +0 -0
- data/python/src/zhon/cedict/__pycache__/traditional.cpython-311.pyc +0 -0
- data/python/src/zhon/cedict/all.py +4 -0
- data/python/src/zhon/cedict/simplified.py +4 -0
- data/python/src/zhon/cedict/traditional.py +4 -0
- data/python/src/zhon/hanzi.py +81 -0
- data/python/src/zhon/pinyin.py +187 -0
- data/python/src/zhon/zhuyin.py +46 -0
- metadata +198 -0
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,600 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<!-- Generated by Cython 3.1.1 -->
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
6
|
+
<title>Cython: data_utils_cy.pyx</title>
|
|
7
|
+
<style type="text/css">
|
|
8
|
+
|
|
9
|
+
body.cython { font-family: courier; font-size: 12; }
|
|
10
|
+
|
|
11
|
+
.cython.tag { }
|
|
12
|
+
.cython.line { color: #000000; margin: 0em }
|
|
13
|
+
.cython.code { font-size: 9; color: #444444; display: none; margin: 0px 0px 0px 8px; border-left: 8px none; }
|
|
14
|
+
|
|
15
|
+
.cython.line .run { background-color: #B0FFB0; }
|
|
16
|
+
.cython.line .mis { background-color: #FFB0B0; }
|
|
17
|
+
.cython.code.run { border-left: 8px solid #B0FFB0; }
|
|
18
|
+
.cython.code.mis { border-left: 8px solid #FFB0B0; }
|
|
19
|
+
|
|
20
|
+
.cython.code .py_c_api { color: red; }
|
|
21
|
+
.cython.code .py_macro_api { color: #FF7000; }
|
|
22
|
+
.cython.code .pyx_c_api { color: #FF3000; }
|
|
23
|
+
.cython.code .pyx_macro_api { color: #FF7000; }
|
|
24
|
+
.cython.code .refnanny { color: #FFA000; }
|
|
25
|
+
.cython.code .trace { color: #FFA000; }
|
|
26
|
+
.cython.code .error_goto { color: #FFA000; }
|
|
27
|
+
|
|
28
|
+
.cython.code .coerce { color: #008000; border: 1px dotted #008000 }
|
|
29
|
+
.cython.code .py_attr { color: #FF0000; font-weight: bold; }
|
|
30
|
+
.cython.code .c_attr { color: #0000FF; }
|
|
31
|
+
.cython.code .py_call { color: #FF0000; font-weight: bold; }
|
|
32
|
+
.cython.code .c_call { color: #0000FF; }
|
|
33
|
+
|
|
34
|
+
.cython.score-0 {background-color: #FFFFff;}
|
|
35
|
+
.cython.score-1 {background-color: #FFFFe7;}
|
|
36
|
+
.cython.score-2 {background-color: #FFFFd4;}
|
|
37
|
+
.cython.score-3 {background-color: #FFFFc4;}
|
|
38
|
+
.cython.score-4 {background-color: #FFFFb6;}
|
|
39
|
+
.cython.score-5 {background-color: #FFFFaa;}
|
|
40
|
+
.cython.score-6 {background-color: #FFFF9f;}
|
|
41
|
+
.cython.score-7 {background-color: #FFFF96;}
|
|
42
|
+
.cython.score-8 {background-color: #FFFF8d;}
|
|
43
|
+
.cython.score-9 {background-color: #FFFF86;}
|
|
44
|
+
.cython.score-10 {background-color: #FFFF7f;}
|
|
45
|
+
.cython.score-11 {background-color: #FFFF79;}
|
|
46
|
+
.cython.score-12 {background-color: #FFFF73;}
|
|
47
|
+
.cython.score-13 {background-color: #FFFF6e;}
|
|
48
|
+
.cython.score-14 {background-color: #FFFF6a;}
|
|
49
|
+
.cython.score-15 {background-color: #FFFF66;}
|
|
50
|
+
.cython.score-16 {background-color: #FFFF62;}
|
|
51
|
+
.cython.score-17 {background-color: #FFFF5e;}
|
|
52
|
+
.cython.score-18 {background-color: #FFFF5b;}
|
|
53
|
+
.cython.score-19 {background-color: #FFFF57;}
|
|
54
|
+
.cython.score-20 {background-color: #FFFF55;}
|
|
55
|
+
.cython.score-21 {background-color: #FFFF52;}
|
|
56
|
+
.cython.score-22 {background-color: #FFFF4f;}
|
|
57
|
+
.cython.score-23 {background-color: #FFFF4d;}
|
|
58
|
+
.cython.score-24 {background-color: #FFFF4b;}
|
|
59
|
+
.cython.score-25 {background-color: #FFFF48;}
|
|
60
|
+
.cython.score-26 {background-color: #FFFF46;}
|
|
61
|
+
.cython.score-27 {background-color: #FFFF44;}
|
|
62
|
+
.cython.score-28 {background-color: #FFFF43;}
|
|
63
|
+
.cython.score-29 {background-color: #FFFF41;}
|
|
64
|
+
.cython.score-30 {background-color: #FFFF3f;}
|
|
65
|
+
.cython.score-31 {background-color: #FFFF3e;}
|
|
66
|
+
.cython.score-32 {background-color: #FFFF3c;}
|
|
67
|
+
.cython.score-33 {background-color: #FFFF3b;}
|
|
68
|
+
.cython.score-34 {background-color: #FFFF39;}
|
|
69
|
+
.cython.score-35 {background-color: #FFFF38;}
|
|
70
|
+
.cython.score-36 {background-color: #FFFF37;}
|
|
71
|
+
.cython.score-37 {background-color: #FFFF36;}
|
|
72
|
+
.cython.score-38 {background-color: #FFFF35;}
|
|
73
|
+
.cython.score-39 {background-color: #FFFF34;}
|
|
74
|
+
.cython.score-40 {background-color: #FFFF33;}
|
|
75
|
+
.cython.score-41 {background-color: #FFFF32;}
|
|
76
|
+
.cython.score-42 {background-color: #FFFF31;}
|
|
77
|
+
.cython.score-43 {background-color: #FFFF30;}
|
|
78
|
+
.cython.score-44 {background-color: #FFFF2f;}
|
|
79
|
+
.cython.score-45 {background-color: #FFFF2e;}
|
|
80
|
+
.cython.score-46 {background-color: #FFFF2d;}
|
|
81
|
+
.cython.score-47 {background-color: #FFFF2c;}
|
|
82
|
+
.cython.score-48 {background-color: #FFFF2b;}
|
|
83
|
+
.cython.score-49 {background-color: #FFFF2b;}
|
|
84
|
+
.cython.score-50 {background-color: #FFFF2a;}
|
|
85
|
+
.cython.score-51 {background-color: #FFFF29;}
|
|
86
|
+
.cython.score-52 {background-color: #FFFF29;}
|
|
87
|
+
.cython.score-53 {background-color: #FFFF28;}
|
|
88
|
+
.cython.score-54 {background-color: #FFFF27;}
|
|
89
|
+
.cython.score-55 {background-color: #FFFF27;}
|
|
90
|
+
.cython.score-56 {background-color: #FFFF26;}
|
|
91
|
+
.cython.score-57 {background-color: #FFFF26;}
|
|
92
|
+
.cython.score-58 {background-color: #FFFF25;}
|
|
93
|
+
.cython.score-59 {background-color: #FFFF24;}
|
|
94
|
+
.cython.score-60 {background-color: #FFFF24;}
|
|
95
|
+
.cython.score-61 {background-color: #FFFF23;}
|
|
96
|
+
.cython.score-62 {background-color: #FFFF23;}
|
|
97
|
+
.cython.score-63 {background-color: #FFFF22;}
|
|
98
|
+
.cython.score-64 {background-color: #FFFF22;}
|
|
99
|
+
.cython.score-65 {background-color: #FFFF22;}
|
|
100
|
+
.cython.score-66 {background-color: #FFFF21;}
|
|
101
|
+
.cython.score-67 {background-color: #FFFF21;}
|
|
102
|
+
.cython.score-68 {background-color: #FFFF20;}
|
|
103
|
+
.cython.score-69 {background-color: #FFFF20;}
|
|
104
|
+
.cython.score-70 {background-color: #FFFF1f;}
|
|
105
|
+
.cython.score-71 {background-color: #FFFF1f;}
|
|
106
|
+
.cython.score-72 {background-color: #FFFF1f;}
|
|
107
|
+
.cython.score-73 {background-color: #FFFF1e;}
|
|
108
|
+
.cython.score-74 {background-color: #FFFF1e;}
|
|
109
|
+
.cython.score-75 {background-color: #FFFF1e;}
|
|
110
|
+
.cython.score-76 {background-color: #FFFF1d;}
|
|
111
|
+
.cython.score-77 {background-color: #FFFF1d;}
|
|
112
|
+
.cython.score-78 {background-color: #FFFF1c;}
|
|
113
|
+
.cython.score-79 {background-color: #FFFF1c;}
|
|
114
|
+
.cython.score-80 {background-color: #FFFF1c;}
|
|
115
|
+
.cython.score-81 {background-color: #FFFF1c;}
|
|
116
|
+
.cython.score-82 {background-color: #FFFF1b;}
|
|
117
|
+
.cython.score-83 {background-color: #FFFF1b;}
|
|
118
|
+
.cython.score-84 {background-color: #FFFF1b;}
|
|
119
|
+
.cython.score-85 {background-color: #FFFF1a;}
|
|
120
|
+
.cython.score-86 {background-color: #FFFF1a;}
|
|
121
|
+
.cython.score-87 {background-color: #FFFF1a;}
|
|
122
|
+
.cython.score-88 {background-color: #FFFF1a;}
|
|
123
|
+
.cython.score-89 {background-color: #FFFF19;}
|
|
124
|
+
.cython.score-90 {background-color: #FFFF19;}
|
|
125
|
+
.cython.score-91 {background-color: #FFFF19;}
|
|
126
|
+
.cython.score-92 {background-color: #FFFF19;}
|
|
127
|
+
.cython.score-93 {background-color: #FFFF18;}
|
|
128
|
+
.cython.score-94 {background-color: #FFFF18;}
|
|
129
|
+
.cython.score-95 {background-color: #FFFF18;}
|
|
130
|
+
.cython.score-96 {background-color: #FFFF18;}
|
|
131
|
+
.cython.score-97 {background-color: #FFFF17;}
|
|
132
|
+
.cython.score-98 {background-color: #FFFF17;}
|
|
133
|
+
.cython.score-99 {background-color: #FFFF17;}
|
|
134
|
+
.cython.score-100 {background-color: #FFFF17;}
|
|
135
|
+
.cython.score-101 {background-color: #FFFF16;}
|
|
136
|
+
.cython.score-102 {background-color: #FFFF16;}
|
|
137
|
+
.cython.score-103 {background-color: #FFFF16;}
|
|
138
|
+
.cython.score-104 {background-color: #FFFF16;}
|
|
139
|
+
.cython.score-105 {background-color: #FFFF16;}
|
|
140
|
+
.cython.score-106 {background-color: #FFFF15;}
|
|
141
|
+
.cython.score-107 {background-color: #FFFF15;}
|
|
142
|
+
.cython.score-108 {background-color: #FFFF15;}
|
|
143
|
+
.cython.score-109 {background-color: #FFFF15;}
|
|
144
|
+
.cython.score-110 {background-color: #FFFF15;}
|
|
145
|
+
.cython.score-111 {background-color: #FFFF15;}
|
|
146
|
+
.cython.score-112 {background-color: #FFFF14;}
|
|
147
|
+
.cython.score-113 {background-color: #FFFF14;}
|
|
148
|
+
.cython.score-114 {background-color: #FFFF14;}
|
|
149
|
+
.cython.score-115 {background-color: #FFFF14;}
|
|
150
|
+
.cython.score-116 {background-color: #FFFF14;}
|
|
151
|
+
.cython.score-117 {background-color: #FFFF14;}
|
|
152
|
+
.cython.score-118 {background-color: #FFFF13;}
|
|
153
|
+
.cython.score-119 {background-color: #FFFF13;}
|
|
154
|
+
.cython.score-120 {background-color: #FFFF13;}
|
|
155
|
+
.cython.score-121 {background-color: #FFFF13;}
|
|
156
|
+
.cython.score-122 {background-color: #FFFF13;}
|
|
157
|
+
.cython.score-123 {background-color: #FFFF13;}
|
|
158
|
+
.cython.score-124 {background-color: #FFFF13;}
|
|
159
|
+
.cython.score-125 {background-color: #FFFF12;}
|
|
160
|
+
.cython.score-126 {background-color: #FFFF12;}
|
|
161
|
+
.cython.score-127 {background-color: #FFFF12;}
|
|
162
|
+
.cython.score-128 {background-color: #FFFF12;}
|
|
163
|
+
.cython.score-129 {background-color: #FFFF12;}
|
|
164
|
+
.cython.score-130 {background-color: #FFFF12;}
|
|
165
|
+
.cython.score-131 {background-color: #FFFF12;}
|
|
166
|
+
.cython.score-132 {background-color: #FFFF11;}
|
|
167
|
+
.cython.score-133 {background-color: #FFFF11;}
|
|
168
|
+
.cython.score-134 {background-color: #FFFF11;}
|
|
169
|
+
.cython.score-135 {background-color: #FFFF11;}
|
|
170
|
+
.cython.score-136 {background-color: #FFFF11;}
|
|
171
|
+
.cython.score-137 {background-color: #FFFF11;}
|
|
172
|
+
.cython.score-138 {background-color: #FFFF11;}
|
|
173
|
+
.cython.score-139 {background-color: #FFFF11;}
|
|
174
|
+
.cython.score-140 {background-color: #FFFF11;}
|
|
175
|
+
.cython.score-141 {background-color: #FFFF10;}
|
|
176
|
+
.cython.score-142 {background-color: #FFFF10;}
|
|
177
|
+
.cython.score-143 {background-color: #FFFF10;}
|
|
178
|
+
.cython.score-144 {background-color: #FFFF10;}
|
|
179
|
+
.cython.score-145 {background-color: #FFFF10;}
|
|
180
|
+
.cython.score-146 {background-color: #FFFF10;}
|
|
181
|
+
.cython.score-147 {background-color: #FFFF10;}
|
|
182
|
+
.cython.score-148 {background-color: #FFFF10;}
|
|
183
|
+
.cython.score-149 {background-color: #FFFF10;}
|
|
184
|
+
.cython.score-150 {background-color: #FFFF0f;}
|
|
185
|
+
.cython.score-151 {background-color: #FFFF0f;}
|
|
186
|
+
.cython.score-152 {background-color: #FFFF0f;}
|
|
187
|
+
.cython.score-153 {background-color: #FFFF0f;}
|
|
188
|
+
.cython.score-154 {background-color: #FFFF0f;}
|
|
189
|
+
.cython.score-155 {background-color: #FFFF0f;}
|
|
190
|
+
.cython.score-156 {background-color: #FFFF0f;}
|
|
191
|
+
.cython.score-157 {background-color: #FFFF0f;}
|
|
192
|
+
.cython.score-158 {background-color: #FFFF0f;}
|
|
193
|
+
.cython.score-159 {background-color: #FFFF0f;}
|
|
194
|
+
.cython.score-160 {background-color: #FFFF0f;}
|
|
195
|
+
.cython.score-161 {background-color: #FFFF0e;}
|
|
196
|
+
.cython.score-162 {background-color: #FFFF0e;}
|
|
197
|
+
.cython.score-163 {background-color: #FFFF0e;}
|
|
198
|
+
.cython.score-164 {background-color: #FFFF0e;}
|
|
199
|
+
.cython.score-165 {background-color: #FFFF0e;}
|
|
200
|
+
.cython.score-166 {background-color: #FFFF0e;}
|
|
201
|
+
.cython.score-167 {background-color: #FFFF0e;}
|
|
202
|
+
.cython.score-168 {background-color: #FFFF0e;}
|
|
203
|
+
.cython.score-169 {background-color: #FFFF0e;}
|
|
204
|
+
.cython.score-170 {background-color: #FFFF0e;}
|
|
205
|
+
.cython.score-171 {background-color: #FFFF0e;}
|
|
206
|
+
.cython.score-172 {background-color: #FFFF0e;}
|
|
207
|
+
.cython.score-173 {background-color: #FFFF0d;}
|
|
208
|
+
.cython.score-174 {background-color: #FFFF0d;}
|
|
209
|
+
.cython.score-175 {background-color: #FFFF0d;}
|
|
210
|
+
.cython.score-176 {background-color: #FFFF0d;}
|
|
211
|
+
.cython.score-177 {background-color: #FFFF0d;}
|
|
212
|
+
.cython.score-178 {background-color: #FFFF0d;}
|
|
213
|
+
.cython.score-179 {background-color: #FFFF0d;}
|
|
214
|
+
.cython.score-180 {background-color: #FFFF0d;}
|
|
215
|
+
.cython.score-181 {background-color: #FFFF0d;}
|
|
216
|
+
.cython.score-182 {background-color: #FFFF0d;}
|
|
217
|
+
.cython.score-183 {background-color: #FFFF0d;}
|
|
218
|
+
.cython.score-184 {background-color: #FFFF0d;}
|
|
219
|
+
.cython.score-185 {background-color: #FFFF0d;}
|
|
220
|
+
.cython.score-186 {background-color: #FFFF0d;}
|
|
221
|
+
.cython.score-187 {background-color: #FFFF0c;}
|
|
222
|
+
.cython.score-188 {background-color: #FFFF0c;}
|
|
223
|
+
.cython.score-189 {background-color: #FFFF0c;}
|
|
224
|
+
.cython.score-190 {background-color: #FFFF0c;}
|
|
225
|
+
.cython.score-191 {background-color: #FFFF0c;}
|
|
226
|
+
.cython.score-192 {background-color: #FFFF0c;}
|
|
227
|
+
.cython.score-193 {background-color: #FFFF0c;}
|
|
228
|
+
.cython.score-194 {background-color: #FFFF0c;}
|
|
229
|
+
.cython.score-195 {background-color: #FFFF0c;}
|
|
230
|
+
.cython.score-196 {background-color: #FFFF0c;}
|
|
231
|
+
.cython.score-197 {background-color: #FFFF0c;}
|
|
232
|
+
.cython.score-198 {background-color: #FFFF0c;}
|
|
233
|
+
.cython.score-199 {background-color: #FFFF0c;}
|
|
234
|
+
.cython.score-200 {background-color: #FFFF0c;}
|
|
235
|
+
.cython.score-201 {background-color: #FFFF0c;}
|
|
236
|
+
.cython.score-202 {background-color: #FFFF0c;}
|
|
237
|
+
.cython.score-203 {background-color: #FFFF0b;}
|
|
238
|
+
.cython.score-204 {background-color: #FFFF0b;}
|
|
239
|
+
.cython.score-205 {background-color: #FFFF0b;}
|
|
240
|
+
.cython.score-206 {background-color: #FFFF0b;}
|
|
241
|
+
.cython.score-207 {background-color: #FFFF0b;}
|
|
242
|
+
.cython.score-208 {background-color: #FFFF0b;}
|
|
243
|
+
.cython.score-209 {background-color: #FFFF0b;}
|
|
244
|
+
.cython.score-210 {background-color: #FFFF0b;}
|
|
245
|
+
.cython.score-211 {background-color: #FFFF0b;}
|
|
246
|
+
.cython.score-212 {background-color: #FFFF0b;}
|
|
247
|
+
.cython.score-213 {background-color: #FFFF0b;}
|
|
248
|
+
.cython.score-214 {background-color: #FFFF0b;}
|
|
249
|
+
.cython.score-215 {background-color: #FFFF0b;}
|
|
250
|
+
.cython.score-216 {background-color: #FFFF0b;}
|
|
251
|
+
.cython.score-217 {background-color: #FFFF0b;}
|
|
252
|
+
.cython.score-218 {background-color: #FFFF0b;}
|
|
253
|
+
.cython.score-219 {background-color: #FFFF0b;}
|
|
254
|
+
.cython.score-220 {background-color: #FFFF0b;}
|
|
255
|
+
.cython.score-221 {background-color: #FFFF0b;}
|
|
256
|
+
.cython.score-222 {background-color: #FFFF0a;}
|
|
257
|
+
.cython.score-223 {background-color: #FFFF0a;}
|
|
258
|
+
.cython.score-224 {background-color: #FFFF0a;}
|
|
259
|
+
.cython.score-225 {background-color: #FFFF0a;}
|
|
260
|
+
.cython.score-226 {background-color: #FFFF0a;}
|
|
261
|
+
.cython.score-227 {background-color: #FFFF0a;}
|
|
262
|
+
.cython.score-228 {background-color: #FFFF0a;}
|
|
263
|
+
.cython.score-229 {background-color: #FFFF0a;}
|
|
264
|
+
.cython.score-230 {background-color: #FFFF0a;}
|
|
265
|
+
.cython.score-231 {background-color: #FFFF0a;}
|
|
266
|
+
.cython.score-232 {background-color: #FFFF0a;}
|
|
267
|
+
.cython.score-233 {background-color: #FFFF0a;}
|
|
268
|
+
.cython.score-234 {background-color: #FFFF0a;}
|
|
269
|
+
.cython.score-235 {background-color: #FFFF0a;}
|
|
270
|
+
.cython.score-236 {background-color: #FFFF0a;}
|
|
271
|
+
.cython.score-237 {background-color: #FFFF0a;}
|
|
272
|
+
.cython.score-238 {background-color: #FFFF0a;}
|
|
273
|
+
.cython.score-239 {background-color: #FFFF0a;}
|
|
274
|
+
.cython.score-240 {background-color: #FFFF0a;}
|
|
275
|
+
.cython.score-241 {background-color: #FFFF0a;}
|
|
276
|
+
.cython.score-242 {background-color: #FFFF0a;}
|
|
277
|
+
.cython.score-243 {background-color: #FFFF0a;}
|
|
278
|
+
.cython.score-244 {background-color: #FFFF0a;}
|
|
279
|
+
.cython.score-245 {background-color: #FFFF0a;}
|
|
280
|
+
.cython.score-246 {background-color: #FFFF09;}
|
|
281
|
+
.cython.score-247 {background-color: #FFFF09;}
|
|
282
|
+
.cython.score-248 {background-color: #FFFF09;}
|
|
283
|
+
.cython.score-249 {background-color: #FFFF09;}
|
|
284
|
+
.cython.score-250 {background-color: #FFFF09;}
|
|
285
|
+
.cython.score-251 {background-color: #FFFF09;}
|
|
286
|
+
.cython.score-252 {background-color: #FFFF09;}
|
|
287
|
+
.cython.score-253 {background-color: #FFFF09;}
|
|
288
|
+
.cython.score-254 {background-color: #FFFF09;}
|
|
289
|
+
</style>
|
|
290
|
+
</head>
|
|
291
|
+
<body class="cython">
|
|
292
|
+
<p><span style="border-bottom: solid 1px grey;">Generated by Cython 3.1.1</span></p>
|
|
293
|
+
<p>
|
|
294
|
+
<span style="background-color: #FFFF00">Yellow lines</span> hint at Python interaction.<br />
|
|
295
|
+
Click on a line that starts with a "<code>+</code>" to see the C code that Cython generated for it.
|
|
296
|
+
</p>
|
|
297
|
+
<p>Raw output: <a href="data_utils_cy.cpp">data_utils_cy.cpp</a></p>
|
|
298
|
+
<div class="cython"><pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">01</span>: # cython: language_level=3</pre>
|
|
299
|
+
<pre class='cython code score-8 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyDict_NewPresized</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)</span>
|
|
300
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
|
|
301
|
+
if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_2) < 0) <span class='error_goto'>__PYX_ERR(0, 1, __pyx_L1_error)</span>
|
|
302
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
|
|
303
|
+
</pre><pre class="cython line score-0"> <span class="">02</span>: # cython: boundscheck=False</pre>
|
|
304
|
+
<pre class="cython line score-0"> <span class="">03</span>: # cython: wraparound=False</pre>
|
|
305
|
+
<pre class="cython line score-0"> <span class="">04</span>: # cython: nonecheck=False</pre>
|
|
306
|
+
<pre class="cython line score-0"> <span class="">05</span>: # cython: cdivision=True</pre>
|
|
307
|
+
<pre class="cython line score-0"> <span class="">06</span>: </pre>
|
|
308
|
+
<pre class="cython line score-0"> <span class="">07</span>: """</pre>
|
|
309
|
+
<pre class="cython line score-0"> <span class="">08</span>: Cython 優化版本的資料工具</pre>
|
|
310
|
+
<pre class="cython line score-0"> <span class="">09</span>: 專門針對高頻操作進行效能優化</pre>
|
|
311
|
+
<pre class="cython line score-0"> <span class="">10</span>: """</pre>
|
|
312
|
+
<pre class="cython line score-0"> <span class="">11</span>: </pre>
|
|
313
|
+
<pre class="cython line score-0"> <span class="">12</span>: cimport cython</pre>
|
|
314
|
+
<pre class="cython line score-0"> <span class="">13</span>: from libc.stdlib cimport malloc, free</pre>
|
|
315
|
+
<pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">14</span>: import logging</pre>
|
|
316
|
+
<pre class='cython code score-8 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_ImportDottedModule</span>(__pyx_mstate_global->__pyx_n_u_logging, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error)</span>
|
|
317
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
|
|
318
|
+
if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_logging, __pyx_t_2) < 0) <span class='error_goto'>__PYX_ERR(0, 14, __pyx_L1_error)</span>
|
|
319
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
|
|
320
|
+
</pre><pre class="cython line score-0"> <span class="">15</span>: </pre>
|
|
321
|
+
<pre class="cython line score-0"> <span class="">16</span>: # 設定 logger</pre>
|
|
322
|
+
<pre class="cython line score-18" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">17</span>: logger = logging.getLogger(__name__)</pre>
|
|
323
|
+
<pre class='cython code score-18 '> __pyx_t_3 = NULL;
|
|
324
|
+
<span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_logging);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 17, __pyx_L1_error)</span>
|
|
325
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
|
|
326
|
+
__pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_getLogger);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 17, __pyx_L1_error)</span>
|
|
327
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
|
|
328
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
|
|
329
|
+
<span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_name);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 17, __pyx_L1_error)</span>
|
|
330
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
|
|
331
|
+
__pyx_t_6 = 1;
|
|
332
|
+
{
|
|
333
|
+
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
|
|
334
|
+
__pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_FastCall</span>(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
|
|
335
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
|
|
336
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
|
|
337
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
|
|
338
|
+
if (unlikely(!__pyx_t_2)) <span class='error_goto'>__PYX_ERR(0, 17, __pyx_L1_error)</span>
|
|
339
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
|
|
340
|
+
}
|
|
341
|
+
if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_logger, __pyx_t_2) < 0) <span class='error_goto'>__PYX_ERR(0, 17, __pyx_L1_error)</span>
|
|
342
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
|
|
343
|
+
</pre><pre class="cython line score-0"> <span class="">18</span>: </pre>
|
|
344
|
+
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">19</span>: @cython.boundscheck(False)</pre>
|
|
345
|
+
<pre class='cython code score-0 '>struct __pyx_obj_5utils_13data_utils_cy_FastTextProcessor {
|
|
346
|
+
PyObject_HEAD
|
|
347
|
+
struct __pyx_vtabstruct_5utils_13data_utils_cy_FastTextProcessor *__pyx_vtab;
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
struct __pyx_vtabstruct_5utils_13data_utils_cy_FastTextProcessor {
|
|
353
|
+
double (*calculate_confidence)(struct __pyx_obj_5utils_13data_utils_cy_FastTextProcessor *, double, long);
|
|
354
|
+
long (*count_chars_in_set)(struct __pyx_obj_5utils_13data_utils_cy_FastTextProcessor *, PyObject *, PyObject *);
|
|
355
|
+
double (*calculate_ratio)(struct __pyx_obj_5utils_13data_utils_cy_FastTextProcessor *, long, long);
|
|
356
|
+
};
|
|
357
|
+
static struct __pyx_vtabstruct_5utils_13data_utils_cy_FastTextProcessor *__pyx_vtabptr_5utils_13data_utils_cy_FastTextProcessor;
|
|
358
|
+
</pre><pre class="cython line score-0"> <span class="">20</span>: @cython.wraparound(False)</pre>
|
|
359
|
+
<pre class="cython line score-0"> <span class="">21</span>: cdef class FastTextProcessor:</pre>
|
|
360
|
+
<pre class="cython line score-0"> <span class="">22</span>: """</pre>
|
|
361
|
+
<pre class="cython line score-0"> <span class="">23</span>: 高效能的 FastText 文本處理器</pre>
|
|
362
|
+
<pre class="cython line score-0"> <span class="">24</span>: 針對字符操作進行 Cython 優化</pre>
|
|
363
|
+
<pre class="cython line score-0"> <span class="">25</span>: """</pre>
|
|
364
|
+
<pre class="cython line score-0"> <span class="">26</span>: </pre>
|
|
365
|
+
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">27</span>: @cython.cdivision(True)</pre>
|
|
366
|
+
<pre class='cython code score-0 '>static double __pyx_f_5utils_13data_utils_cy_17FastTextProcessor_calculate_confidence(CYTHON_UNUSED struct __pyx_obj_5utils_13data_utils_cy_FastTextProcessor *__pyx_v_self, double __pyx_v_score, long __pyx_v_text_length) {
|
|
367
|
+
double __pyx_v_length_factor;
|
|
368
|
+
double __pyx_r;
|
|
369
|
+
/* … */
|
|
370
|
+
/* function exit code */
|
|
371
|
+
__pyx_L0:;
|
|
372
|
+
return __pyx_r;
|
|
373
|
+
}
|
|
374
|
+
</pre><pre class="cython line score-0"> <span class="">28</span>: cdef double calculate_confidence(self, double score, long text_length):</pre>
|
|
375
|
+
<pre class="cython line score-0"> <span class="">29</span>: """</pre>
|
|
376
|
+
<pre class="cython line score-0"> <span class="">30</span>: 計算信心分數的 Cython 優化版本</pre>
|
|
377
|
+
<pre class="cython line score-0"> <span class="">31</span>: </pre>
|
|
378
|
+
<pre class="cython line score-0"> <span class="">32</span>: Args:</pre>
|
|
379
|
+
<pre class="cython line score-0"> <span class="">33</span>: score: 原始分數</pre>
|
|
380
|
+
<pre class="cython line score-0"> <span class="">34</span>: text_length: 文本長度</pre>
|
|
381
|
+
<pre class="cython line score-0"> <span class="">35</span>: </pre>
|
|
382
|
+
<pre class="cython line score-0"> <span class="">36</span>: Returns:</pre>
|
|
383
|
+
<pre class="cython line score-0"> <span class="">37</span>: double: 調整後的信心分數</pre>
|
|
384
|
+
<pre class="cython line score-0"> <span class="">38</span>: """</pre>
|
|
385
|
+
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">39</span>: if text_length <= 0:</pre>
|
|
386
|
+
<pre class='cython code score-0 '> __pyx_t_1 = (__pyx_v_text_length <= 0);
|
|
387
|
+
if (__pyx_t_1) {
|
|
388
|
+
/* … */
|
|
389
|
+
}
|
|
390
|
+
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">40</span>: return 0.0</pre>
|
|
391
|
+
<pre class='cython code score-0 '> __pyx_r = 0.0;
|
|
392
|
+
goto __pyx_L0;
|
|
393
|
+
</pre><pre class="cython line score-0"> <span class="">41</span>: </pre>
|
|
394
|
+
<pre class="cython line score-0"> <span class="">42</span>: # 長度懲罰因子(文本越短,信心度越低)</pre>
|
|
395
|
+
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">43</span>: cdef double length_factor = min(1.0, <double>text_length / 50.0)</pre>
|
|
396
|
+
<pre class='cython code score-0 '> __pyx_t_2 = (((double)__pyx_v_text_length) / 50.0);
|
|
397
|
+
__pyx_t_3 = 1.0;
|
|
398
|
+
__pyx_t_1 = (__pyx_t_2 < __pyx_t_3);
|
|
399
|
+
if (__pyx_t_1) {
|
|
400
|
+
__pyx_t_4 = __pyx_t_2;
|
|
401
|
+
} else {
|
|
402
|
+
__pyx_t_4 = __pyx_t_3;
|
|
403
|
+
}
|
|
404
|
+
__pyx_v_length_factor = __pyx_t_4;
|
|
405
|
+
</pre><pre class="cython line score-0"> <span class="">44</span>: </pre>
|
|
406
|
+
<pre class="cython line score-0"> <span class="">45</span>: # 調整分數</pre>
|
|
407
|
+
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">46</span>: return score * length_factor</pre>
|
|
408
|
+
<pre class='cython code score-0 '> __pyx_r = (__pyx_v_score * __pyx_v_length_factor);
|
|
409
|
+
goto __pyx_L0;
|
|
410
|
+
</pre><pre class="cython line score-0"> <span class="">47</span>: </pre>
|
|
411
|
+
<pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">48</span>: @cython.boundscheck(False)</pre>
|
|
412
|
+
<pre class='cython code score-5 '>static long __pyx_f_5utils_13data_utils_cy_17FastTextProcessor_count_chars_in_set(CYTHON_UNUSED struct __pyx_obj_5utils_13data_utils_cy_FastTextProcessor *__pyx_v_self, PyObject *__pyx_v_text, PyObject *__pyx_v_char_set) {
|
|
413
|
+
long __pyx_v_count;
|
|
414
|
+
PyObject *__pyx_v_ch = 0;
|
|
415
|
+
long __pyx_r;
|
|
416
|
+
/* … */
|
|
417
|
+
/* function exit code */
|
|
418
|
+
__pyx_L1_error:;
|
|
419
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
|
|
420
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8);
|
|
421
|
+
<span class='pyx_c_api'>__Pyx_AddTraceback</span>("utils.data_utils_cy.FastTextProcessor.count_chars_in_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
|
|
422
|
+
__pyx_r = 0;
|
|
423
|
+
__pyx_L0:;
|
|
424
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_ch);
|
|
425
|
+
<span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
|
|
426
|
+
return __pyx_r;
|
|
427
|
+
}
|
|
428
|
+
</pre><pre class="cython line score-0"> <span class="">49</span>: @cython.wraparound(False)</pre>
|
|
429
|
+
<pre class="cython line score-0"> <span class="">50</span>: cdef long count_chars_in_set(self, str text, set char_set):</pre>
|
|
430
|
+
<pre class="cython line score-0"> <span class="">51</span>: """</pre>
|
|
431
|
+
<pre class="cython line score-0"> <span class="">52</span>: 高效計算文本中特定字符集的字符數量</pre>
|
|
432
|
+
<pre class="cython line score-0"> <span class="">53</span>: </pre>
|
|
433
|
+
<pre class="cython line score-0"> <span class="">54</span>: Args:</pre>
|
|
434
|
+
<pre class="cython line score-0"> <span class="">55</span>: text: 輸入文本</pre>
|
|
435
|
+
<pre class="cython line score-0"> <span class="">56</span>: char_set: 要計算的字符集</pre>
|
|
436
|
+
<pre class="cython line score-0"> <span class="">57</span>: </pre>
|
|
437
|
+
<pre class="cython line score-0"> <span class="">58</span>: Returns:</pre>
|
|
438
|
+
<pre class="cython line score-0"> <span class="">59</span>: long: 字符數量</pre>
|
|
439
|
+
<pre class="cython line score-0"> <span class="">60</span>: """</pre>
|
|
440
|
+
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">61</span>: cdef long count = 0</pre>
|
|
441
|
+
<pre class='cython code score-0 '> __pyx_v_count = 0;
|
|
442
|
+
</pre><pre class="cython line score-0"> <span class="">62</span>: cdef str ch</pre>
|
|
443
|
+
<pre class="cython line score-0"> <span class="">63</span>: </pre>
|
|
444
|
+
<pre class="cython line score-18" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">64</span>: for ch in text:</pre>
|
|
445
|
+
<pre class='cython code score-18 '> if (unlikely(__pyx_v_text == Py_None)) {
|
|
446
|
+
<span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' is not iterable");
|
|
447
|
+
<span class='error_goto'>__PYX_ERR(0, 64, __pyx_L1_error)</span>
|
|
448
|
+
}
|
|
449
|
+
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_text);
|
|
450
|
+
__pyx_t_1 = __pyx_v_text;
|
|
451
|
+
__pyx_t_6 = __Pyx_init_unicode_iteration(__pyx_t_1, (&__pyx_t_3), (&__pyx_t_4), (&__pyx_t_5));<span class='error_goto'> if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 64, __pyx_L1_error)</span>
|
|
452
|
+
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_3; __pyx_t_7++) {
|
|
453
|
+
__pyx_t_2 = __pyx_t_7;
|
|
454
|
+
__pyx_t_8 = <span class='pyx_c_api'>__Pyx_PyUnicode_FromOrdinal</span>(<span class='pyx_c_api'>__Pyx_PyUnicode_READ</span>(__pyx_t_5, __pyx_t_4, __pyx_t_2));<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 64, __pyx_L1_error)</span>
|
|
455
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
|
|
456
|
+
if (!(likely(<span class='py_c_api'>PyUnicode_CheckExact</span>(__pyx_t_8)) || <span class='pyx_c_api'>__Pyx_RaiseUnexpectedTypeError</span>("str", __pyx_t_8))) <span class='error_goto'>__PYX_ERR(0, 64, __pyx_L1_error)</span>
|
|
457
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF_SET</span>(__pyx_v_ch, ((PyObject*)__pyx_t_8));
|
|
458
|
+
__pyx_t_8 = 0;
|
|
459
|
+
</pre><pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">65</span>: if ch in char_set:</pre>
|
|
460
|
+
<pre class='cython code score-8 '> if (unlikely(__pyx_v_char_set == Py_None)) {
|
|
461
|
+
<span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
|
|
462
|
+
<span class='error_goto'>__PYX_ERR(0, 65, __pyx_L1_error)</span>
|
|
463
|
+
}
|
|
464
|
+
__pyx_t_9 = (<span class='pyx_c_api'>__Pyx_PySet_ContainsTF</span>(__pyx_v_ch, __pyx_v_char_set, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) <span class='error_goto'>__PYX_ERR(0, 65, __pyx_L1_error)</span>
|
|
465
|
+
if (__pyx_t_9) {
|
|
466
|
+
/* … */
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
|
|
470
|
+
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">66</span>: count += 1</pre>
|
|
471
|
+
<pre class='cython code score-0 '> __pyx_v_count = (__pyx_v_count + 1);
|
|
472
|
+
</pre><pre class="cython line score-0"> <span class="">67</span>: </pre>
|
|
473
|
+
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">68</span>: return count</pre>
|
|
474
|
+
<pre class='cython code score-0 '> __pyx_r = __pyx_v_count;
|
|
475
|
+
goto __pyx_L0;
|
|
476
|
+
</pre><pre class="cython line score-0"> <span class="">69</span>: </pre>
|
|
477
|
+
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">70</span>: @cython.boundscheck(False)</pre>
|
|
478
|
+
<pre class='cython code score-0 '>static double __pyx_f_5utils_13data_utils_cy_17FastTextProcessor_calculate_ratio(CYTHON_UNUSED struct __pyx_obj_5utils_13data_utils_cy_FastTextProcessor *__pyx_v_self, long __pyx_v_numerator, long __pyx_v_denominator) {
|
|
479
|
+
double __pyx_r;
|
|
480
|
+
/* … */
|
|
481
|
+
/* function exit code */
|
|
482
|
+
__pyx_L0:;
|
|
483
|
+
return __pyx_r;
|
|
484
|
+
}
|
|
485
|
+
</pre><pre class="cython line score-0"> <span class="">71</span>: @cython.wraparound(False)</pre>
|
|
486
|
+
<pre class="cython line score-0"> <span class="">72</span>: cdef double calculate_ratio(self, long numerator, long denominator):</pre>
|
|
487
|
+
<pre class="cython line score-0"> <span class="">73</span>: """</pre>
|
|
488
|
+
<pre class="cython line score-0"> <span class="">74</span>: 安全的比例計算</pre>
|
|
489
|
+
<pre class="cython line score-0"> <span class="">75</span>: </pre>
|
|
490
|
+
<pre class="cython line score-0"> <span class="">76</span>: Args:</pre>
|
|
491
|
+
<pre class="cython line score-0"> <span class="">77</span>: numerator: 分子</pre>
|
|
492
|
+
<pre class="cython line score-0"> <span class="">78</span>: denominator: 分母</pre>
|
|
493
|
+
<pre class="cython line score-0"> <span class="">79</span>: </pre>
|
|
494
|
+
<pre class="cython line score-0"> <span class="">80</span>: Returns:</pre>
|
|
495
|
+
<pre class="cython line score-0"> <span class="">81</span>: double: 比例值</pre>
|
|
496
|
+
<pre class="cython line score-0"> <span class="">82</span>: """</pre>
|
|
497
|
+
<pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">83</span>: if denominator <= 0:</pre>
|
|
498
|
+
<pre class='cython code score-0 '> __pyx_t_1 = (__pyx_v_denominator <= 0);
|
|
499
|
+
if (__pyx_t_1) {
|
|
500
|
+
/* … */
|
|
501
|
+
}
|
|
502
|
+
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">84</span>: return 0.0</pre>
|
|
503
|
+
<pre class='cython code score-0 '> __pyx_r = 0.0;
|
|
504
|
+
goto __pyx_L0;
|
|
505
|
+
</pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">85</span>: return <double>numerator / <double>denominator</pre>
|
|
506
|
+
<pre class='cython code score-0 '> __pyx_r = (((double)__pyx_v_numerator) / ((double)__pyx_v_denominator));
|
|
507
|
+
goto __pyx_L0;
|
|
508
|
+
</pre><pre class="cython line score-0"> <span class="">86</span>: </pre>
|
|
509
|
+
<pre class="cython line score-0"> <span class="">87</span>: </pre>
|
|
510
|
+
<pre class="cython line score-18" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">88</span>: def setup_fast_logger():</pre>
|
|
511
|
+
<pre class='cython code score-18 '>/* Python wrapper */
|
|
512
|
+
static PyObject *__pyx_pw_5utils_13data_utils_cy_1setup_fast_logger(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
|
|
513
|
+
<span class='py_macro_api'>PyDoc_STRVAR</span>(__pyx_doc_5utils_13data_utils_cy_setup_fast_logger, "setup_fast_logger()\n\350\250\255\345\256\232\351\253\230\346\225\210\350\203\275 logger");
|
|
514
|
+
static PyMethodDef __pyx_mdef_5utils_13data_utils_cy_1setup_fast_logger = {"setup_fast_logger", (PyCFunction)__pyx_pw_5utils_13data_utils_cy_1setup_fast_logger, METH_NOARGS, __pyx_doc_5utils_13data_utils_cy_setup_fast_logger};
|
|
515
|
+
static PyObject *__pyx_pw_5utils_13data_utils_cy_1setup_fast_logger(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
|
|
516
|
+
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
|
|
517
|
+
PyObject *__pyx_r = 0;
|
|
518
|
+
<span class='refnanny'>__Pyx_RefNannyDeclarations</span>
|
|
519
|
+
<span class='refnanny'>__Pyx_RefNannySetupContext</span>("setup_fast_logger (wrapper)", 0);
|
|
520
|
+
__pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_VARARGS</span>(__pyx_args, __pyx_nargs);
|
|
521
|
+
__pyx_r = __pyx_pf_5utils_13data_utils_cy_setup_fast_logger(__pyx_self);
|
|
522
|
+
|
|
523
|
+
/* function exit code */
|
|
524
|
+
<span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
|
|
525
|
+
return __pyx_r;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
static PyObject *__pyx_pf_5utils_13data_utils_cy_setup_fast_logger(CYTHON_UNUSED PyObject *__pyx_self) {
|
|
529
|
+
PyObject *__pyx_r = NULL;
|
|
530
|
+
/* … */
|
|
531
|
+
/* function exit code */
|
|
532
|
+
__pyx_L1_error:;
|
|
533
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
|
|
534
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
|
|
535
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
|
|
536
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4);
|
|
537
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5);
|
|
538
|
+
<span class='pyx_c_api'>__Pyx_AddTraceback</span>("utils.data_utils_cy.setup_fast_logger", __pyx_clineno, __pyx_lineno, __pyx_filename);
|
|
539
|
+
__pyx_r = NULL;
|
|
540
|
+
__pyx_L0:;
|
|
541
|
+
<span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
|
|
542
|
+
<span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
|
|
543
|
+
return __pyx_r;
|
|
544
|
+
}
|
|
545
|
+
/* … */
|
|
546
|
+
__pyx_t_2 = <span class='pyx_c_api'>__Pyx_CyFunction_New</span>(&__pyx_mdef_5utils_13data_utils_cy_1setup_fast_logger, 0, __pyx_mstate_global->__pyx_n_u_setup_fast_logger, NULL, __pyx_mstate_global->__pyx_n_u_utils_data_utils_cy, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2]));<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error)</span>
|
|
547
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
|
|
548
|
+
if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setup_fast_logger, __pyx_t_2) < 0) <span class='error_goto'>__PYX_ERR(0, 88, __pyx_L1_error)</span>
|
|
549
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
|
|
550
|
+
</pre><pre class="cython line score-0"> <span class="">89</span>: """設定高效能 logger"""</pre>
|
|
551
|
+
<pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">90</span>: logging.basicConfig(</pre>
|
|
552
|
+
<pre class='cython code score-5 '> __pyx_t_2 = NULL;
|
|
553
|
+
<span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_logging);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error)</span>
|
|
554
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
|
|
555
|
+
__pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_basicConfig);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 90, __pyx_L1_error)</span>
|
|
556
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
|
|
557
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
|
|
558
|
+
</pre><pre class="cython line score-28" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">91</span>: level=logging.INFO,</pre>
|
|
559
|
+
<pre class='cython code score-28 '> <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_logging);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error)</span>
|
|
560
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
|
|
561
|
+
__pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INFO);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)</span>
|
|
562
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
|
|
563
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
|
|
564
|
+
__pyx_t_6 = 1;
|
|
565
|
+
#if CYTHON_UNPACK_METHODS
|
|
566
|
+
if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_4))) {
|
|
567
|
+
__pyx_t_2 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_4);
|
|
568
|
+
assert(__pyx_t_2);
|
|
569
|
+
PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_4);
|
|
570
|
+
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_2);
|
|
571
|
+
<span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
|
|
572
|
+
<span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_4, __pyx__function);
|
|
573
|
+
__pyx_t_6 = 0;
|
|
574
|
+
}
|
|
575
|
+
#endif
|
|
576
|
+
{
|
|
577
|
+
PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
|
|
578
|
+
__pyx_t_3 = <span class='pyx_c_api'>__Pyx_MakeVectorcallBuilderKwds</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error)</span>
|
|
579
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
|
|
580
|
+
if (<span class='pyx_c_api'>__Pyx_VectorcallBuilder_AddArg</span>(__pyx_mstate_global->__pyx_n_u_level, __pyx_t_5, __pyx_t_3, __pyx_callargs+1, 0) < 0) <span class='error_goto'>__PYX_ERR(0, 90, __pyx_L1_error)</span>
|
|
581
|
+
if (<span class='pyx_c_api'>__Pyx_VectorcallBuilder_AddArg</span>(__pyx_mstate_global->__pyx_n_u_format, __pyx_mstate_global->__pyx_kp_u_asctime_s_name_s_levelname_s_me, __pyx_t_3, __pyx_callargs+1, 1) < 0) <span class='error_goto'>__PYX_ERR(0, 90, __pyx_L1_error)</span>
|
|
582
|
+
__pyx_t_1 = <span class='pyx_c_api'>__Pyx_Object_Vectorcall_CallFromBuilder</span>(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
|
|
583
|
+
<span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
|
|
584
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
|
|
585
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
|
|
586
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
|
|
587
|
+
if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 90, __pyx_L1_error)</span>
|
|
588
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
|
|
589
|
+
}
|
|
590
|
+
<span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
|
|
591
|
+
</pre><pre class="cython line score-0"> <span class="">92</span>: format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'</pre>
|
|
592
|
+
<pre class="cython line score-0"> <span class="">93</span>: )</pre>
|
|
593
|
+
<pre class="cython line score-3" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">94</span>: return logger</pre>
|
|
594
|
+
<pre class='cython code score-3 '> <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
|
|
595
|
+
<span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_logger);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error)</span>
|
|
596
|
+
<span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
|
|
597
|
+
__pyx_r = __pyx_t_1;
|
|
598
|
+
__pyx_t_1 = 0;
|
|
599
|
+
goto __pyx_L0;
|
|
600
|
+
</pre></div></body></html>
|