rigid 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (364) hide show
  1. checksums.yaml +7 -0
  2. data/bin/rigid +4 -0
  3. data/rigid +16 -0
  4. data/vendor/PyYAML-3.12.dist-info/DESCRIPTION.rst +12 -0
  5. data/vendor/PyYAML-3.12.dist-info/INSTALLER +1 -0
  6. data/vendor/PyYAML-3.12.dist-info/METADATA +35 -0
  7. data/vendor/PyYAML-3.12.dist-info/RECORD +42 -0
  8. data/vendor/PyYAML-3.12.dist-info/WHEEL +5 -0
  9. data/vendor/PyYAML-3.12.dist-info/metadata.json +1 -0
  10. data/vendor/PyYAML-3.12.dist-info/top_level.txt +2 -0
  11. data/vendor/_yaml.so +0 -0
  12. data/vendor/click/__init__.py +98 -0
  13. data/vendor/click/__init__.pyc +0 -0
  14. data/vendor/click/_bashcomplete.py +83 -0
  15. data/vendor/click/_bashcomplete.pyc +0 -0
  16. data/vendor/click/_compat.py +642 -0
  17. data/vendor/click/_compat.pyc +0 -0
  18. data/vendor/click/_termui_impl.py +547 -0
  19. data/vendor/click/_termui_impl.pyc +0 -0
  20. data/vendor/click/_textwrap.py +38 -0
  21. data/vendor/click/_textwrap.pyc +0 -0
  22. data/vendor/click/_unicodefun.py +119 -0
  23. data/vendor/click/_unicodefun.pyc +0 -0
  24. data/vendor/click/_winconsole.py +273 -0
  25. data/vendor/click/_winconsole.pyc +0 -0
  26. data/vendor/click/core.py +1738 -0
  27. data/vendor/click/core.pyc +0 -0
  28. data/vendor/click/decorators.py +304 -0
  29. data/vendor/click/decorators.pyc +0 -0
  30. data/vendor/click/exceptions.py +201 -0
  31. data/vendor/click/exceptions.pyc +0 -0
  32. data/vendor/click/formatting.py +256 -0
  33. data/vendor/click/formatting.pyc +0 -0
  34. data/vendor/click/globals.py +48 -0
  35. data/vendor/click/globals.pyc +0 -0
  36. data/vendor/click/parser.py +426 -0
  37. data/vendor/click/parser.pyc +0 -0
  38. data/vendor/click/termui.py +539 -0
  39. data/vendor/click/termui.pyc +0 -0
  40. data/vendor/click/testing.py +322 -0
  41. data/vendor/click/testing.pyc +0 -0
  42. data/vendor/click/types.py +550 -0
  43. data/vendor/click/types.pyc +0 -0
  44. data/vendor/click/utils.py +415 -0
  45. data/vendor/click/utils.pyc +0 -0
  46. data/vendor/click-6.6.dist-info/DESCRIPTION.rst +3 -0
  47. data/vendor/click-6.6.dist-info/INSTALLER +1 -0
  48. data/vendor/click-6.6.dist-info/METADATA +16 -0
  49. data/vendor/click-6.6.dist-info/RECORD +41 -0
  50. data/vendor/click-6.6.dist-info/WHEEL +6 -0
  51. data/vendor/click-6.6.dist-info/metadata.json +1 -0
  52. data/vendor/click-6.6.dist-info/top_level.txt +1 -0
  53. data/vendor/easy_install.py +5 -0
  54. data/vendor/easy_install.pyc +0 -0
  55. data/vendor/pip-9.0.1.dist-info/DESCRIPTION.rst +39 -0
  56. data/vendor/pip-9.0.1.dist-info/INSTALLER +1 -0
  57. data/vendor/pip-9.0.1.dist-info/METADATA +69 -0
  58. data/vendor/pip-9.0.1.dist-info/RECORD +501 -0
  59. data/vendor/pip-9.0.1.dist-info/WHEEL +6 -0
  60. data/vendor/pip-9.0.1.dist-info/entry_points.txt +5 -0
  61. data/vendor/pip-9.0.1.dist-info/metadata.json +1 -0
  62. data/vendor/pip-9.0.1.dist-info/top_level.txt +1 -0
  63. data/vendor/pkg_resources/__init__.py +3051 -0
  64. data/vendor/pkg_resources/__init__.pyc +0 -0
  65. data/vendor/pkg_resources/_vendor/__init__.py +0 -0
  66. data/vendor/pkg_resources/_vendor/__init__.pyc +0 -0
  67. data/vendor/pkg_resources/_vendor/appdirs.py +552 -0
  68. data/vendor/pkg_resources/_vendor/appdirs.pyc +0 -0
  69. data/vendor/pkg_resources/_vendor/packaging/__about__.py +21 -0
  70. data/vendor/pkg_resources/_vendor/packaging/__about__.pyc +0 -0
  71. data/vendor/pkg_resources/_vendor/packaging/__init__.py +14 -0
  72. data/vendor/pkg_resources/_vendor/packaging/__init__.pyc +0 -0
  73. data/vendor/pkg_resources/_vendor/packaging/_compat.py +30 -0
  74. data/vendor/pkg_resources/_vendor/packaging/_compat.pyc +0 -0
  75. data/vendor/pkg_resources/_vendor/packaging/_structures.py +68 -0
  76. data/vendor/pkg_resources/_vendor/packaging/_structures.pyc +0 -0
  77. data/vendor/pkg_resources/_vendor/packaging/markers.py +287 -0
  78. data/vendor/pkg_resources/_vendor/packaging/markers.pyc +0 -0
  79. data/vendor/pkg_resources/_vendor/packaging/requirements.py +127 -0
  80. data/vendor/pkg_resources/_vendor/packaging/requirements.pyc +0 -0
  81. data/vendor/pkg_resources/_vendor/packaging/specifiers.py +774 -0
  82. data/vendor/pkg_resources/_vendor/packaging/specifiers.pyc +0 -0
  83. data/vendor/pkg_resources/_vendor/packaging/utils.py +14 -0
  84. data/vendor/pkg_resources/_vendor/packaging/utils.pyc +0 -0
  85. data/vendor/pkg_resources/_vendor/packaging/version.py +393 -0
  86. data/vendor/pkg_resources/_vendor/packaging/version.pyc +0 -0
  87. data/vendor/pkg_resources/_vendor/pyparsing.py +5696 -0
  88. data/vendor/pkg_resources/_vendor/pyparsing.pyc +0 -0
  89. data/vendor/pkg_resources/_vendor/six.py +868 -0
  90. data/vendor/pkg_resources/_vendor/six.pyc +0 -0
  91. data/vendor/pkg_resources/extern/__init__.py +73 -0
  92. data/vendor/pkg_resources/extern/__init__.pyc +0 -0
  93. data/vendor/requests/__init__.py +86 -0
  94. data/vendor/requests/__init__.pyc +0 -0
  95. data/vendor/requests/adapters.py +503 -0
  96. data/vendor/requests/adapters.pyc +0 -0
  97. data/vendor/requests/api.py +148 -0
  98. data/vendor/requests/api.pyc +0 -0
  99. data/vendor/requests/auth.py +252 -0
  100. data/vendor/requests/auth.pyc +0 -0
  101. data/vendor/requests/cacert.pem +5616 -0
  102. data/vendor/requests/certs.py +25 -0
  103. data/vendor/requests/certs.pyc +0 -0
  104. data/vendor/requests/compat.py +66 -0
  105. data/vendor/requests/compat.pyc +0 -0
  106. data/vendor/requests/cookies.py +540 -0
  107. data/vendor/requests/cookies.pyc +0 -0
  108. data/vendor/requests/exceptions.py +114 -0
  109. data/vendor/requests/exceptions.pyc +0 -0
  110. data/vendor/requests/hooks.py +34 -0
  111. data/vendor/requests/hooks.pyc +0 -0
  112. data/vendor/requests/models.py +873 -0
  113. data/vendor/requests/models.pyc +0 -0
  114. data/vendor/requests/packages/__init__.py +36 -0
  115. data/vendor/requests/packages/__init__.pyc +0 -0
  116. data/vendor/requests/packages/chardet/__init__.py +32 -0
  117. data/vendor/requests/packages/chardet/__init__.pyc +0 -0
  118. data/vendor/requests/packages/chardet/big5freq.py +925 -0
  119. data/vendor/requests/packages/chardet/big5freq.pyc +0 -0
  120. data/vendor/requests/packages/chardet/big5prober.py +42 -0
  121. data/vendor/requests/packages/chardet/big5prober.pyc +0 -0
  122. data/vendor/requests/packages/chardet/chardetect.py +80 -0
  123. data/vendor/requests/packages/chardet/chardetect.pyc +0 -0
  124. data/vendor/requests/packages/chardet/chardistribution.py +231 -0
  125. data/vendor/requests/packages/chardet/chardistribution.pyc +0 -0
  126. data/vendor/requests/packages/chardet/charsetgroupprober.py +106 -0
  127. data/vendor/requests/packages/chardet/charsetgroupprober.pyc +0 -0
  128. data/vendor/requests/packages/chardet/charsetprober.py +62 -0
  129. data/vendor/requests/packages/chardet/charsetprober.pyc +0 -0
  130. data/vendor/requests/packages/chardet/codingstatemachine.py +61 -0
  131. data/vendor/requests/packages/chardet/codingstatemachine.pyc +0 -0
  132. data/vendor/requests/packages/chardet/compat.py +34 -0
  133. data/vendor/requests/packages/chardet/compat.pyc +0 -0
  134. data/vendor/requests/packages/chardet/constants.py +39 -0
  135. data/vendor/requests/packages/chardet/constants.pyc +0 -0
  136. data/vendor/requests/packages/chardet/cp949prober.py +44 -0
  137. data/vendor/requests/packages/chardet/cp949prober.pyc +0 -0
  138. data/vendor/requests/packages/chardet/escprober.py +86 -0
  139. data/vendor/requests/packages/chardet/escprober.pyc +0 -0
  140. data/vendor/requests/packages/chardet/escsm.py +242 -0
  141. data/vendor/requests/packages/chardet/escsm.pyc +0 -0
  142. data/vendor/requests/packages/chardet/eucjpprober.py +90 -0
  143. data/vendor/requests/packages/chardet/eucjpprober.pyc +0 -0
  144. data/vendor/requests/packages/chardet/euckrfreq.py +596 -0
  145. data/vendor/requests/packages/chardet/euckrfreq.pyc +0 -0
  146. data/vendor/requests/packages/chardet/euckrprober.py +42 -0
  147. data/vendor/requests/packages/chardet/euckrprober.pyc +0 -0
  148. data/vendor/requests/packages/chardet/euctwfreq.py +428 -0
  149. data/vendor/requests/packages/chardet/euctwfreq.pyc +0 -0
  150. data/vendor/requests/packages/chardet/euctwprober.py +41 -0
  151. data/vendor/requests/packages/chardet/euctwprober.pyc +0 -0
  152. data/vendor/requests/packages/chardet/gb2312freq.py +472 -0
  153. data/vendor/requests/packages/chardet/gb2312freq.pyc +0 -0
  154. data/vendor/requests/packages/chardet/gb2312prober.py +41 -0
  155. data/vendor/requests/packages/chardet/gb2312prober.pyc +0 -0
  156. data/vendor/requests/packages/chardet/hebrewprober.py +283 -0
  157. data/vendor/requests/packages/chardet/hebrewprober.pyc +0 -0
  158. data/vendor/requests/packages/chardet/jisfreq.py +569 -0
  159. data/vendor/requests/packages/chardet/jisfreq.pyc +0 -0
  160. data/vendor/requests/packages/chardet/jpcntx.py +227 -0
  161. data/vendor/requests/packages/chardet/jpcntx.pyc +0 -0
  162. data/vendor/requests/packages/chardet/langbulgarianmodel.py +229 -0
  163. data/vendor/requests/packages/chardet/langbulgarianmodel.pyc +0 -0
  164. data/vendor/requests/packages/chardet/langcyrillicmodel.py +329 -0
  165. data/vendor/requests/packages/chardet/langcyrillicmodel.pyc +0 -0
  166. data/vendor/requests/packages/chardet/langgreekmodel.py +225 -0
  167. data/vendor/requests/packages/chardet/langgreekmodel.pyc +0 -0
  168. data/vendor/requests/packages/chardet/langhebrewmodel.py +201 -0
  169. data/vendor/requests/packages/chardet/langhebrewmodel.pyc +0 -0
  170. data/vendor/requests/packages/chardet/langhungarianmodel.py +225 -0
  171. data/vendor/requests/packages/chardet/langhungarianmodel.pyc +0 -0
  172. data/vendor/requests/packages/chardet/langthaimodel.py +200 -0
  173. data/vendor/requests/packages/chardet/langthaimodel.pyc +0 -0
  174. data/vendor/requests/packages/chardet/latin1prober.py +139 -0
  175. data/vendor/requests/packages/chardet/latin1prober.pyc +0 -0
  176. data/vendor/requests/packages/chardet/mbcharsetprober.py +86 -0
  177. data/vendor/requests/packages/chardet/mbcharsetprober.pyc +0 -0
  178. data/vendor/requests/packages/chardet/mbcsgroupprober.py +54 -0
  179. data/vendor/requests/packages/chardet/mbcsgroupprober.pyc +0 -0
  180. data/vendor/requests/packages/chardet/mbcssm.py +572 -0
  181. data/vendor/requests/packages/chardet/mbcssm.pyc +0 -0
  182. data/vendor/requests/packages/chardet/sbcharsetprober.py +120 -0
  183. data/vendor/requests/packages/chardet/sbcharsetprober.pyc +0 -0
  184. data/vendor/requests/packages/chardet/sbcsgroupprober.py +69 -0
  185. data/vendor/requests/packages/chardet/sbcsgroupprober.pyc +0 -0
  186. data/vendor/requests/packages/chardet/sjisprober.py +91 -0
  187. data/vendor/requests/packages/chardet/sjisprober.pyc +0 -0
  188. data/vendor/requests/packages/chardet/universaldetector.py +170 -0
  189. data/vendor/requests/packages/chardet/universaldetector.pyc +0 -0
  190. data/vendor/requests/packages/chardet/utf8prober.py +76 -0
  191. data/vendor/requests/packages/chardet/utf8prober.pyc +0 -0
  192. data/vendor/requests/packages/urllib3/__init__.py +96 -0
  193. data/vendor/requests/packages/urllib3/__init__.pyc +0 -0
  194. data/vendor/requests/packages/urllib3/_collections.py +324 -0
  195. data/vendor/requests/packages/urllib3/_collections.pyc +0 -0
  196. data/vendor/requests/packages/urllib3/connection.py +330 -0
  197. data/vendor/requests/packages/urllib3/connection.pyc +0 -0
  198. data/vendor/requests/packages/urllib3/connectionpool.py +866 -0
  199. data/vendor/requests/packages/urllib3/connectionpool.pyc +0 -0
  200. data/vendor/requests/packages/urllib3/contrib/__init__.py +0 -0
  201. data/vendor/requests/packages/urllib3/contrib/__init__.pyc +0 -0
  202. data/vendor/requests/packages/urllib3/contrib/appengine.py +231 -0
  203. data/vendor/requests/packages/urllib3/contrib/appengine.pyc +0 -0
  204. data/vendor/requests/packages/urllib3/contrib/ntlmpool.py +115 -0
  205. data/vendor/requests/packages/urllib3/contrib/ntlmpool.pyc +0 -0
  206. data/vendor/requests/packages/urllib3/contrib/pyopenssl.py +358 -0
  207. data/vendor/requests/packages/urllib3/contrib/pyopenssl.pyc +0 -0
  208. data/vendor/requests/packages/urllib3/contrib/socks.py +172 -0
  209. data/vendor/requests/packages/urllib3/contrib/socks.pyc +0 -0
  210. data/vendor/requests/packages/urllib3/exceptions.py +209 -0
  211. data/vendor/requests/packages/urllib3/exceptions.pyc +0 -0
  212. data/vendor/requests/packages/urllib3/fields.py +178 -0
  213. data/vendor/requests/packages/urllib3/fields.pyc +0 -0
  214. data/vendor/requests/packages/urllib3/filepost.py +94 -0
  215. data/vendor/requests/packages/urllib3/filepost.pyc +0 -0
  216. data/vendor/requests/packages/urllib3/packages/__init__.py +5 -0
  217. data/vendor/requests/packages/urllib3/packages/__init__.pyc +0 -0
  218. data/vendor/requests/packages/urllib3/packages/ordered_dict.py +259 -0
  219. data/vendor/requests/packages/urllib3/packages/ordered_dict.pyc +0 -0
  220. data/vendor/requests/packages/urllib3/packages/six.py +868 -0
  221. data/vendor/requests/packages/urllib3/packages/six.pyc +0 -0
  222. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +13 -0
  223. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.pyc +0 -0
  224. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +105 -0
  225. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.pyc +0 -0
  226. data/vendor/requests/packages/urllib3/poolmanager.py +367 -0
  227. data/vendor/requests/packages/urllib3/poolmanager.pyc +0 -0
  228. data/vendor/requests/packages/urllib3/request.py +151 -0
  229. data/vendor/requests/packages/urllib3/request.pyc +0 -0
  230. data/vendor/requests/packages/urllib3/response.py +530 -0
  231. data/vendor/requests/packages/urllib3/response.pyc +0 -0
  232. data/vendor/requests/packages/urllib3/util/__init__.py +46 -0
  233. data/vendor/requests/packages/urllib3/util/__init__.pyc +0 -0
  234. data/vendor/requests/packages/urllib3/util/connection.py +144 -0
  235. data/vendor/requests/packages/urllib3/util/connection.pyc +0 -0
  236. data/vendor/requests/packages/urllib3/util/request.py +72 -0
  237. data/vendor/requests/packages/urllib3/util/request.pyc +0 -0
  238. data/vendor/requests/packages/urllib3/util/response.py +74 -0
  239. data/vendor/requests/packages/urllib3/util/response.pyc +0 -0
  240. data/vendor/requests/packages/urllib3/util/retry.py +300 -0
  241. data/vendor/requests/packages/urllib3/util/retry.pyc +0 -0
  242. data/vendor/requests/packages/urllib3/util/ssl_.py +320 -0
  243. data/vendor/requests/packages/urllib3/util/ssl_.pyc +0 -0
  244. data/vendor/requests/packages/urllib3/util/timeout.py +242 -0
  245. data/vendor/requests/packages/urllib3/util/timeout.pyc +0 -0
  246. data/vendor/requests/packages/urllib3/util/url.py +217 -0
  247. data/vendor/requests/packages/urllib3/util/url.pyc +0 -0
  248. data/vendor/requests/sessions.py +712 -0
  249. data/vendor/requests/sessions.pyc +0 -0
  250. data/vendor/requests/status_codes.py +91 -0
  251. data/vendor/requests/status_codes.pyc +0 -0
  252. data/vendor/requests/structures.py +105 -0
  253. data/vendor/requests/structures.pyc +0 -0
  254. data/vendor/requests/utils.py +817 -0
  255. data/vendor/requests/utils.pyc +0 -0
  256. data/vendor/requests-2.11.1.dist-info/DESCRIPTION.rst +1294 -0
  257. data/vendor/requests-2.11.1.dist-info/INSTALLER +1 -0
  258. data/vendor/requests-2.11.1.dist-info/METADATA +1323 -0
  259. data/vendor/requests-2.11.1.dist-info/RECORD +170 -0
  260. data/vendor/requests-2.11.1.dist-info/WHEEL +6 -0
  261. data/vendor/requests-2.11.1.dist-info/metadata.json +1 -0
  262. data/vendor/requests-2.11.1.dist-info/top_level.txt +1 -0
  263. data/vendor/rigid/__init__.py +1 -0
  264. data/vendor/rigid/__init__.pyc +0 -0
  265. data/vendor/rigid/api.py +129 -0
  266. data/vendor/rigid/api.pyc +0 -0
  267. data/vendor/rigid/commands/__init__.py +260 -0
  268. data/vendor/rigid/commands/__init__.pyc +0 -0
  269. data/vendor/rigid/commands/deploy.py +0 -0
  270. data/vendor/rigid/commands/deploy.pyc +0 -0
  271. data/vendor/rigid/deploy.py +70 -0
  272. data/vendor/rigid/deploy.pyc +0 -0
  273. data/vendor/rigid/file_scanner.py +63 -0
  274. data/vendor/rigid/file_scanner.pyc +0 -0
  275. data/vendor/rigid/utils.py +17 -0
  276. data/vendor/rigid/utils.pyc +0 -0
  277. data/vendor/rigid-0.2.0.dist-info/DESCRIPTION.rst +3 -0
  278. data/vendor/rigid-0.2.0.dist-info/INSTALLER +1 -0
  279. data/vendor/rigid-0.2.0.dist-info/METADATA +23 -0
  280. data/vendor/rigid-0.2.0.dist-info/RECORD +49 -0
  281. data/vendor/rigid-0.2.0.dist-info/WHEEL +5 -0
  282. data/vendor/rigid-0.2.0.dist-info/entry_points.txt +3 -0
  283. data/vendor/rigid-0.2.0.dist-info/metadata.json +1 -0
  284. data/vendor/rigid-0.2.0.dist-info/top_level.txt +2 -0
  285. data/vendor/setuptools-28.8.0.dist-info/DESCRIPTION.rst +243 -0
  286. data/vendor/setuptools-28.8.0.dist-info/INSTALLER +1 -0
  287. data/vendor/setuptools-28.8.0.dist-info/METADATA +272 -0
  288. data/vendor/setuptools-28.8.0.dist-info/RECORD +143 -0
  289. data/vendor/setuptools-28.8.0.dist-info/WHEEL +6 -0
  290. data/vendor/setuptools-28.8.0.dist-info/dependency_links.txt +2 -0
  291. data/vendor/setuptools-28.8.0.dist-info/entry_points.txt +63 -0
  292. data/vendor/setuptools-28.8.0.dist-info/metadata.json +1 -0
  293. data/vendor/setuptools-28.8.0.dist-info/top_level.txt +3 -0
  294. data/vendor/setuptools-28.8.0.dist-info/zip-safe +1 -0
  295. data/vendor/tests/__init__.py +0 -0
  296. data/vendor/tests/__init__.pyc +0 -0
  297. data/vendor/tests/integration/__init__.py +0 -0
  298. data/vendor/tests/integration/__init__.pyc +0 -0
  299. data/vendor/tests/integration/test_app.py +63 -0
  300. data/vendor/tests/integration/test_app.pyc +0 -0
  301. data/vendor/tests/integration/test_apps.py +27 -0
  302. data/vendor/tests/integration/test_apps.pyc +0 -0
  303. data/vendor/tests/integration/test_deploy.py +128 -0
  304. data/vendor/tests/integration/test_deploy.pyc +0 -0
  305. data/vendor/tests/integration/test_domains.py +35 -0
  306. data/vendor/tests/integration/test_domains.pyc +0 -0
  307. data/vendor/tests/integration/test_login.py +37 -0
  308. data/vendor/tests/integration/test_login.pyc +0 -0
  309. data/vendor/tests/integration/test_promote.py +24 -0
  310. data/vendor/tests/integration/test_promote.pyc +0 -0
  311. data/vendor/tests/integration/test_token.py +33 -0
  312. data/vendor/tests/integration/test_token.pyc +0 -0
  313. data/vendor/tests/integration/test_whoami.py +24 -0
  314. data/vendor/tests/integration/test_whoami.pyc +0 -0
  315. data/vendor/tests/test_deploy.py +33 -0
  316. data/vendor/tests/test_deploy.pyc +0 -0
  317. data/vendor/tests/test_file_scanner.py +89 -0
  318. data/vendor/tests/test_file_scanner.pyc +0 -0
  319. data/vendor/tests/utils.py +78 -0
  320. data/vendor/tests/utils.pyc +0 -0
  321. data/vendor/wheel-0.30.0a0.dist-info/DESCRIPTION.rst +325 -0
  322. data/vendor/wheel-0.30.0a0.dist-info/INSTALLER +1 -0
  323. data/vendor/wheel-0.30.0a0.dist-info/LICENSE.txt +22 -0
  324. data/vendor/wheel-0.30.0a0.dist-info/METADATA +357 -0
  325. data/vendor/wheel-0.30.0a0.dist-info/RECORD +86 -0
  326. data/vendor/wheel-0.30.0a0.dist-info/WHEEL +6 -0
  327. data/vendor/wheel-0.30.0a0.dist-info/entry_points.txt +6 -0
  328. data/vendor/wheel-0.30.0a0.dist-info/metadata.json +1 -0
  329. data/vendor/wheel-0.30.0a0.dist-info/top_level.txt +1 -0
  330. data/vendor/yaml/__init__.py +315 -0
  331. data/vendor/yaml/__init__.pyc +0 -0
  332. data/vendor/yaml/composer.py +139 -0
  333. data/vendor/yaml/composer.pyc +0 -0
  334. data/vendor/yaml/constructor.py +675 -0
  335. data/vendor/yaml/constructor.pyc +0 -0
  336. data/vendor/yaml/cyaml.py +85 -0
  337. data/vendor/yaml/cyaml.pyc +0 -0
  338. data/vendor/yaml/dumper.py +62 -0
  339. data/vendor/yaml/dumper.pyc +0 -0
  340. data/vendor/yaml/emitter.py +1140 -0
  341. data/vendor/yaml/emitter.pyc +0 -0
  342. data/vendor/yaml/error.py +75 -0
  343. data/vendor/yaml/error.pyc +0 -0
  344. data/vendor/yaml/events.py +86 -0
  345. data/vendor/yaml/events.pyc +0 -0
  346. data/vendor/yaml/loader.py +40 -0
  347. data/vendor/yaml/loader.pyc +0 -0
  348. data/vendor/yaml/nodes.py +49 -0
  349. data/vendor/yaml/nodes.pyc +0 -0
  350. data/vendor/yaml/parser.py +589 -0
  351. data/vendor/yaml/parser.pyc +0 -0
  352. data/vendor/yaml/reader.py +190 -0
  353. data/vendor/yaml/reader.pyc +0 -0
  354. data/vendor/yaml/representer.py +486 -0
  355. data/vendor/yaml/representer.pyc +0 -0
  356. data/vendor/yaml/resolver.py +227 -0
  357. data/vendor/yaml/resolver.pyc +0 -0
  358. data/vendor/yaml/scanner.py +1453 -0
  359. data/vendor/yaml/scanner.pyc +0 -0
  360. data/vendor/yaml/serializer.py +111 -0
  361. data/vendor/yaml/serializer.pyc +0 -0
  362. data/vendor/yaml/tokens.py +104 -0
  363. data/vendor/yaml/tokens.pyc +0 -0
  364. metadata +407 -0
