rigid 0.2.0

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 (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,190 @@
1
+ # This module contains abstractions for the input stream. You don't have to
2
+ # looks further, there are no pretty code.
3
+ #
4
+ # We define two classes here.
5
+ #
6
+ # Mark(source, line, column)
7
+ # It's just a record and its only use is producing nice error messages.
8
+ # Parser does not use it for any other purposes.
9
+ #
10
+ # Reader(source, data)
11
+ # Reader determines the encoding of `data` and converts it to unicode.
12
+ # Reader provides the following methods and attributes:
13
+ # reader.peek(length=1) - return the next `length` characters
14
+ # reader.forward(length=1) - move the current position to `length` characters.
15
+ # reader.index - the number of the current character.
16
+ # reader.line, stream.column - the line and the column of the current character.
17
+
18
+ __all__ = ['Reader', 'ReaderError']
19
+
20
+ from error import YAMLError, Mark
21
+
22
+ import codecs, re
23
+
24
+ class ReaderError(YAMLError):
25
+
26
+ def __init__(self, name, position, character, encoding, reason):
27
+ self.name = name
28
+ self.character = character
29
+ self.position = position
30
+ self.encoding = encoding
31
+ self.reason = reason
32
+
33
+ def __str__(self):
34
+ if isinstance(self.character, str):
35
+ return "'%s' codec can't decode byte #x%02x: %s\n" \
36
+ " in \"%s\", position %d" \
37
+ % (self.encoding, ord(self.character), self.reason,
38
+ self.name, self.position)
39
+ else:
40
+ return "unacceptable character #x%04x: %s\n" \
41
+ " in \"%s\", position %d" \
42
+ % (self.character, self.reason,
43
+ self.name, self.position)
44
+
45
+ class Reader(object):
46
+ # Reader:
47
+ # - determines the data encoding and converts it to unicode,
48
+ # - checks if characters are in allowed range,
49
+ # - adds '\0' to the end.
50
+
51
+ # Reader accepts
52
+ # - a `str` object,
53
+ # - a `unicode` object,
54
+ # - a file-like object with its `read` method returning `str`,
55
+ # - a file-like object with its `read` method returning `unicode`.
56
+
57
+ # Yeah, it's ugly and slow.
58
+
59
+ def __init__(self, stream):
60
+ self.name = None
61
+ self.stream = None
62
+ self.stream_pointer = 0
63
+ self.eof = True
64
+ self.buffer = u''
65
+ self.pointer = 0
66
+ self.raw_buffer = None
67
+ self.raw_decode = None
68
+ self.encoding = None
69
+ self.index = 0
70
+ self.line = 0
71
+ self.column = 0
72
+ if isinstance(stream, unicode):
73
+ self.name = "<unicode string>"
74
+ self.check_printable(stream)
75
+ self.buffer = stream+u'\0'
76
+ elif isinstance(stream, str):
77
+ self.name = "<string>"
78
+ self.raw_buffer = stream
79
+ self.determine_encoding()
80
+ else:
81
+ self.stream = stream
82
+ self.name = getattr(stream, 'name', "<file>")
83
+ self.eof = False
84
+ self.raw_buffer = ''
85
+ self.determine_encoding()
86
+
87
+ def peek(self, index=0):
88
+ try:
89
+ return self.buffer[self.pointer+index]
90
+ except IndexError:
91
+ self.update(index+1)
92
+ return self.buffer[self.pointer+index]
93
+
94
+ def prefix(self, length=1):
95
+ if self.pointer+length >= len(self.buffer):
96
+ self.update(length)
97
+ return self.buffer[self.pointer:self.pointer+length]
98
+
99
+ def forward(self, length=1):
100
+ if self.pointer+length+1 >= len(self.buffer):
101
+ self.update(length+1)
102
+ while length:
103
+ ch = self.buffer[self.pointer]
104
+ self.pointer += 1
105
+ self.index += 1
106
+ if ch in u'\n\x85\u2028\u2029' \
107
+ or (ch == u'\r' and self.buffer[self.pointer] != u'\n'):
108
+ self.line += 1
109
+ self.column = 0
110
+ elif ch != u'\uFEFF':
111
+ self.column += 1
112
+ length -= 1
113
+
114
+ def get_mark(self):
115
+ if self.stream is None:
116
+ return Mark(self.name, self.index, self.line, self.column,
117
+ self.buffer, self.pointer)
118
+ else:
119
+ return Mark(self.name, self.index, self.line, self.column,
120
+ None, None)
121
+
122
+ def determine_encoding(self):
123
+ while not self.eof and len(self.raw_buffer) < 2:
124
+ self.update_raw()
125
+ if not isinstance(self.raw_buffer, unicode):
126
+ if self.raw_buffer.startswith(codecs.BOM_UTF16_LE):
127
+ self.raw_decode = codecs.utf_16_le_decode
128
+ self.encoding = 'utf-16-le'
129
+ elif self.raw_buffer.startswith(codecs.BOM_UTF16_BE):
130
+ self.raw_decode = codecs.utf_16_be_decode
131
+ self.encoding = 'utf-16-be'
132
+ else:
133
+ self.raw_decode = codecs.utf_8_decode
134
+ self.encoding = 'utf-8'
135
+ self.update(1)
136
+
137
+ NON_PRINTABLE = re.compile(u'[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD]')
138
+ def check_printable(self, data):
139
+ match = self.NON_PRINTABLE.search(data)
140
+ if match:
141
+ character = match.group()
142
+ position = self.index+(len(self.buffer)-self.pointer)+match.start()
143
+ raise ReaderError(self.name, position, ord(character),
144
+ 'unicode', "special characters are not allowed")
145
+
146
+ def update(self, length):
147
+ if self.raw_buffer is None:
148
+ return
149
+ self.buffer = self.buffer[self.pointer:]
150
+ self.pointer = 0
151
+ while len(self.buffer) < length:
152
+ if not self.eof:
153
+ self.update_raw()
154
+ if self.raw_decode is not None:
155
+ try:
156
+ data, converted = self.raw_decode(self.raw_buffer,
157
+ 'strict', self.eof)
158
+ except UnicodeDecodeError, exc:
159
+ character = exc.object[exc.start]
160
+ if self.stream is not None:
161
+ position = self.stream_pointer-len(self.raw_buffer)+exc.start
162
+ else:
163
+ position = exc.start
164
+ raise ReaderError(self.name, position, character,
165
+ exc.encoding, exc.reason)
166
+ else:
167
+ data = self.raw_buffer
168
+ converted = len(data)
169
+ self.check_printable(data)
170
+ self.buffer += data
171
+ self.raw_buffer = self.raw_buffer[converted:]
172
+ if self.eof:
173
+ self.buffer += u'\0'
174
+ self.raw_buffer = None
175
+ break
176
+
177
+ def update_raw(self, size=1024):
178
+ data = self.stream.read(size)
179
+ if data:
180
+ self.raw_buffer += data
181
+ self.stream_pointer += len(data)
182
+ else:
183
+ self.eof = True
184
+
185
+ #try:
186
+ # import psyco
187
+ # psyco.bind(Reader)
188
+ #except ImportError:
189
+ # pass
190
+
Binary file
@@ -0,0 +1,486 @@
1
+
2
+ __all__ = ['BaseRepresenter', 'SafeRepresenter', 'Representer',
3
+ 'RepresenterError']
4
+
5
+ from error import *
6
+ from nodes import *
7
+
8
+ import datetime
9
+
10
+ import sys, copy_reg, types
11
+
12
+ class RepresenterError(YAMLError):
13
+ pass
14
+
15
+ class BaseRepresenter(object):
16
+
17
+ yaml_representers = {}
18
+ yaml_multi_representers = {}
19
+
20
+ def __init__(self, default_style=None, default_flow_style=None):
21
+ self.default_style = default_style
22
+ self.default_flow_style = default_flow_style
23
+ self.represented_objects = {}
24
+ self.object_keeper = []
25
+ self.alias_key = None
26
+
27
+ def represent(self, data):
28
+ node = self.represent_data(data)
29
+ self.serialize(node)
30
+ self.represented_objects = {}
31
+ self.object_keeper = []
32
+ self.alias_key = None
33
+
34
+ def get_classobj_bases(self, cls):
35
+ bases = [cls]
36
+ for base in cls.__bases__:
37
+ bases.extend(self.get_classobj_bases(base))
38
+ return bases
39
+
40
+ def represent_data(self, data):
41
+ if self.ignore_aliases(data):
42
+ self.alias_key = None
43
+ else:
44
+ self.alias_key = id(data)
45
+ if self.alias_key is not None:
46
+ if self.alias_key in self.represented_objects:
47
+ node = self.represented_objects[self.alias_key]
48
+ #if node is None:
49
+ # raise RepresenterError("recursive objects are not allowed: %r" % data)
50
+ return node
51
+ #self.represented_objects[alias_key] = None
52
+ self.object_keeper.append(data)
53
+ data_types = type(data).__mro__
54
+ if type(data) is types.InstanceType:
55
+ data_types = self.get_classobj_bases(data.__class__)+list(data_types)
56
+ if data_types[0] in self.yaml_representers:
57
+ node = self.yaml_representers[data_types[0]](self, data)
58
+ else:
59
+ for data_type in data_types:
60
+ if data_type in self.yaml_multi_representers:
61
+ node = self.yaml_multi_representers[data_type](self, data)
62
+ break
63
+ else:
64
+ if None in self.yaml_multi_representers:
65
+ node = self.yaml_multi_representers[None](self, data)
66
+ elif None in self.yaml_representers:
67
+ node = self.yaml_representers[None](self, data)
68
+ else:
69
+ node = ScalarNode(None, unicode(data))
70
+ #if alias_key is not None:
71
+ # self.represented_objects[alias_key] = node
72
+ return node
73
+
74
+ def add_representer(cls, data_type, representer):
75
+ if not 'yaml_representers' in cls.__dict__:
76
+ cls.yaml_representers = cls.yaml_representers.copy()
77
+ cls.yaml_representers[data_type] = representer
78
+ add_representer = classmethod(add_representer)
79
+
80
+ def add_multi_representer(cls, data_type, representer):
81
+ if not 'yaml_multi_representers' in cls.__dict__:
82
+ cls.yaml_multi_representers = cls.yaml_multi_representers.copy()
83
+ cls.yaml_multi_representers[data_type] = representer
84
+ add_multi_representer = classmethod(add_multi_representer)
85
+
86
+ def represent_scalar(self, tag, value, style=None):
87
+ if style is None:
88
+ style = self.default_style
89
+ node = ScalarNode(tag, value, style=style)
90
+ if self.alias_key is not None:
91
+ self.represented_objects[self.alias_key] = node
92
+ return node
93
+
94
+ def represent_sequence(self, tag, sequence, flow_style=None):
95
+ value = []
96
+ node = SequenceNode(tag, value, flow_style=flow_style)
97
+ if self.alias_key is not None:
98
+ self.represented_objects[self.alias_key] = node
99
+ best_style = True
100
+ for item in sequence:
101
+ node_item = self.represent_data(item)
102
+ if not (isinstance(node_item, ScalarNode) and not node_item.style):
103
+ best_style = False
104
+ value.append(node_item)
105
+ if flow_style is None:
106
+ if self.default_flow_style is not None:
107
+ node.flow_style = self.default_flow_style
108
+ else:
109
+ node.flow_style = best_style
110
+ return node
111
+
112
+ def represent_mapping(self, tag, mapping, flow_style=None):
113
+ value = []
114
+ node = MappingNode(tag, value, flow_style=flow_style)
115
+ if self.alias_key is not None:
116
+ self.represented_objects[self.alias_key] = node
117
+ best_style = True
118
+ if hasattr(mapping, 'items'):
119
+ mapping = mapping.items()
120
+ mapping.sort()
121
+ for item_key, item_value in mapping:
122
+ node_key = self.represent_data(item_key)
123
+ node_value = self.represent_data(item_value)
124
+ if not (isinstance(node_key, ScalarNode) and not node_key.style):
125
+ best_style = False
126
+ if not (isinstance(node_value, ScalarNode) and not node_value.style):
127
+ best_style = False
128
+ value.append((node_key, node_value))
129
+ if flow_style is None:
130
+ if self.default_flow_style is not None:
131
+ node.flow_style = self.default_flow_style
132
+ else:
133
+ node.flow_style = best_style
134
+ return node
135
+
136
+ def ignore_aliases(self, data):
137
+ return False
138
+
139
+ class SafeRepresenter(BaseRepresenter):
140
+
141
+ def ignore_aliases(self, data):
142
+ if data is None:
143
+ return True
144
+ if isinstance(data, tuple) and data == ():
145
+ return True
146
+ if isinstance(data, (str, unicode, bool, int, float)):
147
+ return True
148
+
149
+ def represent_none(self, data):
150
+ return self.represent_scalar(u'tag:yaml.org,2002:null',
151
+ u'null')
152
+
153
+ def represent_str(self, data):
154
+ tag = None
155
+ style = None
156
+ try:
157
+ data = unicode(data, 'ascii')
158
+ tag = u'tag:yaml.org,2002:str'
159
+ except UnicodeDecodeError:
160
+ try:
161
+ data = unicode(data, 'utf-8')
162
+ tag = u'tag:yaml.org,2002:str'
163
+ except UnicodeDecodeError:
164
+ data = data.encode('base64')
165
+ tag = u'tag:yaml.org,2002:binary'
166
+ style = '|'
167
+ return self.represent_scalar(tag, data, style=style)
168
+
169
+ def represent_unicode(self, data):
170
+ return self.represent_scalar(u'tag:yaml.org,2002:str', data)
171
+
172
+ def represent_bool(self, data):
173
+ if data:
174
+ value = u'true'
175
+ else:
176
+ value = u'false'
177
+ return self.represent_scalar(u'tag:yaml.org,2002:bool', value)
178
+
179
+ def represent_int(self, data):
180
+ return self.represent_scalar(u'tag:yaml.org,2002:int', unicode(data))
181
+
182
+ def represent_long(self, data):
183
+ return self.represent_scalar(u'tag:yaml.org,2002:int', unicode(data))
184
+
185
+ inf_value = 1e300
186
+ while repr(inf_value) != repr(inf_value*inf_value):
187
+ inf_value *= inf_value
188
+
189
+ def represent_float(self, data):
190
+ if data != data or (data == 0.0 and data == 1.0):
191
+ value = u'.nan'
192
+ elif data == self.inf_value:
193
+ value = u'.inf'
194
+ elif data == -self.inf_value:
195
+ value = u'-.inf'
196
+ else:
197
+ value = unicode(repr(data)).lower()
198
+ # Note that in some cases `repr(data)` represents a float number
199
+ # without the decimal parts. For instance:
200
+ # >>> repr(1e17)
201
+ # '1e17'
202
+ # Unfortunately, this is not a valid float representation according
203
+ # to the definition of the `!!float` tag. We fix this by adding
204
+ # '.0' before the 'e' symbol.
205
+ if u'.' not in value and u'e' in value:
206
+ value = value.replace(u'e', u'.0e', 1)
207
+ return self.represent_scalar(u'tag:yaml.org,2002:float', value)
208
+
209
+ def represent_list(self, data):
210
+ #pairs = (len(data) > 0 and isinstance(data, list))
211
+ #if pairs:
212
+ # for item in data:
213
+ # if not isinstance(item, tuple) or len(item) != 2:
214
+ # pairs = False
215
+ # break
216
+ #if not pairs:
217
+ return self.represent_sequence(u'tag:yaml.org,2002:seq', data)
218
+ #value = []
219
+ #for item_key, item_value in data:
220
+ # value.append(self.represent_mapping(u'tag:yaml.org,2002:map',
221
+ # [(item_key, item_value)]))
222
+ #return SequenceNode(u'tag:yaml.org,2002:pairs', value)
223
+
224
+ def represent_dict(self, data):
225
+ return self.represent_mapping(u'tag:yaml.org,2002:map', data)
226
+
227
+ def represent_set(self, data):
228
+ value = {}
229
+ for key in data:
230
+ value[key] = None
231
+ return self.represent_mapping(u'tag:yaml.org,2002:set', value)
232
+
233
+ def represent_date(self, data):
234
+ value = unicode(data.isoformat())
235
+ return self.represent_scalar(u'tag:yaml.org,2002:timestamp', value)
236
+
237
+ def represent_datetime(self, data):
238
+ value = unicode(data.isoformat(' '))
239
+ return self.represent_scalar(u'tag:yaml.org,2002:timestamp', value)
240
+
241
+ def represent_yaml_object(self, tag, data, cls, flow_style=None):
242
+ if hasattr(data, '__getstate__'):
243
+ state = data.__getstate__()
244
+ else:
245
+ state = data.__dict__.copy()
246
+ return self.represent_mapping(tag, state, flow_style=flow_style)
247
+
248
+ def represent_undefined(self, data):
249
+ raise RepresenterError("cannot represent an object: %s" % data)
250
+
251
+ SafeRepresenter.add_representer(type(None),
252
+ SafeRepresenter.represent_none)
253
+
254
+ SafeRepresenter.add_representer(str,
255
+ SafeRepresenter.represent_str)
256
+
257
+ SafeRepresenter.add_representer(unicode,
258
+ SafeRepresenter.represent_unicode)
259
+
260
+ SafeRepresenter.add_representer(bool,
261
+ SafeRepresenter.represent_bool)
262
+
263
+ SafeRepresenter.add_representer(int,
264
+ SafeRepresenter.represent_int)
265
+
266
+ SafeRepresenter.add_representer(long,
267
+ SafeRepresenter.represent_long)
268
+
269
+ SafeRepresenter.add_representer(float,
270
+ SafeRepresenter.represent_float)
271
+
272
+ SafeRepresenter.add_representer(list,
273
+ SafeRepresenter.represent_list)
274
+
275
+ SafeRepresenter.add_representer(tuple,
276
+ SafeRepresenter.represent_list)
277
+
278
+ SafeRepresenter.add_representer(dict,
279
+ SafeRepresenter.represent_dict)
280
+
281
+ SafeRepresenter.add_representer(set,
282
+ SafeRepresenter.represent_set)
283
+
284
+ SafeRepresenter.add_representer(datetime.date,
285
+ SafeRepresenter.represent_date)
286
+
287
+ SafeRepresenter.add_representer(datetime.datetime,
288
+ SafeRepresenter.represent_datetime)
289
+
290
+ SafeRepresenter.add_representer(None,
291
+ SafeRepresenter.represent_undefined)
292
+
293
+ class Representer(SafeRepresenter):
294
+
295
+ def represent_str(self, data):
296
+ tag = None
297
+ style = None
298
+ try:
299
+ data = unicode(data, 'ascii')
300
+ tag = u'tag:yaml.org,2002:str'
301
+ except UnicodeDecodeError:
302
+ try:
303
+ data = unicode(data, 'utf-8')
304
+ tag = u'tag:yaml.org,2002:python/str'
305
+ except UnicodeDecodeError:
306
+ data = data.encode('base64')
307
+ tag = u'tag:yaml.org,2002:binary'
308
+ style = '|'
309
+ return self.represent_scalar(tag, data, style=style)
310
+
311
+ def represent_unicode(self, data):
312
+ tag = None
313
+ try:
314
+ data.encode('ascii')
315
+ tag = u'tag:yaml.org,2002:python/unicode'
316
+ except UnicodeEncodeError:
317
+ tag = u'tag:yaml.org,2002:str'
318
+ return self.represent_scalar(tag, data)
319
+
320
+ def represent_long(self, data):
321
+ tag = u'tag:yaml.org,2002:int'
322
+ if int(data) is not data:
323
+ tag = u'tag:yaml.org,2002:python/long'
324
+ return self.represent_scalar(tag, unicode(data))
325
+
326
+ def represent_complex(self, data):
327
+ if data.imag == 0.0:
328
+ data = u'%r' % data.real
329
+ elif data.real == 0.0:
330
+ data = u'%rj' % data.imag
331
+ elif data.imag > 0:
332
+ data = u'%r+%rj' % (data.real, data.imag)
333
+ else:
334
+ data = u'%r%rj' % (data.real, data.imag)
335
+ return self.represent_scalar(u'tag:yaml.org,2002:python/complex', data)
336
+
337
+ def represent_tuple(self, data):
338
+ return self.represent_sequence(u'tag:yaml.org,2002:python/tuple', data)
339
+
340
+ def represent_name(self, data):
341
+ name = u'%s.%s' % (data.__module__, data.__name__)
342
+ return self.represent_scalar(u'tag:yaml.org,2002:python/name:'+name, u'')
343
+
344
+ def represent_module(self, data):
345
+ return self.represent_scalar(
346
+ u'tag:yaml.org,2002:python/module:'+data.__name__, u'')
347
+
348
+ def represent_instance(self, data):
349
+ # For instances of classic classes, we use __getinitargs__ and
350
+ # __getstate__ to serialize the data.
351
+
352
+ # If data.__getinitargs__ exists, the object must be reconstructed by
353
+ # calling cls(**args), where args is a tuple returned by
354
+ # __getinitargs__. Otherwise, the cls.__init__ method should never be
355
+ # called and the class instance is created by instantiating a trivial
356
+ # class and assigning to the instance's __class__ variable.
357
+
358
+ # If data.__getstate__ exists, it returns the state of the object.
359
+ # Otherwise, the state of the object is data.__dict__.
360
+
361
+ # We produce either a !!python/object or !!python/object/new node.
362
+ # If data.__getinitargs__ does not exist and state is a dictionary, we
363
+ # produce a !!python/object node . Otherwise we produce a
364
+ # !!python/object/new node.
365
+
366
+ cls = data.__class__
367
+ class_name = u'%s.%s' % (cls.__module__, cls.__name__)
368
+ args = None
369
+ state = None
370
+ if hasattr(data, '__getinitargs__'):
371
+ args = list(data.__getinitargs__())
372
+ if hasattr(data, '__getstate__'):
373
+ state = data.__getstate__()
374
+ else:
375
+ state = data.__dict__
376
+ if args is None and isinstance(state, dict):
377
+ return self.represent_mapping(
378
+ u'tag:yaml.org,2002:python/object:'+class_name, state)
379
+ if isinstance(state, dict) and not state:
380
+ return self.represent_sequence(
381
+ u'tag:yaml.org,2002:python/object/new:'+class_name, args)
382
+ value = {}
383
+ if args:
384
+ value['args'] = args
385
+ value['state'] = state
386
+ return self.represent_mapping(
387
+ u'tag:yaml.org,2002:python/object/new:'+class_name, value)
388
+
389
+ def represent_object(self, data):
390
+ # We use __reduce__ API to save the data. data.__reduce__ returns
391
+ # a tuple of length 2-5:
392
+ # (function, args, state, listitems, dictitems)
393
+
394
+ # For reconstructing, we calls function(*args), then set its state,
395
+ # listitems, and dictitems if they are not None.
396
+
397
+ # A special case is when function.__name__ == '__newobj__'. In this
398
+ # case we create the object with args[0].__new__(*args).
399
+
400
+ # Another special case is when __reduce__ returns a string - we don't
401
+ # support it.
402
+
403
+ # We produce a !!python/object, !!python/object/new or
404
+ # !!python/object/apply node.
405
+
406
+ cls = type(data)
407
+ if cls in copy_reg.dispatch_table:
408
+ reduce = copy_reg.dispatch_table[cls](data)
409
+ elif hasattr(data, '__reduce_ex__'):
410
+ reduce = data.__reduce_ex__(2)
411
+ elif hasattr(data, '__reduce__'):
412
+ reduce = data.__reduce__()
413
+ else:
414
+ raise RepresenterError("cannot represent object: %r" % data)
415
+ reduce = (list(reduce)+[None]*5)[:5]
416
+ function, args, state, listitems, dictitems = reduce
417
+ args = list(args)
418
+ if state is None:
419
+ state = {}
420
+ if listitems is not None:
421
+ listitems = list(listitems)
422
+ if dictitems is not None:
423
+ dictitems = dict(dictitems)
424
+ if function.__name__ == '__newobj__':
425
+ function = args[0]
426
+ args = args[1:]
427
+ tag = u'tag:yaml.org,2002:python/object/new:'
428
+ newobj = True
429
+ else:
430
+ tag = u'tag:yaml.org,2002:python/object/apply:'
431
+ newobj = False
432
+ function_name = u'%s.%s' % (function.__module__, function.__name__)
433
+ if not args and not listitems and not dictitems \
434
+ and isinstance(state, dict) and newobj:
435
+ return self.represent_mapping(
436
+ u'tag:yaml.org,2002:python/object:'+function_name, state)
437
+ if not listitems and not dictitems \
438
+ and isinstance(state, dict) and not state:
439
+ return self.represent_sequence(tag+function_name, args)
440
+ value = {}
441
+ if args:
442
+ value['args'] = args
443
+ if state or not isinstance(state, dict):
444
+ value['state'] = state
445
+ if listitems:
446
+ value['listitems'] = listitems
447
+ if dictitems:
448
+ value['dictitems'] = dictitems
449
+ return self.represent_mapping(tag+function_name, value)
450
+
451
+ Representer.add_representer(str,
452
+ Representer.represent_str)
453
+
454
+ Representer.add_representer(unicode,
455
+ Representer.represent_unicode)
456
+
457
+ Representer.add_representer(long,
458
+ Representer.represent_long)
459
+
460
+ Representer.add_representer(complex,
461
+ Representer.represent_complex)
462
+
463
+ Representer.add_representer(tuple,
464
+ Representer.represent_tuple)
465
+
466
+ Representer.add_representer(type,
467
+ Representer.represent_name)
468
+
469
+ Representer.add_representer(types.ClassType,
470
+ Representer.represent_name)
471
+
472
+ Representer.add_representer(types.FunctionType,
473
+ Representer.represent_name)
474
+
475
+ Representer.add_representer(types.BuiltinFunctionType,
476
+ Representer.represent_name)
477
+
478
+ Representer.add_representer(types.ModuleType,
479
+ Representer.represent_module)
480
+
481
+ Representer.add_multi_representer(types.InstanceType,
482
+ Representer.represent_instance)
483
+
484
+ Representer.add_multi_representer(object,
485
+ Representer.represent_object)
486
+
Binary file