com.googler.python 1.0.7 → 1.0.9

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 (354) hide show
  1. package/package.json +4 -2
  2. package/python3.4.2/lib/python3.4/site-packages/pip/__init__.py +1 -277
  3. package/python3.4.2/lib/python3.4/site-packages/pip/__main__.py +19 -7
  4. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/__init__.py +246 -0
  5. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/basecommand.py +373 -0
  6. package/python3.4.2/lib/python3.4/site-packages/pip/{baseparser.py → _internal/baseparser.py} +240 -224
  7. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/build_env.py +92 -0
  8. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/cache.py +202 -0
  9. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/cmdoptions.py +609 -0
  10. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/__init__.py +79 -0
  11. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/check.py +42 -0
  12. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/completion.py +94 -0
  13. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/configuration.py +227 -0
  14. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/download.py +233 -0
  15. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/freeze.py +96 -0
  16. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/hash.py +57 -0
  17. package/python3.4.2/lib/python3.4/site-packages/pip/{commands → _internal/commands}/help.py +36 -33
  18. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/install.py +477 -0
  19. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/list.py +343 -0
  20. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/search.py +135 -0
  21. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/show.py +164 -0
  22. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/uninstall.py +71 -0
  23. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/wheel.py +179 -0
  24. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/compat.py +235 -0
  25. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/configuration.py +378 -0
  26. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/download.py +922 -0
  27. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/exceptions.py +249 -0
  28. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/index.py +1117 -0
  29. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/locations.py +194 -0
  30. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/models/__init__.py +4 -0
  31. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/models/index.py +15 -0
  32. package/python3.4.2/lib/python3.4/site-packages/pip/{_vendor/requests/packages/urllib3/contrib → _internal/operations}/__init__.py +0 -0
  33. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/operations/check.py +106 -0
  34. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/operations/freeze.py +252 -0
  35. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/operations/prepare.py +378 -0
  36. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/pep425tags.py +317 -0
  37. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/__init__.py +69 -0
  38. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_file.py +338 -0
  39. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_install.py +1115 -0
  40. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_set.py +164 -0
  41. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_uninstall.py +455 -0
  42. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/resolve.py +354 -0
  43. package/python3.4.2/lib/python3.4/site-packages/pip/{status_codes.py → _internal/status_codes.py} +8 -6
  44. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/__init__.py +0 -0
  45. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/appdirs.py +258 -0
  46. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/deprecation.py +77 -0
  47. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/encoding.py +33 -0
  48. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/filesystem.py +28 -0
  49. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/glibc.py +84 -0
  50. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/hashes.py +94 -0
  51. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/logging.py +132 -0
  52. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/misc.py +851 -0
  53. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/outdated.py +163 -0
  54. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/packaging.py +70 -0
  55. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/setuptools_build.py +8 -0
  56. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/temp_dir.py +82 -0
  57. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/typing.py +29 -0
  58. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/ui.py +421 -0
  59. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/__init__.py +471 -0
  60. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/bazaar.py +113 -0
  61. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/git.py +311 -0
  62. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/mercurial.py +105 -0
  63. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/subversion.py +271 -0
  64. package/python3.4.2/lib/python3.4/site-packages/pip/_internal/wheel.py +817 -0
  65. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/__init__.py +109 -8
  66. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/appdirs.py +604 -0
  67. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/__init__.py +11 -0
  68. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/_cmd.py +60 -0
  69. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/adapter.py +134 -0
  70. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/cache.py +39 -0
  71. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +2 -0
  72. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +133 -0
  73. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +43 -0
  74. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/compat.py +29 -0
  75. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/controller.py +373 -0
  76. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/filewrapper.py +78 -0
  77. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/heuristics.py +138 -0
  78. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/serialize.py +194 -0
  79. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/wrapper.py +27 -0
  80. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/certifi/__init__.py +3 -0
  81. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/certifi/__main__.py +2 -0
  82. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests → certifi}/cacert.pem +1765 -2358
  83. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/certifi/core.py +37 -0
  84. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/__init__.py +39 -32
  85. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/big5freq.py +386 -0
  86. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/big5prober.py +47 -42
  87. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/chardistribution.py +233 -231
  88. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/charsetgroupprober.py +106 -0
  89. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/charsetprober.py +145 -0
  90. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/cli/__init__.py +1 -0
  91. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/cli/chardetect.py +85 -0
  92. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/codingstatemachine.py +88 -0
  93. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/compat.py +34 -34
  94. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/cp949prober.py +49 -44
  95. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/enums.py +76 -0
  96. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/escprober.py +101 -0
  97. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/escsm.py +246 -0
  98. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/eucjpprober.py +92 -0
  99. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/euckrfreq.py +195 -0
  100. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/euckrprober.py +47 -42
  101. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/euctwfreq.py +387 -428
  102. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/euctwprober.py +46 -41
  103. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/gb2312freq.py +283 -472
  104. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/gb2312prober.py +46 -41
  105. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/hebrewprober.py +292 -283
  106. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/jisfreq.py +325 -569
  107. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/jpcntx.py +233 -219
  108. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langbulgarianmodel.py +228 -229
  109. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langcyrillicmodel.py +333 -329
  110. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langgreekmodel.py +225 -225
  111. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langhebrewmodel.py +200 -201
  112. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langhungarianmodel.py +225 -225
  113. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langthaimodel.py +199 -200
  114. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/langturkishmodel.py +193 -0
  115. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/latin1prober.py +145 -139
  116. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/mbcharsetprober.py +91 -0
  117. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/mbcsgroupprober.py +54 -54
  118. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/mbcssm.py +572 -0
  119. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/sbcharsetprober.py +132 -0
  120. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/sbcsgroupprober.py +73 -69
  121. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/sjisprober.py +92 -0
  122. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/universaldetector.py +286 -0
  123. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/utf8prober.py +82 -76
  124. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/version.py +9 -0
  125. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/__init__.py +7 -7
  126. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/ansi.py +102 -50
  127. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/ansitowin32.py +236 -190
  128. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/initialise.py +82 -56
  129. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/win32.py +156 -137
  130. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/winterm.py +162 -120
  131. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/__init__.py +23 -23
  132. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/__init__.py +6 -6
  133. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/misc.py +41 -41
  134. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/shutil.py +761 -761
  135. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg +84 -84
  136. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/sysconfig.py +788 -788
  137. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/tarfile.py +2607 -2607
  138. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/compat.py +1117 -1064
  139. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/database.py +1318 -1301
  140. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/index.py +516 -488
  141. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/locators.py +1292 -1194
  142. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/manifest.py +393 -364
  143. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/markers.py +131 -190
  144. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/metadata.py +1068 -1026
  145. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/resources.py +355 -317
  146. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/scripts.py +415 -323
  147. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/t32.exe +0 -0
  148. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/t64.exe +0 -0
  149. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/util.py +1755 -1575
  150. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/version.py +736 -721
  151. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/w32.exe +0 -0
  152. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/w64.exe +0 -0
  153. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/wheel.py +984 -958
  154. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distro.py +1104 -0
  155. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/__init__.py +35 -23
  156. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{ihatexml.py → _ihatexml.py} +288 -285
  157. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{inputstream.py → _inputstream.py} +923 -881
  158. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{tokenizer.py → _tokenizer.py} +1721 -1731
  159. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/__init__.py +14 -12
  160. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/_base.py +37 -37
  161. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/datrie.py +44 -44
  162. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/py.py +67 -67
  163. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{utils.py → _utils.py} +124 -82
  164. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/constants.py +2947 -3104
  165. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +29 -20
  166. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/{_base.py → base.py} +12 -12
  167. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +73 -65
  168. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/lint.py +93 -93
  169. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +207 -205
  170. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +896 -12
  171. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/whitespace.py +38 -38
  172. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/html5parser.py +2791 -2713
  173. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/serializer.py +409 -0
  174. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py +30 -0
  175. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py +54 -0
  176. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treeadapters/sax.py +50 -44
  177. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py +88 -76
  178. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/{_base.py → base.py} +417 -377
  179. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/dom.py +236 -227
  180. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/etree.py +340 -337
  181. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py +366 -369
  182. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py +154 -57
  183. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/{_base.py → base.py} +252 -200
  184. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/dom.py +43 -46
  185. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/etree.py +130 -138
  186. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/{lxmletree.py → etree_lxml.py} +213 -208
  187. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/{genshistream.py → genshi.py} +69 -69
  188. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/__init__.py +2 -0
  189. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/codec.py +118 -0
  190. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/compat.py +12 -0
  191. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/core.py +387 -0
  192. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/idnadata.py +1585 -0
  193. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/intranges.py +53 -0
  194. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/package_data.py +2 -0
  195. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/uts46data.py +7634 -0
  196. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/ipaddress.py +2419 -0
  197. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/__init__.py +347 -0
  198. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/linklockfile.py +73 -0
  199. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/mkdirlockfile.py +84 -0
  200. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/pidlockfile.py +190 -0
  201. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/sqlitelockfile.py +156 -0
  202. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/symlinklockfile.py +70 -0
  203. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/__init__.py +66 -0
  204. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/_version.py +1 -0
  205. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/exceptions.py +41 -0
  206. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/fallback.py +971 -0
  207. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/__about__.py +21 -0
  208. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/__init__.py +14 -0
  209. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/_compat.py +30 -0
  210. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/_structures.py +70 -0
  211. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/markers.py +301 -0
  212. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/requirements.py +130 -0
  213. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/specifiers.py +774 -0
  214. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/utils.py +63 -0
  215. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/version.py +441 -0
  216. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{pkg_resources.py → pkg_resources/__init__.py} +3125 -2762
  217. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pkg_resources/py31compat.py +22 -0
  218. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/__init__.py +127 -0
  219. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/bar.py +88 -0
  220. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/counter.py +48 -0
  221. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/helpers.py +91 -0
  222. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/spinner.py +44 -0
  223. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pyparsing.py +5720 -0
  224. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/__init__.py +3 -0
  225. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/core.py +13 -0
  226. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/parser.py +374 -0
  227. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/writer.py +127 -0
  228. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/__init__.py +123 -77
  229. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/__version__.py +14 -0
  230. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/_internal_utils.py +42 -0
  231. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/adapters.py +525 -388
  232. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/api.py +152 -120
  233. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/auth.py +293 -193
  234. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/certs.py +18 -24
  235. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/compat.py +73 -115
  236. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/cookies.py +542 -454
  237. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/exceptions.py +122 -75
  238. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/help.py +120 -0
  239. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/hooks.py +34 -45
  240. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/models.py +948 -803
  241. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages.py +16 -0
  242. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/sessions.py +737 -637
  243. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/status_codes.py +91 -88
  244. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/structures.py +105 -127
  245. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/utils.py +904 -673
  246. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/retrying.py +267 -0
  247. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/six.py +891 -646
  248. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/__init__.py +97 -0
  249. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/_collections.py +319 -0
  250. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/connection.py +373 -0
  251. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/connectionpool.py +905 -710
  252. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  253. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  254. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +593 -0
  255. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +343 -0
  256. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/appengine.py +296 -0
  257. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/contrib/ntlmpool.py +112 -120
  258. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +455 -0
  259. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +810 -0
  260. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/socks.py +188 -0
  261. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/exceptions.py +246 -0
  262. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/fields.py +178 -177
  263. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/filepost.py +94 -100
  264. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/__init__.py +5 -4
  265. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  266. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +53 -0
  267. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/ordered_dict.py +259 -260
  268. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/packages/six.py +868 -0
  269. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/ssl_match_hostname/__init__.py +19 -13
  270. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/ssl_match_hostname/_implementation.py +157 -105
  271. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/poolmanager.py +440 -0
  272. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/request.py +148 -141
  273. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/response.py +626 -0
  274. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/__init__.py +54 -0
  275. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/connection.py +130 -0
  276. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/request.py +118 -0
  277. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/response.py +81 -0
  278. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/retry.py +401 -0
  279. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/selectors.py +581 -0
  280. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/ssl_.py +341 -0
  281. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/util/timeout.py +242 -234
  282. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/util/url.py +230 -162
  283. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/wait.py +40 -0
  284. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/__init__.py +342 -0
  285. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/labels.py +231 -0
  286. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/mklabels.py +59 -0
  287. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/tests.py +153 -0
  288. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/x_user_defined.py +325 -0
  289. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/_markerlib/__init__.py +0 -16
  290. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/_markerlib/markers.py +0 -119
  291. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/sanitizer.py +0 -271
  292. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/serializer/__init__.py +0 -16
  293. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/serializer/htmlserializer.py +0 -320
  294. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/pulldom.py +0 -63
  295. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/re-vendor.py +0 -34
  296. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/__init__.py +0 -3
  297. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/big5freq.py +0 -925
  298. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/chardetect.py +0 -46
  299. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py +0 -106
  300. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py +0 -62
  301. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py +0 -61
  302. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/constants.py +0 -39
  303. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/escprober.py +0 -86
  304. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/escsm.py +0 -242
  305. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py +0 -90
  306. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py +0 -596
  307. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py +0 -86
  308. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py +0 -575
  309. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py +0 -120
  310. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py +0 -91
  311. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py +0 -170
  312. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py +0 -58
  313. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/_collections.py +0 -205
  314. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/connection.py +0 -204
  315. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py +0 -422
  316. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.py +0 -126
  317. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/packages/six.py +0 -385
  318. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.py +0 -258
  319. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/response.py +0 -308
  320. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py +0 -27
  321. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py +0 -45
  322. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py +0 -68
  323. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py +0 -13
  324. package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py +0 -133
  325. package/python3.4.2/lib/python3.4/site-packages/pip/backwardcompat/__init__.py +0 -138
  326. package/python3.4.2/lib/python3.4/site-packages/pip/basecommand.py +0 -201
  327. package/python3.4.2/lib/python3.4/site-packages/pip/cmdoptions.py +0 -371
  328. package/python3.4.2/lib/python3.4/site-packages/pip/commands/__init__.py +0 -88
  329. package/python3.4.2/lib/python3.4/site-packages/pip/commands/bundle.py +0 -42
  330. package/python3.4.2/lib/python3.4/site-packages/pip/commands/completion.py +0 -59
  331. package/python3.4.2/lib/python3.4/site-packages/pip/commands/freeze.py +0 -114
  332. package/python3.4.2/lib/python3.4/site-packages/pip/commands/install.py +0 -314
  333. package/python3.4.2/lib/python3.4/site-packages/pip/commands/list.py +0 -162
  334. package/python3.4.2/lib/python3.4/site-packages/pip/commands/search.py +0 -132
  335. package/python3.4.2/lib/python3.4/site-packages/pip/commands/show.py +0 -80
  336. package/python3.4.2/lib/python3.4/site-packages/pip/commands/uninstall.py +0 -59
  337. package/python3.4.2/lib/python3.4/site-packages/pip/commands/unzip.py +0 -7
  338. package/python3.4.2/lib/python3.4/site-packages/pip/commands/wheel.py +0 -195
  339. package/python3.4.2/lib/python3.4/site-packages/pip/commands/zip.py +0 -351
  340. package/python3.4.2/lib/python3.4/site-packages/pip/download.py +0 -644
  341. package/python3.4.2/lib/python3.4/site-packages/pip/exceptions.py +0 -46
  342. package/python3.4.2/lib/python3.4/site-packages/pip/index.py +0 -990
  343. package/python3.4.2/lib/python3.4/site-packages/pip/locations.py +0 -171
  344. package/python3.4.2/lib/python3.4/site-packages/pip/log.py +0 -276
  345. package/python3.4.2/lib/python3.4/site-packages/pip/pep425tags.py +0 -102
  346. package/python3.4.2/lib/python3.4/site-packages/pip/req.py +0 -1931
  347. package/python3.4.2/lib/python3.4/site-packages/pip/runner.py +0 -18
  348. package/python3.4.2/lib/python3.4/site-packages/pip/util.py +0 -720
  349. package/python3.4.2/lib/python3.4/site-packages/pip/vcs/__init__.py +0 -251
  350. package/python3.4.2/lib/python3.4/site-packages/pip/vcs/bazaar.py +0 -131
  351. package/python3.4.2/lib/python3.4/site-packages/pip/vcs/git.py +0 -194
  352. package/python3.4.2/lib/python3.4/site-packages/pip/vcs/mercurial.py +0 -151
  353. package/python3.4.2/lib/python3.4/site-packages/pip/vcs/subversion.py +0 -273
  354. package/python3.4.2/lib/python3.4/site-packages/pip/wheel.py +0 -560