@@ -0,0 +1,42 @@
1
+ ######################## BEGIN LICENSE BLOCK ########################
2
+ # The Original Code is Mozilla Communicator client code.
3
+ #
4
+ # The Initial Developer of the Original Code is
5
+ # Netscape Communications Corporation.
6
+ # Portions created by the Initial Developer are Copyright (C) 1998
7
+ # the Initial Developer. All Rights Reserved.
8
+ #
9
+ # Contributor(s):
10
+ # Mark Pilgrim - port to Python
11
+ #
12
+ # This library is free software; you can redistribute it and/or
13
+ # modify it under the terms of the GNU Lesser General Public
14
+ # License as published by the Free Software Foundation; either
15
+ # version 2.1 of the License, or (at your option) any later version.
16
+ #
17
+ # This library is distributed in the hope that it will be useful,
18
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
+ # Lesser General Public License for more details.
21
+ #
22
+ # You should have received a copy of the GNU Lesser General Public
23
+ # License along with this library; if not, write to the Free Software
24
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
25
+ # 02110-1301 USA
26
+ ######################### END LICENSE BLOCK #########################
27
+
28
+ from .mbcharsetprober import MultiByteCharSetProber
29
+ from .codingstatemachine import CodingStateMachine
30
+ from .chardistribution import Big5DistributionAnalysis
31
+ from .mbcssm import Big5SMModel
32
+
33
+
34
+ class Big5Prober(MultiByteCharSetProber):
35
+ def __init__(self):
36
+ MultiByteCharSetProber.__init__(self)
37
+ self._mCodingSM = CodingStateMachine(Big5SMModel)
38
+ self._mDistributionAnalyzer = Big5DistributionAnalysis()
39
+ self.reset()
40
+
41
+ def get_charset_name(self):
42
+ return "Big5"
@@ -0,0 +1,80 @@
1
+ #!/usr/bin/env python
2
+ """
3
+ Script which takes one or more file paths and reports on their detected
4
+ encodings
5
+
6
+ Example::
7
+
8
+ % chardetect somefile someotherfile
9
+ somefile: windows-1252 with confidence 0.5
10
+ someotherfile: ascii with confidence 1.0
11
+
12
+ If no paths are provided, it takes its input from stdin.
13
+
14
+ """
15
+
16
+ from __future__ import absolute_import, print_function, unicode_literals
17
+
18
+ import argparse
19
+ import sys
20
+ from io import open
21
+
22
+ from chardet import __version__
23
+ from chardet.universaldetector import UniversalDetector
24
+
25
+
26
+ def description_of(lines, name='stdin'):
27
+ """
28
+ Return a string describing the probable encoding of a file or
29
+ list of strings.
30
+
31
+ :param lines: The lines to get the encoding of.
32
+ :type lines: Iterable of bytes
33
+ :param name: Name of file or collection of lines
34
+ :type name: str
35
+ """
36
+ u = UniversalDetector()
37
+ for line in lines:
38
+ u.feed(line)
39
+ u.close()
40
+ result = u.result
41
+ if result['encoding']:
42
+ return '{0}: {1} with confidence {2}'.format(name, result['encoding'],
43
+ result['confidence'])
44
+ else:
45
+ return '{0}: no result'.format(name)
46
+
47
+
48
+ def main(argv=None):
49
+ '''
50
+ Handles command line arguments and gets things started.
51
+
52
+ :param argv: List of arguments, as if specified on the command-line.
53
+ If None, ``sys.argv[1:]`` is used instead.
54
+ :type argv: list of str
55
+ '''
56
+ # Get command line arguments
57
+ parser = argparse.ArgumentParser(
58
+ description="Takes one or more file paths and reports their detected \
59
+ encodings",
60
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
61
+ conflict_handler='resolve')
62
+ parser.add_argument('input',
63
+ help='File whose encoding we would like to determine.',
64
+ type=argparse.FileType('rb'), nargs='*',
65
+ default=[sys.stdin])
66
+ parser.add_argument('--version', action='version',
67
+ version='%(prog)s {0}'.format(__version__))
68
+ args = parser.parse_args(argv)
69
+
70
+ for f in args.input:
71
+ if f.isatty():
72
+ print("You are running chardetect interactively. Press " +
73
+ "CTRL-D twice at the start of a blank line to signal the " +
74
+ "end of your input. If you want help, run chardetect " +
75
+ "--help\n", file=sys.stderr)
76
+ print(description_of(f, f.name))
77
+
78
+
79
+ if __name__ == '__main__':
80
+ main()
@@ -0,0 +1,231 @@
1
+ ######################## BEGIN LICENSE BLOCK ########################
2
+ # The Original Code is Mozilla Communicator client code.
3
+ #
4
+ # The Initial Developer of the Original Code is
5
+ # Netscape Communications Corporation.
6
+ # Portions created by the Initial Developer are Copyright (C) 1998
7
+ # the Initial Developer. All Rights Reserved.
8
+ #
9
+ # Contributor(s):
10
+ # Mark Pilgrim - port to Python
11
+ #
12
+ # This library is free software; you can redistribute it and/or
13
+ # modify it under the terms of the GNU Lesser General Public
14
+ # License as published by the Free Software Foundation; either
15
+ # version 2.1 of the License, or (at your option) any later version.
16
+ #
17
+ # This library is distributed in the hope that it will be useful,
18
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
+ # Lesser General Public License for more details.
21
+ #
22
+ # You should have received a copy of the GNU Lesser General Public
23
+ # License along with this library; if not, write to the Free Software
24
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
25
+ # 02110-1301 USA
26
+ ######################### END LICENSE BLOCK #########################
27
+
28
+ from .euctwfreq import (EUCTWCharToFreqOrder, EUCTW_TABLE_SIZE,
29
+ EUCTW_TYPICAL_DISTRIBUTION_RATIO)
30
+ from .euckrfreq import (EUCKRCharToFreqOrder, EUCKR_TABLE_SIZE,
31
+ EUCKR_TYPICAL_DISTRIBUTION_RATIO)
32
+ from .gb2312freq import (GB2312CharToFreqOrder, GB2312_TABLE_SIZE,
33
+ GB2312_TYPICAL_DISTRIBUTION_RATIO)
34
+ from .big5freq import (Big5CharToFreqOrder, BIG5_TABLE_SIZE,
35
+ BIG5_TYPICAL_DISTRIBUTION_RATIO)
36
+ from .jisfreq import (JISCharToFreqOrder, JIS_TABLE_SIZE,
37
+ JIS_TYPICAL_DISTRIBUTION_RATIO)
38
+ from .compat import wrap_ord
39
+
40
+ ENOUGH_DATA_THRESHOLD = 1024
41
+ SURE_YES = 0.99
42
+ SURE_NO = 0.01
43
+ MINIMUM_DATA_THRESHOLD = 3
44
+
45
+
46
+ class CharDistributionAnalysis:
47
+ def __init__(self):
48
+ # Mapping table to get frequency order from char order (get from
49
+ # GetOrder())
50
+ self._mCharToFreqOrder = None
51
+ self._mTableSize = None # Size of above table
52
+ # This is a constant value which varies from language to language,
53
+ # used in calculating confidence. See
54
+ # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html
55
+ # for further detail.
56
+ self._mTypicalDistributionRatio = None
57
+ self.reset()
58
+
59
+ def reset(self):
60
+ """reset analyser, clear any state"""
61
+ # If this flag is set to True, detection is done and conclusion has
62
+ # been made
63
+ self._mDone = False
64
+ self._mTotalChars = 0 # Total characters encountered
65
+ # The number of characters whose frequency order is less than 512
66
+ self._mFreqChars = 0
67
+
68
+ def feed(self, aBuf, aCharLen):
69
+ """feed a character with known length"""
70
+ if aCharLen == 2:
71
+ # we only care about 2-bytes character in our distribution analysis
72
+ order = self.get_order(aBuf)
73
+ else:
74
+ order = -1
75
+ if order >= 0:
76
+ self._mTotalChars += 1
77
+ # order is valid
78
+ if order < self._mTableSize:
79
+ if 512 > self._mCharToFreqOrder[order]:
80
+ self._mFreqChars += 1
81
+
82
+ def get_confidence(self):
83
+ """return confidence based on existing data"""
84
+ # if we didn't receive any character in our consideration range,
85
+ # return negative answer
86
+ if self._mTotalChars <= 0 or self._mFreqChars <= MINIMUM_DATA_THRESHOLD:
87
+ return SURE_NO
88
+
89
+ if self._mTotalChars != self._mFreqChars:
90
+ r = (self._mFreqChars / ((self._mTotalChars - self._mFreqChars)
91
+ * self._mTypicalDistributionRatio))
92
+ if r < SURE_YES:
93
+ return r
94
+
95
+ # normalize confidence (we don't want to be 100% sure)
96
+ return SURE_YES
97
+
98
+ def got_enough_data(self):
99
+ # It is not necessary to receive all data to draw conclusion.
100
+ # For charset detection, certain amount of data is enough
101
+ return self._mTotalChars > ENOUGH_DATA_THRESHOLD
102
+
103
+ def get_order(self, aBuf):
104
+ # We do not handle characters based on the original encoding string,
105
+ # but convert this encoding string to a number, here called order.
106
+ # This allows multiple encodings of a language to share one frequency
107
+ # table.
108
+ return -1
109
+
110
+
111
+ class EUCTWDistributionAnalysis(CharDistributionAnalysis):
112
+ def __init__(self):
113
+ CharDistributionAnalysis.__init__(self)
114
+ self._mCharToFreqOrder = EUCTWCharToFreqOrder
115
+ self._mTableSize = EUCTW_TABLE_SIZE
116
+ self._mTypicalDistributionRatio = EUCTW_TYPICAL_DISTRIBUTION_RATIO
117
+
118
+ def get_order(self, aBuf):
119
+ # for euc-TW encoding, we are interested
120
+ # first byte range: 0xc4 -- 0xfe
121
+ # second byte range: 0xa1 -- 0xfe
122
+ # no validation needed here. State machine has done that
123
+ first_char = wrap_ord(aBuf[0])
124
+ if first_char >= 0xC4:
125
+ return 94 * (first_char - 0xC4) + wrap_ord(aBuf[1]) - 0xA1
126
+ else:
127
+ return -1
128
+
129
+
130
+ class EUCKRDistributionAnalysis(CharDistributionAnalysis):
131
+ def __init__(self):
132
+ CharDistributionAnalysis.__init__(self)
133
+ self._mCharToFreqOrder = EUCKRCharToFreqOrder
134
+ self._mTableSize = EUCKR_TABLE_SIZE
135
+ self._mTypicalDistributionRatio = EUCKR_TYPICAL_DISTRIBUTION_RATIO
136
+
137
+ def get_order(self, aBuf):
138
+ # for euc-KR encoding, we are interested
139
+ # first byte range: 0xb0 -- 0xfe
140
+ # second byte range: 0xa1 -- 0xfe
141
+ # no validation needed here. State machine has done that
142
+ first_char = wrap_ord(aBuf[0])
143
+ if first_char >= 0xB0:
144
+ return 94 * (first_char - 0xB0) + wrap_ord(aBuf[1]) - 0xA1
145
+ else:
146
+ return -1
147
+
148
+
149
+ class GB2312DistributionAnalysis(CharDistributionAnalysis):
150
+ def __init__(self):
151
+ CharDistributionAnalysis.__init__(self)
152
+ self._mCharToFreqOrder = GB2312CharToFreqOrder
153
+ self._mTableSize = GB2312_TABLE_SIZE
154
+ self._mTypicalDistributionRatio = GB2312_TYPICAL_DISTRIBUTION_RATIO
155
+
156
+ def get_order(self, aBuf):
157
+ # for GB2312 encoding, we are interested
158
+ # first byte range: 0xb0 -- 0xfe
159
+ # second byte range: 0xa1 -- 0xfe
160
+ # no validation needed here. State machine has done that
161
+ first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
162
+ if (first_char >= 0xB0) and (second_char >= 0xA1):
163
+ return 94 * (first_char - 0xB0) + second_char - 0xA1
164
+ else:
165
+ return -1
166
+
167
+
168
+ class Big5DistributionAnalysis(CharDistributionAnalysis):
169
+ def __init__(self):
170
+ CharDistributionAnalysis.__init__(self)
171
+ self._mCharToFreqOrder = Big5CharToFreqOrder
172
+ self._mTableSize = BIG5_TABLE_SIZE
173
+ self._mTypicalDistributionRatio = BIG5_TYPICAL_DISTRIBUTION_RATIO
174
+
175
+ def get_order(self, aBuf):
176
+ # for big5 encoding, we are interested
177
+ # first byte range: 0xa4 -- 0xfe
178
+ # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe
179
+ # no validation needed here. State machine has done that
180
+ first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
181
+ if first_char >= 0xA4:
182
+ if second_char >= 0xA1:
183
+ return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63
184
+ else:
185
+ return 157 * (first_char - 0xA4) + second_char - 0x40
186
+ else:
187
+ return -1
188
+
189
+
190
+ class SJISDistributionAnalysis(CharDistributionAnalysis):
191
+ def __init__(self):
192
+ CharDistributionAnalysis.__init__(self)
193
+ self._mCharToFreqOrder = JISCharToFreqOrder
194
+ self._mTableSize = JIS_TABLE_SIZE
195
+ self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
196
+
197
+ def get_order(self, aBuf):
198
+ # for sjis encoding, we are interested
199
+ # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe
200
+ # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe
201
+ # no validation needed here. State machine has done that
202
+ first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
203
+ if (first_char >= 0x81) and (first_char <= 0x9F):
204
+ order = 188 * (first_char - 0x81)
205
+ elif (first_char >= 0xE0) and (first_char <= 0xEF):
206
+ order = 188 * (first_char - 0xE0 + 31)
207
+ else:
208
+ return -1
209
+ order = order + second_char - 0x40
210
+ if second_char > 0x7F:
211
+ order = -1
212
+ return order
213
+
214
+
215
+ class EUCJPDistributionAnalysis(CharDistributionAnalysis):
216
+ def __init__(self):
217
+ CharDistributionAnalysis.__init__(self)
218
+ self._mCharToFreqOrder = JISCharToFreqOrder
219
+ self._mTableSize = JIS_TABLE_SIZE
220
+ self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
221
+
222
+ def get_order(self, aBuf):
223
+ # for euc-JP encoding, we are interested
224
+ # first byte range: 0xa0 -- 0xfe
225
+ # second byte range: 0xa1 -- 0xfe
226
+ # no validation needed here. State machine has done that
227
+ char = wrap_ord(aBuf[0])
228
+ if char >= 0xA0:
229
+ return 94 * (char - 0xA1) + wrap_ord(aBuf[1]) - 0xa1
230
+ else:
231
+ return -1
@@ -0,0 +1,106 @@
1
+ ######################## BEGIN LICENSE BLOCK ########################
2
+ # The Original Code is Mozilla Communicator client code.
3
+ #
4
+ # The Initial Developer of the Original Code is
5
+ # Netscape Communications Corporation.
6
+ # Portions created by the Initial Developer are Copyright (C) 1998
7
+ # the Initial Developer. All Rights Reserved.
8
+ #
9
+ # Contributor(s):
10
+ # Mark Pilgrim - port to Python
11
+ #
12
+ # This library is free software; you can redistribute it and/or
13
+ # modify it under the terms of the GNU Lesser General Public
14
+ # License as published by the Free Software Foundation; either
15
+ # version 2.1 of the License, or (at your option) any later version.
16
+ #
17
+ # This library is distributed in the hope that it will be useful,
18
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
+ # Lesser General Public License for more details.
21
+ #
22
+ # You should have received a copy of the GNU Lesser General Public
23
+ # License along with this library; if not, write to the Free Software
24
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
25
+ # 02110-1301 USA
26
+ ######################### END LICENSE BLOCK #########################
27
+
28
+ from . import constants
29
+ import sys
30
+ from .charsetprober import CharSetProber
31
+
32
+
33
+ class CharSetGroupProber(CharSetProber):
34
+ def __init__(self):
35
+ CharSetProber.__init__(self)
36
+ self._mActiveNum = 0
37
+ self._mProbers = []
38
+ self._mBestGuessProber = None
39
+
40
+ def reset(self):
41
+ CharSetProber.reset(self)
42
+ self._mActiveNum = 0
43
+ for prober in self._mProbers:
44
+ if prober:
45
+ prober.reset()
46
+ prober.active = True
47
+ self._mActiveNum += 1
48
+ self._mBestGuessProber = None
49
+
50
+ def get_charset_name(self):
51
+ if not self._mBestGuessProber:
52
+ self.get_confidence()
53
+ if not self._mBestGuessProber:
54
+ return None
55
+ # self._mBestGuessProber = self._mProbers[0]
56
+ return self._mBestGuessProber.get_charset_name()
57
+
58
+ def feed(self, aBuf):
59
+ for prober in self._mProbers:
60
+ if not prober:
61
+ continue
62
+ if not prober.active:
63
+ continue
64
+ st = prober.feed(aBuf)
65
+ if not st:
66
+ continue
67
+ if st == constants.eFoundIt:
68
+ self._mBestGuessProber = prober
69
+ return self.get_state()
70
+ elif st == constants.eNotMe:
71
+ prober.active = False
72
+ self._mActiveNum -= 1
73
+ if self._mActiveNum <= 0:
74
+ self._mState = constants.eNotMe
75
+ return self.get_state()
76
+ return self.get_state()
77
+
78
+ def get_confidence(self):
79
+ st = self.get_state()
80
+ if st == constants.eFoundIt:
81
+ return 0.99
82
+ elif st == constants.eNotMe:
83
+ return 0.01
84
+ bestConf = 0.0
85
+ self._mBestGuessProber = None
86
+ for prober in self._mProbers:
87
+ if not prober:
88
+ continue
89
+ if not prober.active:
90
+ if constants._debug:
91
+ sys.stderr.write(prober.get_charset_name()
92
+ + ' not active\n')
93
+ continue
94
+ cf = prober.get_confidence()
95
+ if constants._debug:
96
+ sys.stderr.write('%s confidence = %s\n' %
97
+ (prober.get_charset_name(), cf))
98
+ if bestConf < cf:
99
+ bestConf = cf
100
+ self._mBestGuessProber = prober
101
+ if not self._mBestGuessProber:
102
+ return 0.0
103
+ return bestConf
104
+ # else:
105
+ # self._mBestGuessProber = self._mProbers[0]
106
+ # return self._mBestGuessProber.get_confidence()
@@ -0,0 +1,62 @@
1
+ ######################## BEGIN LICENSE BLOCK ########################
2
+ # The Original Code is Mozilla Universal charset detector code.
3
+ #
4
+ # The Initial Developer of the Original Code is
5
+ # Netscape Communications Corporation.
6
+ # Portions created by the Initial Developer are Copyright (C) 2001
7
+ # the Initial Developer. All Rights Reserved.
8
+ #
9
+ # Contributor(s):
10
+ # Mark Pilgrim - port to Python
11
+ # Shy Shalom - original C code
12
+ #
13
+ # This library is free software; you can redistribute it and/or
14
+ # modify it under the terms of the GNU Lesser General Public
15
+ # License as published by the Free Software Foundation; either
16
+ # version 2.1 of the License, or (at your option) any later version.
17
+ #
18
+ # This library is distributed in the hope that it will be useful,
19
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ # Lesser General Public License for more details.
22
+ #
23
+ # You should have received a copy of the GNU Lesser General Public
24
+ # License along with this library; if not, write to the Free Software
25
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
26
+ # 02110-1301 USA
27
+ ######################### END LICENSE BLOCK #########################
28
+
29
+ from . import constants
30
+ import re
31
+
32
+
33
+ class CharSetProber:
34
+ def __init__(self):
35
+ pass
36
+
37
+ def reset(self):
38
+ self._mState = constants.eDetecting
39
+
40
+ def get_charset_name(self):
41
+ return None
42
+
43
+ def feed(self, aBuf):
44
+ pass
45
+
46
+ def get_state(self):
47
+ return self._mState
48
+
49
+ def get_confidence(self):
50
+ return 0.0
51
+
52
+ def filter_high_bit_only(self, aBuf):
53
+ aBuf = re.sub(b'([\x00-\x7F])+', b' ', aBuf)
54
+ return aBuf
55
+
56
+ def filter_without_english_letters(self, aBuf):
57
+ aBuf = re.sub(b'([A-Za-z])+', b' ', aBuf)
58
+ return aBuf
59
+
60
+ def filter_with_english_letters(self, aBuf):
61
+ # TODO
62
+ return aBuf
@@ -0,0 +1,61 @@
1
+ ######################## BEGIN LICENSE BLOCK ########################
2
+ # The Original Code is mozilla.org code.
3
+ #
4
+ # The Initial Developer of the Original Code is
5
+ # Netscape Communications Corporation.
6
+ # Portions created by the Initial Developer are Copyright (C) 1998
7
+ # the Initial Developer. All Rights Reserved.
8
+ #
9
+ # Contributor(s):
10
+ # Mark Pilgrim - port to Python
11
+ #
12
+ # This library is free software; you can redistribute it and/or
13
+ # modify it under the terms of the GNU Lesser General Public
14
+ # License as published by the Free Software Foundation; either
15
+ # version 2.1 of the License, or (at your option) any later version.
16
+ #
17
+ # This library is distributed in the hope that it will be useful,
18
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
+ # Lesser General Public License for more details.
21
+ #
22
+ # You should have received a copy of the GNU Lesser General Public
23
+ # License along with this library; if not, write to the Free Software
24
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
25
+ # 02110-1301 USA
26
+ ######################### END LICENSE BLOCK #########################
27
+
28
+ from .constants import eStart
29
+ from .compat import wrap_ord
30
+
31
+
32
+ class CodingStateMachine:
33
+ def __init__(self, sm):
34
+ self._mModel = sm
35
+ self._mCurrentBytePos = 0
36
+ self._mCurrentCharLen = 0
37
+ self.reset()
38
+
39
+ def reset(self):
40
+ self._mCurrentState = eStart
41
+
42
+ def next_state(self, c):
43
+ # for each byte we get its class
44
+ # if it is first byte, we also get byte length
45
+ # PY3K: aBuf is a byte stream, so c is an int, not a byte
46
+ byteCls = self._mModel['classTable'][wrap_ord(c)]
47
+ if self._mCurrentState == eStart:
48
+ self._mCurrentBytePos = 0
49
+ self._mCurrentCharLen = self._mModel['charLenTable'][byteCls]
50
+ # from byte's class and stateTable, we get its next state
51
+ curr_state = (self._mCurrentState * self._mModel['classFactor']
52
+ + byteCls)
53
+ self._mCurrentState = self._mModel['stateTable'][curr_state]
54
+ self._mCurrentBytePos += 1
55
+ return self._mCurrentState
56
+
57
+ def get_current_charlen(self):
58
+ return self._mCurrentCharLen
59
+
60
+ def get_coding_state_machine(self):
61
+ return self._mModel['name']
@@ -0,0 +1,34 @@
1
+ ######################## BEGIN LICENSE BLOCK ########################
2
+ # Contributor(s):
3
+ # Ian Cordasco - port to Python
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18
+ # 02110-1301 USA
19
+ ######################### END LICENSE BLOCK #########################
20
+
21
+ import sys
22
+
23
+
24
+ if sys.version_info < (3, 0):
25
+ base_str = (str, unicode)
26
+ else:
27
+ base_str = (bytes, str)
28
+
29
+
30
+ def wrap_ord(a):
31
+ if sys.version_info < (3, 0) and isinstance(a, base_str):
32
+ return ord(a)
33
+ else:
34
+ return a
@@ -0,0 +1,39 @@
1
+ ######################## BEGIN LICENSE BLOCK ########################
2
+ # The Original Code is Mozilla Universal charset detector code.
3
+ #
4
+ # The Initial Developer of the Original Code is
5
+ # Netscape Communications Corporation.
6
+ # Portions created by the Initial Developer are Copyright (C) 2001
7
+ # the Initial Developer. All Rights Reserved.
8
+ #
9
+ # Contributor(s):
10
+ # Mark Pilgrim - port to Python
11
+ # Shy Shalom - original C code
12
+ #
13
+ # This library is free software; you can redistribute it and/or
14
+ # modify it under the terms of the GNU Lesser General Public
15
+ # License as published by the Free Software Foundation; either
16
+ # version 2.1 of the License, or (at your option) any later version.
17
+ #
18
+ # This library is distributed in the hope that it will be useful,
19
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ # Lesser General Public License for more details.
22
+ #
23
+ # You should have received a copy of the GNU Lesser General Public
24
+ # License along with this library; if not, write to the Free Software
25
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
26
+ # 02110-1301 USA
27
+ ######################### END LICENSE BLOCK #########################
28
+
29
+ _debug = 0
30
+
31
+ eDetecting = 0
32
+ eFoundIt = 1
33
+ eNotMe = 2
34
+
35
+ eStart = 0
36
+ eError = 1
37
+ eItsMe = 2
38
+
39
+ SHORTCUT_THRESHOLD = 0.95