webull-openapi-python-sdk 1.0.0__py3-none-any.whl

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.
Files changed (295) hide show
  1. samples/__init__.py +1 -0
  2. samples/data/__init__.py +1 -0
  3. samples/data/data_client.py +57 -0
  4. samples/data/data_streaming_client.py +86 -0
  5. samples/data/data_streaming_client_async.py +101 -0
  6. samples/trade/__init__.py +0 -0
  7. samples/trade/trade_client.py +163 -0
  8. samples/trade/trade_client_v2.py +181 -0
  9. samples/trade/trade_event_client.py +47 -0
  10. webull/__init__.py +1 -0
  11. webull/core/__init__.py +12 -0
  12. webull/core/auth/__init__.py +0 -0
  13. webull/core/auth/algorithm/__init__.py +0 -0
  14. webull/core/auth/algorithm/sha_hmac1.py +65 -0
  15. webull/core/auth/algorithm/sha_hmac256.py +75 -0
  16. webull/core/auth/composer/__init__.py +0 -0
  17. webull/core/auth/composer/default_signature_composer.py +125 -0
  18. webull/core/auth/credentials.py +46 -0
  19. webull/core/auth/signers/__init__.py +0 -0
  20. webull/core/auth/signers/app_key_signer.py +72 -0
  21. webull/core/auth/signers/signer.py +48 -0
  22. webull/core/auth/signers/signer_factory.py +58 -0
  23. webull/core/cache/__init__.py +225 -0
  24. webull/core/client.py +410 -0
  25. webull/core/common/__init__.py +0 -0
  26. webull/core/common/api_type.py +19 -0
  27. webull/core/common/easy_enum.py +35 -0
  28. webull/core/common/region.py +7 -0
  29. webull/core/compat.py +85 -0
  30. webull/core/context/__init__.py +0 -0
  31. webull/core/context/request_context_holder.py +33 -0
  32. webull/core/data/endpoints.json +22 -0
  33. webull/core/data/retry_config.json +15 -0
  34. webull/core/endpoint/__init__.py +8 -0
  35. webull/core/endpoint/chained_endpoint_resolver.py +57 -0
  36. webull/core/endpoint/default_endpoint_resolver.py +60 -0
  37. webull/core/endpoint/local_config_regional_endpoint_resolver.py +77 -0
  38. webull/core/endpoint/resolver_endpoint_request.py +46 -0
  39. webull/core/endpoint/user_customized_endpoint_resolver.py +55 -0
  40. webull/core/exception/__init__.py +0 -0
  41. webull/core/exception/error_code.py +23 -0
  42. webull/core/exception/error_msg.py +21 -0
  43. webull/core/exception/exceptions.py +53 -0
  44. webull/core/headers.py +57 -0
  45. webull/core/http/__init__.py +0 -0
  46. webull/core/http/initializer/__init__.py +0 -0
  47. webull/core/http/initializer/client_initializer.py +79 -0
  48. webull/core/http/initializer/token/__init__.py +0 -0
  49. webull/core/http/initializer/token/bean/__init__.py +0 -0
  50. webull/core/http/initializer/token/bean/access_token.py +40 -0
  51. webull/core/http/initializer/token/bean/check_token_request.py +44 -0
  52. webull/core/http/initializer/token/bean/create_token_request.py +45 -0
  53. webull/core/http/initializer/token/bean/refresh_token_request.py +44 -0
  54. webull/core/http/initializer/token/token_manager.py +208 -0
  55. webull/core/http/initializer/token/token_operation.py +72 -0
  56. webull/core/http/method_type.py +43 -0
  57. webull/core/http/protocol_type.py +43 -0
  58. webull/core/http/request.py +121 -0
  59. webull/core/http/response.py +166 -0
  60. webull/core/request.py +278 -0
  61. webull/core/retry/__init__.py +0 -0
  62. webull/core/retry/backoff_strategy.py +102 -0
  63. webull/core/retry/retry_condition.py +214 -0
  64. webull/core/retry/retry_policy.py +63 -0
  65. webull/core/retry/retry_policy_context.py +51 -0
  66. webull/core/utils/__init__.py +0 -0
  67. webull/core/utils/common.py +62 -0
  68. webull/core/utils/data.py +25 -0
  69. webull/core/utils/desensitize.py +33 -0
  70. webull/core/utils/validation.py +49 -0
  71. webull/core/vendored/__init__.py +0 -0
  72. webull/core/vendored/requests/__init__.py +94 -0
  73. webull/core/vendored/requests/__version__.py +28 -0
  74. webull/core/vendored/requests/_internal_utils.py +56 -0
  75. webull/core/vendored/requests/adapters.py +539 -0
  76. webull/core/vendored/requests/api.py +166 -0
  77. webull/core/vendored/requests/auth.py +307 -0
  78. webull/core/vendored/requests/certs.py +34 -0
  79. webull/core/vendored/requests/compat.py +85 -0
  80. webull/core/vendored/requests/cookies.py +555 -0
  81. webull/core/vendored/requests/exceptions.py +136 -0
  82. webull/core/vendored/requests/help.py +134 -0
  83. webull/core/vendored/requests/hooks.py +48 -0
  84. webull/core/vendored/requests/models.py +960 -0
  85. webull/core/vendored/requests/packages/__init__.py +17 -0
  86. webull/core/vendored/requests/packages/certifi/__init__.py +17 -0
  87. webull/core/vendored/requests/packages/certifi/__main__.py +16 -0
  88. webull/core/vendored/requests/packages/certifi/cacert.pem +4433 -0
  89. webull/core/vendored/requests/packages/certifi/core.py +51 -0
  90. webull/core/vendored/requests/packages/chardet/__init__.py +53 -0
  91. webull/core/vendored/requests/packages/chardet/big5freq.py +400 -0
  92. webull/core/vendored/requests/packages/chardet/big5prober.py +61 -0
  93. webull/core/vendored/requests/packages/chardet/chardistribution.py +247 -0
  94. webull/core/vendored/requests/packages/chardet/charsetgroupprober.py +120 -0
  95. webull/core/vendored/requests/packages/chardet/charsetprober.py +159 -0
  96. webull/core/vendored/requests/packages/chardet/cli/__init__.py +1 -0
  97. webull/core/vendored/requests/packages/chardet/cli/chardetect.py +99 -0
  98. webull/core/vendored/requests/packages/chardet/codingstatemachine.py +102 -0
  99. webull/core/vendored/requests/packages/chardet/compat.py +48 -0
  100. webull/core/vendored/requests/packages/chardet/cp949prober.py +63 -0
  101. webull/core/vendored/requests/packages/chardet/enums.py +90 -0
  102. webull/core/vendored/requests/packages/chardet/escprober.py +115 -0
  103. webull/core/vendored/requests/packages/chardet/escsm.py +260 -0
  104. webull/core/vendored/requests/packages/chardet/eucjpprober.py +106 -0
  105. webull/core/vendored/requests/packages/chardet/euckrfreq.py +209 -0
  106. webull/core/vendored/requests/packages/chardet/euckrprober.py +61 -0
  107. webull/core/vendored/requests/packages/chardet/euctwfreq.py +401 -0
  108. webull/core/vendored/requests/packages/chardet/euctwprober.py +60 -0
  109. webull/core/vendored/requests/packages/chardet/gb2312freq.py +297 -0
  110. webull/core/vendored/requests/packages/chardet/gb2312prober.py +60 -0
  111. webull/core/vendored/requests/packages/chardet/hebrewprober.py +306 -0
  112. webull/core/vendored/requests/packages/chardet/jisfreq.py +339 -0
  113. webull/core/vendored/requests/packages/chardet/jpcntx.py +247 -0
  114. webull/core/vendored/requests/packages/chardet/langbulgarianmodel.py +242 -0
  115. webull/core/vendored/requests/packages/chardet/langcyrillicmodel.py +347 -0
  116. webull/core/vendored/requests/packages/chardet/langgreekmodel.py +239 -0
  117. webull/core/vendored/requests/packages/chardet/langhebrewmodel.py +214 -0
  118. webull/core/vendored/requests/packages/chardet/langhungarianmodel.py +239 -0
  119. webull/core/vendored/requests/packages/chardet/langthaimodel.py +213 -0
  120. webull/core/vendored/requests/packages/chardet/langturkishmodel.py +207 -0
  121. webull/core/vendored/requests/packages/chardet/latin1prober.py +159 -0
  122. webull/core/vendored/requests/packages/chardet/mbcharsetprober.py +105 -0
  123. webull/core/vendored/requests/packages/chardet/mbcsgroupprober.py +68 -0
  124. webull/core/vendored/requests/packages/chardet/mbcssm.py +586 -0
  125. webull/core/vendored/requests/packages/chardet/sbcharsetprober.py +146 -0
  126. webull/core/vendored/requests/packages/chardet/sbcsgroupprober.py +87 -0
  127. webull/core/vendored/requests/packages/chardet/sjisprober.py +106 -0
  128. webull/core/vendored/requests/packages/chardet/universaldetector.py +300 -0
  129. webull/core/vendored/requests/packages/chardet/utf8prober.py +96 -0
  130. webull/core/vendored/requests/packages/chardet/version.py +23 -0
  131. webull/core/vendored/requests/packages/urllib3/__init__.py +114 -0
  132. webull/core/vendored/requests/packages/urllib3/_collections.py +346 -0
  133. webull/core/vendored/requests/packages/urllib3/connection.py +405 -0
  134. webull/core/vendored/requests/packages/urllib3/connectionpool.py +910 -0
  135. webull/core/vendored/requests/packages/urllib3/contrib/__init__.py +0 -0
  136. webull/core/vendored/requests/packages/urllib3/contrib/_appengine_environ.py +44 -0
  137. webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/__init__.py +0 -0
  138. webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/bindings.py +607 -0
  139. webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/low_level.py +360 -0
  140. webull/core/vendored/requests/packages/urllib3/contrib/appengine.py +303 -0
  141. webull/core/vendored/requests/packages/urllib3/contrib/ntlmpool.py +125 -0
  142. webull/core/vendored/requests/packages/urllib3/contrib/pyopenssl.py +484 -0
  143. webull/core/vendored/requests/packages/urllib3/contrib/securetransport.py +818 -0
  144. webull/core/vendored/requests/packages/urllib3/contrib/socks.py +206 -0
  145. webull/core/vendored/requests/packages/urllib3/exceptions.py +260 -0
  146. webull/core/vendored/requests/packages/urllib3/fields.py +192 -0
  147. webull/core/vendored/requests/packages/urllib3/filepost.py +112 -0
  148. webull/core/vendored/requests/packages/urllib3/packages/__init__.py +19 -0
  149. webull/core/vendored/requests/packages/urllib3/packages/backports/__init__.py +0 -0
  150. webull/core/vendored/requests/packages/urllib3/packages/backports/makefile.py +67 -0
  151. webull/core/vendored/requests/packages/urllib3/packages/ordered_dict.py +273 -0
  152. webull/core/vendored/requests/packages/urllib3/packages/six.py +882 -0
  153. webull/core/vendored/requests/packages/urllib3/packages/socks.py +887 -0
  154. webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +19 -0
  155. webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +170 -0
  156. webull/core/vendored/requests/packages/urllib3/poolmanager.py +467 -0
  157. webull/core/vendored/requests/packages/urllib3/request.py +164 -0
  158. webull/core/vendored/requests/packages/urllib3/response.py +721 -0
  159. webull/core/vendored/requests/packages/urllib3/util/__init__.py +68 -0
  160. webull/core/vendored/requests/packages/urllib3/util/connection.py +148 -0
  161. webull/core/vendored/requests/packages/urllib3/util/queue.py +35 -0
  162. webull/core/vendored/requests/packages/urllib3/util/request.py +132 -0
  163. webull/core/vendored/requests/packages/urllib3/util/response.py +101 -0
  164. webull/core/vendored/requests/packages/urllib3/util/retry.py +426 -0
  165. webull/core/vendored/requests/packages/urllib3/util/selectors.py +601 -0
  166. webull/core/vendored/requests/packages/urllib3/util/ssl_.py +396 -0
  167. webull/core/vendored/requests/packages/urllib3/util/timeout.py +256 -0
  168. webull/core/vendored/requests/packages/urllib3/util/url.py +252 -0
  169. webull/core/vendored/requests/packages/urllib3/util/wait.py +164 -0
  170. webull/core/vendored/requests/packages.py +28 -0
  171. webull/core/vendored/requests/sessions.py +750 -0
  172. webull/core/vendored/requests/status_codes.py +105 -0
  173. webull/core/vendored/requests/structures.py +119 -0
  174. webull/core/vendored/requests/utils.py +916 -0
  175. webull/core/vendored/six.py +905 -0
  176. webull/data/__init__.py +3 -0
  177. webull/data/common/__init__.py +0 -0
  178. webull/data/common/category.py +26 -0
  179. webull/data/common/connect_ack.py +29 -0
  180. webull/data/common/direction.py +25 -0
  181. webull/data/common/exchange_code.py +33 -0
  182. webull/data/common/exercise_style.py +22 -0
  183. webull/data/common/expiration_cycle.py +26 -0
  184. webull/data/common/instrument_status.py +23 -0
  185. webull/data/common/option_type.py +20 -0
  186. webull/data/common/subscribe_type.py +22 -0
  187. webull/data/common/timespan.py +29 -0
  188. webull/data/data_client.py +35 -0
  189. webull/data/data_streaming_client.py +89 -0
  190. webull/data/internal/__init__.py +0 -0
  191. webull/data/internal/default_retry_policy.py +84 -0
  192. webull/data/internal/exceptions.py +60 -0
  193. webull/data/internal/quotes_client.py +314 -0
  194. webull/data/internal/quotes_decoder.py +40 -0
  195. webull/data/internal/quotes_payload_decoder.py +35 -0
  196. webull/data/internal/quotes_topic.py +36 -0
  197. webull/data/quotes/__init__.py +0 -0
  198. webull/data/quotes/instrument.py +33 -0
  199. webull/data/quotes/market_data.py +187 -0
  200. webull/data/quotes/market_streaming_data.py +66 -0
  201. webull/data/quotes/subscribe/__init__.py +0 -0
  202. webull/data/quotes/subscribe/ask_bid_result.py +49 -0
  203. webull/data/quotes/subscribe/basic_result.py +45 -0
  204. webull/data/quotes/subscribe/broker_result.py +33 -0
  205. webull/data/quotes/subscribe/message_pb2.py +37 -0
  206. webull/data/quotes/subscribe/order_result.py +30 -0
  207. webull/data/quotes/subscribe/payload_type.py +19 -0
  208. webull/data/quotes/subscribe/quote_decoder.py +28 -0
  209. webull/data/quotes/subscribe/quote_result.py +47 -0
  210. webull/data/quotes/subscribe/snapshot_decoder.py +30 -0
  211. webull/data/quotes/subscribe/snapshot_result.py +69 -0
  212. webull/data/quotes/subscribe/tick_decoder.py +29 -0
  213. webull/data/quotes/subscribe/tick_result.py +47 -0
  214. webull/data/request/__init__.py +0 -0
  215. webull/data/request/get_batch_historical_bars_request.py +43 -0
  216. webull/data/request/get_corp_action_request.py +47 -0
  217. webull/data/request/get_eod_bars_request.py +32 -0
  218. webull/data/request/get_historical_bars_request.py +43 -0
  219. webull/data/request/get_instruments_request.py +30 -0
  220. webull/data/request/get_quotes_request.py +35 -0
  221. webull/data/request/get_snapshot_request.py +38 -0
  222. webull/data/request/get_tick_request.py +37 -0
  223. webull/data/request/subscribe_request.py +43 -0
  224. webull/data/request/unsubscribe_request.py +42 -0
  225. webull/trade/__init__.py +2 -0
  226. webull/trade/common/__init__.py +0 -0
  227. webull/trade/common/account_type.py +22 -0
  228. webull/trade/common/category.py +29 -0
  229. webull/trade/common/combo_ticker_type.py +23 -0
  230. webull/trade/common/combo_type.py +31 -0
  231. webull/trade/common/currency.py +24 -0
  232. webull/trade/common/forbid_reason.py +27 -0
  233. webull/trade/common/instrument_type.py +27 -0
  234. webull/trade/common/markets.py +27 -0
  235. webull/trade/common/order_entrust_type.py +21 -0
  236. webull/trade/common/order_side.py +23 -0
  237. webull/trade/common/order_status.py +25 -0
  238. webull/trade/common/order_tif.py +24 -0
  239. webull/trade/common/order_type.py +30 -0
  240. webull/trade/common/trade_policy.py +22 -0
  241. webull/trade/common/trading_date_type.py +24 -0
  242. webull/trade/common/trailing_type.py +23 -0
  243. webull/trade/events/__init__.py +0 -0
  244. webull/trade/events/default_retry_policy.py +64 -0
  245. webull/trade/events/events_pb2.py +43 -0
  246. webull/trade/events/events_pb2_grpc.py +66 -0
  247. webull/trade/events/signature_composer.py +61 -0
  248. webull/trade/events/types.py +21 -0
  249. webull/trade/request/__init__.py +0 -0
  250. webull/trade/request/cancel_order_request.py +28 -0
  251. webull/trade/request/get_account_balance_request.py +28 -0
  252. webull/trade/request/get_account_positions_request.py +30 -0
  253. webull/trade/request/get_account_profile_request.py +26 -0
  254. webull/trade/request/get_app_subscriptions.py +28 -0
  255. webull/trade/request/get_open_orders_request.py +30 -0
  256. webull/trade/request/get_order_detail_request.py +27 -0
  257. webull/trade/request/get_today_orders_request.py +31 -0
  258. webull/trade/request/get_trade_calendar_request.py +30 -0
  259. webull/trade/request/get_trade_instrument_detail_request.py +24 -0
  260. webull/trade/request/get_trade_security_detail_request.py +42 -0
  261. webull/trade/request/get_tradeable_instruments_request.py +27 -0
  262. webull/trade/request/palce_order_request.py +91 -0
  263. webull/trade/request/place_order_request_v2.py +58 -0
  264. webull/trade/request/replace_order_request.py +73 -0
  265. webull/trade/request/replace_order_request_v2.py +38 -0
  266. webull/trade/request/v2/__init__.py +0 -0
  267. webull/trade/request/v2/cancel_option_request.py +28 -0
  268. webull/trade/request/v2/cancel_order_request.py +28 -0
  269. webull/trade/request/v2/get_account_balance_request.py +28 -0
  270. webull/trade/request/v2/get_account_list.py +23 -0
  271. webull/trade/request/v2/get_account_positions_request.py +24 -0
  272. webull/trade/request/v2/get_order_detail_request.py +26 -0
  273. webull/trade/request/v2/get_order_history_request.py +35 -0
  274. webull/trade/request/v2/palce_order_request.py +87 -0
  275. webull/trade/request/v2/place_option_request.py +64 -0
  276. webull/trade/request/v2/preview_option_request.py +28 -0
  277. webull/trade/request/v2/preview_order_request.py +59 -0
  278. webull/trade/request/v2/replace_option_request.py +28 -0
  279. webull/trade/request/v2/replace_order_request.py +57 -0
  280. webull/trade/trade/__init__.py +0 -0
  281. webull/trade/trade/account_info.py +83 -0
  282. webull/trade/trade/order_operation.py +246 -0
  283. webull/trade/trade/trade_calendar.py +37 -0
  284. webull/trade/trade/trade_instrument.py +72 -0
  285. webull/trade/trade/v2/__init__.py +0 -0
  286. webull/trade/trade/v2/account_info_v2.py +55 -0
  287. webull/trade/trade/v2/order_operation_v2.py +206 -0
  288. webull/trade/trade_client.py +43 -0
  289. webull/trade/trade_events_client.py +233 -0
  290. webull_openapi_python_sdk-1.0.0.dist-info/METADATA +28 -0
  291. webull_openapi_python_sdk-1.0.0.dist-info/RECORD +295 -0
  292. webull_openapi_python_sdk-1.0.0.dist-info/WHEEL +5 -0
  293. webull_openapi_python_sdk-1.0.0.dist-info/licenses/LICENSE +202 -0
  294. webull_openapi_python_sdk-1.0.0.dist-info/licenses/NOTICE +56 -0
  295. webull_openapi_python_sdk-1.0.0.dist-info/top_level.txt +2 -0
