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,589 @@
1
+
2
+ # The following YAML grammar is LL(1) and is parsed by a recursive descent
3
+ # parser.
4
+ #
5
+ # stream ::= STREAM-START implicit_document? explicit_document* STREAM-END
6
+ # implicit_document ::= block_node DOCUMENT-END*
7
+ # explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
8
+ # block_node_or_indentless_sequence ::=
9
+ # ALIAS
10
+ # | properties (block_content | indentless_block_sequence)?
11
+ # | block_content
12
+ # | indentless_block_sequence
13
+ # block_node ::= ALIAS
14
+ # | properties block_content?
15
+ # | block_content
16
+ # flow_node ::= ALIAS
17
+ # | properties flow_content?
18
+ # | flow_content
19
+ # properties ::= TAG ANCHOR? | ANCHOR TAG?
20
+ # block_content ::= block_collection | flow_collection | SCALAR
21
+ # flow_content ::= flow_collection | SCALAR
22
+ # block_collection ::= block_sequence | block_mapping
23
+ # flow_collection ::= flow_sequence | flow_mapping
24
+ # block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END
25
+ # indentless_sequence ::= (BLOCK-ENTRY block_node?)+
26
+ # block_mapping ::= BLOCK-MAPPING_START
27
+ # ((KEY block_node_or_indentless_sequence?)?
28
+ # (VALUE block_node_or_indentless_sequence?)?)*
29
+ # BLOCK-END
30
+ # flow_sequence ::= FLOW-SEQUENCE-START
31
+ # (flow_sequence_entry FLOW-ENTRY)*
32
+ # flow_sequence_entry?
33
+ # FLOW-SEQUENCE-END
34
+ # flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
35
+ # flow_mapping ::= FLOW-MAPPING-START
36
+ # (flow_mapping_entry FLOW-ENTRY)*
37
+ # flow_mapping_entry?
38
+ # FLOW-MAPPING-END
39
+ # flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
40
+ #
41
+ # FIRST sets:
42
+ #
43
+ # stream: { STREAM-START }
44
+ # explicit_document: { DIRECTIVE DOCUMENT-START }
45
+ # implicit_document: FIRST(block_node)
46
+ # block_node: { ALIAS TAG ANCHOR SCALAR BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START }
47
+ # flow_node: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START }
48
+ # block_content: { BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START SCALAR }
49
+ # flow_content: { FLOW-SEQUENCE-START FLOW-MAPPING-START SCALAR }
50
+ # block_collection: { BLOCK-SEQUENCE-START BLOCK-MAPPING-START }
51
+ # flow_collection: { FLOW-SEQUENCE-START FLOW-MAPPING-START }
52
+ # block_sequence: { BLOCK-SEQUENCE-START }
53
+ # block_mapping: { BLOCK-MAPPING-START }
54
+ # block_node_or_indentless_sequence: { ALIAS ANCHOR TAG SCALAR BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START BLOCK-ENTRY }
55
+ # indentless_sequence: { ENTRY }
56
+ # flow_collection: { FLOW-SEQUENCE-START FLOW-MAPPING-START }
57
+ # flow_sequence: { FLOW-SEQUENCE-START }
58
+ # flow_mapping: { FLOW-MAPPING-START }
59
+ # flow_sequence_entry: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START KEY }
60
+ # flow_mapping_entry: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START KEY }
61
+
62
+ __all__ = ['Parser', 'ParserError']
63
+
64
+ from error import MarkedYAMLError
65
+ from tokens import *
66
+ from events import *
67
+ from scanner import *
68
+
69
+ class ParserError(MarkedYAMLError):
70
+ pass
71
+
72
+ class Parser(object):
73
+ # Since writing a recursive-descendant parser is a straightforward task, we
74
+ # do not give many comments here.
75
+
76
+ DEFAULT_TAGS = {
77
+ u'!': u'!',
78
+ u'!!': u'tag:yaml.org,2002:',
79
+ }
80
+
81
+ def __init__(self):
82
+ self.current_event = None
83
+ self.yaml_version = None
84
+ self.tag_handles = {}
85
+ self.states = []
86
+ self.marks = []
87
+ self.state = self.parse_stream_start
88
+
89
+ def dispose(self):
90
+ # Reset the state attributes (to clear self-references)
91
+ self.states = []
92
+ self.state = None
93
+
94
+ def check_event(self, *choices):
95
+ # Check the type of the next event.
96
+ if self.current_event is None:
97
+ if self.state:
98
+ self.current_event = self.state()
99
+ if self.current_event is not None:
100
+ if not choices:
101
+ return True
102
+ for choice in choices:
103
+ if isinstance(self.current_event, choice):
104
+ return True
105
+ return False
106
+
107
+ def peek_event(self):
108
+ # Get the next event.
109
+ if self.current_event is None:
110
+ if self.state:
111
+ self.current_event = self.state()
112
+ return self.current_event
113
+
114
+ def get_event(self):
115
+ # Get the next event and proceed further.
116
+ if self.current_event is None:
117
+ if self.state:
118
+ self.current_event = self.state()
119
+ value = self.current_event
120
+ self.current_event = None
121
+ return value
122
+
123
+ # stream ::= STREAM-START implicit_document? explicit_document* STREAM-END
124
+ # implicit_document ::= block_node DOCUMENT-END*
125
+ # explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
126
+
127
+ def parse_stream_start(self):
128
+
129
+ # Parse the stream start.
130
+ token = self.get_token()
131
+ event = StreamStartEvent(token.start_mark, token.end_mark,
132
+ encoding=token.encoding)
133
+
134
+ # Prepare the next state.
135
+ self.state = self.parse_implicit_document_start
136
+
137
+ return event
138
+
139
+ def parse_implicit_document_start(self):
140
+
141
+ # Parse an implicit document.
142
+ if not self.check_token(DirectiveToken, DocumentStartToken,
143
+ StreamEndToken):
144
+ self.tag_handles = self.DEFAULT_TAGS
145
+ token = self.peek_token()
146
+ start_mark = end_mark = token.start_mark
147
+ event = DocumentStartEvent(start_mark, end_mark,
148
+ explicit=False)
149
+
150
+ # Prepare the next state.
151
+ self.states.append(self.parse_document_end)
152
+ self.state = self.parse_block_node
153
+
154
+ return event
155
+
156
+ else:
157
+ return self.parse_document_start()
158
+
159
+ def parse_document_start(self):
160
+
161
+ # Parse any extra document end indicators.
162
+ while self.check_token(DocumentEndToken):
163
+ self.get_token()
164
+
165
+ # Parse an explicit document.
166
+ if not self.check_token(StreamEndToken):
167
+ token = self.peek_token()
168
+ start_mark = token.start_mark
169
+ version, tags = self.process_directives()
170
+ if not self.check_token(DocumentStartToken):
171
+ raise ParserError(None, None,
172
+ "expected '<document start>', but found %r"
173
+ % self.peek_token().id,
174
+ self.peek_token().start_mark)
175
+ token = self.get_token()
176
+ end_mark = token.end_mark
177
+ event = DocumentStartEvent(start_mark, end_mark,
178
+ explicit=True, version=version, tags=tags)
179
+ self.states.append(self.parse_document_end)
180
+ self.state = self.parse_document_content
181
+ else:
182
+ # Parse the end of the stream.
183
+ token = self.get_token()
184
+ event = StreamEndEvent(token.start_mark, token.end_mark)
185
+ assert not self.states
186
+ assert not self.marks
187
+ self.state = None
188
+ return event
189
+
190
+ def parse_document_end(self):
191
+
192
+ # Parse the document end.
193
+ token = self.peek_token()
194
+ start_mark = end_mark = token.start_mark
195
+ explicit = False
196
+ if self.check_token(DocumentEndToken):
197
+ token = self.get_token()
198
+ end_mark = token.end_mark
199
+ explicit = True
200
+ event = DocumentEndEvent(start_mark, end_mark,
201
+ explicit=explicit)
202
+
203
+ # Prepare the next state.
204
+ self.state = self.parse_document_start
205
+
206
+ return event
207
+
208
+ def parse_document_content(self):
209
+ if self.check_token(DirectiveToken,
210
+ DocumentStartToken, DocumentEndToken, StreamEndToken):
211
+ event = self.process_empty_scalar(self.peek_token().start_mark)
212
+ self.state = self.states.pop()
213
+ return event
214
+ else:
215
+ return self.parse_block_node()
216
+
217
+ def process_directives(self):
218
+ self.yaml_version = None
219
+ self.tag_handles = {}
220
+ while self.check_token(DirectiveToken):
221
+ token = self.get_token()
222
+ if token.name == u'YAML':
223
+ if self.yaml_version is not None:
224
+ raise ParserError(None, None,
225
+ "found duplicate YAML directive", token.start_mark)
226
+ major, minor = token.value
227
+ if major != 1:
228
+ raise ParserError(None, None,
229
+ "found incompatible YAML document (version 1.* is required)",
230
+ token.start_mark)
231
+ self.yaml_version = token.value
232
+ elif token.name == u'TAG':
233
+ handle, prefix = token.value
234
+ if handle in self.tag_handles:
235
+ raise ParserError(None, None,
236
+ "duplicate tag handle %r" % handle.encode('utf-8'),
237
+ token.start_mark)
238
+ self.tag_handles[handle] = prefix
239
+ if self.tag_handles:
240
+ value = self.yaml_version, self.tag_handles.copy()
241
+ else:
242
+ value = self.yaml_version, None
243
+ for key in self.DEFAULT_TAGS:
244
+ if key not in self.tag_handles:
245
+ self.tag_handles[key] = self.DEFAULT_TAGS[key]
246
+ return value
247
+
248
+ # block_node_or_indentless_sequence ::= ALIAS
249
+ # | properties (block_content | indentless_block_sequence)?
250
+ # | block_content
251
+ # | indentless_block_sequence
252
+ # block_node ::= ALIAS
253
+ # | properties block_content?
254
+ # | block_content
255
+ # flow_node ::= ALIAS
256
+ # | properties flow_content?
257
+ # | flow_content
258
+ # properties ::= TAG ANCHOR? | ANCHOR TAG?
259
+ # block_content ::= block_collection | flow_collection | SCALAR
260
+ # flow_content ::= flow_collection | SCALAR
261
+ # block_collection ::= block_sequence | block_mapping
262
+ # flow_collection ::= flow_sequence | flow_mapping
263
+
264
+ def parse_block_node(self):
265
+ return self.parse_node(block=True)
266
+
267
+ def parse_flow_node(self):
268
+ return self.parse_node()
269
+
270
+ def parse_block_node_or_indentless_sequence(self):
271
+ return self.parse_node(block=True, indentless_sequence=True)
272
+
273
+ def parse_node(self, block=False, indentless_sequence=False):
274
+ if self.check_token(AliasToken):
275
+ token = self.get_token()
276
+ event = AliasEvent(token.value, token.start_mark, token.end_mark)
277
+ self.state = self.states.pop()
278
+ else:
279
+ anchor = None
280
+ tag = None
281
+ start_mark = end_mark = tag_mark = None
282
+ if self.check_token(AnchorToken):
283
+ token = self.get_token()
284
+ start_mark = token.start_mark
285
+ end_mark = token.end_mark
286
+ anchor = token.value
287
+ if self.check_token(TagToken):
288
+ token = self.get_token()
289
+ tag_mark = token.start_mark
290
+ end_mark = token.end_mark
291
+ tag = token.value
292
+ elif self.check_token(TagToken):
293
+ token = self.get_token()
294
+ start_mark = tag_mark = token.start_mark
295
+ end_mark = token.end_mark
296
+ tag = token.value
297
+ if self.check_token(AnchorToken):
298
+ token = self.get_token()
299
+ end_mark = token.end_mark
300
+ anchor = token.value
301
+ if tag is not None:
302
+ handle, suffix = tag
303
+ if handle is not None:
304
+ if handle not in self.tag_handles:
305
+ raise ParserError("while parsing a node", start_mark,
306
+ "found undefined tag handle %r" % handle.encode('utf-8'),
307
+ tag_mark)
308
+ tag = self.tag_handles[handle]+suffix
309
+ else:
310
+ tag = suffix
311
+ #if tag == u'!':
312
+ # raise ParserError("while parsing a node", start_mark,
313
+ # "found non-specific tag '!'", tag_mark,
314
+ # "Please check 'http://pyyaml.org/wiki/YAMLNonSpecificTag' and share your opinion.")
315
+ if start_mark is None:
316
+ start_mark = end_mark = self.peek_token().start_mark
317
+ event = None
318
+ implicit = (tag is None or tag == u'!')
319
+ if indentless_sequence and self.check_token(BlockEntryToken):
320
+ end_mark = self.peek_token().end_mark
321
+ event = SequenceStartEvent(anchor, tag, implicit,
322
+ start_mark, end_mark)
323
+ self.state = self.parse_indentless_sequence_entry
324
+ else:
325
+ if self.check_token(ScalarToken):
326
+ token = self.get_token()
327
+ end_mark = token.end_mark
328
+ if (token.plain and tag is None) or tag == u'!':
329
+ implicit = (True, False)
330
+ elif tag is None:
331
+ implicit = (False, True)
332
+ else:
333
+ implicit = (False, False)
334
+ event = ScalarEvent(anchor, tag, implicit, token.value,
335
+ start_mark, end_mark, style=token.style)
336
+ self.state = self.states.pop()
337
+ elif self.check_token(FlowSequenceStartToken):
338
+ end_mark = self.peek_token().end_mark
339
+ event = SequenceStartEvent(anchor, tag, implicit,
340
+ start_mark, end_mark, flow_style=True)
341
+ self.state = self.parse_flow_sequence_first_entry
342
+ elif self.check_token(FlowMappingStartToken):
343
+ end_mark = self.peek_token().end_mark
344
+ event = MappingStartEvent(anchor, tag, implicit,
345
+ start_mark, end_mark, flow_style=True)
346
+ self.state = self.parse_flow_mapping_first_key
347
+ elif block and self.check_token(BlockSequenceStartToken):
348
+ end_mark = self.peek_token().start_mark
349
+ event = SequenceStartEvent(anchor, tag, implicit,
350
+ start_mark, end_mark, flow_style=False)
351
+ self.state = self.parse_block_sequence_first_entry
352
+ elif block and self.check_token(BlockMappingStartToken):
353
+ end_mark = self.peek_token().start_mark
354
+ event = MappingStartEvent(anchor, tag, implicit,
355
+ start_mark, end_mark, flow_style=False)
356
+ self.state = self.parse_block_mapping_first_key
357
+ elif anchor is not None or tag is not None:
358
+ # Empty scalars are allowed even if a tag or an anchor is
359
+ # specified.
360
+ event = ScalarEvent(anchor, tag, (implicit, False), u'',
361
+ start_mark, end_mark)
362
+ self.state = self.states.pop()
363
+ else:
364
+ if block:
365
+ node = 'block'
366
+ else:
367
+ node = 'flow'
368
+ token = self.peek_token()
369
+ raise ParserError("while parsing a %s node" % node, start_mark,
370
+ "expected the node content, but found %r" % token.id,
371
+ token.start_mark)
372
+ return event
373
+
374
+ # block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END
375
+
376
+ def parse_block_sequence_first_entry(self):
377
+ token = self.get_token()
378
+ self.marks.append(token.start_mark)
379
+ return self.parse_block_sequence_entry()
380
+
381
+ def parse_block_sequence_entry(self):
382
+ if self.check_token(BlockEntryToken):
383
+ token = self.get_token()
384
+ if not self.check_token(BlockEntryToken, BlockEndToken):
385
+ self.states.append(self.parse_block_sequence_entry)
386
+ return self.parse_block_node()
387
+ else:
388
+ self.state = self.parse_block_sequence_entry
389
+ return self.process_empty_scalar(token.end_mark)
390
+ if not self.check_token(BlockEndToken):
391
+ token = self.peek_token()
392
+ raise ParserError("while parsing a block collection", self.marks[-1],
393
+ "expected <block end>, but found %r" % token.id, token.start_mark)
394
+ token = self.get_token()
395
+ event = SequenceEndEvent(token.start_mark, token.end_mark)
396
+ self.state = self.states.pop()
397
+ self.marks.pop()
398
+ return event
399
+
400
+ # indentless_sequence ::= (BLOCK-ENTRY block_node?)+
401
+
402
+ def parse_indentless_sequence_entry(self):
403
+ if self.check_token(BlockEntryToken):
404
+ token = self.get_token()
405
+ if not self.check_token(BlockEntryToken,
406
+ KeyToken, ValueToken, BlockEndToken):
407
+ self.states.append(self.parse_indentless_sequence_entry)
408
+ return self.parse_block_node()
409
+ else:
410
+ self.state = self.parse_indentless_sequence_entry
411
+ return self.process_empty_scalar(token.end_mark)
412
+ token = self.peek_token()
413
+ event = SequenceEndEvent(token.start_mark, token.start_mark)
414
+ self.state = self.states.pop()
415
+ return event
416
+
417
+ # block_mapping ::= BLOCK-MAPPING_START
418
+ # ((KEY block_node_or_indentless_sequence?)?
419
+ # (VALUE block_node_or_indentless_sequence?)?)*
420
+ # BLOCK-END
421
+
422
+ def parse_block_mapping_first_key(self):
423
+ token = self.get_token()
424
+ self.marks.append(token.start_mark)
425
+ return self.parse_block_mapping_key()
426
+
427
+ def parse_block_mapping_key(self):
428
+ if self.check_token(KeyToken):
429
+ token = self.get_token()
430
+ if not self.check_token(KeyToken, ValueToken, BlockEndToken):
431
+ self.states.append(self.parse_block_mapping_value)
432
+ return self.parse_block_node_or_indentless_sequence()
433
+ else:
434
+ self.state = self.parse_block_mapping_value
435
+ return self.process_empty_scalar(token.end_mark)
436
+ if not self.check_token(BlockEndToken):
437
+ token = self.peek_token()
438
+ raise ParserError("while parsing a block mapping", self.marks[-1],
439
+ "expected <block end>, but found %r" % token.id, token.start_mark)
440
+ token = self.get_token()
441
+ event = MappingEndEvent(token.start_mark, token.end_mark)
442
+ self.state = self.states.pop()
443
+ self.marks.pop()
444
+ return event
445
+
446
+ def parse_block_mapping_value(self):
447
+ if self.check_token(ValueToken):
448
+ token = self.get_token()
449
+ if not self.check_token(KeyToken, ValueToken, BlockEndToken):
450
+ self.states.append(self.parse_block_mapping_key)
451
+ return self.parse_block_node_or_indentless_sequence()
452
+ else:
453
+ self.state = self.parse_block_mapping_key
454
+ return self.process_empty_scalar(token.end_mark)
455
+ else:
456
+ self.state = self.parse_block_mapping_key
457
+ token = self.peek_token()
458
+ return self.process_empty_scalar(token.start_mark)
459
+
460
+ # flow_sequence ::= FLOW-SEQUENCE-START
461
+ # (flow_sequence_entry FLOW-ENTRY)*
462
+ # flow_sequence_entry?
463
+ # FLOW-SEQUENCE-END
464
+ # flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
465
+ #
466
+ # Note that while production rules for both flow_sequence_entry and
467
+ # flow_mapping_entry are equal, their interpretations are different.
468
+ # For `flow_sequence_entry`, the part `KEY flow_node? (VALUE flow_node?)?`
469
+ # generate an inline mapping (set syntax).
470
+
471
+ def parse_flow_sequence_first_entry(self):
472
+ token = self.get_token()
473
+ self.marks.append(token.start_mark)
474
+ return self.parse_flow_sequence_entry(first=True)
475
+
476
+ def parse_flow_sequence_entry(self, first=False):
477
+ if not self.check_token(FlowSequenceEndToken):
478
+ if not first:
479
+ if self.check_token(FlowEntryToken):
480
+ self.get_token()
481
+ else:
482
+ token = self.peek_token()
483
+ raise ParserError("while parsing a flow sequence", self.marks[-1],
484
+ "expected ',' or ']', but got %r" % token.id, token.start_mark)
485
+
486
+ if self.check_token(KeyToken):
487
+ token = self.peek_token()
488
+ event = MappingStartEvent(None, None, True,
489
+ token.start_mark, token.end_mark,
490
+ flow_style=True)
491
+ self.state = self.parse_flow_sequence_entry_mapping_key
492
+ return event
493
+ elif not self.check_token(FlowSequenceEndToken):
494
+ self.states.append(self.parse_flow_sequence_entry)
495
+ return self.parse_flow_node()
496
+ token = self.get_token()
497
+ event = SequenceEndEvent(token.start_mark, token.end_mark)
498
+ self.state = self.states.pop()
499
+ self.marks.pop()
500
+ return event
501
+
502
+ def parse_flow_sequence_entry_mapping_key(self):
503
+ token = self.get_token()
504
+ if not self.check_token(ValueToken,
505
+ FlowEntryToken, FlowSequenceEndToken):
506
+ self.states.append(self.parse_flow_sequence_entry_mapping_value)
507
+ return self.parse_flow_node()
508
+ else:
509
+ self.state = self.parse_flow_sequence_entry_mapping_value
510
+ return self.process_empty_scalar(token.end_mark)
511
+
512
+ def parse_flow_sequence_entry_mapping_value(self):
513
+ if self.check_token(ValueToken):
514
+ token = self.get_token()
515
+ if not self.check_token(FlowEntryToken, FlowSequenceEndToken):
516
+ self.states.append(self.parse_flow_sequence_entry_mapping_end)
517
+ return self.parse_flow_node()
518
+ else:
519
+ self.state = self.parse_flow_sequence_entry_mapping_end
520
+ return self.process_empty_scalar(token.end_mark)
521
+ else:
522
+ self.state = self.parse_flow_sequence_entry_mapping_end
523
+ token = self.peek_token()
524
+ return self.process_empty_scalar(token.start_mark)
525
+
526
+ def parse_flow_sequence_entry_mapping_end(self):
527
+ self.state = self.parse_flow_sequence_entry
528
+ token = self.peek_token()
529
+ return MappingEndEvent(token.start_mark, token.start_mark)
530
+
531
+ # flow_mapping ::= FLOW-MAPPING-START
532
+ # (flow_mapping_entry FLOW-ENTRY)*
533
+ # flow_mapping_entry?
534
+ # FLOW-MAPPING-END
535
+ # flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
536
+
537
+ def parse_flow_mapping_first_key(self):
538
+ token = self.get_token()
539
+ self.marks.append(token.start_mark)
540
+ return self.parse_flow_mapping_key(first=True)
541
+
542
+ def parse_flow_mapping_key(self, first=False):
543
+ if not self.check_token(FlowMappingEndToken):
544
+ if not first:
545
+ if self.check_token(FlowEntryToken):
546
+ self.get_token()
547
+ else:
548
+ token = self.peek_token()
549
+ raise ParserError("while parsing a flow mapping", self.marks[-1],
550
+ "expected ',' or '}', but got %r" % token.id, token.start_mark)
551
+ if self.check_token(KeyToken):
552
+ token = self.get_token()
553
+ if not self.check_token(ValueToken,
554
+ FlowEntryToken, FlowMappingEndToken):
555
+ self.states.append(self.parse_flow_mapping_value)
556
+ return self.parse_flow_node()
557
+ else:
558
+ self.state = self.parse_flow_mapping_value
559
+ return self.process_empty_scalar(token.end_mark)
560
+ elif not self.check_token(FlowMappingEndToken):
561
+ self.states.append(self.parse_flow_mapping_empty_value)
562
+ return self.parse_flow_node()
563
+ token = self.get_token()
564
+ event = MappingEndEvent(token.start_mark, token.end_mark)
565
+ self.state = self.states.pop()
566
+ self.marks.pop()
567
+ return event
568
+
569
+ def parse_flow_mapping_value(self):
570
+ if self.check_token(ValueToken):
571
+ token = self.get_token()
572
+ if not self.check_token(FlowEntryToken, FlowMappingEndToken):
573
+ self.states.append(self.parse_flow_mapping_key)
574
+ return self.parse_flow_node()
575
+ else:
576
+ self.state = self.parse_flow_mapping_key
577
+ return self.process_empty_scalar(token.end_mark)
578
+ else:
579
+ self.state = self.parse_flow_mapping_key
580
+ token = self.peek_token()
581
+ return self.process_empty_scalar(token.start_mark)
582
+
583
+ def parse_flow_mapping_empty_value(self):
584
+ self.state = self.parse_flow_mapping_key
585
+ return self.process_empty_scalar(self.peek_token().start_mark)
586
+
587
+ def process_empty_scalar(self, mark):
588
+ return ScalarEvent(None, None, (True, False), u'', mark, mark)
589
+
Binary file