@@ -1,377 +1,417 @@
1
- from __future__ import absolute_import, division, unicode_literals
2
- from pip._vendor.six import text_type
3
-
4
- from ..constants import scopingElements, tableInsertModeElements, namespaces
5
-
6
- # The scope markers are inserted when entering object elements,
7
- # marquees, table cells, and table captions, and are used to prevent formatting
8
- # from "leaking" into tables, object elements, and marquees.
9
- Marker = None
10
-
11
- listElementsMap = {
12
- None: (frozenset(scopingElements), False),
13
- "button": (frozenset(scopingElements | set([(namespaces["html"], "button")])), False),
14
- "list": (frozenset(scopingElements | set([(namespaces["html"], "ol"),
15
- (namespaces["html"], "ul")])), False),
16
- "table": (frozenset([(namespaces["html"], "html"),
17
- (namespaces["html"], "table")]), False),
18
- "select": (frozenset([(namespaces["html"], "optgroup"),
19
- (namespaces["html"], "option")]), True)
20
- }
21
-
22
-
23
- class Node(object):
24
- def __init__(self, name):
25
- """Node representing an item in the tree.
26
- name - The tag name associated with the node
27
- parent - The parent of the current node (or None for the document node)
28
- value - The value of the current node (applies to text nodes and
29
- comments
30
- attributes - a dict holding name, value pairs for attributes of the node
31
- childNodes - a list of child nodes of the current node. This must
32
- include all elements but not necessarily other node types
33
- _flags - A list of miscellaneous flags that can be set on the node
34
- """
35
- self.name = name
36
- self.parent = None
37
- self.value = None
38
- self.attributes = {}
39
- self.childNodes = []
40
- self._flags = []
41
-
42
- def __str__(self):
43
- attributesStr = " ".join(["%s=\"%s\"" % (name, value)
44
- for name, value in
45
- self.attributes.items()])
46
- if attributesStr:
47
- return "<%s %s>" % (self.name, attributesStr)
48
- else:
49
- return "<%s>" % (self.name)
50
-
51
- def __repr__(self):
52
- return "<%s>" % (self.name)
53
-
54
- def appendChild(self, node):
55
- """Insert node as a child of the current node
56
- """
57
- raise NotImplementedError
58
-
59
- def insertText(self, data, insertBefore=None):
60
- """Insert data as text in the current node, positioned before the
61
- start of node insertBefore or to the end of the node's text.
62
- """
63
- raise NotImplementedError
64
-
65
- def insertBefore(self, node, refNode):
66
- """Insert node as a child of the current node, before refNode in the
67
- list of child nodes. Raises ValueError if refNode is not a child of
68
- the current node"""
69
- raise NotImplementedError
70
-
71
- def removeChild(self, node):
72
- """Remove node from the children of the current node
73
- """
74
- raise NotImplementedError
75
-
76
- def reparentChildren(self, newParent):
77
- """Move all the children of the current node to newParent.
78
- This is needed so that trees that don't store text as nodes move the
79
- text in the correct way
80
- """
81
- # XXX - should this method be made more general?
82
- for child in self.childNodes:
83
- newParent.appendChild(child)
84
- self.childNodes = []
85
-
86
- def cloneNode(self):
87
- """Return a shallow copy of the current node i.e. a node with the same
88
- name and attributes but with no parent or child nodes
89
- """
90
- raise NotImplementedError
91
-
92
- def hasContent(self):
93
- """Return true if the node has children or text, false otherwise
94
- """
95
- raise NotImplementedError
96
-
97
-
98
- class ActiveFormattingElements(list):
99
- def append(self, node):
100
- equalCount = 0
101
- if node != Marker:
102
- for element in self[::-1]:
103
- if element == Marker:
104
- break
105
- if self.nodesEqual(element, node):
106
- equalCount += 1
107
- if equalCount == 3:
108
- self.remove(element)
109
- break
110
- list.append(self, node)
111
-
112
- def nodesEqual(self, node1, node2):
113
- if not node1.nameTuple == node2.nameTuple:
114
- return False
115
-
116
- if not node1.attributes == node2.attributes:
117
- return False
118
-
119
- return True
120
-
121
-
122
- class TreeBuilder(object):
123
- """Base treebuilder implementation
124
- documentClass - the class to use for the bottommost node of a document
125
- elementClass - the class to use for HTML Elements
126
- commentClass - the class to use for comments
127
- doctypeClass - the class to use for doctypes
128
- """
129
-
130
- # Document class
131
- documentClass = None
132
-
133
- # The class to use for creating a node
134
- elementClass = None
135
-
136
- # The class to use for creating comments
137
- commentClass = None
138
-
139
- # The class to use for creating doctypes
140
- doctypeClass = None
141
-
142
- # Fragment class
143
- fragmentClass = None
144
-
145
- def __init__(self, namespaceHTMLElements):
146
- if namespaceHTMLElements:
147
- self.defaultNamespace = "http://www.w3.org/1999/xhtml"
148
- else:
149
- self.defaultNamespace = None
150
- self.reset()
151
-
152
- def reset(self):
153
- self.openElements = []
154
- self.activeFormattingElements = ActiveFormattingElements()
155
-
156
- # XXX - rename these to headElement, formElement
157
- self.headPointer = None
158
- self.formPointer = None
159
-
160
- self.insertFromTable = False
161
-
162
- self.document = self.documentClass()
163
-
164
- def elementInScope(self, target, variant=None):
165
-
166
- # If we pass a node in we match that. if we pass a string
167
- # match any node with that name
168
- exactNode = hasattr(target, "nameTuple")
169
-
170
- listElements, invert = listElementsMap[variant]
171
-
172
- for node in reversed(self.openElements):
173
- if (node.name == target and not exactNode or
174
- node == target and exactNode):
175
- return True
176
- elif (invert ^ (node.nameTuple in listElements)):
177
- return False
178
-
179
- assert False # We should never reach this point
180
-
181
- def reconstructActiveFormattingElements(self):
182
- # Within this algorithm the order of steps described in the
183
- # specification is not quite the same as the order of steps in the
184
- # code. It should still do the same though.
185
-
186
- # Step 1: stop the algorithm when there's nothing to do.
187
- if not self.activeFormattingElements:
188
- return
189
-
190
- # Step 2 and step 3: we start with the last element. So i is -1.
191
- i = len(self.activeFormattingElements) - 1
192
- entry = self.activeFormattingElements[i]
193
- if entry == Marker or entry in self.openElements:
194
- return
195
-
196
- # Step 6
197
- while entry != Marker and entry not in self.openElements:
198
- if i == 0:
199
- # This will be reset to 0 below
200
- i = -1
201
- break
202
- i -= 1
203
- # Step 5: let entry be one earlier in the list.
204
- entry = self.activeFormattingElements[i]
205
-
206
- while True:
207
- # Step 7
208
- i += 1
209
-
210
- # Step 8
211
- entry = self.activeFormattingElements[i]
212
- clone = entry.cloneNode() # Mainly to get a new copy of the attributes
213
-
214
- # Step 9
215
- element = self.insertElement({"type": "StartTag",
216
- "name": clone.name,
217
- "namespace": clone.namespace,
218
- "data": clone.attributes})
219
-
220
- # Step 10
221
- self.activeFormattingElements[i] = element
222
-
223
- # Step 11
224
- if element == self.activeFormattingElements[-1]:
225
- break
226
-
227
- def clearActiveFormattingElements(self):
228
- entry = self.activeFormattingElements.pop()
229
- while self.activeFormattingElements and entry != Marker:
230
- entry = self.activeFormattingElements.pop()
231
-
232
- def elementInActiveFormattingElements(self, name):
233
- """Check if an element exists between the end of the active
234
- formatting elements and the last marker. If it does, return it, else
235
- return false"""
236
-
237
- for item in self.activeFormattingElements[::-1]:
238
- # Check for Marker first because if it's a Marker it doesn't have a
239
- # name attribute.
240
- if item == Marker:
241
- break
242
- elif item.name == name:
243
- return item
244
- return False
245
-
246
- def insertRoot(self, token):
247
- element = self.createElement(token)
248
- self.openElements.append(element)
249
- self.document.appendChild(element)
250
-
251
- def insertDoctype(self, token):
252
- name = token["name"]
253
- publicId = token["publicId"]
254
- systemId = token["systemId"]
255
-
256
- doctype = self.doctypeClass(name, publicId, systemId)
257
- self.document.appendChild(doctype)
258
-
259
- def insertComment(self, token, parent=None):
260
- if parent is None:
261
- parent = self.openElements[-1]
262
- parent.appendChild(self.commentClass(token["data"]))
263
-
264
- def createElement(self, token):
265
- """Create an element but don't insert it anywhere"""
266
- name = token["name"]
267
- namespace = token.get("namespace", self.defaultNamespace)
268
- element = self.elementClass(name, namespace)
269
- element.attributes = token["data"]
270
- return element
271
-
272
- def _getInsertFromTable(self):
273
- return self._insertFromTable
274
-
275
- def _setInsertFromTable(self, value):
276
- """Switch the function used to insert an element from the
277
- normal one to the misnested table one and back again"""
278
- self._insertFromTable = value
279
- if value:
280
- self.insertElement = self.insertElementTable
281
- else:
282
- self.insertElement = self.insertElementNormal
283
-
284
- insertFromTable = property(_getInsertFromTable, _setInsertFromTable)
285
-
286
- def insertElementNormal(self, token):
287
- name = token["name"]
288
- assert isinstance(name, text_type), "Element %s not unicode" % name
289
- namespace = token.get("namespace", self.defaultNamespace)
290
- element = self.elementClass(name, namespace)
291
- element.attributes = token["data"]
292
- self.openElements[-1].appendChild(element)
293
- self.openElements.append(element)
294
- return element
295
-
296
- def insertElementTable(self, token):
297
- """Create an element and insert it into the tree"""
298
- element = self.createElement(token)
299
- if self.openElements[-1].name not in tableInsertModeElements:
300
- return self.insertElementNormal(token)
301
- else:
302
- # We should be in the InTable mode. This means we want to do
303
- # special magic element rearranging
304
- parent, insertBefore = self.getTableMisnestedNodePosition()
305
- if insertBefore is None:
306
- parent.appendChild(element)
307
- else:
308
- parent.insertBefore(element, insertBefore)
309
- self.openElements.append(element)
310
- return element
311
-
312
- def insertText(self, data, parent=None):
313
- """Insert text data."""
314
- if parent is None:
315
- parent = self.openElements[-1]
316
-
317
- if (not self.insertFromTable or (self.insertFromTable and
318
- self.openElements[-1].name
319
- not in tableInsertModeElements)):
320
- parent.insertText(data)
321
- else:
322
- # We should be in the InTable mode. This means we want to do
323
- # special magic element rearranging
324
- parent, insertBefore = self.getTableMisnestedNodePosition()
325
- parent.insertText(data, insertBefore)
326
-
327
- def getTableMisnestedNodePosition(self):
328
- """Get the foster parent element, and sibling to insert before
329
- (or None) when inserting a misnested table node"""
330
- # The foster parent element is the one which comes before the most
331
- # recently opened table element
332
- # XXX - this is really inelegant
333
- lastTable = None
334
- fosterParent = None
335
- insertBefore = None
336
- for elm in self.openElements[::-1]:
337
- if elm.name == "table":
338
- lastTable = elm
339
- break
340
- if lastTable:
341
- # XXX - we should really check that this parent is actually a
342
- # node here
343
- if lastTable.parent:
344
- fosterParent = lastTable.parent
345
- insertBefore = lastTable
346
- else:
347
- fosterParent = self.openElements[
348
- self.openElements.index(lastTable) - 1]
349
- else:
350
- fosterParent = self.openElements[0]
351
- return fosterParent, insertBefore
352
-
353
- def generateImpliedEndTags(self, exclude=None):
354
- name = self.openElements[-1].name
355
- # XXX td, th and tr are not actually needed
356
- if (name in frozenset(("dd", "dt", "li", "option", "optgroup", "p", "rp", "rt"))
357
- and name != exclude):
358
- self.openElements.pop()
359
- # XXX This is not entirely what the specification says. We should
360
- # investigate it more closely.
361
- self.generateImpliedEndTags(exclude)
362
-
363
- def getDocument(self):
364
- "Return the final tree"
365
- return self.document
366
-
367
- def getFragment(self):
368
- "Return the final fragment"
369
- # assert self.innerHTML
370
- fragment = self.fragmentClass()
371
- self.openElements[0].reparentChildren(fragment)
372
- return fragment
373
-
374
- def testSerializer(self, node):
375
- """Serialize the subtree of node in the format required by unit tests
376
- node - the node from which to start serializing"""
377
- raise NotImplementedError
1
+ from __future__ import absolute_import, division, unicode_literals
2
+ from pip._vendor.six import text_type
3
+
4
+ from ..constants import scopingElements, tableInsertModeElements, namespaces
5
+
6
+ # The scope markers are inserted when entering object elements,
7
+ # marquees, table cells, and table captions, and are used to prevent formatting
8
+ # from "leaking" into tables, object elements, and marquees.
9
+ Marker = None
10
+
11
+ listElementsMap = {
12
+ None: (frozenset(scopingElements), False),
13
+ "button": (frozenset(scopingElements | set([(namespaces["html"], "button")])), False),
14
+ "list": (frozenset(scopingElements | set([(namespaces["html"], "ol"),
15
+ (namespaces["html"], "ul")])), False),
16
+ "table": (frozenset([(namespaces["html"], "html"),
17
+ (namespaces["html"], "table")]), False),
18
+ "select": (frozenset([(namespaces["html"], "optgroup"),
19
+ (namespaces["html"], "option")]), True)
20
+ }
21
+
22
+
23
+ class Node(object):
24
+ """Represents an item in the tree"""
25
+ def __init__(self, name):
26
+ """Creates a Node
27
+
28
+ :arg name: The tag name associated with the node
29
+
30
+ """
31
+ # The tag name assocaited with the node
32
+ self.name = name
33
+ # The parent of the current node (or None for the document node)
34
+ self.parent = None
35
+ # The value of the current node (applies to text nodes and comments)
36
+ self.value = None
37
+ # A dict holding name -> value pairs for attributes of the node
38
+ self.attributes = {}
39
+ # A list of child nodes of the current node. This must include all
40
+ # elements but not necessarily other node types.
41
+ self.childNodes = []
42
+ # A list of miscellaneous flags that can be set on the node.
43
+ self._flags = []
44
+
45
+ def __str__(self):
46
+ attributesStr = " ".join(["%s=\"%s\"" % (name, value)
47
+ for name, value in
48
+ self.attributes.items()])
49
+ if attributesStr:
50
+ return "<%s %s>" % (self.name, attributesStr)
51
+ else:
52
+ return "<%s>" % (self.name)
53
+
54
+ def __repr__(self):
55
+ return "<%s>" % (self.name)
56
+
57
+ def appendChild(self, node):
58
+ """Insert node as a child of the current node
59
+
60
+ :arg node: the node to insert
61
+
62
+ """
63
+ raise NotImplementedError
64
+
65
+ def insertText(self, data, insertBefore=None):
66
+ """Insert data as text in the current node, positioned before the
67
+ start of node insertBefore or to the end of the node's text.
68
+
69
+ :arg data: the data to insert
70
+
71
+ :arg insertBefore: True if you want to insert the text before the node
72
+ and False if you want to insert it after the node
73
+
74
+ """
75
+ raise NotImplementedError
76
+
77
+ def insertBefore(self, node, refNode):
78
+ """Insert node as a child of the current node, before refNode in the
79
+ list of child nodes. Raises ValueError if refNode is not a child of
80
+ the current node
81
+
82
+ :arg node: the node to insert
83
+
84
+ :arg refNode: the child node to insert the node before
85
+
86
+ """
87
+ raise NotImplementedError
88
+
89
+ def removeChild(self, node):
90
+ """Remove node from the children of the current node
91
+
92
+ :arg node: the child node to remove
93
+
94
+ """
95
+ raise NotImplementedError
96
+
97
+ def reparentChildren(self, newParent):
98
+ """Move all the children of the current node to newParent.
99
+ This is needed so that trees that don't store text as nodes move the
100
+ text in the correct way
101
+
102
+ :arg newParent: the node to move all this node's children to
103
+
104
+ """
105
+ # XXX - should this method be made more general?
106
+ for child in self.childNodes:
107
+ newParent.appendChild(child)
108
+ self.childNodes = []
109
+
110
+ def cloneNode(self):
111
+ """Return a shallow copy of the current node i.e. a node with the same
112
+ name and attributes but with no parent or child nodes
113
+ """
114
+ raise NotImplementedError
115
+
116
+ def hasContent(self):
117
+ """Return true if the node has children or text, false otherwise
118
+ """
119
+ raise NotImplementedError
120
+
121
+
122
+ class ActiveFormattingElements(list):
123
+ def append(self, node):
124
+ equalCount = 0
125
+ if node != Marker:
126
+ for element in self[::-1]:
127
+ if element == Marker:
128
+ break
129
+ if self.nodesEqual(element, node):
130
+ equalCount += 1
131
+ if equalCount == 3:
132
+ self.remove(element)
133
+ break
134
+ list.append(self, node)
135
+
136
+ def nodesEqual(self, node1, node2):
137
+ if not node1.nameTuple == node2.nameTuple:
138
+ return False
139
+
140
+ if not node1.attributes == node2.attributes:
141
+ return False
142
+
143
+ return True
144
+
145
+
146
+ class TreeBuilder(object):
147
+ """Base treebuilder implementation
148
+
149
+ * documentClass - the class to use for the bottommost node of a document
150
+ * elementClass - the class to use for HTML Elements
151
+ * commentClass - the class to use for comments
152
+ * doctypeClass - the class to use for doctypes
153
+
154
+ """
155
+ # pylint:disable=not-callable
156
+
157
+ # Document class
158
+ documentClass = None
159
+
160
+ # The class to use for creating a node
161
+ elementClass = None
162
+
163
+ # The class to use for creating comments
164
+ commentClass = None
165
+
166
+ # The class to use for creating doctypes
167
+ doctypeClass = None
168
+
169
+ # Fragment class
170
+ fragmentClass = None
171
+
172
+ def __init__(self, namespaceHTMLElements):
173
+ """Create a TreeBuilder
174
+
175
+ :arg namespaceHTMLElements: whether or not to namespace HTML elements
176
+
177
+ """
178
+ if namespaceHTMLElements:
179
+ self.defaultNamespace = "http://www.w3.org/1999/xhtml"
180
+ else:
181
+ self.defaultNamespace = None
182
+ self.reset()
183
+
184
+ def reset(self):
185
+ self.openElements = []
186
+ self.activeFormattingElements = ActiveFormattingElements()
187
+
188
+ # XXX - rename these to headElement, formElement
189
+ self.headPointer = None
190
+ self.formPointer = None
191
+
192
+ self.insertFromTable = False
193
+
194
+ self.document = self.documentClass()
195
+
196
+ def elementInScope(self, target, variant=None):
197
+
198
+ # If we pass a node in we match that. if we pass a string
199
+ # match any node with that name
200
+ exactNode = hasattr(target, "nameTuple")
201
+ if not exactNode:
202
+ if isinstance(target, text_type):
203
+ target = (namespaces["html"], target)
204
+ assert isinstance(target, tuple)
205
+
206
+ listElements, invert = listElementsMap[variant]
207
+
208
+ for node in reversed(self.openElements):
209
+ if exactNode and node == target:
210
+ return True
211
+ elif not exactNode and node.nameTuple == target:
212
+ return True
213
+ elif (invert ^ (node.nameTuple in listElements)):
214
+ return False
215
+
216
+ assert False # We should never reach this point
217
+
218
+ def reconstructActiveFormattingElements(self):
219
+ # Within this algorithm the order of steps described in the
220
+ # specification is not quite the same as the order of steps in the
221
+ # code. It should still do the same though.
222
+
223
+ # Step 1: stop the algorithm when there's nothing to do.
224
+ if not self.activeFormattingElements:
225
+ return
226
+
227
+ # Step 2 and step 3: we start with the last element. So i is -1.
228
+ i = len(self.activeFormattingElements) - 1
229
+ entry = self.activeFormattingElements[i]
230
+ if entry == Marker or entry in self.openElements:
231
+ return
232
+
233
+ # Step 6
234
+ while entry != Marker and entry not in self.openElements:
235
+ if i == 0:
236
+ # This will be reset to 0 below
237
+ i = -1
238
+ break
239
+ i -= 1
240
+ # Step 5: let entry be one earlier in the list.
241
+ entry = self.activeFormattingElements[i]
242
+
243
+ while True:
244
+ # Step 7
245
+ i += 1
246
+
247
+ # Step 8
248
+ entry = self.activeFormattingElements[i]
249
+ clone = entry.cloneNode() # Mainly to get a new copy of the attributes
250
+
251
+ # Step 9
252
+ element = self.insertElement({"type": "StartTag",
253
+ "name": clone.name,
254
+ "namespace": clone.namespace,
255
+ "data": clone.attributes})
256
+
257
+ # Step 10
258
+ self.activeFormattingElements[i] = element
259
+
260
+ # Step 11
261
+ if element == self.activeFormattingElements[-1]:
262
+ break
263
+
264
+ def clearActiveFormattingElements(self):
265
+ entry = self.activeFormattingElements.pop()
266
+ while self.activeFormattingElements and entry != Marker:
267
+ entry = self.activeFormattingElements.pop()
268
+
269
+ def elementInActiveFormattingElements(self, name):
270
+ """Check if an element exists between the end of the active
271
+ formatting elements and the last marker. If it does, return it, else
272
+ return false"""
273
+
274
+ for item in self.activeFormattingElements[::-1]:
275
+ # Check for Marker first because if it's a Marker it doesn't have a
276
+ # name attribute.
277
+ if item == Marker:
278
+ break
279
+ elif item.name == name:
280
+ return item
281
+ return False
282
+
283
+ def insertRoot(self, token):
284
+ element = self.createElement(token)
285
+ self.openElements.append(element)
286
+ self.document.appendChild(element)
287
+
288
+ def insertDoctype(self, token):
289
+ name = token["name"]
290
+ publicId = token["publicId"]
291
+ systemId = token["systemId"]
292
+
293
+ doctype = self.doctypeClass(name, publicId, systemId)
294
+ self.document.appendChild(doctype)
295
+
296
+ def insertComment(self, token, parent=None):
297
+ if parent is None:
298
+ parent = self.openElements[-1]
299
+ parent.appendChild(self.commentClass(token["data"]))
300
+
301
+ def createElement(self, token):
302
+ """Create an element but don't insert it anywhere"""
303
+ name = token["name"]
304
+ namespace = token.get("namespace", self.defaultNamespace)
305
+ element = self.elementClass(name, namespace)
306
+ element.attributes = token["data"]
307
+ return element
308
+
309
+ def _getInsertFromTable(self):
310
+ return self._insertFromTable
311
+
312
+ def _setInsertFromTable(self, value):
313
+ """Switch the function used to insert an element from the
314
+ normal one to the misnested table one and back again"""
315
+ self._insertFromTable = value
316
+ if value:
317
+ self.insertElement = self.insertElementTable
318
+ else:
319
+ self.insertElement = self.insertElementNormal
320
+
321
+ insertFromTable = property(_getInsertFromTable, _setInsertFromTable)
322
+
323
+ def insertElementNormal(self, token):
324
+ name = token["name"]
325
+ assert isinstance(name, text_type), "Element %s not unicode" % name
326
+ namespace = token.get("namespace", self.defaultNamespace)
327
+ element = self.elementClass(name, namespace)
328
+ element.attributes = token["data"]
329
+ self.openElements[-1].appendChild(element)
330
+ self.openElements.append(element)
331
+ return element
332
+
333
+ def insertElementTable(self, token):
334
+ """Create an element and insert it into the tree"""
335
+ element = self.createElement(token)
336
+ if self.openElements[-1].name not in tableInsertModeElements:
337
+ return self.insertElementNormal(token)
338
+ else:
339
+ # We should be in the InTable mode. This means we want to do
340
+ # special magic element rearranging
341
+ parent, insertBefore = self.getTableMisnestedNodePosition()
342
+ if insertBefore is None:
343
+ parent.appendChild(element)
344
+ else:
345
+ parent.insertBefore(element, insertBefore)
346
+ self.openElements.append(element)
347
+ return element
348
+
349
+ def insertText(self, data, parent=None):
350
+ """Insert text data."""
351
+ if parent is None:
352
+ parent = self.openElements[-1]
353
+
354
+ if (not self.insertFromTable or (self.insertFromTable and
355
+ self.openElements[-1].name
356
+ not in tableInsertModeElements)):
357
+ parent.insertText(data)
358
+ else:
359
+ # We should be in the InTable mode. This means we want to do
360
+ # special magic element rearranging
361
+ parent, insertBefore = self.getTableMisnestedNodePosition()
362
+ parent.insertText(data, insertBefore)
363
+
364
+ def getTableMisnestedNodePosition(self):
365
+ """Get the foster parent element, and sibling to insert before
366
+ (or None) when inserting a misnested table node"""
367
+ # The foster parent element is the one which comes before the most
368
+ # recently opened table element
369
+ # XXX - this is really inelegant
370
+ lastTable = None
371
+ fosterParent = None
372
+ insertBefore = None
373
+ for elm in self.openElements[::-1]:
374
+ if elm.name == "table":
375
+ lastTable = elm
376
+ break
377
+ if lastTable:
378
+ # XXX - we should really check that this parent is actually a
379
+ # node here
380
+ if lastTable.parent:
381
+ fosterParent = lastTable.parent
382
+ insertBefore = lastTable
383
+ else:
384
+ fosterParent = self.openElements[
385
+ self.openElements.index(lastTable) - 1]
386
+ else:
387
+ fosterParent = self.openElements[0]
388
+ return fosterParent, insertBefore
389
+
390
+ def generateImpliedEndTags(self, exclude=None):
391
+ name = self.openElements[-1].name
392
+ # XXX td, th and tr are not actually needed
393
+ if (name in frozenset(("dd", "dt", "li", "option", "optgroup", "p", "rp", "rt")) and
394
+ name != exclude):
395
+ self.openElements.pop()
396
+ # XXX This is not entirely what the specification says. We should
397
+ # investigate it more closely.
398
+ self.generateImpliedEndTags(exclude)
399
+
400
+ def getDocument(self):
401
+ """Return the final tree"""
402
+ return self.document
403
+
404
+ def getFragment(self):
405
+ """Return the final fragment"""
406
+ # assert self.innerHTML
407
+ fragment = self.fragmentClass()
408
+ self.openElements[0].reparentChildren(fragment)
409
+ return fragment
410
+
411
+ def testSerializer(self, node):
412
+ """Serialize the subtree of node in the format required by unit tests
413
+
414
+ :arg node: the node from which to start serializing
415
+
416
+ """
417
+ raise NotImplementedError