@@ -0,0 +1,586 @@
1
+ # Copyright 2022 Webull
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ ######################## BEGIN LICENSE BLOCK ########################
16
+ # The Original Code is mozilla.org code.
17
+ #
18
+ # The Initial Developer of the Original Code is
19
+ # Netscape Communications Corporation.
20
+ # Portions created by the Initial Developer are Copyright (C) 1998
21
+ # the Initial Developer. All Rights Reserved.
22
+ #
23
+ # Contributor(s):
24
+ # Mark Pilgrim - port to Python
25
+ #
26
+ # This library is free software; you can redistribute it and/or
27
+ # modify it under the terms of the GNU Lesser General Public
28
+ # License as published by the Free Software Foundation; either
29
+ # version 2.1 of the License, or (at your option) any later version.
30
+ #
31
+ # This library is distributed in the hope that it will be useful,
32
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
33
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
34
+ # Lesser General Public License for more details.
35
+ #
36
+ # You should have received a copy of the GNU Lesser General Public
37
+ # License along with this library; if not, write to the Free Software
38
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
39
+ # 02110-1301 USA
40
+ ######################### END LICENSE BLOCK #########################
41
+
42
+ from .enums import MachineState
43
+
44
+ # BIG5
45
+
46
+ BIG5_CLS = (
47
+ 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as legal value
48
+ 1,1,1,1,1,1,0,0, # 08 - 0f
49
+ 1,1,1,1,1,1,1,1, # 10 - 17
50
+ 1,1,1,0,1,1,1,1, # 18 - 1f
51
+ 1,1,1,1,1,1,1,1, # 20 - 27
52
+ 1,1,1,1,1,1,1,1, # 28 - 2f
53
+ 1,1,1,1,1,1,1,1, # 30 - 37
54
+ 1,1,1,1,1,1,1,1, # 38 - 3f
55
+ 2,2,2,2,2,2,2,2, # 40 - 47
56
+ 2,2,2,2,2,2,2,2, # 48 - 4f
57
+ 2,2,2,2,2,2,2,2, # 50 - 57
58
+ 2,2,2,2,2,2,2,2, # 58 - 5f
59
+ 2,2,2,2,2,2,2,2, # 60 - 67
60
+ 2,2,2,2,2,2,2,2, # 68 - 6f
61
+ 2,2,2,2,2,2,2,2, # 70 - 77
62
+ 2,2,2,2,2,2,2,1, # 78 - 7f
63
+ 4,4,4,4,4,4,4,4, # 80 - 87
64
+ 4,4,4,4,4,4,4,4, # 88 - 8f
65
+ 4,4,4,4,4,4,4,4, # 90 - 97
66
+ 4,4,4,4,4,4,4,4, # 98 - 9f
67
+ 4,3,3,3,3,3,3,3, # a0 - a7
68
+ 3,3,3,3,3,3,3,3, # a8 - af
69
+ 3,3,3,3,3,3,3,3, # b0 - b7
70
+ 3,3,3,3,3,3,3,3, # b8 - bf
71
+ 3,3,3,3,3,3,3,3, # c0 - c7
72
+ 3,3,3,3,3,3,3,3, # c8 - cf
73
+ 3,3,3,3,3,3,3,3, # d0 - d7
74
+ 3,3,3,3,3,3,3,3, # d8 - df
75
+ 3,3,3,3,3,3,3,3, # e0 - e7
76
+ 3,3,3,3,3,3,3,3, # e8 - ef
77
+ 3,3,3,3,3,3,3,3, # f0 - f7
78
+ 3,3,3,3,3,3,3,0 # f8 - ff
79
+ )
80
+
81
+ BIG5_ST = (
82
+ MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07
83
+ MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,#08-0f
84
+ MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START#10-17
85
+ )
86
+
87
+ BIG5_CHAR_LEN_TABLE = (0, 1, 1, 2, 0)
88
+
89
+ BIG5_SM_MODEL = {'class_table': BIG5_CLS,
90
+ 'class_factor': 5,
91
+ 'state_table': BIG5_ST,
92
+ 'char_len_table': BIG5_CHAR_LEN_TABLE,
93
+ 'name': 'Big5'}
94
+
95
+ # CP949
96
+
97
+ CP949_CLS = (
98
+ 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,0,0, # 00 - 0f
99
+ 1,1,1,1,1,1,1,1, 1,1,1,0,1,1,1,1, # 10 - 1f
100
+ 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 20 - 2f
101
+ 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 30 - 3f
102
+ 1,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4, # 40 - 4f
103
+ 4,4,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 50 - 5f
104
+ 1,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5, # 60 - 6f
105
+ 5,5,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 70 - 7f
106
+ 0,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 80 - 8f
107
+ 6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 90 - 9f
108
+ 6,7,7,7,7,7,7,7, 7,7,7,7,7,8,8,8, # a0 - af
109
+ 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7, # b0 - bf
110
+ 7,7,7,7,7,7,9,2, 2,3,2,2,2,2,2,2, # c0 - cf
111
+ 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # d0 - df
112
+ 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # e0 - ef
113
+ 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,0, # f0 - ff
114
+ )
115
+
116
+ CP949_ST = (
117
+ #cls= 0 1 2 3 4 5 6 7 8 9 # previous state =
118
+ MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START, 4, 5,MachineState.ERROR, 6, # MachineState.START
119
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, # MachineState.ERROR
120
+ MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME
121
+ MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 3
122
+ MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 4
123
+ MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 5
124
+ MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 6
125
+ )
126
+
127
+ CP949_CHAR_LEN_TABLE = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2)
128
+
129
+ CP949_SM_MODEL = {'class_table': CP949_CLS,
130
+ 'class_factor': 10,
131
+ 'state_table': CP949_ST,
132
+ 'char_len_table': CP949_CHAR_LEN_TABLE,
133
+ 'name': 'CP949'}
134
+
135
+ # EUC-JP
136
+
137
+ EUCJP_CLS = (
138
+ 4,4,4,4,4,4,4,4, # 00 - 07
139
+ 4,4,4,4,4,4,5,5, # 08 - 0f
140
+ 4,4,4,4,4,4,4,4, # 10 - 17
141
+ 4,4,4,5,4,4,4,4, # 18 - 1f
142
+ 4,4,4,4,4,4,4,4, # 20 - 27
143
+ 4,4,4,4,4,4,4,4, # 28 - 2f
144
+ 4,4,4,4,4,4,4,4, # 30 - 37
145
+ 4,4,4,4,4,4,4,4, # 38 - 3f
146
+ 4,4,4,4,4,4,4,4, # 40 - 47
147
+ 4,4,4,4,4,4,4,4, # 48 - 4f
148
+ 4,4,4,4,4,4,4,4, # 50 - 57
149
+ 4,4,4,4,4,4,4,4, # 58 - 5f
150
+ 4,4,4,4,4,4,4,4, # 60 - 67
151
+ 4,4,4,4,4,4,4,4, # 68 - 6f
152
+ 4,4,4,4,4,4,4,4, # 70 - 77
153
+ 4,4,4,4,4,4,4,4, # 78 - 7f
154
+ 5,5,5,5,5,5,5,5, # 80 - 87
155
+ 5,5,5,5,5,5,1,3, # 88 - 8f
156
+ 5,5,5,5,5,5,5,5, # 90 - 97
157
+ 5,5,5,5,5,5,5,5, # 98 - 9f
158
+ 5,2,2,2,2,2,2,2, # a0 - a7
159
+ 2,2,2,2,2,2,2,2, # a8 - af
160
+ 2,2,2,2,2,2,2,2, # b0 - b7
161
+ 2,2,2,2,2,2,2,2, # b8 - bf
162
+ 2,2,2,2,2,2,2,2, # c0 - c7
163
+ 2,2,2,2,2,2,2,2, # c8 - cf
164
+ 2,2,2,2,2,2,2,2, # d0 - d7
165
+ 2,2,2,2,2,2,2,2, # d8 - df
166
+ 0,0,0,0,0,0,0,0, # e0 - e7
167
+ 0,0,0,0,0,0,0,0, # e8 - ef
168
+ 0,0,0,0,0,0,0,0, # f0 - f7
169
+ 0,0,0,0,0,0,0,5 # f8 - ff
170
+ )
171
+
172
+ EUCJP_ST = (
173
+ 3, 4, 3, 5,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07
174
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
175
+ MachineState.ITS_ME,MachineState.ITS_ME,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17
176
+ MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 3,MachineState.ERROR,#18-1f
177
+ 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START#20-27
178
+ )
179
+
180
+ EUCJP_CHAR_LEN_TABLE = (2, 2, 2, 3, 1, 0)
181
+
182
+ EUCJP_SM_MODEL = {'class_table': EUCJP_CLS,
183
+ 'class_factor': 6,
184
+ 'state_table': EUCJP_ST,
185
+ 'char_len_table': EUCJP_CHAR_LEN_TABLE,
186
+ 'name': 'EUC-JP'}
187
+
188
+ # EUC-KR
189
+
190
+ EUCKR_CLS = (
191
+ 1,1,1,1,1,1,1,1, # 00 - 07
192
+ 1,1,1,1,1,1,0,0, # 08 - 0f
193
+ 1,1,1,1,1,1,1,1, # 10 - 17
194
+ 1,1,1,0,1,1,1,1, # 18 - 1f
195
+ 1,1,1,1,1,1,1,1, # 20 - 27
196
+ 1,1,1,1,1,1,1,1, # 28 - 2f
197
+ 1,1,1,1,1,1,1,1, # 30 - 37
198
+ 1,1,1,1,1,1,1,1, # 38 - 3f
199
+ 1,1,1,1,1,1,1,1, # 40 - 47
200
+ 1,1,1,1,1,1,1,1, # 48 - 4f
201
+ 1,1,1,1,1,1,1,1, # 50 - 57
202
+ 1,1,1,1,1,1,1,1, # 58 - 5f
203
+ 1,1,1,1,1,1,1,1, # 60 - 67
204
+ 1,1,1,1,1,1,1,1, # 68 - 6f
205
+ 1,1,1,1,1,1,1,1, # 70 - 77
206
+ 1,1,1,1,1,1,1,1, # 78 - 7f
207
+ 0,0,0,0,0,0,0,0, # 80 - 87
208
+ 0,0,0,0,0,0,0,0, # 88 - 8f
209
+ 0,0,0,0,0,0,0,0, # 90 - 97
210
+ 0,0,0,0,0,0,0,0, # 98 - 9f
211
+ 0,2,2,2,2,2,2,2, # a0 - a7
212
+ 2,2,2,2,2,3,3,3, # a8 - af
213
+ 2,2,2,2,2,2,2,2, # b0 - b7
214
+ 2,2,2,2,2,2,2,2, # b8 - bf
215
+ 2,2,2,2,2,2,2,2, # c0 - c7
216
+ 2,3,2,2,2,2,2,2, # c8 - cf
217
+ 2,2,2,2,2,2,2,2, # d0 - d7
218
+ 2,2,2,2,2,2,2,2, # d8 - df
219
+ 2,2,2,2,2,2,2,2, # e0 - e7
220
+ 2,2,2,2,2,2,2,2, # e8 - ef
221
+ 2,2,2,2,2,2,2,2, # f0 - f7
222
+ 2,2,2,2,2,2,2,0 # f8 - ff
223
+ )
224
+
225
+ EUCKR_ST = (
226
+ MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07
227
+ MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #08-0f
228
+ )
229
+
230
+ EUCKR_CHAR_LEN_TABLE = (0, 1, 2, 0)
231
+
232
+ EUCKR_SM_MODEL = {'class_table': EUCKR_CLS,
233
+ 'class_factor': 4,
234
+ 'state_table': EUCKR_ST,
235
+ 'char_len_table': EUCKR_CHAR_LEN_TABLE,
236
+ 'name': 'EUC-KR'}
237
+
238
+ # EUC-TW
239
+
240
+ EUCTW_CLS = (
241
+ 2,2,2,2,2,2,2,2, # 00 - 07
242
+ 2,2,2,2,2,2,0,0, # 08 - 0f
243
+ 2,2,2,2,2,2,2,2, # 10 - 17
244
+ 2,2,2,0,2,2,2,2, # 18 - 1f
245
+ 2,2,2,2,2,2,2,2, # 20 - 27
246
+ 2,2,2,2,2,2,2,2, # 28 - 2f
247
+ 2,2,2,2,2,2,2,2, # 30 - 37
248
+ 2,2,2,2,2,2,2,2, # 38 - 3f
249
+ 2,2,2,2,2,2,2,2, # 40 - 47
250
+ 2,2,2,2,2,2,2,2, # 48 - 4f
251
+ 2,2,2,2,2,2,2,2, # 50 - 57
252
+ 2,2,2,2,2,2,2,2, # 58 - 5f
253
+ 2,2,2,2,2,2,2,2, # 60 - 67
254
+ 2,2,2,2,2,2,2,2, # 68 - 6f
255
+ 2,2,2,2,2,2,2,2, # 70 - 77
256
+ 2,2,2,2,2,2,2,2, # 78 - 7f
257
+ 0,0,0,0,0,0,0,0, # 80 - 87
258
+ 0,0,0,0,0,0,6,0, # 88 - 8f
259
+ 0,0,0,0,0,0,0,0, # 90 - 97
260
+ 0,0,0,0,0,0,0,0, # 98 - 9f
261
+ 0,3,4,4,4,4,4,4, # a0 - a7
262
+ 5,5,1,1,1,1,1,1, # a8 - af
263
+ 1,1,1,1,1,1,1,1, # b0 - b7
264
+ 1,1,1,1,1,1,1,1, # b8 - bf
265
+ 1,1,3,1,3,3,3,3, # c0 - c7
266
+ 3,3,3,3,3,3,3,3, # c8 - cf
267
+ 3,3,3,3,3,3,3,3, # d0 - d7
268
+ 3,3,3,3,3,3,3,3, # d8 - df
269
+ 3,3,3,3,3,3,3,3, # e0 - e7
270
+ 3,3,3,3,3,3,3,3, # e8 - ef
271
+ 3,3,3,3,3,3,3,3, # f0 - f7
272
+ 3,3,3,3,3,3,3,0 # f8 - ff
273
+ )
274
+
275
+ EUCTW_ST = (
276
+ MachineState.ERROR,MachineState.ERROR,MachineState.START, 3, 3, 3, 4,MachineState.ERROR,#00-07
277
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
278
+ MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.ERROR,#10-17
279
+ MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f
280
+ 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,#20-27
281
+ MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f
282
+ )
283
+
284
+ EUCTW_CHAR_LEN_TABLE = (0, 0, 1, 2, 2, 2, 3)
285
+
286
+ EUCTW_SM_MODEL = {'class_table': EUCTW_CLS,
287
+ 'class_factor': 7,
288
+ 'state_table': EUCTW_ST,
289
+ 'char_len_table': EUCTW_CHAR_LEN_TABLE,
290
+ 'name': 'x-euc-tw'}
291
+
292
+ # GB2312
293
+
294
+ GB2312_CLS = (
295
+ 1,1,1,1,1,1,1,1, # 00 - 07
296
+ 1,1,1,1,1,1,0,0, # 08 - 0f
297
+ 1,1,1,1,1,1,1,1, # 10 - 17
298
+ 1,1,1,0,1,1,1,1, # 18 - 1f
299
+ 1,1,1,1,1,1,1,1, # 20 - 27
300
+ 1,1,1,1,1,1,1,1, # 28 - 2f
301
+ 3,3,3,3,3,3,3,3, # 30 - 37
302
+ 3,3,1,1,1,1,1,1, # 38 - 3f
303
+ 2,2,2,2,2,2,2,2, # 40 - 47
304
+ 2,2,2,2,2,2,2,2, # 48 - 4f
305
+ 2,2,2,2,2,2,2,2, # 50 - 57
306
+ 2,2,2,2,2,2,2,2, # 58 - 5f
307
+ 2,2,2,2,2,2,2,2, # 60 - 67
308
+ 2,2,2,2,2,2,2,2, # 68 - 6f
309
+ 2,2,2,2,2,2,2,2, # 70 - 77
310
+ 2,2,2,2,2,2,2,4, # 78 - 7f
311
+ 5,6,6,6,6,6,6,6, # 80 - 87
312
+ 6,6,6,6,6,6,6,6, # 88 - 8f
313
+ 6,6,6,6,6,6,6,6, # 90 - 97
314
+ 6,6,6,6,6,6,6,6, # 98 - 9f
315
+ 6,6,6,6,6,6,6,6, # a0 - a7
316
+ 6,6,6,6,6,6,6,6, # a8 - af
317
+ 6,6,6,6,6,6,6,6, # b0 - b7
318
+ 6,6,6,6,6,6,6,6, # b8 - bf
319
+ 6,6,6,6,6,6,6,6, # c0 - c7
320
+ 6,6,6,6,6,6,6,6, # c8 - cf
321
+ 6,6,6,6,6,6,6,6, # d0 - d7
322
+ 6,6,6,6,6,6,6,6, # d8 - df
323
+ 6,6,6,6,6,6,6,6, # e0 - e7
324
+ 6,6,6,6,6,6,6,6, # e8 - ef
325
+ 6,6,6,6,6,6,6,6, # f0 - f7
326
+ 6,6,6,6,6,6,6,0 # f8 - ff
327
+ )
328
+
329
+ GB2312_ST = (
330
+ MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, 3,MachineState.ERROR,#00-07
331
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
332
+ MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,#10-17
333
+ 4,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f
334
+ MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#20-27
335
+ MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f
336
+ )
337
+
338
+ # To be accurate, the length of class 6 can be either 2 or 4.
339
+ # But it is not necessary to discriminate between the two since
340
+ # it is used for frequency analysis only, and we are validating
341
+ # each code range there as well. So it is safe to set it to be
342
+ # 2 here.
343
+ GB2312_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 1, 2)
344
+
345
+ GB2312_SM_MODEL = {'class_table': GB2312_CLS,
346
+ 'class_factor': 7,
347
+ 'state_table': GB2312_ST,
348
+ 'char_len_table': GB2312_CHAR_LEN_TABLE,
349
+ 'name': 'GB2312'}
350
+
351
+ # Shift_JIS
352
+
353
+ SJIS_CLS = (
354
+ 1,1,1,1,1,1,1,1, # 00 - 07
355
+ 1,1,1,1,1,1,0,0, # 08 - 0f
356
+ 1,1,1,1,1,1,1,1, # 10 - 17
357
+ 1,1,1,0,1,1,1,1, # 18 - 1f
358
+ 1,1,1,1,1,1,1,1, # 20 - 27
359
+ 1,1,1,1,1,1,1,1, # 28 - 2f
360
+ 1,1,1,1,1,1,1,1, # 30 - 37
361
+ 1,1,1,1,1,1,1,1, # 38 - 3f
362
+ 2,2,2,2,2,2,2,2, # 40 - 47
363
+ 2,2,2,2,2,2,2,2, # 48 - 4f
364
+ 2,2,2,2,2,2,2,2, # 50 - 57
365
+ 2,2,2,2,2,2,2,2, # 58 - 5f
366
+ 2,2,2,2,2,2,2,2, # 60 - 67
367
+ 2,2,2,2,2,2,2,2, # 68 - 6f
368
+ 2,2,2,2,2,2,2,2, # 70 - 77
369
+ 2,2,2,2,2,2,2,1, # 78 - 7f
370
+ 3,3,3,3,3,2,2,3, # 80 - 87
371
+ 3,3,3,3,3,3,3,3, # 88 - 8f
372
+ 3,3,3,3,3,3,3,3, # 90 - 97
373
+ 3,3,3,3,3,3,3,3, # 98 - 9f
374
+ #0xa0 is illegal in sjis encoding, but some pages does
375
+ #contain such byte. We need to be more error forgiven.
376
+ 2,2,2,2,2,2,2,2, # a0 - a7
377
+ 2,2,2,2,2,2,2,2, # a8 - af
378
+ 2,2,2,2,2,2,2,2, # b0 - b7
379
+ 2,2,2,2,2,2,2,2, # b8 - bf
380
+ 2,2,2,2,2,2,2,2, # c0 - c7
381
+ 2,2,2,2,2,2,2,2, # c8 - cf
382
+ 2,2,2,2,2,2,2,2, # d0 - d7
383
+ 2,2,2,2,2,2,2,2, # d8 - df
384
+ 3,3,3,3,3,3,3,3, # e0 - e7
385
+ 3,3,3,3,3,4,4,4, # e8 - ef
386
+ 3,3,3,3,3,3,3,3, # f0 - f7
387
+ 3,3,3,3,3,0,0,0) # f8 - ff
388
+
389
+
390
+ SJIS_ST = (
391
+ MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07
392
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
393
+ MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START #10-17
394
+ )
395
+
396
+ SJIS_CHAR_LEN_TABLE = (0, 1, 1, 2, 0, 0)
397
+
398
+ SJIS_SM_MODEL = {'class_table': SJIS_CLS,
399
+ 'class_factor': 6,
400
+ 'state_table': SJIS_ST,
401
+ 'char_len_table': SJIS_CHAR_LEN_TABLE,
402
+ 'name': 'Shift_JIS'}
403
+
404
+ # UCS2-BE
405
+
406
+ UCS2BE_CLS = (
407
+ 0,0,0,0,0,0,0,0, # 00 - 07
408
+ 0,0,1,0,0,2,0,0, # 08 - 0f
409
+ 0,0,0,0,0,0,0,0, # 10 - 17
410
+ 0,0,0,3,0,0,0,0, # 18 - 1f
411
+ 0,0,0,0,0,0,0,0, # 20 - 27
412
+ 0,3,3,3,3,3,0,0, # 28 - 2f
413
+ 0,0,0,0,0,0,0,0, # 30 - 37
414
+ 0,0,0,0,0,0,0,0, # 38 - 3f
415
+ 0,0,0,0,0,0,0,0, # 40 - 47
416
+ 0,0,0,0,0,0,0,0, # 48 - 4f
417
+ 0,0,0,0,0,0,0,0, # 50 - 57
418
+ 0,0,0,0,0,0,0,0, # 58 - 5f
419
+ 0,0,0,0,0,0,0,0, # 60 - 67
420
+ 0,0,0,0,0,0,0,0, # 68 - 6f
421
+ 0,0,0,0,0,0,0,0, # 70 - 77
422
+ 0,0,0,0,0,0,0,0, # 78 - 7f
423
+ 0,0,0,0,0,0,0,0, # 80 - 87
424
+ 0,0,0,0,0,0,0,0, # 88 - 8f
425
+ 0,0,0,0,0,0,0,0, # 90 - 97
426
+ 0,0,0,0,0,0,0,0, # 98 - 9f
427
+ 0,0,0,0,0,0,0,0, # a0 - a7
428
+ 0,0,0,0,0,0,0,0, # a8 - af
429
+ 0,0,0,0,0,0,0,0, # b0 - b7
430
+ 0,0,0,0,0,0,0,0, # b8 - bf
431
+ 0,0,0,0,0,0,0,0, # c0 - c7
432
+ 0,0,0,0,0,0,0,0, # c8 - cf
433
+ 0,0,0,0,0,0,0,0, # d0 - d7
434
+ 0,0,0,0,0,0,0,0, # d8 - df
435
+ 0,0,0,0,0,0,0,0, # e0 - e7
436
+ 0,0,0,0,0,0,0,0, # e8 - ef
437
+ 0,0,0,0,0,0,0,0, # f0 - f7
438
+ 0,0,0,0,0,0,4,5 # f8 - ff
439
+ )
440
+
441
+ UCS2BE_ST = (
442
+ 5, 7, 7,MachineState.ERROR, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07
443
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
444
+ MachineState.ITS_ME,MachineState.ITS_ME, 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,#10-17
445
+ 6, 6, 6, 6, 6,MachineState.ITS_ME, 6, 6,#18-1f
446
+ 6, 6, 6, 6, 5, 7, 7,MachineState.ERROR,#20-27
447
+ 5, 8, 6, 6,MachineState.ERROR, 6, 6, 6,#28-2f
448
+ 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #30-37
449
+ )
450
+
451
+ UCS2BE_CHAR_LEN_TABLE = (2, 2, 2, 0, 2, 2)
452
+
453
+ UCS2BE_SM_MODEL = {'class_table': UCS2BE_CLS,
454
+ 'class_factor': 6,
455
+ 'state_table': UCS2BE_ST,
456
+ 'char_len_table': UCS2BE_CHAR_LEN_TABLE,
457
+ 'name': 'UTF-16BE'}
458
+
459
+ # UCS2-LE
460
+
461
+ UCS2LE_CLS = (
462
+ 0,0,0,0,0,0,0,0, # 00 - 07
463
+ 0,0,1,0,0,2,0,0, # 08 - 0f
464
+ 0,0,0,0,0,0,0,0, # 10 - 17
465
+ 0,0,0,3,0,0,0,0, # 18 - 1f
466
+ 0,0,0,0,0,0,0,0, # 20 - 27
467
+ 0,3,3,3,3,3,0,0, # 28 - 2f
468
+ 0,0,0,0,0,0,0,0, # 30 - 37
469
+ 0,0,0,0,0,0,0,0, # 38 - 3f
470
+ 0,0,0,0,0,0,0,0, # 40 - 47
471
+ 0,0,0,0,0,0,0,0, # 48 - 4f
472
+ 0,0,0,0,0,0,0,0, # 50 - 57
473
+ 0,0,0,0,0,0,0,0, # 58 - 5f
474
+ 0,0,0,0,0,0,0,0, # 60 - 67
475
+ 0,0,0,0,0,0,0,0, # 68 - 6f
476
+ 0,0,0,0,0,0,0,0, # 70 - 77
477
+ 0,0,0,0,0,0,0,0, # 78 - 7f
478
+ 0,0,0,0,0,0,0,0, # 80 - 87
479
+ 0,0,0,0,0,0,0,0, # 88 - 8f
480
+ 0,0,0,0,0,0,0,0, # 90 - 97
481
+ 0,0,0,0,0,0,0,0, # 98 - 9f
482
+ 0,0,0,0,0,0,0,0, # a0 - a7
483
+ 0,0,0,0,0,0,0,0, # a8 - af
484
+ 0,0,0,0,0,0,0,0, # b0 - b7
485
+ 0,0,0,0,0,0,0,0, # b8 - bf
486
+ 0,0,0,0,0,0,0,0, # c0 - c7
487
+ 0,0,0,0,0,0,0,0, # c8 - cf
488
+ 0,0,0,0,0,0,0,0, # d0 - d7
489
+ 0,0,0,0,0,0,0,0, # d8 - df
490
+ 0,0,0,0,0,0,0,0, # e0 - e7
491
+ 0,0,0,0,0,0,0,0, # e8 - ef
492
+ 0,0,0,0,0,0,0,0, # f0 - f7
493
+ 0,0,0,0,0,0,4,5 # f8 - ff
494
+ )
495
+
496
+ UCS2LE_ST = (
497
+ 6, 6, 7, 6, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07
498
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
499
+ MachineState.ITS_ME,MachineState.ITS_ME, 5, 5, 5,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#10-17
500
+ 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR, 6, 6,#18-1f
501
+ 7, 6, 8, 8, 5, 5, 5,MachineState.ERROR,#20-27
502
+ 5, 5, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5,#28-2f
503
+ 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR,MachineState.START,MachineState.START #30-37
504
+ )
505
+
506
+ UCS2LE_CHAR_LEN_TABLE = (2, 2, 2, 2, 2, 2)
507
+
508
+ UCS2LE_SM_MODEL = {'class_table': UCS2LE_CLS,
509
+ 'class_factor': 6,
510
+ 'state_table': UCS2LE_ST,
511
+ 'char_len_table': UCS2LE_CHAR_LEN_TABLE,
512
+ 'name': 'UTF-16LE'}
513
+
514
+ # UTF-8
515
+
516
+ UTF8_CLS = (
517
+ 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as a legal value
518
+ 1,1,1,1,1,1,0,0, # 08 - 0f
519
+ 1,1,1,1,1,1,1,1, # 10 - 17
520
+ 1,1,1,0,1,1,1,1, # 18 - 1f
521
+ 1,1,1,1,1,1,1,1, # 20 - 27
522
+ 1,1,1,1,1,1,1,1, # 28 - 2f
523
+ 1,1,1,1,1,1,1,1, # 30 - 37
524
+ 1,1,1,1,1,1,1,1, # 38 - 3f
525
+ 1,1,1,1,1,1,1,1, # 40 - 47
526
+ 1,1,1,1,1,1,1,1, # 48 - 4f
527
+ 1,1,1,1,1,1,1,1, # 50 - 57
528
+ 1,1,1,1,1,1,1,1, # 58 - 5f
529
+ 1,1,1,1,1,1,1,1, # 60 - 67
530
+ 1,1,1,1,1,1,1,1, # 68 - 6f
531
+ 1,1,1,1,1,1,1,1, # 70 - 77
532
+ 1,1,1,1,1,1,1,1, # 78 - 7f
533
+ 2,2,2,2,3,3,3,3, # 80 - 87
534
+ 4,4,4,4,4,4,4,4, # 88 - 8f
535
+ 4,4,4,4,4,4,4,4, # 90 - 97
536
+ 4,4,4,4,4,4,4,4, # 98 - 9f
537
+ 5,5,5,5,5,5,5,5, # a0 - a7
538
+ 5,5,5,5,5,5,5,5, # a8 - af
539
+ 5,5,5,5,5,5,5,5, # b0 - b7
540
+ 5,5,5,5,5,5,5,5, # b8 - bf
541
+ 0,0,6,6,6,6,6,6, # c0 - c7
542
+ 6,6,6,6,6,6,6,6, # c8 - cf
543
+ 6,6,6,6,6,6,6,6, # d0 - d7
544
+ 6,6,6,6,6,6,6,6, # d8 - df
545
+ 7,8,8,8,8,8,8,8, # e0 - e7
546
+ 8,8,8,8,8,9,8,8, # e8 - ef
547
+ 10,11,11,11,11,11,11,11, # f0 - f7
548
+ 12,13,13,13,14,15,0,0 # f8 - ff
549
+ )
550
+
551
+ UTF8_ST = (
552
+ MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12, 10,#00-07
553
+ 9, 11, 8, 7, 6, 5, 4, 3,#08-0f
554
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17
555
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f
556
+ MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#20-27
557
+ MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#28-2f
558
+ MachineState.ERROR,MachineState.ERROR, 5, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#30-37
559
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#38-3f
560
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#40-47
561
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#48-4f
562
+ MachineState.ERROR,MachineState.ERROR, 7, 7, 7, 7,MachineState.ERROR,MachineState.ERROR,#50-57
563
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#58-5f
564
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 7, 7,MachineState.ERROR,MachineState.ERROR,#60-67
565
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#68-6f
566
+ MachineState.ERROR,MachineState.ERROR, 9, 9, 9, 9,MachineState.ERROR,MachineState.ERROR,#70-77
567
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#78-7f
568
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 9,MachineState.ERROR,MachineState.ERROR,#80-87
569
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#88-8f
570
+ MachineState.ERROR,MachineState.ERROR, 12, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,#90-97
571
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#98-9f
572
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12,MachineState.ERROR,MachineState.ERROR,#a0-a7
573
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#a8-af
574
+ MachineState.ERROR,MachineState.ERROR, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b0-b7
575
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b8-bf
576
+ MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,#c0-c7
577
+ MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR #c8-cf
578
+ )
579
+
580
+ UTF8_CHAR_LEN_TABLE = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6)
581
+
582
+ UTF8_SM_MODEL = {'class_table': UTF8_CLS,
583
+ 'class_factor': 16,
584
+ 'state_table': UTF8_ST,
585
+ 'char_len_table': UTF8_CHAR_LEN_TABLE,
586
+ 'name': 'UTF-8'}