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,369 +1,366 @@
1
- """Module for supporting the lxml.etree library. The idea here is to use as much
2
- of the native library as possible, without using fragile hacks like custom element
3
- names that break between releases. The downside of this is that we cannot represent
4
- all possible trees; specifically the following are known to cause problems:
5
-
6
- Text or comments as siblings of the root element
7
- Docypes with no name
8
-
9
- When any of these things occur, we emit a DataLossWarning
10
- """
11
-
12
- from __future__ import absolute_import, division, unicode_literals
13
-
14
- import warnings
15
- import re
16
- import sys
17
-
18
- from . import _base
19
- from ..constants import DataLossWarning
20
- from .. import constants
21
- from . import etree as etree_builders
22
- from .. import ihatexml
23
-
24
- import lxml.etree as etree
25
-
26
-
27
- fullTree = True
28
- tag_regexp = re.compile("{([^}]*)}(.*)")
29
-
30
- comment_type = etree.Comment("asd").tag
31
-
32
-
33
- class DocumentType(object):
34
- def __init__(self, name, publicId, systemId):
35
- self.name = name
36
- self.publicId = publicId
37
- self.systemId = systemId
38
-
39
-
40
- class Document(object):
41
- def __init__(self):
42
- self._elementTree = None
43
- self._childNodes = []
44
-
45
- def appendChild(self, element):
46
- self._elementTree.getroot().addnext(element._element)
47
-
48
- def _getChildNodes(self):
49
- return self._childNodes
50
-
51
- childNodes = property(_getChildNodes)
52
-
53
-
54
- def testSerializer(element):
55
- rv = []
56
- finalText = None
57
- infosetFilter = ihatexml.InfosetFilter()
58
-
59
- def serializeElement(element, indent=0):
60
- if not hasattr(element, "tag"):
61
- if hasattr(element, "getroot"):
62
- # Full tree case
63
- rv.append("#document")
64
- if element.docinfo.internalDTD:
65
- if not (element.docinfo.public_id or
66
- element.docinfo.system_url):
67
- dtd_str = "<!DOCTYPE %s>" % element.docinfo.root_name
68
- else:
69
- dtd_str = """<!DOCTYPE %s "%s" "%s">""" % (
70
- element.docinfo.root_name,
71
- element.docinfo.public_id,
72
- element.docinfo.system_url)
73
- rv.append("|%s%s" % (' ' * (indent + 2), dtd_str))
74
- next_element = element.getroot()
75
- while next_element.getprevious() is not None:
76
- next_element = next_element.getprevious()
77
- while next_element is not None:
78
- serializeElement(next_element, indent + 2)
79
- next_element = next_element.getnext()
80
- elif isinstance(element, str) or isinstance(element, bytes):
81
- # Text in a fragment
82
- assert isinstance(element, str) or sys.version_info.major == 2
83
- rv.append("|%s\"%s\"" % (' ' * indent, element))
84
- else:
85
- # Fragment case
86
- rv.append("#document-fragment")
87
- for next_element in element:
88
- serializeElement(next_element, indent + 2)
89
- elif element.tag == comment_type:
90
- rv.append("|%s<!-- %s -->" % (' ' * indent, element.text))
91
- if hasattr(element, "tail") and element.tail:
92
- rv.append("|%s\"%s\"" % (' ' * indent, element.tail))
93
- else:
94
- assert isinstance(element, etree._Element)
95
- nsmatch = etree_builders.tag_regexp.match(element.tag)
96
- if nsmatch is not None:
97
- ns = nsmatch.group(1)
98
- tag = nsmatch.group(2)
99
- prefix = constants.prefixes[ns]
100
- rv.append("|%s<%s %s>" % (' ' * indent, prefix,
101
- infosetFilter.fromXmlName(tag)))
102
- else:
103
- rv.append("|%s<%s>" % (' ' * indent,
104
- infosetFilter.fromXmlName(element.tag)))
105
-
106
- if hasattr(element, "attrib"):
107
- attributes = []
108
- for name, value in element.attrib.items():
109
- nsmatch = tag_regexp.match(name)
110
- if nsmatch is not None:
111
- ns, name = nsmatch.groups()
112
- name = infosetFilter.fromXmlName(name)
113
- prefix = constants.prefixes[ns]
114
- attr_string = "%s %s" % (prefix, name)
115
- else:
116
- attr_string = infosetFilter.fromXmlName(name)
117
- attributes.append((attr_string, value))
118
-
119
- for name, value in sorted(attributes):
120
- rv.append('|%s%s="%s"' % (' ' * (indent + 2), name, value))
121
-
122
- if element.text:
123
- rv.append("|%s\"%s\"" % (' ' * (indent + 2), element.text))
124
- indent += 2
125
- for child in element:
126
- serializeElement(child, indent)
127
- if hasattr(element, "tail") and element.tail:
128
- rv.append("|%s\"%s\"" % (' ' * (indent - 2), element.tail))
129
- serializeElement(element, 0)
130
-
131
- if finalText is not None:
132
- rv.append("|%s\"%s\"" % (' ' * 2, finalText))
133
-
134
- return "\n".join(rv)
135
-
136
-
137
- def tostring(element):
138
- """Serialize an element and its child nodes to a string"""
139
- rv = []
140
- finalText = None
141
-
142
- def serializeElement(element):
143
- if not hasattr(element, "tag"):
144
- if element.docinfo.internalDTD:
145
- if element.docinfo.doctype:
146
- dtd_str = element.docinfo.doctype
147
- else:
148
- dtd_str = "<!DOCTYPE %s>" % element.docinfo.root_name
149
- rv.append(dtd_str)
150
- serializeElement(element.getroot())
151
-
152
- elif element.tag == comment_type:
153
- rv.append("<!--%s-->" % (element.text,))
154
-
155
- else:
156
- # This is assumed to be an ordinary element
157
- if not element.attrib:
158
- rv.append("<%s>" % (element.tag,))
159
- else:
160
- attr = " ".join(["%s=\"%s\"" % (name, value)
161
- for name, value in element.attrib.items()])
162
- rv.append("<%s %s>" % (element.tag, attr))
163
- if element.text:
164
- rv.append(element.text)
165
-
166
- for child in element:
167
- serializeElement(child)
168
-
169
- rv.append("</%s>" % (element.tag,))
170
-
171
- if hasattr(element, "tail") and element.tail:
172
- rv.append(element.tail)
173
-
174
- serializeElement(element)
175
-
176
- if finalText is not None:
177
- rv.append("%s\"" % (' ' * 2, finalText))
178
-
179
- return "".join(rv)
180
-
181
-
182
- class TreeBuilder(_base.TreeBuilder):
183
- documentClass = Document
184
- doctypeClass = DocumentType
185
- elementClass = None
186
- commentClass = None
187
- fragmentClass = Document
188
- implementation = etree
189
-
190
- def __init__(self, namespaceHTMLElements, fullTree=False):
191
- builder = etree_builders.getETreeModule(etree, fullTree=fullTree)
192
- infosetFilter = self.infosetFilter = ihatexml.InfosetFilter()
193
- self.namespaceHTMLElements = namespaceHTMLElements
194
-
195
- class Attributes(dict):
196
- def __init__(self, element, value={}):
197
- self._element = element
198
- dict.__init__(self, value)
199
- for key, value in self.items():
200
- if isinstance(key, tuple):
201
- name = "{%s}%s" % (key[2], infosetFilter.coerceAttribute(key[1]))
202
- else:
203
- name = infosetFilter.coerceAttribute(key)
204
- self._element._element.attrib[name] = value
205
-
206
- def __setitem__(self, key, value):
207
- dict.__setitem__(self, key, value)
208
- if isinstance(key, tuple):
209
- name = "{%s}%s" % (key[2], infosetFilter.coerceAttribute(key[1]))
210
- else:
211
- name = infosetFilter.coerceAttribute(key)
212
- self._element._element.attrib[name] = value
213
-
214
- class Element(builder.Element):
215
- def __init__(self, name, namespace):
216
- name = infosetFilter.coerceElement(name)
217
- builder.Element.__init__(self, name, namespace=namespace)
218
- self._attributes = Attributes(self)
219
-
220
- def _setName(self, name):
221
- self._name = infosetFilter.coerceElement(name)
222
- self._element.tag = self._getETreeTag(
223
- self._name, self._namespace)
224
-
225
- def _getName(self):
226
- return infosetFilter.fromXmlName(self._name)
227
-
228
- name = property(_getName, _setName)
229
-
230
- def _getAttributes(self):
231
- return self._attributes
232
-
233
- def _setAttributes(self, attributes):
234
- self._attributes = Attributes(self, attributes)
235
-
236
- attributes = property(_getAttributes, _setAttributes)
237
-
238
- def insertText(self, data, insertBefore=None):
239
- data = infosetFilter.coerceCharacters(data)
240
- builder.Element.insertText(self, data, insertBefore)
241
-
242
- def appendChild(self, child):
243
- builder.Element.appendChild(self, child)
244
-
245
- class Comment(builder.Comment):
246
- def __init__(self, data):
247
- data = infosetFilter.coerceComment(data)
248
- builder.Comment.__init__(self, data)
249
-
250
- def _setData(self, data):
251
- data = infosetFilter.coerceComment(data)
252
- self._element.text = data
253
-
254
- def _getData(self):
255
- return self._element.text
256
-
257
- data = property(_getData, _setData)
258
-
259
- self.elementClass = Element
260
- self.commentClass = builder.Comment
261
- # self.fragmentClass = builder.DocumentFragment
262
- _base.TreeBuilder.__init__(self, namespaceHTMLElements)
263
-
264
- def reset(self):
265
- _base.TreeBuilder.reset(self)
266
- self.insertComment = self.insertCommentInitial
267
- self.initial_comments = []
268
- self.doctype = None
269
-
270
- def testSerializer(self, element):
271
- return testSerializer(element)
272
-
273
- def getDocument(self):
274
- if fullTree:
275
- return self.document._elementTree
276
- else:
277
- return self.document._elementTree.getroot()
278
-
279
- def getFragment(self):
280
- fragment = []
281
- element = self.openElements[0]._element
282
- if element.text:
283
- fragment.append(element.text)
284
- fragment.extend(list(element))
285
- if element.tail:
286
- fragment.append(element.tail)
287
- return fragment
288
-
289
- def insertDoctype(self, token):
290
- name = token["name"]
291
- publicId = token["publicId"]
292
- systemId = token["systemId"]
293
-
294
- if not name:
295
- warnings.warn("lxml cannot represent empty doctype", DataLossWarning)
296
- self.doctype = None
297
- else:
298
- coercedName = self.infosetFilter.coerceElement(name)
299
- if coercedName != name:
300
- warnings.warn("lxml cannot represent non-xml doctype", DataLossWarning)
301
-
302
- doctype = self.doctypeClass(coercedName, publicId, systemId)
303
- self.doctype = doctype
304
-
305
- def insertCommentInitial(self, data, parent=None):
306
- self.initial_comments.append(data)
307
-
308
- def insertCommentMain(self, data, parent=None):
309
- if (parent == self.document and
310
- self.document._elementTree.getroot()[-1].tag == comment_type):
311
- warnings.warn("lxml cannot represent adjacent comments beyond the root elements", DataLossWarning)
312
- super(TreeBuilder, self).insertComment(data, parent)
313
-
314
- def insertRoot(self, token):
315
- """Create the document root"""
316
- # Because of the way libxml2 works, it doesn't seem to be possible to
317
- # alter information like the doctype after the tree has been parsed.
318
- # Therefore we need to use the built-in parser to create our iniial
319
- # tree, after which we can add elements like normal
320
- docStr = ""
321
- if self.doctype:
322
- assert self.doctype.name
323
- docStr += "<!DOCTYPE %s" % self.doctype.name
324
- if (self.doctype.publicId is not None or
325
- self.doctype.systemId is not None):
326
- docStr += (' PUBLIC "%s" ' %
327
- (self.infosetFilter.coercePubid(self.doctype.publicId or "")))
328
- if self.doctype.systemId:
329
- sysid = self.doctype.systemId
330
- if sysid.find("'") >= 0 and sysid.find('"') >= 0:
331
- warnings.warn("DOCTYPE system cannot contain single and double quotes", DataLossWarning)
332
- sysid = sysid.replace("'", 'U00027')
333
- if sysid.find("'") >= 0:
334
- docStr += '"%s"' % sysid
335
- else:
336
- docStr += "'%s'" % sysid
337
- else:
338
- docStr += "''"
339
- docStr += ">"
340
- if self.doctype.name != token["name"]:
341
- warnings.warn("lxml cannot represent doctype with a different name to the root element", DataLossWarning)
342
- docStr += "<THIS_SHOULD_NEVER_APPEAR_PUBLICLY/>"
343
- root = etree.fromstring(docStr)
344
-
345
- # Append the initial comments:
346
- for comment_token in self.initial_comments:
347
- root.addprevious(etree.Comment(comment_token["data"]))
348
-
349
- # Create the root document and add the ElementTree to it
350
- self.document = self.documentClass()
351
- self.document._elementTree = root.getroottree()
352
-
353
- # Give the root element the right name
354
- name = token["name"]
355
- namespace = token.get("namespace", self.defaultNamespace)
356
- if namespace is None:
357
- etree_tag = name
358
- else:
359
- etree_tag = "{%s}%s" % (namespace, name)
360
- root.tag = etree_tag
361
-
362
- # Add the root element to the internal child/open data structures
363
- root_element = self.elementClass(name, namespace)
364
- root_element._element = root
365
- self.document._childNodes.append(root_element)
366
- self.openElements.append(root_element)
367
-
368
- # Reset to the default insert comment function
369
- self.insertComment = self.insertCommentMain
1
+ """Module for supporting the lxml.etree library. The idea here is to use as much
2
+ of the native library as possible, without using fragile hacks like custom element
3
+ names that break between releases. The downside of this is that we cannot represent
4
+ all possible trees; specifically the following are known to cause problems:
5
+
6
+ Text or comments as siblings of the root element
7
+ Docypes with no name
8
+
9
+ When any of these things occur, we emit a DataLossWarning
10
+ """
11
+
12
+ from __future__ import absolute_import, division, unicode_literals
13
+ # pylint:disable=protected-access
14
+
15
+ import warnings
16
+ import re
17
+ import sys
18
+
19
+ from . import base
20
+ from ..constants import DataLossWarning
21
+ from .. import constants
22
+ from . import etree as etree_builders
23
+ from .. import _ihatexml
24
+
25
+ import lxml.etree as etree
26
+
27
+
28
+ fullTree = True
29
+ tag_regexp = re.compile("{([^}]*)}(.*)")
30
+
31
+ comment_type = etree.Comment("asd").tag
32
+
33
+
34
+ class DocumentType(object):
35
+ def __init__(self, name, publicId, systemId):
36
+ self.name = name
37
+ self.publicId = publicId
38
+ self.systemId = systemId
39
+
40
+
41
+ class Document(object):
42
+ def __init__(self):
43
+ self._elementTree = None
44
+ self._childNodes = []
45
+
46
+ def appendChild(self, element):
47
+ self._elementTree.getroot().addnext(element._element)
48
+
49
+ def _getChildNodes(self):
50
+ return self._childNodes
51
+
52
+ childNodes = property(_getChildNodes)
53
+
54
+
55
+ def testSerializer(element):
56
+ rv = []
57
+ infosetFilter = _ihatexml.InfosetFilter(preventDoubleDashComments=True)
58
+
59
+ def serializeElement(element, indent=0):
60
+ if not hasattr(element, "tag"):
61
+ if hasattr(element, "getroot"):
62
+ # Full tree case
63
+ rv.append("#document")
64
+ if element.docinfo.internalDTD:
65
+ if not (element.docinfo.public_id or
66
+ element.docinfo.system_url):
67
+ dtd_str = "<!DOCTYPE %s>" % element.docinfo.root_name
68
+ else:
69
+ dtd_str = """<!DOCTYPE %s "%s" "%s">""" % (
70
+ element.docinfo.root_name,
71
+ element.docinfo.public_id,
72
+ element.docinfo.system_url)
73
+ rv.append("|%s%s" % (' ' * (indent + 2), dtd_str))
74
+ next_element = element.getroot()
75
+ while next_element.getprevious() is not None:
76
+ next_element = next_element.getprevious()
77
+ while next_element is not None:
78
+ serializeElement(next_element, indent + 2)
79
+ next_element = next_element.getnext()
80
+ elif isinstance(element, str) or isinstance(element, bytes):
81
+ # Text in a fragment
82
+ assert isinstance(element, str) or sys.version_info[0] == 2
83
+ rv.append("|%s\"%s\"" % (' ' * indent, element))
84
+ else:
85
+ # Fragment case
86
+ rv.append("#document-fragment")
87
+ for next_element in element:
88
+ serializeElement(next_element, indent + 2)
89
+ elif element.tag == comment_type:
90
+ rv.append("|%s<!-- %s -->" % (' ' * indent, element.text))
91
+ if hasattr(element, "tail") and element.tail:
92
+ rv.append("|%s\"%s\"" % (' ' * indent, element.tail))
93
+ else:
94
+ assert isinstance(element, etree._Element)
95
+ nsmatch = etree_builders.tag_regexp.match(element.tag)
96
+ if nsmatch is not None:
97
+ ns = nsmatch.group(1)
98
+ tag = nsmatch.group(2)
99
+ prefix = constants.prefixes[ns]
100
+ rv.append("|%s<%s %s>" % (' ' * indent, prefix,
101
+ infosetFilter.fromXmlName(tag)))
102
+ else:
103
+ rv.append("|%s<%s>" % (' ' * indent,
104
+ infosetFilter.fromXmlName(element.tag)))
105
+
106
+ if hasattr(element, "attrib"):
107
+ attributes = []
108
+ for name, value in element.attrib.items():
109
+ nsmatch = tag_regexp.match(name)
110
+ if nsmatch is not None:
111
+ ns, name = nsmatch.groups()
112
+ name = infosetFilter.fromXmlName(name)
113
+ prefix = constants.prefixes[ns]
114
+ attr_string = "%s %s" % (prefix, name)
115
+ else:
116
+ attr_string = infosetFilter.fromXmlName(name)
117
+ attributes.append((attr_string, value))
118
+
119
+ for name, value in sorted(attributes):
120
+ rv.append('|%s%s="%s"' % (' ' * (indent + 2), name, value))
121
+
122
+ if element.text:
123
+ rv.append("|%s\"%s\"" % (' ' * (indent + 2), element.text))
124
+ indent += 2
125
+ for child in element:
126
+ serializeElement(child, indent)
127
+ if hasattr(element, "tail") and element.tail:
128
+ rv.append("|%s\"%s\"" % (' ' * (indent - 2), element.tail))
129
+ serializeElement(element, 0)
130
+
131
+ return "\n".join(rv)
132
+
133
+
134
+ def tostring(element):
135
+ """Serialize an element and its child nodes to a string"""
136
+ rv = []
137
+
138
+ def serializeElement(element):
139
+ if not hasattr(element, "tag"):
140
+ if element.docinfo.internalDTD:
141
+ if element.docinfo.doctype:
142
+ dtd_str = element.docinfo.doctype
143
+ else:
144
+ dtd_str = "<!DOCTYPE %s>" % element.docinfo.root_name
145
+ rv.append(dtd_str)
146
+ serializeElement(element.getroot())
147
+
148
+ elif element.tag == comment_type:
149
+ rv.append("<!--%s-->" % (element.text,))
150
+
151
+ else:
152
+ # This is assumed to be an ordinary element
153
+ if not element.attrib:
154
+ rv.append("<%s>" % (element.tag,))
155
+ else:
156
+ attr = " ".join(["%s=\"%s\"" % (name, value)
157
+ for name, value in element.attrib.items()])
158
+ rv.append("<%s %s>" % (element.tag, attr))
159
+ if element.text:
160
+ rv.append(element.text)
161
+
162
+ for child in element:
163
+ serializeElement(child)
164
+
165
+ rv.append("</%s>" % (element.tag,))
166
+
167
+ if hasattr(element, "tail") and element.tail:
168
+ rv.append(element.tail)
169
+
170
+ serializeElement(element)
171
+
172
+ return "".join(rv)
173
+
174
+
175
+ class TreeBuilder(base.TreeBuilder):
176
+ documentClass = Document
177
+ doctypeClass = DocumentType
178
+ elementClass = None
179
+ commentClass = None
180
+ fragmentClass = Document
181
+ implementation = etree
182
+
183
+ def __init__(self, namespaceHTMLElements, fullTree=False):
184
+ builder = etree_builders.getETreeModule(etree, fullTree=fullTree)
185
+ infosetFilter = self.infosetFilter = _ihatexml.InfosetFilter(preventDoubleDashComments=True)
186
+ self.namespaceHTMLElements = namespaceHTMLElements
187
+
188
+ class Attributes(dict):
189
+ def __init__(self, element, value=None):
190
+ if value is None:
191
+ value = {}
192
+ self._element = element
193
+ dict.__init__(self, value) # pylint:disable=non-parent-init-called
194
+ for key, value in self.items():
195
+ if isinstance(key, tuple):
196
+ name = "{%s}%s" % (key[2], infosetFilter.coerceAttribute(key[1]))
197
+ else:
198
+ name = infosetFilter.coerceAttribute(key)
199
+ self._element._element.attrib[name] = value
200
+
201
+ def __setitem__(self, key, value):
202
+ dict.__setitem__(self, key, value)
203
+ if isinstance(key, tuple):
204
+ name = "{%s}%s" % (key[2], infosetFilter.coerceAttribute(key[1]))
205
+ else:
206
+ name = infosetFilter.coerceAttribute(key)
207
+ self._element._element.attrib[name] = value
208
+
209
+ class Element(builder.Element):
210
+ def __init__(self, name, namespace):
211
+ name = infosetFilter.coerceElement(name)
212
+ builder.Element.__init__(self, name, namespace=namespace)
213
+ self._attributes = Attributes(self)
214
+
215
+ def _setName(self, name):
216
+ self._name = infosetFilter.coerceElement(name)
217
+ self._element.tag = self._getETreeTag(
218
+ self._name, self._namespace)
219
+
220
+ def _getName(self):
221
+ return infosetFilter.fromXmlName(self._name)
222
+
223
+ name = property(_getName, _setName)
224
+
225
+ def _getAttributes(self):
226
+ return self._attributes
227
+
228
+ def _setAttributes(self, attributes):
229
+ self._attributes = Attributes(self, attributes)
230
+
231
+ attributes = property(_getAttributes, _setAttributes)
232
+
233
+ def insertText(self, data, insertBefore=None):
234
+ data = infosetFilter.coerceCharacters(data)
235
+ builder.Element.insertText(self, data, insertBefore)
236
+
237
+ def appendChild(self, child):
238
+ builder.Element.appendChild(self, child)
239
+
240
+ class Comment(builder.Comment):
241
+ def __init__(self, data):
242
+ data = infosetFilter.coerceComment(data)
243
+ builder.Comment.__init__(self, data)
244
+
245
+ def _setData(self, data):
246
+ data = infosetFilter.coerceComment(data)
247
+ self._element.text = data
248
+
249
+ def _getData(self):
250
+ return self._element.text
251
+
252
+ data = property(_getData, _setData)
253
+
254
+ self.elementClass = Element
255
+ self.commentClass = Comment
256
+ # self.fragmentClass = builder.DocumentFragment
257
+ base.TreeBuilder.__init__(self, namespaceHTMLElements)
258
+
259
+ def reset(self):
260
+ base.TreeBuilder.reset(self)
261
+ self.insertComment = self.insertCommentInitial
262
+ self.initial_comments = []
263
+ self.doctype = None
264
+
265
+ def testSerializer(self, element):
266
+ return testSerializer(element)
267
+
268
+ def getDocument(self):
269
+ if fullTree:
270
+ return self.document._elementTree
271
+ else:
272
+ return self.document._elementTree.getroot()
273
+
274
+ def getFragment(self):
275
+ fragment = []
276
+ element = self.openElements[0]._element
277
+ if element.text:
278
+ fragment.append(element.text)
279
+ fragment.extend(list(element))
280
+ if element.tail:
281
+ fragment.append(element.tail)
282
+ return fragment
283
+
284
+ def insertDoctype(self, token):
285
+ name = token["name"]
286
+ publicId = token["publicId"]
287
+ systemId = token["systemId"]
288
+
289
+ if not name:
290
+ warnings.warn("lxml cannot represent empty doctype", DataLossWarning)
291
+ self.doctype = None
292
+ else:
293
+ coercedName = self.infosetFilter.coerceElement(name)
294
+ if coercedName != name:
295
+ warnings.warn("lxml cannot represent non-xml doctype", DataLossWarning)
296
+
297
+ doctype = self.doctypeClass(coercedName, publicId, systemId)
298
+ self.doctype = doctype
299
+
300
+ def insertCommentInitial(self, data, parent=None):
301
+ assert parent is None or parent is self.document
302
+ assert self.document._elementTree is None
303
+ self.initial_comments.append(data)
304
+
305
+ def insertCommentMain(self, data, parent=None):
306
+ if (parent == self.document and
307
+ self.document._elementTree.getroot()[-1].tag == comment_type):
308
+ warnings.warn("lxml cannot represent adjacent comments beyond the root elements", DataLossWarning)
309
+ super(TreeBuilder, self).insertComment(data, parent)
310
+
311
+ def insertRoot(self, token):
312
+ # Because of the way libxml2 works, it doesn't seem to be possible to
313
+ # alter information like the doctype after the tree has been parsed.
314
+ # Therefore we need to use the built-in parser to create our initial
315
+ # tree, after which we can add elements like normal
316
+ docStr = ""
317
+ if self.doctype:
318
+ assert self.doctype.name
319
+ docStr += "<!DOCTYPE %s" % self.doctype.name
320
+ if (self.doctype.publicId is not None or
321
+ self.doctype.systemId is not None):
322
+ docStr += (' PUBLIC "%s" ' %
323
+ (self.infosetFilter.coercePubid(self.doctype.publicId or "")))
324
+ if self.doctype.systemId:
325
+ sysid = self.doctype.systemId
326
+ if sysid.find("'") >= 0 and sysid.find('"') >= 0:
327
+ warnings.warn("DOCTYPE system cannot contain single and double quotes", DataLossWarning)
328
+ sysid = sysid.replace("'", 'U00027')
329
+ if sysid.find("'") >= 0:
330
+ docStr += '"%s"' % sysid
331
+ else:
332
+ docStr += "'%s'" % sysid
333
+ else:
334
+ docStr += "''"
335
+ docStr += ">"
336
+ if self.doctype.name != token["name"]:
337
+ warnings.warn("lxml cannot represent doctype with a different name to the root element", DataLossWarning)
338
+ docStr += "<THIS_SHOULD_NEVER_APPEAR_PUBLICLY/>"
339
+ root = etree.fromstring(docStr)
340
+
341
+ # Append the initial comments:
342
+ for comment_token in self.initial_comments:
343
+ comment = self.commentClass(comment_token["data"])
344
+ root.addprevious(comment._element)
345
+
346
+ # Create the root document and add the ElementTree to it
347
+ self.document = self.documentClass()
348
+ self.document._elementTree = root.getroottree()
349
+
350
+ # Give the root element the right name
351
+ name = token["name"]
352
+ namespace = token.get("namespace", self.defaultNamespace)
353
+ if namespace is None:
354
+ etree_tag = name
355
+ else:
356
+ etree_tag = "{%s}%s" % (namespace, name)
357
+ root.tag = etree_tag
358
+
359
+ # Add the root element to the internal child/open data structures
360
+ root_element = self.elementClass(name, namespace)
361
+ root_element._element = root
362
+ self.document._childNodes.append(root_element)
363
+ self.openElements.append(root_element)
364
+
365
+ # Reset to the default insert comment function
366
+ self.insertComment = self.insertCommentMain